HackerTube
HomeLongsLikedHistoryWatch laterCategoriesPlaylistsSettings

OOPSLA Conference: Growing a Language

Computer History Museum6 HN recommenders · recommended in 6 months, 2020-2026
YouTube
24K views · 6 years ago · talk · evergreen

Guy Steele's classic 1998 OOPSLA keynote on how a programming language must grow with its user community. He delivers it in a playful style, starting with only monosyllabic words and defining new terms as he goes.

Treated as a must-watch for language designers, and cited whenever extensibility and language size are debated.

Programming language designTech pioneers & interviews#guysteele#languagegrowth#extensibility#oopsla#java

13 comments from Hacker News

@pohl2026 · in “A Forlorn Hope of Fortran Modernisation”

It’s a tragedy. I feel the work they were doing was important. At least we got this talk from guy steele ▶ this video

RecommendsView on HN
@another-dave2026 · in “Loreline – Tools for writing interactive fiction”

Always reminds me of Guy Steele's "Growing a Language" talk - ▶ this video Think it's a great fit for IF alright.

CitesView on HN
@teraflop2025 · in “Aesop in Words of One Syllable”

Neat. I wonder if this was an inspiration for Guy Steele's famous "Growing a Language" talk, or if he came up with the same idea independently. ▶ this video

CitesView on HN
@gavinhoward2023 · in “A decade of developing a programming language”

As someone who has been designing a language since late 2012 (and it's about to have its first public release early next year O.o), here are some thoughts. Avoid gradual typing : Absolutely. I had gradual typing and abandoned it. Gradual typing is not as good as simple Go-like inference, and that simple inference is easy to implement and takes care of 95% of the "problem." However, you also need one or more dynamic typing escape hatches. When I implemented a config file format by tweaking JSON, I had to implement dynamic typing in C. Avoid self-hosting your compiler : It depends. You probably should avoid it by default, unless your language is just so much better than the original. Rust is an example of this (compared to C++). I'm writing in C, and I want memory safety [1], so bootstrapping makes sense. Avoid writing your own code generator, linker, etc. : This is excellent advice! Use the standard tools. Of course, me being me, I'm breaking it. :) I am trying a different distribution method, where you distribute an LLVM-like IR, and the end machine then generates the machine code on first run. In that case, there's no linker necessary, but I do have to write my own code generator. Fun. Avoid bike shedding about syntax : Yes, absolutely. I did this, but the syntax still changed enormously ! Cross-platform support is a challenge : Yes, in more ways than one. First, you have to somehow generate code for all of the platforms, then you have to make sure your library works on all

CitesView on HN
@craftuser2023 · in “How Big Should a Programming Language Be?”

This Guy Steele talk is related to this topic: ▶ this video A good watch for the fine people in this thread (and please ignore explicit or implied linkages to Java--it's full of the broad concepts, not narrowly JVM stuff)

RecommendsView on HN
@gavinhoward2023 · in “We Need to Know LR and Recursive Descent Parsing Techniques”

> What do more experienced people here think of that? "Experienced" person here. I've done a parser generator grammar or two. I've implemented several parsers. I mostly agree, but it depends on your use case. Most people writing parsers are doing so for a bespoke language, usually for config of an internal-use-only program or something like that. Such parsers won't be great, but they will work for people that: 1. Know the language, or 2. Are expected to know the language. In that case, I agree with Guy Steele. Why these two caveats? Because as people have said, error reporting from the parser will be subpar. This includes hand-written recursive descent ones. So knowing the language is important. (The second item is specifically for situations where new employees might not know the language yet, but it's part of their job, so they will learn it.) This is, by far, the greatest amount of parsers in use. I would estimate 99.5% or more. Of course, most people don't think about those parsers; they think about the hardened parsers for general-purpose languages in wide use, but while they get a lot of attention, they are few and far between. Guy Steele's advice doesn't apply as well to such situations. For me, I wrote a parser for an existing language. I had to write the parser to that, and that language had a lot of baggage. It made no sense in that case. For the parser I'm currently writing, it also makes no sense. This is for what I hope to become a widely-used general purpose lan

CitesView on HN
@j-pb2023 · in “Zig Package Manager MVP”

Really feels like the project is spreading itself too thin. There are existing community build Package Managers for Zig. It's weird to start replacing things that are good enough™, while core stuff like the languag and compiler is not even ready for hobby projects. The zig folks should really have this talk running on a loop: ▶ this video

CitesView on HN
@pfarrell2022 · in “Fred Brooks has died”

Not writing, but I have found all of Brett Victor's speeches to be incredibly inspiring on how I think about what I want to work on and where we're going. Inventing on Principle by Brett Victor: link Growing a Language by Guy Steele: ▶ this video We Really Don't Know How to Compute! by Gerald Sussman: link

RecommendsView on HN
@MrDOS2022 · in “The Up-Goer Five Text Editor”

This is an excellent talk, and exactly where my mind went, too. I might suggest watching this upload of it instead, to avoid capture errors in the older upload: ▶ this video

Strongly recommendsView on HN
@nfoz2022 · in “In defense of complicated programming languages”

In case anyone hasn't seen this most excellent talk on this topic, I highly recommend: Guy Steele - Growing a Language (OOPSLA '98) ▶ this video

