2015-08-25   008   Foreword
    QUOTE: I think that it's extraordinarily important that we in computer science keep fun in computing...... What's in your hands, I think and hope, is intelligence: the ability to see the machine as more than when you were first led up to it, that you can make it more.
    My understanding: One of the most important things as a programmer is to keep passion. We always need to learn new things in this dynamic field, if we lose interest, the process will turn into a suffer. One big threat is, while we learn more and more about one certain domain, we tend to use the same tool to solve different problems, and subconsciously refuse to accept the idea that there are other ways to try and other interesting things deserve to learn. So the mindset that machine is always more capable than you thought can be a constant reminder, driving us to be more open and naturally keep our curiosity as child or layman.

QUOTE: To appreciate programming as an intellectual activity in its own right you must turn to computer programming; you must read and write computer programs—many of them. It doen't matter much what the programs are about or what applications they serve.
    My understanding: The ability of programming on an abstract level can be improved as long as you are reading and writing good code, no matter how unique the problem domain is or how traditional the business is.

QUOTE: Thus even though our programs are carefully handcrafted discrete collections of symbols, mosaics of interlocking functions, they continually evolve: we change them as our perception of the model deepens, enlarges, generalizes until the model ultimately attains a metastable place within still another model with which we struggle.
    My understanding: This remind me of the description in Code Complete: "Designing is a heuristic process." Building a complex model needs to try, to estimate, to retry, to destroy and to create. We may never reach the point of fully perfection, but we can reach the point of fulfillment and satisfaction.

2015-08-26   009   Forword
    QUOTE: Since large programs grow from small ones, it is crucial that we develop an arsenal of standard program structures of whose correctness we have become sure—we call them idioms—and learn to combine them into larger structures using organizational techniques of proven value. These techniques are treated at length in this book and understanding them is essential to participation in the Promethean enterprise called programming.
    My understanding: Be familiar with a set of idioms on a sufficient scale is only the basic skill for a programmer. To be senior, one need to know about the art of organization and combination.
  
    QUOTE: At best, relationships between the foci are metastable. The computers are never large enough or fast enough. Each breakthrough in hardware technology leads to more massive programming enterprises, new organizational principles, and an enrichment of abstract models.
    My understanding: Again, the rapid growth of hardware technology indicates how mutable the programming methodology can be. We as a programmer need to adapt to it.

QUOTE: We call such programs algorithms, and a great deal is known of their optimal behavior, particularly with respect to the two important parameters of execution time and data storage requirement.
    My understanding: Time and space are the most fundamental and the most crucial elements in algorithm. In modern time, the CPU is so fast and the memory is so big that sometimes we have the illusion that we no longer have to deal with these things any more, but that is not true.

2015-08-27   010   Foreword
    QUOTE: Pascal is for building pyramids—imposing, breathtaking, static structures built by armies pushing heavy blocks into place. Lisp is for building organisms—imposing, breathtaking, dynamic structures built by squads fitting fluctuating myriads of simpler organisms into place.
    My understanding: What a beautiful description of these two old languages! The summary is simple, but the insight here is impressive.

QUOTE: In Pascal the plethora of declarable data structures induces a specialization withing functions that inhibits and penalizes casual cooperation. It is better to have 100 functions operate on one data structure than to have 10 function operate on 10 data structures. As a result the pyramid must stand unchanged for a millennium; the organism must evolve or perish.
    My understanding: I can't really get the idea of this paragraph yet. Does it mean that we shouldn't create so many data structures? Does it mean we should always try to think at a higher abstract level? After I finish this book, I may return and find out the meaning beneath these sentences.

QUOTE: Indeed, in any very large programming task a useful organizing principle is to control and isolate traffic within the task modules via the invention of language.
    My understanding: This is the first time that I see a reasonable explanation about the fact that there are so many programming languages. The needs to modulize and analyse on different abstraction level determine the essential needs of multiple language. It is simply irrational to argue that which programming language is the best.

QUOTE: Finally, it is this very simplicity of syntax and semantics that is responsible for the burden and freedom borne by all Lisp programmers. No Lisp program of any size beyond a few lines can be written without being saturated with discretionary functions.
    My understanding: The concept syntax and semantics always goes hand in hand, what's the similarities and differences between these two words?

