哪些编程语言(除了Smalltalk)是基于图像的?

时间:2009-04-06 16:30:57

标签: programming-languages smalltalk

如果有人知道使用像Smalltalk这样的图像的编程语言,我真的很感兴趣...

我认为这是计算机科学史上最伟大的思想之一。除了Smalltalk之外,我找不到基于图像的其他语言。

11 个答案:

答案 0 :(得分:22)

图片

图像基本上是内存转储。通常,Lisp开发系统启动运行时加上图像。然后用户进行更改,之后可以编写新图像。有时候这是开发人员使用的一个功能,有时它也会在Lisp系统本身的开发过程中使用。

许多Lisp系统正在使用“图像”。这就是Smalltalk从中得到它的地方 - 可能是因为Lisp在Smalltalk存在之前已有很长时间了。麦卡锡在60年代初的Lisp 1.5使用了图像。有关Lisp实现技术的知识已转移到Xerox。例如,L Peter Deutsch在60年代就Lisp实现工作 - 在60年代初,他作为一个年轻的孩子写了他的第一个Lisp。 70年代,他在Xerox工作,特别是Smalltalk的虚拟机实现。

在70年代/ 80年代后期,Lisp机器上的操作系统基本上是Lisp图像(通常称为 worlds )(甚至是具有增量增量图像的分层图像)。 Lisp Machines还在一个映像中存储开发环境状态(例如:从哪个版本的哪个版本加载哪些代码),但Lisp机器的MIT变体通常将源代码本身存储在文件中。

托管源代码

如果您询问哪种语言使用类似的方式来组织和管理源代码(即不在项目目录中的文件中),那么Xerox Interlisp就是这样做的。 Apple的Dylan做到了这一点。一些数据库开发工具可能会这样做。

答案 1 :(得分:11)

Factor是一个具有许多高级功能和图像的Forth。

答案 2 :(得分:5)

您实际上可以将SQL数据库视为基于图像 - 数据和代码(存储过程)都存储在一个大的不透明blob中。

答案 3 :(得分:3)

从我记得80年代回到父亲身边时,MUMPS是基于图像的。我当然可能是错的,快速扫描维基百科的文章并没有显示任何内容,但它有可能......

答案 4 :(得分:2)

我很好奇Smalltalk Image系统是否可以扩展。

如果你有20个程序员在相同的代码库上工作,那怎么办?他们每个人都有自己的形象,还是分享一个?

如果您进行了需要修改环境的代码修改,并且有人对类似要求进行了不同的修改,那么可以合并图像(与版本控制一样)吗?

答案 5 :(得分:2)

Common Lisp的大部分实现。

答案 6 :(得分:2)

是的,大多数四分之一都是基于图像的。

答案 7 :(得分:2)

我碰巧遇到了this comment,我认为它提供了一种基于图像的开发。

'因此,虽然我可以并且确实使用JVM进行服务器端计算,但对于小而简单的任务来说,它有点重要。 Common Lisp对这个问题的回答是巧妙的。它不是构建您反复运行的程序,而是提供一个“环境”,在其中迭代评估代码,以便您在长时间运行的VM中实际增长和培养一组新兴功能。我喜欢这个模型,在适当的时候,并在Emacs中享受它,我可以让它连续几天运行,同时通过编写新功能和自定义变量来扩展其功能。“

答案 8 :(得分:1)

回答Bill K的问题:显然它运作得很好(虽然我没有在团队中尝试过版本控制)。

但是,所有Smalltalk系统都会有所不同。在The Stack Trace上有一个非常有趣的播客。其中大部分适用于所有基于图像的开发环境。

答案 9 :(得分:1)

早期的BASIC解释器可以被认为是基于图像的,因为它们包含了一个基本的编辑器,并在用户处理时保留了程序的源形式,并提供了诸如“SAVE”和“LOAD”之类的命令(或者是“READ”?)将整个程序保存到源文件并稍后再次加载。

答案 10 :(得分:1)

单页应用程序可以被视为JavaScript + HTML的一种图像。单页面应用程序是指[web]应用程序,其中所有数据,代码和状态都包含在单个HTML文档中。

以TiddleWiki为例:http://www.tiddlywiki.com/