Strongly recommendsView on HN
@j-pb2021 · in “What memory model should Rust use?”

The shallowness of rusts correctness has pretty much killed my interest in it. Much of its purported virtue seems to be mostly lore and myth, and doesn't keep its promises under close inspection and scrutiny. For example the "Rustonomicon" is only half finished and doesn't have that much real insight that couldn't be gained from a lot of basic-ish rust tutorials. The memory model is not propery defined and only kinda sorta borrowed from C++ as the article mentions. The borrow checker has only been formally specified and veryfied in a much simplified form and only very recently [2] ,with the actual model "just being what the borrow checker implementation does". Having a fancy datalog based borrow checker is cool, but I'd much rather have a formal specifiation of the semantics. Rust took the big bang approach of building everything at once, implementing stuff first without any formal semantics and just floating on an iceberg of implementation definedness, with endless discussions on how things COULD be formalized. That's pretty much the antithesis to rusts safety philosophy; it's teaching water but drinking barrels of wine. It wants your code to be well defined and follow its rules, but its rules are completely arbitrary, not properly defined nor written down. I wish instead they had just started with a small borrow checked core language, and grown it from there, like described in Guy Steeles talk on "growing a language" [1]. I feel that Zig is doing a much better job in this r

CitesView on HN
@ghoward2021 · in “Ask HN: If you designed a new programming language, what would its features be?”

Funny you ask that, because I am making a programming language! (1) Structured concurrency, best explained at [1], [2], [3], and [4]. More on this later. (2) Extensibility. Most people think that this means macros. It doesn't. However it's done, as curryst said, languages are not perfect, and extending a language is important. See "Growing a Language" by Guy Steele, Jr. [5] More on this later. (3) Like many other posts, having real-world units like feet, meters, pounds, kilograms, etc., for calculations and type checking, but the default number type should also be a BigRational. (4) Ranged types, like Ada, allowing programmers to explicitly limit the range a type can be, eliminating errors. For example, a type that is used in the denominator of a division could be restricted to being not zero, and you don't need to worry about divide-by-zero for those divisions. (5) Consistency, a massively underrated feature. The use of something in the language should be the same everywhere . This simplifies learning and makes it easier to understand features you haven't seen yet. (6) Design-by-Contract and other formal methods "in the small". It should be possible to use formal methods on little pieces of code. Even if you can't go so far as to prove them correct, it should be easy to increase your confidence that they are. (7) Conditions and restarts instead of exceptions. Conditions and restarts come from Lisp, and it is one of the greatest ideas in computer science that almost nobody kn

CitesView on HN
@jdontillman2020 · in “Growing a Language (1998) [video]”