2015-08-27   012   Preface
    QUOTE: This edition emphasizes several new themes. The most important of these is the central role played by different approaches to dealing with time in computational models: objects with state, concurrent programming, functional programming, lazy evaluation, and nondeterministic programming.
    My understanding: There are so many approaches to handle concurrency! OO is terrific, but OO cannot solve everything. Regarding concurrency, OO may even cause more bad then good.

QUOTE: First, we want to establish the idea that a computer language is not just a way of getting a computer to perform operations but rather that it is a novel formal medium for expressing ideas about methodology. Thus, programs must be written for people to read, and only incidentally for machines to execute.
    My understanding: As I have already read in Code Complete, readability is always mentioned most times. Writing code which can be understand by computer is very easy, writing code which can be understand by human is very hard. The skill to write organised and clear code can not be overemphasized.

QUOTE: Second, we believe that the essential material to be addressed by a subject at this level is not the syntax of particular programming-language constructs, nor clever algorithms for computing particular functions efficiently, nor even the mathematical analysis of algorithms and the foundations of computing, but rather the techniques used to control the intellectual complexity of large software system.
    My understanding: Again, this subject is also described in Code Complete as the highest priority in programming activities is control complexity. Two important books, one is practical and the other one is academic, introduce the same idea, thus it must be very compelling. This is also the reason why I choose this book as the second extension reading material.
   
    QUOTE: We control complexity by building abstractions that hide details when appropriate. We control complexity by establishing conventional interfaces that enable us to construct systems by combining standard, well-understood pieces in a "mix and match" way. We control complexity by establishing new languages for describing a design, each of which emphasizes particular aspects of the design and deemphasizes others.
    My understanding: This is the best summmaries about different skills to control complexity. Some are insightful definition for concept such as encapsulation and modulization.

2015-08-27   013   Preface
    QUOTE: The essence of this change is the emergence of what might best be called procedural epistemology—the study of the structure of knowledge from an imperative point of view, as opposed to the more declarative point of view taken by classiccal mathematical subjects.
    My understanding: This paragraph leads to some important concept, such as procedure oriented, imperative programming and declarative programming.

QUOTE: Mathematics provides a framework for dealing precisely with notions of "what is." Computation provides a framework for dealing precisely with notions of "how to".
    My understanding: This is a brief introduction on the concept mentioned above. Most language we use, such as C and Java, is imperative programming language. Nowadays we also see the trends for declarative programming is growing.

QUOTE: After a short time we forget about syntactic details of the language(because there are none) and get on with the real issues—figuring out what we want to compute, how we will decompose problems into manageable parts, and how we will work on the parts.
    My understanding: This reminds me of the quote in Code Complete: "Program into Your Language, Not in It".

QUOTE: We can make procedural and data abstractions, we can use higher-order functions to capture common patterns of usage, we can model local state using assignment and data mutation, we can link parts of a program with streams and delayed evaluation, and we can easily implement embedded languages.
    My understanding: Modern languages such Java limit us the ability to manipulate different aspects of programming, which is a benefit for engineering. Meanwhile, looking into a different kind of language which offer us the fully capability to program can give us some sense about the nature of programming.

QUOTE: From Lisp we take the metalinguistic power that derives from the simple syntax, the uniform representation of programs as data objects, and the garbage-collected heap-allocated data. From Algol we take lexical scoping and block structure, which are gifts from the pioneers of programming-language design who were on the Algol committee.
    My understanding: As Mathematics, some basic concept which in our eyes are just natural, ordinary things don't come out all of a sudden. They evolved and developed for a long time by the top minds in the world. So when we use them today, we must be grateful and show our gratitude toward pioneers in this field.

