问题
I'm really interested if someone knows a programming language that uses an image like Smalltalk...
I think that is one of the greatest ides in the history of computer science.. I can not find other language besides Smalltalk that is base on an image.
回答1:
Images
Images are basically memory dumps. Typically a Lisp development system starts a runtime plus an image. The user then makes changes and later can write a new image. Sometimes this is a feature used by the developer, sometimes it's also used during the development of the Lisp system itself.
Many Lisp systems are using 'images'. That's where Smalltalk got it from, possibly - since Lisp had images already long before Smalltalk existed. McCarthy's Lisp 1.5 in the early 60s used images. The knowledge about Lisp implementation techniques was transferred to Xerox. L Peter Deutsch for example worked in the 60s on Lisp implementations - in the early 60s as a young kid he wrote his first Lisp. In the 70s he worked at Xerox and there especially on Smalltalk's virtual machine implementation.
Later in the 70s/80s, the OS on the Lisp Machines were basically Lisp images (often called worlds) (even hierarchical images with incremental delta images). Lisp Machines also store development environment state (example: which code is loaded from where in what version written by whom) in an image, but the MIT variants of the Lisp Machine usually stored the source code itself in files.
Managed source code
If you ask which language uses a similar way to organize and manage source code (i.e. not in files in project directories), then Xerox Interlisp did that. Apple's Dylan did that. Some DB development tools might do that.
回答2:
Factor is a Forth with many high-level features and an image.
回答3:
You could actually consider SQL databases as being image based - the data and the code (stored procedures) are all stored together in one big opaque blob.
回答4:
From what I remember sitting at my dad's side back in the 80s, MUMPS is image-based. I could certainly be wrong, and a quick scan of the Wikipedia article didn't show anything, but it's possible...
回答5:
Most implementations of Common Lisp.
回答6:
I'm curious as to if the Smalltalk Image system scales.
If you had 20 programmers working on the same codebase, how does that work? Do they each have their own image, or do they share one?
If you make a code modification that requires a modification of your environment, and someone makes a different modification with similar requirements, can the images be merged (as with Version Control)?
回答7:
Yea, most Forths are image based.
回答8:
I happened across this comment which I think gives a flavor of image based development.
'So while I can and do use the JVM for server-side computation, it’s a bit heavy weight for small and simple tasks. Common Lisp’s answer to this problem was an ingenious one. Instead of building programs that you run over and over, it offers an “environment” in which code is iteratively evaluated, so that you actually grow and nurture a burgeoning set of functionality within a long-running VM. I like this model when appropriate, and enjoy it, for example, in Emacs, which I can leave running for days on end while at the same time extending its functionality by writing new functions and customizing variables."
回答9:
To answer Bill K's question: apparently it works just fine (though I've not tried version control in a team personally).
All Smalltalk systems do it a bit differently, though. There's a very interesting podcast all about it on The Stack Trace. Much of it applies to all image-based development environments.
回答10:
Early BASIC interpreters could be considered image-based, in that they incorporated a rudimentary editor, and retained the source form of a program in memory while the user worked on it, and provided commands like "SAVE" and "LOAD" (or was it "READ"?) to save the whole program to a source file and load it again later.
回答11:
Single-page applications can be considered as a sort of images for JavaScript+HTML. Single-page application means a [web]-application where all data, code and state are contained in a single HTML document.
Consider TiddleWiki as an example: http://www.tiddlywiki.com/
来源:https://stackoverflow.com/questions/722204/which-programming-languages-besides-smalltalk-are-image-based