5 ms·
Growing a Language, by Guy Steele (1998) [video]
- mpweiher 8y agoGreat talk, one of my inspirations. The "nub" (slightly edited): "A language design can no longer be thing. It must be a pattern, a pattern for growth". "My point is that a good programmer does not just write programs. A good programmer builds a working vocabulary. A good programmer does language design, though not from scratch, but building on the frame of a base language" https://youtu.be/_ahvzDzKdB0 https://youtu.be/_ahvzDzKdB0 Oh, the paper if you don't want to watch the whole thing: https://www.cs.virginia.edu/~evans/cs655/readings/steele.pdf https://www.cs.virginia.edu/~evans/cs655/readings/steele.pdf
- sharpercoder 8y ago> [...] A good programmer builds a working vocabulary. A good programmer does language design, [...] You see this more and more in "test languages" like cucumber. These languages more explicitly allow programmers to specify domain items and behavior, much more so then general programming languages like Jav, C#, js, etc. I'm currently experimenting with a piece of software that actually does have a specific domain language defined using ANTLR. I'm totally unsure of this will make any sense, but at least it is fun to do. One benefit I can see already is that I now have fully typed & typechecked logging :). Another aspect I'm experimenting with is using it as a replacement for sais "test languages". You can find my grammar here: https://github.com/generateui/jsettlers-web/blob/master/jsettlers.g4 https://github.com/generateui/jsettlers-web/blob/master/jset...
- kristianp 8y ago"nub" - I think you might mean "point" or "crux"? Main Entry: bottom line Part of Speech: noun Definition: indispensable content Synonyms: basis, conclusion, core, crux, determination, essence, fiber, final decision, fundamentals, income, key point, last word, loss, main idea, main point, main thing, meat and potatoes, name of the game, net, nitty-gritty, nuts and bolts, point
- mpweiher 8y ago> "nub" - I think you might mean "point" or "crux"? "This is the nub of what I want to say" is a direct quote from the paper/talk.
- piinbinary 8y agoThe language in the paper reminds me of Up Goer Five [0] [0] https://xkcd.com/1133/ https://xkcd.com/1133/
- pvg 8y agoPreviouslies: https://hn.algolia.com/?query=%22growing%20a%20language%22&sort=byPopularity&prefix&page=0&dateRange=all&type=story https://hn.algolia.com/?query=%22growing%20a%20language%22&s...
- lioeters 8y agoA classic that is relevant today as it was 20 years ago. Thank you for the repost, it's a good reminder to (re-)examine what I'm doing these days in a larger context. "..plan for growth with help from users. This is a win for you because you have help. This is a win for the users because they get to have their say and get to bend the growth to their needs." "Parts of the language must be designed to help the task of growth. A good set of types, ways for a user to define new types, to add new words and new rules to the language, to define and use all sorts of patterns — all these are needed."
- cntlzw 8y ago20 years later. What does Guy Steele thing about how Java ended up? We still have no operator overloading, no value types. There are plans, sure, but Java grows very slowly. Good thing? Bad thing? Does anyone know if there is a follow up on this?
- exitcode__0 8y agoThere is, Ada continues to evolve and grow - it can even directly interface with Java...
- Cthulhu_ 8y agoI think it's less relevant today, because we now have multiple languages running on the JVM - and I think that was always the most powerful feature of the Java program, the write once, run anywhere idea. Not so much the language itself, although at the time it was pretty good too.
- truncate 8y agoIIRC Steele talks about languages which are extensible by users not just compiler writers. Although, JVM allows you to have multiple language implementation on top of JVM, it still doesn't make it easy to extend a language the way lets say Lisp can. He speaks of having primitives in language which allow programmers to extend language (macros?).
- gizmo385 8y agoIf macros and LISP on the JVM are what you're looking for, that already exists: https://clojure.org/ https://clojure.org/
- truncate 8y agoYes I know. I'm not talking about JVM specifically, but extensible languages. I'm a Racket programmer myself, which has much more powerful macro system. I didn't make my point clear. What I was trying to say was these languages are still not mainstream and understood by wider audience, and the argument Steele makes is still relevant. All this lisp and macro goodness existed back then as well.
- garborg 8y agoThis is one of my favorites. They played it for us when I was at https://www.recurse.com https://www.recurse.com. I half appreciated it then, but it's gotten better with repeat viewings.
- wontruefree 8y agothis was the first video handed to me when I started in Java
- namarie 8y agoThank you for this! I'd forgot the name of the talk, and I spent some days looking for it, with no success...