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. SQL Server 2005中的分区表(三):将普通表转换成分区表

    在设计数据库时,经常没有考虑到表分区的问题,往往在数据表承重的负担越来越重时,才会考虑到分区方式,这时,就涉及到如何将普通表转换成分区表的问题了. 那么,如何将一个普通表转换成一个分区表 呢?说到底, ...

  2. WIN7中组件服务中的DCOM配置找不到Microsoft Excel应用程序的解决办法

    转自:http://blog.csdn.net/lploveme/article/details/8215265 在运行栏中输入命令:dcomcnfg,打开组件服务管理窗口,但是却发现找不到Micro ...

  3. python保留指定文件、删除目录其他文件的功能(1)

    由于给客户的发布版本上客户改动了些代码和图片,我们这边给他们更新publish都是增量更新(开发提供更新指定的文件,我们提取出来给客户进行覆盖更新),但有时需要更新的文件较多导致不得不一个一个的进行查 ...

  4. java生产者消费者并发协作

    随着职务转变,代码荒废很久了,很多时间都是在沟通需求,作为一名技术员,不写代码就感觉是在自废武功,慢慢颓废了很多,今天重新回顾了下JAVA线程知识,基础知识就不梳理了,网上也很多,主要关键几个状态位( ...

  5. iOS: 消息通信中的Notification&KVO

    iOS: 消息通信中的Notification&KVO 在 iOS: MVC 中,我贴了张经典图: 其中的Model向Controller通信的Noification&KVO为何物呢? ...

  6. Google谷歌推出goo.gl缩短网址服务 - Blog透视镜

    Blog部落格文章的网址,例如本篇文章:http://blog.openyu.org/2014/01/google-goo.gl.html,通常都很冗长,分享到社群网站上,容易使得讯息内容过多,同时也 ...

  7. WPF笔记(2.9和2.10)——Layout

    原文:WPF笔记(2.9和2.10)--Layout 2.9讲的是,如果内部设定超过容器大小,怎么办?StackPanel会裁剪越界部分DockPanel和Grid会智能判断,从而决定换行. 2.10 ...

  8. This application failed to start because it could not find or load the Qt platform plugin "windows"

    发生以上错误的Qt版本应该是Qt 5.0.0以上的版本吧. 出现标题错误的大致原因是:因为Qt是跨平台的库,需要依赖于相关的平台库.有个Platform的文件夹,里面有相关dll文件. referen ...

  9. 安卓开发中ScrollView不能用RelativeLayout的解决方案

    RelativeLayout的意义: 布局各个部件的相对布局.使得界面空间合理利用. 一.ScrollView局限: 滑动的只能是linearlayout,甚至整个布局都不能有RelativeLayo ...

  10. Merge Sorted Array 解答

    Question Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array ...