Comment by stcredzero
13 years ago
- Smallest unit of code is the function.
- Able to get instant feedback on code changes.
- Multiple editors with just one function in it. Show code
in an "area of concern" not just in a file.
- The coding environment can show also results, app
windows, graphics, other tools.
- Can save the configuration of the above.
Smalltalkers have been doing this in commercial projects since the 80's. If only we could have communicated about this as well as Mr. Granger.
EDIT - Also:
- You should never have to look for documentation
- Files are not the best representation of code,
just a convenient serialization.
- Editors can be anywhere and show you anything - not just text.
- Trying is encouraged - changes produce instaneous results
- We can shine some light on related bits of code
Things like this were happening in Smalltalk environments since the 80's. The first and the last points above were satisfied by lightning fast "senders" and "implementers" searches.
Of course this comment was inevitable. If Smalltalkers really believe their environment is the right way to code, their attitude should not be one of "we did this first, meh" but instead be "here's what we did right, here's what we did wrong. heed the lessons of history and good luck, you are on a mission from God."
I think with the proper care and nurturing, we could be at the beginning of a renaissance where many of the great ideas of the 60s and 70s that have been isolated to a small group of people (who are aging rapidly) are being rediscovered and reimagined by this generation. This is happening in no small part due to Rich Hickey and the Clojure community's unbelievable foresight in developing Clojure and ClojureScript in just the right way that it balances these pure, beautiful ideas with pragmatism in a way that makes them irresistible.
Those who lived through the heyday of Xerox PARC, the AI lab, the lisp machines and Smalltalk should see this as an opportunity to help make sure things don't go off the rails this time. Otherwise, we may end up back here again in 25 years with the C++ and MySQL of the future installed in our cybernetic implants.
I can already point to projects that are invisibly pushing us towards another deep, sticky, next-generation tarpit, and people are diving in because it's not yet recognizable as such. (I won't name names!) Lets try to make it so this time around we truly realize the dreams of computation by encouraging people who are building elegant, beautiful things for the modern era, no matter how much the ideas therein have been tried before.
If Smalltalkers really believe their environment is the right way to code, their attitude should not be one of "we did this first, meh"
That was totally not the spirit in which I meant my post. It's more like, "I told you so!" (My mind works differently, I guess. I present facts that challenge people's model of the world, hoping the curious absorb the information and run with it. Many people seem to take these as some kind of attack.)
Ah, understood. Tone threw me off and it's all too common to see the attitude I outlined above when old ideas are given fresh paint. Apologies for misrepresenting your view.
2 replies →
I didn't quite "live through" those, being too young (mid-30's now) but did buy a lispm and hack on Smalltalk. I do support things like making Smalltalk Git-compatible, declarative, etc. I haven't jumped on the Clojure bandwagon because I lack interest in the JVM, but ClojureScript is great.
FYI: One thing Light Table could pick up / learn is the ability to scale as function set grows, to gain a kind of fractal navigability.
EDIT: I should clarify that I like Clojure quite a bit. It just doesn't speak to the kind of programming I do "in anger" right now. So I learn about it and watch ClojureScript more intently because it speaks to the environment I've chosen for my products/projects.
It seems that Dan Ingalls, the father of Smalltalk, has picked up the baton again, this time using Javascript. Check out Lively Kernel (http://lively-kernel.org/). I saw a live demo at JSConf, it was pretty jaw-dropping stuff, completely in line with the Smalltalk legacy.
Interesting stuff, I'm quite new to programming, could you please recommend some reading materials to get acquainted with these ideas?
As a newbie, I'd like to educate myself so I can contribute to the "right" projects for this time and learn to avoid the tarpits.
Here are some links:
http://www.infoq.com/presentations/Simple-Made-Easy
http://t.co/cJgpnX5B
http://www.youtube.com/playlist?list=PL4BFC3F13B846707B
http://books.google.com/books/about/Mindstorms.html?id=HhIEA...
http://worrydream.com/
http://vpri.org/
Part 4 primarily of:
http://www.amazon.com/The-Design-Essays-Computer-Scientist/d...
1 reply →
check out udacity, coursera and khanacadamy.
why not name names? seems like it could be informative.
Not in this thread. This is Light Table's moment to shine, don't want to clog it up with such a derail.
4 replies →
Yes, but our code was entirely in these utterly unusable changeset files that couldn't work nicely with the version control that everyone else in the entire world was using; his version still uses files under the hood. There's a team that's trying to back Monticello with Git, I believe by saving each method into its own file in part of a Git source tree; that looks promising as a compromise.
https://github.com/CampSmalltalk/Cypress
Hopefully this project will take off :)
Smalltalk vendors will probably add a layer of Envy/Store/Monticello on top of it but that would be a giant step forward.
We also had Virtual Machines with snapshots and rollbacks doing the things VMWare is now pushing so very hard.
I have missed those tools for the past 13 years, since I left the language. The idea that I might get those tools back, in a language that also supports all the emacs-or-gtfo coders, is like promising me a perpetual motion machine. I will believe it when I see it, and until then it will taunt me in my dreams.
There is a Gemstone group at VMware. Send your resume.
Field (http://openendedgroup.com/field) is a modern programming environment that embraces most (if not all) of these principles.
As always, the multi-media programming environments are miles ahead and nobody knows about them. Field is amazing. Max/MSP, Pd, et al. are a different paradigm altogether, but have had live editing, documentation a click away, etc. and have been in heavy use for 20+ years.
I've been using Max/MSP lately and while I find the language itself lacking (one example of something I wish I could do is nested lists), the editor is amazing. The live programming is ahead of any normal REPL I've used and the debugger is pretty cool too.
If it had a few extra features it would make it pretty close to my ideal programming environment: a way of (temporarily) disabling selected code; a unit testing mechanism and a way of extracting selected code to a unit test; a visual code diff tool; git integration (especially branches)
Where can I find a list of these amazing multi-media programming environments that I've never heard of before, but which look so awesome?
2 replies →
I immediately thought of Visual Age for Smalltalk when I saw this, but having been done is no reason to not try again.
VisualAge for Java was my thought. Unfortunately, as with many of IBM's good ideas - before its time, poorly marketed/placed, etc.
Visual Age for Java Micro Edition (re-written in Java) became Eclipse framework.
1 reply →
True, Smalltalkers were there first. The thing I like.. the further enhancement here.. is the UI. No more tiles and windows.
In the Table view it might be nice to color the cards based on their namespace like Whisker browser:
http://www.maartensz.org/computing/squeak/Helps/Programming/...
what smalltalk didn't quite do is the instantaneous view of the results of your code changes. Seeing the result of your changes in Light Table is like updating a cell in a spreadsheet. Smalltalk (I'm guessing), would involve switching to the executing window or hitting a play/continue button. A subtle difference, but it takes the immediacy to the next level.
No, it was, is or at least can be, instantaneous where that makes sense.
Autotest, which is now built-in to Pharo, will automatically run unit tests relevant to the method you're editing when you save the method, so you can get pretty close. http://magaloma.blogspot.com/2010/06/autotest-for-pharo.html