Building Your Own Dynamic Language
Stanford3 HN recommenders · 2009–2014
21K views · lecture · evergreen · Uploaded 2008-05-14
Ian Piumarta's 2007 Stanford EE380 lecture on building a dynamic programming environment from the ground up, from the Viewpoints Research Institute's work. It covers the design of a language and system with a recursive design, parsing through code generation, and the COLA architecture.
HN commenters recommend it as a way to understand what the VPRI group considers core, such as supporting any syntax on one JIT compiler and removing boundaries between application and interpreter.
1:03:43How to Speak
MIT OpenCourseWare
49:55How Python was Shaped by leaky Internals, Armin Ronacher, Flask framework
Видео с мероприятий {speach!
57:151. Introduction to Human Behavioral Biology
Stanford
1:21:52LEADERSHIP LAB: The Craft of Writing Effectively
UChicago Social Sciences
36:45Rich Harris - Rethinking reactivity
You Gotta Love Frontend
1:11:40MIT's Pathway to Fusion Energy (IAP 2017) - Zach Hartwig
MIT Plasma Science and Fusion Center
52:29Stanford's Sapolsky On Depression in U.S. (Full Lecture)
Stanford
54:56Justice: What's The Right Thing To Do? Episode 01 "THE MORAL SIDE OF MURDER"
Harvard University
5 comments from Hacker News
Easy, COLA: [VIDEO] Any syntax you want, running on the same JIT compiler, but designed from scratch without marketing breathing down your neck.
Thanks for the link, it's a good read. Ian gave a talk on the same material at Stanford ( [VIDEO] ). The paper about the object model ( [LINK] ) is also very useful. The hallmark of COLA is recursive design, which sort of makes it more like Smalltalk than Lisp Late binding is certainly a big part of the smalltalk philosophy as well, and recursive design is a great way of implementing late binding. A system uses the same "user interface" internally, it certainly makes it easier to let people modify the internals. The big difference I see between Smalltalk and Lisp (correct me if I'm wrong) is that Lisp systems tend to use compile-time abstractions Lisp->machine code->execution, while Smalltalkers from early on started thinking about interpretation and VM's - using abstractions which require run-time data to make decisions.
The gold box/pepsi/coke/cola/jolt/id/idst/soda languages are indeed interesting, but from the outside of VPRI it isn't easy to figure out what they do. Listening to Alan Kay try to summarize it in a few minutes ( [LINK] ) makes it sound like even he doesn't understand it very well. Piumarta seems to be a very sharp guy, but it's strange that a software project that is supposed to radically simplify the software stack still doesn't appear to have a working prototype of a complete two-kernel (pepsi+coke) system, almost five years after the albert paper ( [LINK] ) that sketched out the basics was written. Kay keeps talking about how cool it is, and Piumarta has given at least one talk about how cool it is ( [VIDEO] ), but as far as I can tell it doesn't even exist yet. There are working pieces (which are each tens of thousands of lines of code), but from the outside there doesn't appear to be a working pepsi+coke system yet, let alone iterations on it. The VPRI progress reports don't even mention it. VPRI seems all over the place, and Kay is talking about objects with AI-complete interfaces now. The mailing list is dead, and the wiki is pretty much dead. There's more information on Piumarta's personal website than anywhere else. I know it's supposed to be blue sky research, but it still seems weird. My impression of the whole thing is that "complete" reflection/self-description is not a good foundation for minimalistic systems.
No big deal. Just become an expert then. It is not that hard. Just have a look at Ian Piumarta's work [1,2]. Future systems will probably facilitate programming on every level from the bare metal to the highest abstraction. I.e. no strict boundaries between the implementation of the application and the implementation of the compiler/interpreter. [1] [LINK] [2] [VIDEO] EDIT: There are other reasons to write machine code than performance.
Well, in terms of whether the example is a well-posed question, a networked window system isn't too different from the WWW, which as we know by now works pretty flawlessly. Perhaps the key contrast here is between the tendency toward static mathematical perfection of the APL family and the notion of dynamic languages for building systems that Alan Kay et al would propose. "APL is like a beautiful diamond - flawless, beautifully symmetrical. But you can’t add anything to it. If you try to glue on another diamond, you don’t get a bigger diamond." --Joel Moses There's a talk by Ian Piumarta that tries to get to the core of what the VPRI guys feel is important. I'm not sure about it but it seems worth mentioning in this context: Ian Piumarta "Building Your Own Dynamic Language" [VIDEO] Also, this: [LINK]