Skip to content

Commit 62c987e

Browse files
committed
add note of early history of smalltalk
1 parent 6b9564b commit 62c987e

File tree

1 file changed

+151
-0
lines changed

1 file changed

+151
-0
lines changed

_posts/2025-10-16-early_history_of_smalltalk.md

Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)