《计算机程序的构造和解释》读书笔记(一) - 又挖沙的博客



《计算机程序的构造和解释》读书笔记(一) - 又挖沙的博客

这本书是至今为止我读过最难啃的书,进度非常缓慢。前面几页反反复复读了好几遍才发现有了能够继续进行的状态。每天读一点,大概速度是10页/每小时的样子。

作为麻省理工学院计算机科学的入门教材。这本书从本质入手,讲解了计算机程序的本质,如何去看待,组织,理解及构建一个庞大的程序。通过校正我们的计算机程序观,来帮助我们去观察,思考和理解。通篇使用lisp作为讲解代码。很容易沉浸于思考,而不是拘泥于语法和工具,从而可以经过大量的思考,只需一点点代码,就可以搞定所有事情。不同于《unix编程思想》,这本书具有很强的现实意义,对于架构设计的能力,甚至新语言的学习都会有帮助意义。

第一章 构造过程抽象

心智的活动主要表现在三个方面:

  1. 将若干简单认识组合为一个复合认识,由此产生出各种复杂的认识。
  2. 将两个认识放在一起对照,不管他们如何简单或者复杂,在这样做时并不将它们合而为一。由此得到有关他们的相关关系的认识。
  3. 将有关认识与那些在实际中和他们所在的所有其它认识隔离开,这就是抽象。

所有具有普遍性的认识都是这样得到的。

程序设计的基本元素:

  • 基本表达形式。用于表示语言所关心的最简单的个体。
  • 组合的方法。通过它们可以从较简单的东西出发构造出复合的元素。
  • 抽象的方法。通过它们可以为复合对象命名,并将它们当做单元去操作。

在构造更复杂的过程时可以将一个过程用作其中的元素,这样的过程不但可以看做是一组特定操作,还可以看做一个过程抽象。也就是说,有关过程的实现细节可以被隐藏起来,这个特定过程完全可以有另一个具有同样整体行为的过程取代。换句话说,我们可以这样造成一个抽象,它将这一过程的使用方式,与该过程究竟如何通过更基本的过程实现的具体细节相互分离。

用lambda构造过程是把过程抽象的一种方式,可用于把过程作为参数和返回值。


Read full article from 《计算机程序的构造和解释》读书笔记(一) - 又挖沙的博客


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts