Growing a Language
March 31, 2018 6:52 PM   Subscribe

A long time back, Guy Steele gave a talk on which is best: small code that takes less time to learn or big code that does lots of things, or some third way. To make a point, he stuck to a rule in his talk. (A syllable is a bit of sound that mouth and tongue can say at one time. To define a word is to tell what it means.) To start, he would just say words of one syllable. When he wants to say a word of more length, he has to define it first. If you like code or words, you might like to watch his talk, or you can read the text, too. (There are some weird skips on the tape, so you might have to do both.) [CW: Steele opens his talk with binary, gender essentialist definitions of "woman" and "person".]
posted by Lirp (32 comments total) 49 users marked this as a favorite
 
Holy shitballs I just watched that whole thing. THANK you Lirp! what a delightful and painstaking exercise in working from limitations. I'm not a programmer at all but that didn't detract from the delight in how artfully he made his point.
posted by asavage at 8:11 PM on March 31, 2018 [2 favorites]


This is one of the talks I love most out of all the ones I've read or seen.
posted by moss at 8:37 PM on March 31, 2018 [1 favorite]


I understand he had reasons to do so, but, opening this right up with defining a "woman" as a man but different, and then rolling that right into "a person is a woman or a man"...

I really don't want to derail this or anything but... oof. It threw me right out of the talk. It's distracting me enough to make it difficult to engage with the rest of the material. I scrolled down further, and I see it gets addressed later, but... I dunno, must be nice to be able to just get into this without being really, really bothered by that but I guess that just ain't in the cards for me; y'all have fun

posted by reprise the theme song and roll the credits at 8:38 PM on March 31, 2018 [16 favorites]


Similar feels here. A "CW: gender essentialism" would've been nice.
posted by smammy at 10:26 PM on March 31, 2018 [1 favorite]


This sort of thinking is what ended up creating Java though, a programming language explicitly designed to be used by people just assumed to be less intelligent than its creators.

(I've never watched the whole talk through though, but am sure it's very clever.)
posted by ver at 10:44 PM on March 31, 2018


many many many people hate Java, btw
posted by ver at 10:50 PM on March 31, 2018 [2 favorites]


Mod note: Added the "gender essentialist" warning per Lirp's request.
posted by taz (staff) at 11:06 PM on March 31, 2018 [4 favorites]


Thank you reprise and smammy for pointing out those definitions. I should have done it in the post. Thank you taz for making the update.
posted by Lirp at 11:07 PM on March 31, 2018 [3 favorites]


(Read the text, didn’t see the talk). A fine essay on language design. Given the blurb, I would have expected to see Forth mentioned (as the quintessential small language developers grow (largely) on their own). There are of course some parallels to Scheme or Lisp (though not CL, which certainly qualifies as a large language).
posted by bouvin at 11:57 PM on March 31, 2018 [1 favorite]


Like a race car driver accidentally shifting into reverse 50 meters before a grand prix finish line, he puts this into the fifth to last paragraph:

from the books of such great teachers of writing as Strunk and White

and loses all credibility.
posted by signal at 5:01 AM on April 1, 2018 [2 favorites]


He used the two-part word "choices" but did not first say what it meant.
posted by flabdablet at 5:02 AM on April 1, 2018


Ah! But I see he gave a rule that would let one make it from one part words, so that is all right.
posted by flabdablet at 5:08 AM on April 1, 2018 [1 favorite]


Great essay. I feel a desperate need to nit-pick, so: he uses 'starts' without defining it.

There was one paragraph I loved from the speech, so...

Metafilter: Meta means that you step back from your own place. What you used to do is now what you see. What you were is now what you act on. Verbs turn to nouns. What you used to think of as a pattern is now treated as a thing to put in the slot of an other pattern. A meta foo is a foo in whose slots you can put foos.
posted by YAMWAK at 5:32 AM on April 1, 2018 [5 favorites]


he uses 'starts' without defining it

That is all right, as 'starts' is in the base set of one part words.
posted by flabdablet at 6:04 AM on April 1, 2018 [2 favorites]


Metafilter: from the books of such great teachers of writing as Strunk and White.

I, too, like this talk. I need to watch it again.

For better or worse I’ve been following Scala lately. (And other languages, too, don’t worry: I’m hedging my bets.). In my naive view that’s a language that has grown a lot out of the meaning and definition of Java and the JVM. I find the Dotty project to be a cautionary tale about the need to re-examine the semantics of your dictionary. I worry that many JVM-friendly languages are establishing messy definitions as they try to inter-operate with Java and leverage leverage the huge amount of work that has gone into that ecosystem.
posted by grimjeer at 6:36 AM on April 1, 2018


