@@ -60,3 +60,154 @@ Simula语言。和Sketchpad类似,也有对象的概念,但是使用命令
6060个人计算` personal computing ` 。Doug Engelbart提出计算机是强化人类智能的工具。FLEX机器接受了这些观点。
6161
6262人机交互的概念和摩尔定律的结合产生了震撼的效果。给多数人使用的设备是颠覆性的概念。
63+
64+ NLS的一个特点是用户界面是参数化的,准确的说是语法化的。
65+
66+ 同时有了一些基于Sketchpad的新想法,窗口并不是全部,而只是一个观察口,只是虚拟世界的一部分。
67+
68+ 从赋值到对象,FLEX的对象包含一个主指针和一个实例指针,对于传统的左值和右值,对于复杂对象,比如赋值给数组一个默认值这种情况,应该被忽略,但是传统的方法不可避免地会创建一个冗余的对象。对于赋值运算,可以将其视为是一个发给对象的消息,运算符也只是消息的一个部分。对象应该内部管理它的行为,对象是某种值和行为的映射。Rudolf Carnap的逻辑著作提供了哲学层面的支持,类型定义是一种内涵定义,通过定义性质和规则来定义。
69+
70+ ref: Rudolf Carnap
71+
72+ Simula中使用了协程控制结构来挂起和恢复对象。循环的控制结构中也使用了协程。这些部分在Smalltalk中得到了继承和强化。
73+
74+ FLEX中还有一个when的控制结构,是一种事件驱动的软中断。when之中的逻辑,只会对变化的变量进行重新计算,这使得其变得高效。但是对应的,when也带来了复杂性,上下文的控制。
75+
76+ 原始的一些FLEX的` proto-object ` 的想法可以实现。
77+
78+ Marvin Minsky提到了构建主义学习理论,重新构建教育,基于心理学和认知科学。
79+
80+ Alan kay见到了平板显示器。
81+
82+ Alan kay见到了系统GRAIL,提供了和FLEX完全不同的交互形式。
83+
84+ Alan Kay见到了LOGO小组,计算机并不是个人工具,而是个人媒介。
85+
86+ 以上种种见闻最终让Alan Kay明白了个人电脑应该是的样子。
87+
88+ IMP语言支持对语言中的任何部分定义含义和行为。Alan Kay借鉴了这部分概念,实现了直接解释器,并随后发展成了每个对象都是对消息的解释并执行。
89+
90+ ref:[ The Reactive Engine by Alan Curtis Kay 1969] ( https://www.chilton-computing.org.uk/inf/pdfs/kay.htm )
91+
92+ AI系统,Carl Hewitt的PLANNER系统和Pat Winston的概念形成系统
93+
94+ CAL-TSS系统中,对象的内部状态被禁止访问。
95+
96+ Lisp的核心是` eval ` 和` apply ` 。Lisp在实践中变得不再纯粹,同时它也是不纯粹的函数式。Alan Kay的设计原则:把最难、最深刻的事情做到极致,然后从它构建出其他一切。
97+
98+ ## 1970-72—Xerox PARC: The KiddiKomp, miniCOM, and Smalltalk-71
99+
100+ KiddiKomp的新版本并不理想。
101+
102+ ` 观点胜过80点智力 ` 。
103+
104+ ` 预测未来的最好方式就是创造未来 ` 。
105+
106+ 头脑风暴不能取代冷静持续的思考。
107+
108+ KiddiKomp精炼为了miniCOM,其中包含了Smalltalk。
109+
110+ Smalltalk-71是一种带有对象附加功能的解析器,可以直接执行代码。求值是直接的模式匹配。
111+
112+ 如何将对象描述为通用计算机。
113+
114+ Dave Fisher给出了更通用的控制环境,反射式设计。关键在于只需处理模块之间调用的机制,而不用关心模块内部的细节。
115+
116+ 美在面向对象设计中的含义。
117+
118+ Alan Kay认为在这里更契合的美是从受精卵发展成复杂生物体的特化过程,并且细胞膜是一个很独特的设计,兼顾了拓展性和一致性。
119+
120+ Alan Kay发明了桌面和窗口系统。
121+
122+ 字符生成器。
123+
124+ ## 1972-76—The first real Smalltalk (-72), its birth, applications, and improvements
125+
126+ 打赌smalltalk可以在一页纸中定义出来。
127+
128+ 但是碰到了问题:
129+
130+ - 基于循环实现解释器
131+ - 解析和消息接收交织在一起
132+ - 发送和接收需要如何项目协作
133+
134+ 此时smalltalk的六个主要思想:
135+
136+ - Everything is an object
137+ - Objects communicate by sending and receiving messages (in terms of objects)
138+ - Objects have their own memory (in terms of objects)
139+ - Every object is an instance of a class (which must be an object)
140+ - The class holds the shared behavior for its instances (in the form of objects in a program list)
141+ - To eval a program list, control is passed to the first object and the remainder is treated as its message
142+
143+ ### Development of the Smalltalk-72 System and Applications
144+
145+ Interim Dynabook上的实现过程,键盘交互,重叠窗口,绘图海龟,所见即所得的编辑器,按实例检索,音乐合成,实时乐谱采集系统,动画系统,编程环境。
146+
147+ ### The Evolution of Smalltalk-72
148+
149+ Smalltalk-74。OOZE,虚拟内存系统。
150+
151+ ## "Object-oriented" Style
152+
153+ 面向对象编程风格和抽象数据类型(abstract data types, ADT)。
154+
155+ 对象可以取代掉那些赋值操作,但这个部分没有被坚持下去。
156+
157+ OOP是一种后期绑定策略,可以运行时决定行为。
158+
159+ ## Smalltalk and Children
160+
161+ 与儿童合作。
162+
163+ 孩子们自己创造交互式工具。
164+
165+ 黑客现象:对任何给定的追求,特定的5%的人会自然而然的投入其中。
166+
167+ 孩子学习的关键是系统是否直观。
168+
169+ 有一些概念需要了解了才会发现。
170+
171+ 需要一种表达思想的中间媒介,设计模板。
172+
173+ 更进一步的技术是继承,在更专业的架构基础上进行由孩子进行构建。编程和写作的相似性,需要多年循序渐进的学习。
174+
175+ 同时,学习编程可能并不会让一个人得到提升,甚至可能相反。
176+
177+ 要认识世界,必须构建世界。
178+
179+ 关键是流畅性和将知识作为隐喻。
180+
181+ 计算机包含着特殊的思考方式,增强了我们理解世界的能力。
182+
183+ ## 1976-80—The first modern Smalltalk (-76), its birth, applications, and improvements
184+
185+ 需要重新开始。Alan kay和Dan走向了不同的方向。
186+
187+ 工具会反过来重塑我们,smalltalk本身的范式在工具中不断重复着,而抹去了工具中的新想法。
188+
189+ ### Inheritance
190+
191+ 委托式继承。
192+
193+ ### The Smalltalk User Interface
194+
195+ ### Smalltalk-76
196+
197+ Smalltalk的推式被拉式所取代。
198+
199+ ## 1980-83—The release version of Smalltalk (-80)
200+
201+ Smalltalk的一些特点被去除以适应分发。
202+
203+ ## Coda
204+
205+ 硬件其实就是软件的早期结晶。底层技术和过度优化阻碍了程序设计的进步。
206+
207+ 软件进步可以被看作是寻找后期绑定的方法,然后将这些方法统一硬件。
208+
209+ 面向对象的一些优化其实也需要硬件支持。
210+
211+ 从晚绑定到智能计算。
212+
213+ 一种正确的方式是,培养对自己作品的深度不满足感,同时不把不满足等同于自我否定。
0 commit comments