我很感兴趣,如果有人知道一种像Smalltalk那样使用图像的编程语言...
我认为这是计算机科学史上最伟大的想法之一。除了Smalltalk以外,我找不到其他基于图像的语言。
我很感兴趣,如果有人知道一种像Smalltalk那样使用图像的编程语言...
我认为这是计算机科学史上最伟大的想法之一。除了Smalltalk以外,我找不到其他基于图像的语言。
图像
图像基本上是内存转储。通常,Lisp开发系统会启动一个运行时加一个图像。用户进行更改后,可以稍后编写新的图像。有时这是开发人员使用的功能,有时也在Lisp系统本身的开发过程中使用。
许多Lisp系统正在使用“图像”。这可能是Smalltalk借鉴了Lisp的做法 - 因为Lisp早在Smalltalk出现之前就已经有了图像。麦卡锡的Lisp 1.5在60年代初就使用了图像。 Lisp实现技术的知识被传递给了施乐公司。例如,L Peter Deutsch在60年代就开始研究Lisp实现 - 在60年代初,他还是个年轻的孩子,就写了他的第一个Lisp。在70年代,他在施乐公司工作,特别是在Smalltalk的虚拟机实现方面。
在70年代/80年代后期,Lisp机器上的操作系统基本上是Lisp图像(通常称为worlds)(甚至是具有增量增量图像的分层图像)。 Lisp机器还将开发环境状态(例如:从何处加载哪个版本由谁编写的代码)存储在图像中,但Lisp Machine的MIT变体通常将源代码本身存储在文件中。
管理源代码
如果您想知道哪种语言使用类似的方式来组织和管理源代码(即不是在项目目录中的文件中),那么Xerox Interlisp就是这样做的。苹果公司的Dylan也是如此。一些DB开发工具可能会这样做。
据我记得,在80年代坐在我父亲旁边时,MUMPS 是基于图像的。我可能记错了,快速浏览维基百科文章也没有显示任何内容,但这是有可能的...
我偶然发现了这篇评论,我认为它可以让人们了解基于图像的开发。
“因此,虽然我可以并且确实在服务器端使用JVM进行计算,但对于小而简单的任务来说,它有点过重。Common Lisp对此问题的回答是一个巧妙的方法。它不是构建您一遍又一遍运行的程序,而是提供了一个“环境”,在其中代码被迭代地评估,因此您实际上是在长时间运行的VM中成长和培养一组不断增长的功能。当适用时,我喜欢这种模型,并且在Emacs中享受它,我可以让它连续运行几天,同时通过编写新函数和自定义变量来扩展其功能。”
我想知道 Smalltalk 图像系统是否具有可扩展性。
如果有 20 个程序员在同一个代码库上工作,那么怎么办?他们每个人都有自己的图像,还是共享一个图像?
如果您进行了需要修改环境的代码修改,并且其他人进行了具有类似要求的不同修改,那么图像是否可以合并(与版本控制一样)?
大多数Common Lisp实现。