SICP阅读笔记(一)的更多相关文章

  1. SICP 阅读笔记(二)

    Chapter 1: Building Abstractions with Procedures 2015-09-29 016 Preface of this chapter QUOTE: The a ...

  2. 阅读笔记 1 火球 UML大战需求分析

    伴随着七天国庆的结束,紧张的学习生活也开始了,首先声明,阅读笔记随着我不断地阅读进度会慢慢更新,而不是一次性的写完,所以会重复的编辑.对于我选的这本   <火球 UML大战需求分析>,首先 ...

  3. [阅读笔记]Software optimization resources

    http://www.agner.org/optimize/#manuals 阅读笔记Optimizing software in C++   7. The efficiency of differe ...

  4. 《uml大战需求分析》阅读笔记05

    <uml大战需求分析>阅读笔记05 这次我主要阅读了这本书的第九十章,通过看这章的知识了解了不少的知识开发某系统的重要前提是:这个系统有谁在用?这些人通过这个系统能做什么事? 一般搞清楚这 ...

  5. <<UML大战需求分析>>阅读笔记(2)

    <<UML大战需求分析>>阅读笔记(2)> 此次读了uml大战需求分析的第三四章,我发现这本书讲的特别的好,由于这学期正在学习设计模式这本书,这本书就讲究对uml图的利用 ...

  6. uml大战需求分析阅读笔记01

    <<UML大战需求分析>>阅读笔记(1) 刚读了uml大战需求分析的第一二章,读了这些内容之后,令我深有感触.以前学习uml这门课的时候,并没有好好学,那时我认为这门课并没有什 ...

  7. Hadoop阅读笔记(七)——代理模式

    关于Hadoop已经小记了六篇,<Hadoop实战>也已经翻完7章.仔细想想,这么好的一个框架,不能只是流于应用层面,跑跑数据排序.单表链接等,想得其精髓,还需深入内部. 按照<Ha ...

  8. Hadoop阅读笔记(六)——洞悉Hadoop序列化机制Writable

    酒,是个好东西,前提要适量.今天参加了公司的年会,主题就是吃.喝.吹,除了那些天生话唠外,大部分人需要加点酒来作催化剂,让一个平时沉默寡言的码农也能成为一个喷子!在大家推杯换盏之际,难免一些画面浮现脑 ...

  9. Hadoop阅读笔记(五)——重返Hadoop目录结构

    常言道:男人是视觉动物.我觉得不完全对,我的理解是范围再扩大点,不管男人女人都是视觉动物.某些场合(比如面试.初次见面等),别人没有那么多的闲暇时间听你诉说过往以塑立一个关于你的完整模型.所以,第一眼 ...

随机推荐

  1. kafka的一些常用命令

    启动zookeeper bin/zookeeper-server-start.sh config/zookeeper.properties & 启动kafka bin/kafka-server ...

  2. OD调试6—使未注册版软件的功能得以实现

    OD调试6—使未注册版软件的功能得以实现 本节使用的软件下载链接 (想动手试验的朋友可以下载来试试) 继续开始我OD调试教程的学习笔记. 本次试验对真正的程序进行逆向.(之前的都是为破解而专门设计的小 ...

  3. Android编程心得-JSON使用心得(二)

    在Android开发中,我们经常会用到JSON来与网络数据进行交互,下面我来介绍如何对JSON数据进行解析与制造 1.当我们需要对如下JSON串进行制造时: { "download" ...

  4. Oracle11g R2学习系列 之十 解决EM不能用

    不知道是什么原因https://localhost:1158/em,今天突然就不能用了.做了好多搜索也没有解决.现象是在services.msc中,不能重启OracleDBConsole服务,提示: ...

  5. 写下你的第一个Django应用,第三部分

    这篇指南开始于指南2结束的地方.我们将继续web投票应用和集中注意力在创建公共接口——“view” 理念 一个视图在你的Django应用中一个web页面的“品种”和它通常作为一个特定的函数以及有一个特 ...

  6. 100个iOS开发/设计程序员面试题汇总,你将如何作答?

    100个iOS开发/设计程序员面试题汇总,你将如何作答? 雪姬 2015-01-25 19:10:49 工作职场 评论(0)   无论是对于公司还是开发者或设计师个人而言,面试都是一项耗时耗钱的项目, ...

  7. itunes一进store就提示已停止工作该怎么解决

    改兼容,换盘重装什么的都试过了没用,可以听歌更新软件更改账号,但是就是进不了store,每次都是这个进度就卡死了. 问题事件名称: APPCRASH 应用程序名: iTunes.exe 应用程序版本: ...

  8. REDIS主从配置及切换

    最近公司项目也用上了.但有个点没有弄很明白. requirepass只是给CLIENT认证用的,还是同时给从REDIS认证用的?(masterauth) 一般的思路是主服务器不开AOF,从服务器打开A ...

  9. 新唐的icp和isp

    ICP 的意思是 "在电路编程"(in Circuit Programming),PC 电脑可以运行 “NuMicro ICP Programming Tool”软件通过 Nu-L ...

  10. BufferedReader的ready与readLine使用,以及Premature EOF异常

    我的个人主页:http://www.foreyou.net 有些人在读取服务器端返回的数据的时候,使用了BufferedReader类的ready: while(reader.ready()) { / ...