6 ms·
Wow ! I love dynamic languages. Smalltalk is by far the most awesome language I've ever seen.
by marvel_boy 11y ago
Wow ! I love dynamic languages. Smalltalk is by far the most awesome language I've ever seen.
- pjmlp 11y agoYep. This is why I always think the programming world did a left turn by adopting UNIX tooling instead of what was going on at Xerox PARK. It is not only Smalltalk, Lisp had a similar environment,whic was the Genesis of Lisp Machines. Similarly you had Mesa/Cedar. Think of a similar dynamic environment developed in a system programming language with RC and a GC for cycle collection. So now we have to reach for IDEs, INotebooks, Playgrounds and similar tools, keep on fighting on the adoption of safe languages for system programming, so that we can catch up with the past.
- mbrock 11y agoWhat are the big differences between Lisp and Smalltalk contra Unix? Unix is also a "dynamic" environment. You can compile and load in new code at runtime. You can inspect running processes. You have access to lots of system parameters via the file system API. And so on. The C language might be the biggest part of the answer. Even GNU had a vision of using C as a bootstrapping language for a Lisp environment. That's sort of the reality for heavy Emacs users... but mostly the idea has been abandoned, I guess.
- pjmlp 11y ago> What are the big differences between Lisp and Smalltalk contra Unix? Graphically based, the REPL uses the whole OS, developer culture embraced the debugger. > Unix is also a "dynamic" environment. You can compile and load in new code at runtime. You can inspect running processes. You have access to lots of system parameters via the file system API. And so on. It just looks similar in the surface, but when one used such a system it is quite poor. My experience boils down to Oberon, which was Niklaus Wirth version of Mesa/Cedar. Smaltalk Works, which allowed me to have a glipse of the original Smalltalk. The way Powershell, .NET, COM and DLLs work together on Windows (even though it is still lacking). My own research into Xerox PARC systems, as I keep hunting those papers. So with all of this, what do I mean by only being similar on the surface? Yes, UNIX CLI experience provides a way to work interactively, pipe data between programs, have them communicate between them (if one makes use of IPC) and a few other things. Note that not all UNIX have something like /proc. However it is all text based, even the UI. The Xerox PARC systems were graphical, the REPL was graphical and could use inline data, think IPython/Playgrounds. The OS and the REPL being the same language meant that the whole OS was available in the REPL. Since one was running as root on those workstations, you could literal control everything from the REPL. Like find window X, select text, convert to bold, for example. Having the same language also meant accessing any OS library was just an import away, no extra steps required. Imagine having a graphical CLI, where you can write e.g. soname.func(a, b) without extra effort and doing FP data manipulation. Actually there is a Xerox PARC paper where they research UNIX as dynamic programming environment. https://archive.org/details/bitsavers_xeroxparctXNeedsATrueIntegratedEnvironment_1363391 https://archive.org/details/bitsavers_xeroxparctXNeedsATrueI...
- agumonkey 11y agoWhat's funny is that a browser is a Domain Specific smalltalk / lisp os. We just have to fold the stack.
- pjmlp 11y agoYes, what spoils the experience to me is that only looks like that on the surface, but then when one gets into it I run away to native development. Have been doing web, server and native since ever, depending on the employer or customer project, never liked the impedance mismatch between HTML, CSS and JavaScript.
- progman 11y ago> This is why I always think the programming world did a left turn by adopting UNIX tooling instead of what was going on at Xerox PARK. The real reason was that Unix (which is written in C) runs way more efficiently on legacy hardware, orders of magnitudes faster than Smalltalk and Lisp, even on special Lisp hardware. Performance was really an issue in those days. If Lisp and Smalltalk would have had modern PC power at their time then things likely would be very different today.
- pjmlp 11y agoThat is true if speaking about servers running text based stuff, what real UNIX used to mean back in those days .e.g. UNIX System V. However, from those days I have in memory that the price difference between workstations wasn't that big. Maybe I don't recall that well. Also JIT compiler research goes back to ways to improve Smalltalk.
- eggy 11y agoI need to look it up, but I thought that it was because of Lisp machines licensing, and only running on custom hardware, that the PC with Unix (C) won. If Lisp had been implemented to run atop the cheap PC, it would have run faster with each hardware iteration, and may have won market share. Now I play with Shen and PicoLisp, which can run on anything almost.
- agentultra 11y agoI think performance is still an issue today. We have orders of magnitude faster hardware as you say but the software is still slow as molasses. The C99 specification is much more interesting than the K&R C of yore. And it still gives the programmer a close mapping between language and target hardware platform. Pharo is super-awesome to work with and play in. However I won't be writing large simulations or ray tracing rendering systems in it any time soon. I'll have to wait another couple of decades before that becomes feasible. Fortunately the FFI API in Pharo let you hook into C code fairly easily.
- zeveb 11y ago> We have orders of magnitude faster hardware as you say but the software is still slow as molasses. Modern Lisps, at least, are fast enough, albeit not often as fast as or faster than C.
- mark_l_watson 11y agoI totally agree. I had a Xerox 1108 Lisp Machine in the 1980s and when I hack around in Pharo I get the same happy feeling of being immersed in code, data, and whatever my current work context is.
- iheartmemcache 11y agoStumpWM sort of gets you a dynamic interface. Use the Scheme(ish) shell (http://scsh.net/ http://scsh.net/) and you can get ...kind of dynamic. Then there's the obligatory mention of this guy who took it to the next level http://www.howardism.org/Technical/Emacs/new-window-manager.html http://www.howardism.org/Technical/Emacs/new-window-manager.... Plan9 + ACME had an interesting 'editor/OS' integration, especially for the time, where you could highlight text, invoke a mouse click action, which would send it to a shell, and return the result on a new-line within your editor. Having everything exist as a file with an addressable file descriptor really made the platform powerful (too bad the licensing was horrible until recently). It's not homoiconic as a proper LISP-1 would be but still an interesting approach.
- incepted 11y agoWhat you are looking at has nothing to do with dynamic languages. Static languages and modern IDE's do this just fine, and much more. Here is an example: https://youtu.be/rhN35bGvM8c?t=5998 https://youtu.be/rhN35bGvM8c?t=5998 This is notch (the creator of Minecraft) coding a game live for several hours. Notice that the game is constantly running in the background for the entire duration of the cast and it updates as soon as notch changes the code. This is done with Eclipse and Java.
- klibertp 11y ago> ... and Java Which is fairly dynamic language itself... Try doing this with C - mybe with enough GDB-fu, but I'm not convinced. I think you confused dynamic languages with dynamically typed ones.
- incepted 11y agoI'm not sure we use the same definition for that word. By "dynamic", I meant "dynamically typed language". Java is certainly statically typed while Smalltalk is dynamically typed. What's your definition of "dynamic" that makes you say Java is?
- klibertp 11y ago"Dynamic" and "dynamically typed" are not exactly the same things. As Wikipedia puts it: > Most dynamic languages are also dynamically typed, but not all are. The concepts (both "dynamic language" and "dynamic typing") are not very precise, but, in general, a language may be called dynamic if it has eval, dynamic dispatch with something like "method_missing" or reflection (and this is what Java has).
- incepted 11y agoJava has reflection and not method_missing, yet you are probably the first person I ever heard call Java "dynamic".