Lots of folks bash Java, but the JVM is a brilliant piece of tech imho, allowing things like Scala and other languages.
posted by parki at 7:14 AM on April 1, 2018 [2 favorites]


I'd like to see a psychoanalytic critique of Java. It has.....issues. Unresolved Oedipal issues with Smalltalk. Anal stage conflicts expressed as a neurotic concern with "type safety".
posted by thelonius at 7:25 AM on April 1, 2018 [2 favorites]


In a similar but different vein there is the novel Ella Minnow Pea which features a city library with letters falling off of it and as the letters fall off, so do the words in the novel have to conform to only using the remaining letters. It's a hell of a fun read for people who like to play with language.
posted by hippybear at 11:05 AM on April 1, 2018 [1 favorite]


Rust is pretty sweet. The central idea - start with a C-like, then add ownership semantics for references so that the compiler can enforce those safe patterns for pointer use that years of hard-won experience have shown are necessary to prevent bugs in C code - is bloody brilliant.

Rust craps upon Java from a great height performance-wise, because it relies on good language design and compile-time checks for safety instead of trying to enforce half of it at runtime like the JVM does; Rust code performs like C compiler output because it basically is C compiler output because the compile-time ownership tracking adds no run-time overhead.

If C is a 100 ton press, Rust is a 100 ton press with well-designed hand guards. Use the new machine in ways that a responsible press operator would need to use the old one anyway, and it performs every bit as well; you just get less mangled flesh embedded in the final product.
posted by flabdablet at 11:10 AM on April 1, 2018 [1 favorite]


a neurotic concern with "type safety".

Here's the thing about type safety: when you use a really strongly typed language it just tends to fall away (Haskell, the ML variants, ATS, etc.). Using languages like JavaScript or Python make me want to pull out what remains of my hair because type safety was never understood, or ignored - and libraries/frameworks/code have to work around that damage *and* don't get the performance benefits of type safety. So, uh, yeah, give me that neurotic concern every day of the week. Type safety: fantastic, checked exceptions: fantastic (if you have to have exceptions).
posted by combinatorial explosion at 12:52 PM on April 1, 2018


he puts this into the fifth to last paragraph … and loses all credibility.

Personally, the esr references did that for me much earlier. To be fair to gls, tho, this is from before esr entirely lost all his shit during the second Iraq debacle.
posted by scruss at 2:08 PM on April 1, 2018 [2 favorites]


This sort of thinking is what ended up creating Java though

What's "this sort of thinking"? Not this sort of thinking:
I stand on this claim: I should not design a small language, and I should not design a large one. I need to design a language that can grow.
Java can't grow in Steele's sense (Java still doesn't have operator overloading, for instance, one of the things that Steele mentions he'd like to add).

Not this sort of thinking:
If we grow the language in these few ways, then we will not need to grow it in a hundred other ways; the users can take on the rest of the task. To see why, think on these examples.
And Java wasn't grown in those ways! (That is, all of: user-defined value objects, user-defined generic classes, and overloaded operators, plus maybe also tail calls.)

At the limit, the sort of thinking embodied in the strategy of the paper is Scheme, or Forth, or something like that—not Java.
posted by kenko at 6:25 PM on April 1, 2018 [1 favorite]


There are of course some parallels to Scheme or Lisp

Steele is one of the main designers of Scheme, along with Sussman. The lambda papers are still worth reading.

People carping about Steele's credibility in matters of language design because, along with huge scores of people, he thought in 1998 that Strunk & White were reasonably authoritative about writing, or because, again along with huge scores of people, he thought in 1998 that ESR was worth citing on open source design, ought to consider that—on this topic, at least—he has about as much credibility as any living person.
posted by kenko at 6:31 PM on April 1, 2018 [8 favorites]


(I am sad that more folk do not do what he did, here in the thread.)
posted by felix grundy at 9:13 PM on April 1, 2018 [1 favorite]


SLAB
posted by thelonius at 11:42 PM on April 1, 2018


Good ideas get reinvented: Up Goer Five, using the ten hundred most common English words.
posted by fantabulous timewaster at 5:26 AM on April 2, 2018 [1 favorite]


There's a lot about this era of GLS talk that doesn't age well. Java, ESR, gender essentialism...

I probably have a copy of the .mov file of this on every drive I own, as I adored it when it first went up on the Internet and used to pass it around to my friends as an example of the genius of Scheme and how it might just save Java some day.

Sadly, GLS's plans to change Java didn't come to much. His architectural approaches were never really adopted in any meaningful way, and the language was already too far gone for him to do anything with.


But there's also this other angle to the video that I've come to outgrow. I am a big fan of The Little Schemer for similar reasons to this video: it takes a Socratic approach to helping you do something useful with Scheme, assuming you have no facility with maths whatsoever. It guides you down this toolbox, building bit by bit just as Growing a Language does, and you can do it while sitting on the toilet if you must. No computers are necessary.