For some reason that version has a large number of audio glitches. But very recently the Computer History Museum published a cleaned-up version: ▶ this video Good!

RecommendsView on HN
Growing a Language, by Guy Steele53:31

Growing a Language, by Guy Steele

Bill Pugh
165K views • 14 years ago
2017 ACM PPoPP Keynote: It's Time for a New Old Language1:12:12

2017 ACM PPoPP Keynote: It's Time for a New Old Language

Guy Steele
7K views • 9 years ago
Invited Talk - Guy Steele1:07:22

Invited Talk - Guy Steele

ClojureTV
39K views • 9 years ago
Keynote. Fortress Features and Lessons Learned | Guy Steele | JuliaCon 20161:00:28

Keynote. Fortress Features and Lessons Learned | Guy Steele | JuliaCon 2016

The Julia Programming Language
15K views • 10 years ago
Dynamic Languages Wizards Series - Panel on Language Design1:58:46

Dynamic Languages Wizards Series - Panel on Language Design

Eduardo Cavazos
16K views • 14 years ago
OSCON 2010:  Rob Pike, "Public Static Void"12:31

OSCON 2010: Rob Pike, "Public Static Void"

O'Reilly
119K views • 16 years ago
Alan Kay - Programming and Scaling56:39

Alan Kay - Programming and Scaling

Colin McDonnell
36K views • 11 years ago
Brian Goetz - Stewardship: the Sobering Parts1:03:31

Brian Goetz - Stewardship: the Sobering Parts

ClojureTV
39K views • 11 years ago
GopherCon 2014 Opening Keynote by Rob Pike56:36

GopherCon 2014 Opening Keynote by Rob Pike

Confreaks
38K views • 12 years ago
GopherCon 2014 Inside the Gophers Studio with Blake Mizerany48:19

GopherCon 2014 Inside the Gophers Studio with Blake Mizerany

Confreaks
8K views • 12 years ago
"How to Think about Parallel Programming: Not!" - Guy L. Steele Jr. (Strange Loop 2010)1:09:38

"How to Think about Parallel Programming: Not!" - Guy L. Steele Jr. (Strange Loop 2010)

Strange Loop Conference
9K views • 5 years ago
Breaking Down Programming Paradigms: APL's Surprising Learning Curve // Aaron Hsu // Dyalog '1759:03

Breaking Down Programming Paradigms: APL's Surprising Learning Curve // Aaron Hsu // Dyalog '17

Dyalog User Meetings
7K views • 9 years ago
RailsConf 09:  Robert Martin, "What Killed Smalltalk Could K1:00:56

RailsConf 09: Robert Martin, "What Killed Smalltalk Could K

O'Reilly
87K views • 17 years ago
Dconf 2014 Day 2 Keynote: The Last Thing D Needs -- Scott Meyers54:55

Dconf 2014 Day 2 Keynote: The Last Thing D Needs -- Scott Meyers

The D Language Foundation
19K views • 8 years ago
Four Languages from Forty Years Ago - Scott Wlaschin1:01:45

Four Languages from Forty Years Ago - Scott Wlaschin

NDC Conferences
33K views • 8 years ago
"The Economics of Programming Languages" by Evan Czaplicki (Strange Loop 2023)43:58

"The Economics of Programming Languages" by Evan Czaplicki (Strange Loop 2023)

Strange Loop Conference
141K views • 3 years ago
“What is Success?” by Evan Czaplicki47:52

“What is Success?” by Evan Czaplicki

Elm Europe
31K views • 8 years ago
Keynote: The Last Hope for Scala's Infinity War - John A. De Goes45:03

Keynote: The Last Hope for Scala's Infinity War - John A. De Goes

Scalapeño
36K views • 8 years ago
Self and Self: Whys and Wherefores1:10:11

Self and Self: Whys and Wherefores

Stanford
30K views • 16 years ago
Larry Wall Speaks at Google57:53

Larry Wall Speaks at Google

Google TechTalks
81K views • 18 years ago