Growing a Language, by Guy Steele
Bill Pugh11 HN recommenders · recommended in 10 months, 2014–2026
talk · intermediate · evergreen · 2014–2026 on HN
Guy Steele's 1998 OOPSLA keynote on designing a programming language that its users can grow. He builds the talk using only one-syllable words and terms he has defined, to demonstrate the idea.
HN considers it one of the best technical talks ever and cites it in discussions of language design, small cores and extensibility.
Up next
3 mo on HNCppCon 2015: Sean Parent "Better Code: Data Structures"
CppCon
3 HN recommender · 2016–2021
6 mo on HN7 Habits For Effective Text Editing 2.0
GoogleTalksArchive
5 HN recommender · 2013–2023
2 mo on HN7 Habits For Effective Text Editing 2.0
Google
2 HN recommender · 2012–2023
1 mo on HNBhopal Disaster - BBC - The Yes Men
razorfoundation
1 HN recommend · 2010–2022
7 mo on HNCppCon 2015: Kate Gregory “Stop Teaching C"
CppCon
7 HN recommender · 2016–2025
7 mo on HNRichard Feynman Computer Science Lecture - Hardware, Software and Heuristics
Muon Ray
8 HN recommender · 2013–2026
8 mo on HNJulia: to Lisp or not to Lisp?
European Lisp Symposium
4 HN recommender · 2016–2022
5 mo on HNAlan Kay at OOPSLA 1997 - The computer revolution hasnt happened yet
Jeff Gonis
6 HN recommender · 2013–2025
16 mo on HNHow Python was Shaped by leaky Internals, Armin Ronacher, Flask framework
Видео с мероприятий {speach!
15 HN recommender · 2017–2025
12 mo on HNWhy Isn't Functional Programming the Norm? – Richard Feldman
Metosin
12 HN recommender · 2019–2025
11 mo on HNMaybe Not - Rich Hickey
ClojureTV
14 HN recommender · 2018–2025
10 mo on HNConway's Game Of Life in APL
Dyalog
11 HN recommender · 2010–2024
12 comments from Hacker News
This is probably the best talk ever on the general topic: ▶ this video [Growing a language by Guy Steele], seriously give it a look if you have the time and do put up with the seemingly strange start. But at around the end it asks this (paraphrasing): Should a language have complex numbers implemented natively? Should it have numbers module n implemented natively? What about intervals, or rational numbers? I also dislike the ridiculous overloading of cryptic symbols, but neither extreme is good. Not allowing overloading will give you BigDecimal.of(3).add(BigDecimal.ONE).divide… , while allowing it unrestricted will give you things like msg #!! something. But perhaps a sane middle ground is to allow only basic operators (+,-,*,/) to be overloadable.
Haven’t read it but remembered this paper being mentioned in Guy Steele’s fabulous “Growing a language” talk [0]. I don’t want to give anything away about the talk (which is one of my absolute favorites), but Steele says about the title of this paper: “... the truth is that Dick Gabriel knew how to choose words with punch“ 0: ▶ this video
Not a paper, but one of my favorite talks ▶ this video Growing a Language by Guy Steele (co-inventory of Scheme). Brilliant speech about how to grow languages and why it's necessary. Languages that can be grown by the programmer, like Lisp or Smalltalk are better than languages that fixed like most others, this is why.
He gave a brilliant talk about it: "Growing a Language"[1]. The idea is to make languages that grow —ones that provide a small, uniform core that can be extended by the user. Ideally, these extensions feel like first-class citizens: things added by users should feel on par with built-in language features. It's still one of the best technical talks I've ever come across. [1]: ▶ this video
Enjoyers of this concept would probably like this wonderful talk about programming language design by Guy Steele (Sun, Java Language): Growing a Language ▶ this video
Brian Goetz mentions Guy Steele's 1998 lecture "Growing a language" [1]. It's worth a watch if you haven't watched it yet. It's been discussed on HN several times [2]. Java gets a lot of flack in these parts, mostly by people who don't use Java and pull opinions out of their arse, but you'd be hard pressed watching both talks and not being impressed by the effort that's going into continuously improving the language. [1] ▶ this video [2] link
If you like this, you'll definitely enjoy the talk "Growing a Language", by Guy Steele: ▶ this video
Maybe these are mostly too new, or you have different (more practical, hands on?) definition of tech-talk - but from a quick look the only speakers I expected - and found - were Sandi Mets and Rob Pike. If it's practical, I'm surprised not to see the js "wat" lightning talk (which I now can't seem to find...). If it's more general "best of", I'd expect something like Guy Steele "growing a language" : ▶ this video Douglas Engelbart "the mother of all demos": link Alan Kay "doing with images makes symbols": link Or, if that's too long, the much more condensed ted talk: "a powerful idea about teaching ideas": link (Maybe that's not a "tech talk"?) Rich Hickey "simple made easy" : link To name a few of the top of my head.
This idea reminds me of an amazing talk by Guy Steele: ▶ this video He starts the talk by assuming monosyllabic words as his primitives and builds up the words he needs to use to give the talk by providing definitions for them first.
Reminds me of this[0] talk by Guy Steele where he explicitly defines any word outside of a given set before he can use that term in his speech. Interesting language exercise, definitely worth a watch! [0] ▶ this video
I recently watched Guy Steele's "Growing a Language" talk. It's very much related to jmoiron's post here, and is worth a watch despite its age: ▶ this video Steele's commentary on "Worse is Better" seems to me to be a better representation of the original essay than the one expressed here about Go. Steele says: "The gist of ['Worse is Better'] is that the best way to get a language used by many persons is not to design and build 'The Right Thing,' because that will take too long. In a race, a small language with warts will beat a well designed language because users will not wait for the right thing; they will use the language that is quick and cheap, and put up with the warts. Once a small language fills a niche, it is hard to take its place." In other words, the lesson of 'Worse is Better' is that getting a 'good enough' thing to market, and benefiting from the network effects of its widespread use, will always beat getting the 'the really good' thing to market in the same category, because the cost of delay is the loss of (community) network effects. The illustrative example here is UNIX and C, but it can be easily cross-applied to more recent projects. From that vantage point, Go isn't a good example of 'Worse is Better'. It occupies the same niche as C, but was delivered nearly 4 decades later. It seems to be a "second edition of C" designed with very explicit goals of correcting specific deficiencies of C as a systems programming language, but without the scope creep that ch
Go is rediscovering Guy Steele's Growing a Language from first principles, at a much slower pace: ▶ this video