当前位置: 首页 > news >正文

学习基于 JavaScript 语言 的计算机界三大神书”之一 ——SICP

如何阅读“计算机界三大神书”之一 ——SICP

《计算机程序的构造和解释》(Structure and Interpretation of Computer Programs,简记为SICP)是MIT的基础课教材,出版后引起计算机教育界的广泛关注,对推动全世界大学计算机科学技术教育的发展和成熟产生了很大影响。这本书的第1版于1984年出版,第2版于1996年出版,至今已被全世界100多所大学采用为教材,其中包括斯坦福大学、普林斯顿大学、牛津大学等。

图片

书号:9787111630548

出版时间:2019-07-01

机械工业出版社把SICP(第2版)引进中国,于2004年出版,至今已近20年了。令人感兴趣的是,SICP至今仍然受到国内关心计算机科学技术的人们,特别是计算机专业的优秀学生和青年计算机工作者的关注。

与许多计算机科学领域的入门教材不同,SICP的最主要关注点并不在基础语言中各种编程结构的形式和意义,也没有深入讨论巧妙或深刻的算法。与众不同地,一方面,SICP注目于帮助读者理解基于计算的观点看世界、看问题的重要性,掌握相关的基本概念和观点,建立基于计算思考问题的习惯,也就是今天人们常说的计算思维。另一方面,SICP也深入讨论了通过计算的方式处理和解决问题时必须掌握的主要技术与方法,最重要的就是分解问题和组织计算,以及建立和使用抽象的各种技术与方法。

SICP的章节目录清晰地反映了作者的基本想法:

  • 第1、2两章分别讨论函数(或过程)抽象和数据抽象的作用,它们的建立和使用;

  • 第3章讨论抽象数据对象本身的状态和变化,相关的模块化的问题及其在计算实践中的重要性;

  • 第4章讨论元语言抽象,也就是设计和实现面向应用的新语言的问题;

  • 第5章可以看作前面讨论的应用,而应用的对象问题就是JavaScript语言在寄存器机器上的实现。这里的寄存器机器是现代计算机的抽象模型,这里的讨论也说明了抽象的高级语言如何落地。

读者现在拿在手里的这本书是SICP的一个改编本(SCIP JS)。与SICP的不同之处,就在于这个改编本用更多计算机工作者熟悉的JavaScript语言作为讨论的工具,而没有用原SICP里使用的Scheme语言。因此,这里程序实例的形式更接近各种常规的编程语言,可能更容易被更多读者接受。本书的内容是原SICP的翻版,作者编写本书的基本目标是尽可能完整准确地反映原书的宗旨和精神,同时又使这些能被更多的人理解和重视。
在这里插入图片描述

书号:9787111734635

出版时间:2024-02-01

由于本书的根源和作者的意图,本书的基本内容和结构都来自SICP,许多一般性的讨论直接来自原书,但也有许多地方针对JavaScript做了一些调整和修改。本书比较好地反映了SICP的思想,是一本非常好的学习计算机科学技术的读物,值得每一个关心计算机领域,并有心在这个领域中深入学习和努力工作的人士阅读学习。

正如作者所言,这本书并不想作为JavaScript的入门教科书。书中对JavaScript语言的介绍远非完整,读者不应该希冀通过阅读本书学习JavaScript编程。但另一方面,由于本书的宗旨和内容,对它的学习一定会有助于读者学习JavaScript(一般而言,学习任何常见的编程语言,如Java、Python或C)。如果读者学过JavaScript(或其他编程语言),阅读这本书能帮助你更好地理解程序设计和一般的软件开发,从而有可能在这些领域中做得更出色、更高效、更得心应手。如果本书是你学习计算机科学技术的第一本书(或者学的第一门课),这段学习经历能为你今后的学习建立一个坚实的基础,帮助你更顺利地度过这段专业学习。无论如何,认真地阅读这本书,都是一件非常值得做的事情。

对于本书的学习,必须和相应的实际编程、用计算机解决问题的实践相结合。只读不做,当然不可能真正领悟计算机科学技术的真谛。另一方面,只是抄录、运行和试验书中给出代码,也不能得到其中的真传。作为这本书的真正有心的读者,你必须亲自一次次地经历使用计算机(通过编程)解决问题的实践过程。本书的作者已经为读者提供了学习所需的许多材料和资源,希望读者好好利用。

http://www.lryc.cn/news/312444.html

相关文章:

  • 【RISC-V 指令集】RISC-V 向量V扩展指令集介绍(一)-向量扩展编程模型
  • K8s 镜像缓存管理 kube-fledged 认知
  • ModbusTcp协议
  • 常用工具——Gradle
  • OpenHarmony教程指南—Navigation开发 页面切换场景范例
  • 2024-简单点-picamera2除了文档还有哪里可以学习实例?
  • JavaScript实现点击鼠标弹钢琴的效果
  • docker-compose Install rustdesk
  • 初学C++
  • 数据分析-Pandas数据y轴双坐标设置
  • Android多线程实现方式及并发与同步,Android面试题汇总
  • 2023年全国职业院校技能大赛中职组大数据应用与服务赛项题库参考答案陆续更新中,敬请期待…
  • 设计MySQL数据表的几个注意点
  • android 键盘遮挡输入框问题回忆
  • ZJGSU 1737 链表
  • Java开发人员不得不收集的代码,java软件开发面试常见问题
  • 浅谈块存储、文件存储、对象存储
  • 2024年 Python面试热点
  • Map集合体系——遍历,HashMap,TreeMap,LikedHashMap
  • docker mysql主从复制
  • iOS 自动化测试踩坑(一): 技术方案、环境配置与落地实践
  • Redis的事务
  • 4.2 比多数opencv函数效果更好的二值化(python)
  • webpack打包一个文件,做了哪些事情
  • 设计模式学习笔记 - 设计原则 - 6.KISS原则和YAGNI原则
  • 【Vue3-vite】动态导入路由
  • C++——string类
  • 进制转换md5绕过 [安洵杯 2019]easy_web1
  • .kat6.l6st6r勒索病毒的最新威胁:如何恢复您的数据?
  • Day 6.有名信号量(信号灯)、网络的相关概念和发端