This seems like the glorious manifestation of the Pure Computer Science angle that Hackish Software Engineers always mess all over. We can live in a world of elegant back-of-a-business-card proofs that blossom out into vast complex systems of consequences and interlocked inferences. We can marvel at the "cons cells are just made of argument passing" tricks and the applicative-order Y combinator (after which that damned VC fund was named).

But at some point you have to stop and think "Am I only enjoying this because it's a tidy puzzle? Is that actually what helps humanity best when interacting with computing machinery? Am I insisting that you have to reach Lambda Calculus Enlightenment before you can code?"

I don't know. There's something about LISPheads that was always a sort of class signifier in tech: "I went to MIT, you silly nerd-prole!" It turns me off of this topic as anything other than a sicentific or mathematical curiosity. It's like learning about the Krebs Cycle or Special Relativity: essential that society grasped it and accepted it, but probably not something to force into people's everyday experiences where it doesn't fit.
posted by rum-soaked space hobo at 5:37 AM on April 2, 2018 [1 favorite]


People carping about Steele's credibility in matters of language design because, along with huge scores of people, he thought in 1998 that Strunk & White were reasonably authoritative about writing,

Yes, along with huge scores of other people who did not understand how language works and had been force fed S&W by other people who did not understand how language works, and he mentions it as part a text about language in general (not just about computer-languages) right before making general comments about how politicians should be made to use language. Based in part on his reading of Strunk & White.

The idea that using less and shorter words is somehow 'clearer' and 'right' is part of the whole not-getting-it based on S&W I'm talking about.

And that's not even mentioning engineer's disease.
posted by signal at 6:22 AM on April 2, 2018 [1 favorite]


This reminds me of working on learners' dictionaries. For one publisher, we were only allowed to use a base of about 1200 words. If we needed a word that wasn't in the list, then we had to justify it to the chief editor and define that word using only the base vocabulary. It's a tremendous exercise in thinking differently.
posted by Mo Nickels at 8:43 AM on April 2, 2018 [1 favorite]


If you put pen to pad for fun, try mad ape den.
posted by zippy at 8:45 AM on April 2, 2018


There's a lot about this era of GLS talk that doesn't age well. Java, ESR, gender essentialism...

I think a lot of these have aged better than they might have. Like, Java is still in use, and people still lament the lack of value objects (and this is also an issue in non-Java JVM languages, including the very elegant Clojure, where, alas, the absence of tail calls is also lamentable)—it seems to me that Steele's points about Java have aged just fine. Plus, the actual points Steele makes about the desirability of making languages that users can adapt to their own needs is well made and independent of Java. And that "key point", "that in the bazaar style of building a program or designing a language or what you will, the plan can change in real time to meet the needs of those who work on it and use it", is the main thing he takes from ESR, and that is not, I think, the main thing that most people, including ESR, took from ESR! It's not "many eyes make all bugs shallow" glibness. It may also not really be true, but I think it's a better and deeper kind of point to emphasize.

AFAICT, he says what he says about "woman" and "man" just so he can say "person" and "persons", according to the constraint he adopted. He could doubtless have done that in different and better ways (thinking up how to do this without taking up too much time is kind of fun?), but I'm skeptical that one can get to a commitment to gender essentialism out of it. (Probably a thoughtless pre-commitment?) (Actually, I think it would be hard to get a commitment to gender essentialism as I understand it, which involves much stronger commitments than just "women and men are not the same", out of that, but that doesn't make it, like, felicitous.)

The idea that using less and shorter words is somehow 'clearer' and 'right' is part of the whole not-getting-it based on S&W I'm talking about.

Sure, and he's definitely wrong that it's hard to mislead or hedge when using words of only one syllable. It's harder to mislead in exactly the same way that it's harder to say precisely what you mean; if you want to do either, you still can. But that has basically nothing to do with the substance of the talk. I mean, feel free to doubt his credibility as a linguist or theorist of language.
posted by kenko at 8:47 AM on April 2, 2018 [1 favorite]


Sure, and he's definitely wrong that it's hard to mislead or hedge when using words of only one syllable. It's harder to mislead in exactly the same way that it's harder to say precisely what you mean; if you want to do either, you still can. But that has basically nothing to do with the substance of the talk.

Except for the fact that it's the point he chooses to wrap up the whole talk with.
posted by signal at 9:35 AM on April 2, 2018


« Older “When I get on the motorcycle I put the Man...   |   H̡̨͓̜̟̱̞E̼̤̰ͅ... Newer »


This thread has been archived and is closed to new comments