5 ms·
Alan Kay Answers “Is There a Successor to Smalltalk?”
- peterburkimsher 9y agoSmalltalk inspired the languages I grew up with. I'd say that they're worthy successors. I was introduced to programming at school using LOGO when I was 7 years old. My dad found a broken Mac Plus and told me I could keep it if I could fix it. So I learned basic hardware repair (swap out the motherboard). Having my own computer gave me a sense of responsibility and independence that I never had before. When I was 11, he bought me an iBook. I also saved up my pocket money (allowance) for an iPod. I wanted more apps on the iPod, and was interested in the Notes feature. I taught myself AppleScript to scrape websites and convert the HTML to 1000-character iPod Notes TXT files. This included my English textbooks - I read Shakespeare on an iPod in 2003 so I didn't need to carry a heavy book. I also wrote many scripts for iTunes. All of this was self-taught, without textbooks or YouTube or tutorials online. It was even before StackOverflow. How did I learn? The syntax is easy. There's a single button to compile & run. The code is auto-formatted in colour. And there are lots of APIs to every other app. As a Computer Science class project, I spent months writing a database program for SMS messages using Java. But for myself, I spent half a day coding a converter AppleScript to put those SMS text files into blank MP3s and store them with iTunes. All the fancy features (smart playlists, playlist folders) were already done! Programming is not scripting - you have to use libraries instead of leveraging other apps. But I see the successor to SmallTalk being a scripting language with a lot of APIs. Like AppleScript, but with better support for cross-platform and GUIs.
- crispinb 9y ago> The syntax is easy That made me chuckle. I've tried Applescript from time to time but always given up with it in frustration having failed after repeated attempts to find whatever particular Englishey construction might do what I want (or anything for that matter). Perhaps its approach doesn't work well for programmers (or just for me).
- davelnewton 9y agoAppleScript makes me mental; it tries to hard to be the COBOL of scripting languages. It might be okay for some people, but if I never had to think about it again I'd be a happier person. Not sure what you mean by "programming is not scripting". Scripting is most certainly programming, and whether or not programming-is-not-scripting depends on what you're doing. I've never seen any truly meaningful distinction between the two.
- nickm12 9y agoKay starts off by citing Moore's law, but misses that Moore's Law hasn't been kind to Smalltalk. Specifically, CPU power has grown at a faster rate than memory bandwidth, to the point that going to main memory is hundreds of times slower than the L1 cache. I believe the pendulum is swinging back from dynamic languages to compiled languages with stronger static guarantees. Languages that are parsimonious with memory and give you control over the layout when you need it. Don't get me wrong. Smalltalk is a hugely influential language and we're better for having it, but it was designed in an era where hardware had very different performance characteristics from today's hardware.
- xfer 9y agoCiting performance (especially related to micro-optimization) everytime we discuss language design is not a right thing to do. Most applications don't require or benefit from such micro-optimization(tight control of layout). > but it was designed in an era where hardware had very different performance characteristics from today's hardware. Exactly, the era of 256k memory computers are over. Programmer time and correctness is more valuable than making sure everything fits in L1 cache.
- nickm12 9y agoYou're missing my point. When we had 256k memory computers we didn't have caches because memory access was uniform. As time goes on, fitting in cache is getting more important, not less.
- loup-vaillant 9y agoThe difference between random access and linear access is easily 10x, possibly more. Given how much time your average huge application (Word, Photoshop…) takes to even start up, I think this is still an important point. Programmer time is important, but so is user time. And in many cases, there are many more users than programmers.
- davelnewton 9y agoThere's a big difference between Smalltalk implementations being relatively slow and Smalltalk being intrinsically slow. If Smalltalk VMs had the same resources thrown at them as other VMs/compilers/etc. they could be more competitive speed-wise. Noting, of course, that Smalltalk systems can be plenty fast-enough. Smalltalk-as-glue is also perfectly reasonable, interfacing with multiple back-end systems, controlling business logic, etc.
- ioddly 9y agoHe didn't mention some of the stuff Viewpoints was working on which seems to have petered out (although maybe "bad funders" was a dig at that). I'd like to know what happened to those projects. https://en.wikipedia.org/wiki/COLA_(software_architecture) https://en.wikipedia.org/wiki/COLA_(software_architecture)
- loup-vaillant 9y agoThe STEPS was more or less finished if I recall correctly. The last report took forever to get public, but they did get a proof of concept out. Many people asked for something usable, but that wasn't really the goal, so they didn't do the polishing —it sure takes work, but it doesn't prove much. We can still take the ideas, though. We could integrate some of them in the current ecosystem to write simpler programs, or even simpler ecosystems. How about something like squeak or pharo, only 10 times simpler?
- bsaul 9y ago10000 lines for an os , plus gui, plus media player, plus... i suppose smalltalk was used as a glue over an api written with a lower level language ? I don’t understand how one could build just a kernel with the required graphical drivers with that few number of lines... But maybe at that time the requirements for each part of the system were orders of magnitude simpler (memory protection, scheduling, fault isolation, graphical functionalities,...).
- jonjacky 9y agoThe only API was the machine instruction set, the lower level language was the microcode language used to define machine instructions. For example, the bitblt operation used to move graphics around on the screen was a machine instruction implemented in microcode. Ditto for network etc. At boot time, the Alto and later Xerox machines that ran Smalltalk loaded a different microcoded instruction set for each language: Smalltalk, Lisp, Mesa, BCPL ... Then the whole system was written in that language. Details appear in the many papers and reports linked here: http://xeroxalto.computerhistory.org/xerox_alto_file_system_archive.html http://xeroxalto.computerhistory.org/xerox_alto_file_system_... I just noticed that site includes the code, apparently including the microcode, in addition to papers and reports! (I'm not sure if the microcode programs are included in Kay's 10 - 20,000 line estimate.)
- alankay1 9y agoThe Alto only had 1024 words (4k bytes) of microcode, so it is included in the estimate. The NoteTaker used several 8086s (the first ones) and was entirely in Smalltalk except for 6k bytes of 8086 code. i.e. "math wins"! ... when coupled into the design of the entire system. And ... we would have loved to have had more microcode!
- bsaul 9y agoThanks for the info ! I'm still having a hard time understanding how having to ability to program your own "assembly" operation through microcodes could reduce the number of lines for huge programs that drastically. At worst you could still code those operations with the higher level language (smalltalk)... I can imagine how that would make things slower, but that's another issue. Another thing i wonder as someone that hasn't coded in assembly since school : isn't the set of low level instructions required to build most regular programs pretty much settled now ? I'm not talking about high performance or 3D graphics, or AI. Only things personal computers have been doing for the last 30 years. Put it differently: supposing intel gave use the possibility to reprogram a large set of its assembly instruction using microcodes, would the linux codebase be radically smaller ?