编程与软件工程worrydream.com编辑精选
Smalltalk 的早期历史(1993)
The Early History Of Smalltalk (1993)
2018 — 2022,它一次次回到首页
黑点是上首页(≥ 50 分)的那次投稿,空心点是没冲上去的投稿,点越大分数越高。
导读
这是 Alan Kay 撰写的 Smalltalk 早期历史长文(1993),回顾了 70 年代施乐帕克(Xerox PARC)团队如何从儿童教育的愿景出发,一步步设计出 Smalltalk 这一语言与活的环境。文中阐述了对象与消息传递的哲学根基,以及 Smalltalk 作为“对计算机本身的递归”这一核心思想。
为什么经久不衰:它出自对象思想创始人之手,既是珍贵的一手史料,也持续提醒人们:软件本可以有另一种更“活”的形态,这一追问至今仍未过时。
HN 评论精选
Smalltalk 的理念不断被重新发明却从未主流化,Kay 的愿景至今仍未实现
我很好奇如果当年 Smalltalk 环境占据主流,今天的软件世界会是什么样。Kay 团队的各种想法时不时被重新发明,却始终没有成为主流。从 Kay 后来的多次演讲看,软件的发展似乎并未如他所愿,但他仍认为存在更好的方式——一个由互相传递消息的“小计算机”构成的活的系统,他后来还谈到用生物细胞来建模的想法。
goatlover查看英文原文
I really wonder what the software world would look like today if the Smalltalk environment had predominated. It seems like various ideas from the Kay's group get reinvented from time to time, but we it's not really mainstream. Even the RAD tools from the 90s somewhat fell out of favor, partially due to the rise of the web, which meant reinventing everything in the browser. From hearing several talks by Alan Kay since then, it doesn't sound like software quite turned out the way he envisioned it, but he still thinks there's a better way to do things that's related to what he was thinking in the 70s with a living environment of little computers sending messages to one another. He's talked of the idea of modeling biological cells since then.
Smalltalk 是语言加完整环境的整体体验,超出一般人对“编程语言”的预期
我装了 Pharo 想看看 Smalltalk 到底是什么。起初很困惑:我以为要配置编译器和 Emacs,结果它直接启动成了一个类似操作系统的图形外壳。我这才意识到 Smalltalk 不只是一种语言,而是一整套 IDE 加操作系统。
z3phyr查看英文原文
I installed pharo to see what this smalltalk was all about. At first, I was confused with what I saw. I was expecting to set up a compiler build pipeline and an emacs mode, but it booted into some kind of operating system graphical shell. I realised then that smalltalk is more than a programming language, its a full IDE + OS A shame that I couldn't continue toying with it (that was before my computer got reformatted)
复活的 Smalltalk-78 演示展示了当年系统以极小代码量实现的惊人能力
想再感受一下 70 年代在种种限制下能做出什么样的系统,可以看 Kay 演示复活的 Smalltalk-78 系统(整个系统大约只有 1-2 万行代码),相关笔记见 Ingalls 2014 年的论文。
shalabhc查看英文原文
To get another taste of the kinds of systems possible in the 70s, in spite of the constraints, see Kay's demo of a revived Smalltalk-78 system: https://youtu.be/AnrlSqtpOkw?t=3m3s (I believe this system is about 10-20K LOC software in total) Notes about the the revival are here: https://freudenbergs.de/bert/publications/Ingalls-2014-Smalltalk78.pdf
引用原文核心段落:Smalltalk 是对计算机概念本身的递归,对象如单子
“Smalltalk 的设计与存在源于这样一个洞见:我们能描述的一切,都可以由同一种行为构件的递归组合来表示——它把状态与过程封装在自身内部,只能通过消息交换来交互。哲学上,Smalltalk 的对象与莱布尼茨的单子以及 20 世纪物理学、生物学的观念颇有共通之处……用计算机术语说,Smalltalk 是对‘计算机’这一概念本身的递归:每个对象都是对计算机全部可能性的递归,其语义就像成千上万台计算机通过极快的网络连接在一起。”
travisgriggs查看英文原文
> "Smalltalk's design—and existence—is due to the insight that everything we can describe can be represented by the recursive composition of a single kind of behavioral building block that hides its combination of state and process inside itself and can be dealt with only through the exchange of messages. Philosophically, Smalltalk's objects have much in common with the monads of Leibniz and the notions of 20th century physics and biology. Its way of making objects is quite Platonic in that some of them act as idealizations of concepts—Ideas—from which manifestations can be created. That the Ideas are themselves manifestations (of the Idea-Idea) and that the Idea-Idea is a-kind-of Manifestation-Idea—which is a-kind-of itself, so that the system is completely self-describing— would have been appreciated by Plato as an extremely practical joke [Plato]. > In computer terms, Smalltalk is a recursion on the notion of computer itself. Instead of dividing "computer stuff" into things each less strong than the whole—like data structures, procedures, and functions which are the usual paraphernalia of programming languages—each Smalltalk object is a recursion on the entire possibilities of the computer. Thus its semantics are a bit like having thousands and thousands of computers all hooked together by a very fast network. Questions of concrete representation can thus be postponed almost indefinitely because we are mainly concerned that the computers behave appropriately, and are interested in particular strategies only if the results are off or come back too slowly." Oh that others that claimed "Object Oriented" could have been inspired thusly. I did a bunch of Smalltalk over the years, and I find this an apt and poetic description. It wasn't perfect, but it was cool. I've never felt that any of the other hybrid/multi paradigm did OO the kind of service described above.
历次讨论
同类还值得读
开源应用架构
The Architecture of Open Source Applications
《开源软件架构》(AOSA)是一本在线免费书,邀请知名开源项目的作者亲自剖析其内部设计,涵盖 SQLAlchemy、LLVM、Audacity、Apache、Bash 等系统。
编程与软件工程上首页 9 次 · 2011–2024aosabook.org编辑精选编程语言简史:简短、不完整且多半错误
A Brief, Incomplete, and Mostly Wrong History of Programming Languages
一篇以戏谑、故意不准确的方式回顾编程语言史的博客文章,用夸张轶事和讽刺定义串起 Lisp、C、C++、Java、JavaScript、PHP 等语言。
编程与软件工程上首页 8 次 · 2009–2021james-iry.blogspot.comSQLite 是如何测试的
How SQLite is tested
SQLite 官方文档页,系统介绍 SQLite 的测试体系:多种测试方法(TCL 测试、模糊测试、回归测试、静态分析等)和海量测试用例,展示了这个小型开源项目如何靠极致测试获得…
编程与软件工程上首页 8 次 · 2009–2025sqlite.org编辑精选高级编程语言(2009)
Advanced programming languages (2009)
Matt Might 的经典文章,按用途推荐“高级编程语言”:如果追求就业就选主流语言,如果追求表达力、学术研究或创业,则推荐 Haskell、OCaml、Scala 等函数式语…
编程与软件工程上首页 8 次 · 2009–2022matt.might.net我的 Forth 与栈机器经历
Yosefk - My history with Forth & stack machines
作者以亲身经历回顾了使用 Forth 语言和栈式机器的历程:既赞叹其简洁优雅、代码量小、可自举的优点,也坦率指出栈操作在实际编程中的痛苦,以及 Forth 社区文化中的问题。
编程与软件工程上首页 8 次 · 2010–2024yosefk.com编辑精选