[HN Gopher] Growing a Language (1998) [video]
       ___________________________________________________________________
        
       Growing a Language (1998) [video]
        
       Author : tosh
       Score  : 92 points
       Date   : 2020-09-05 14:46 UTC (8 hours ago)
        
 (HTM) web link (www.youtube.com)
 (TXT) w3m dump (www.youtube.com)
        
       | nabla9 wrote:
       | Steele is the definition of "language lawyer". He knows
       | programming languages. He has been part of ANSI C, Common Lisp,
       | Scheme and Java language standardization.
       | 
       | He has coauthored "C: A Reference Manual", Common Lisp the
       | Language, Performance Fortran Handbook, and The Java Language
       | Specification.
        
         | dang wrote:
         | Doesn't language lawyer usually imply pedantry? That's not Guy
         | Steele. How about language ascended master?
         | 
         | https://en.wikisource.org/wiki/Lambda_Papers
        
           | agumonkey wrote:
           | btw to all the curious with enough time on their hands, these
           | lambda papers are really worth a read.
           | 
           | 40 pages.. high density of ideas.
        
           | nabla9 wrote:
           | _language lawyer_ : n.. A person, usually an experienced or
           | senior software engineer, who is intimately familiar with
           | many or most of the numerous restrictions and features (both
           | useful and esoteric) applicable to one or more computer
           | programming languages. A language lawyer is distinguished by
           | the ability to show you the five sentences scattered through
           | a 200-plus-page manual that together imply the answer to your
           | question "if only you had thought to look there".
           | 
           | http://catb.org/jargon/html/L/language-lawyer.html
        
             | [deleted]
        
         | gumby wrote:
         | Also JavaScript, and is responsible for it technically being
         | ECMAScript
        
       | [deleted]
        
       | DreamOther wrote:
       | Its funny, I enjoy python for different reasons. The import
       | statement and all the "allowing the language to grow" is great,
       | but not what makes me use it over competitors. In fact, I'd argue
       | pip and virtualenv are kind of worse to use than npm, go get,
       | rust crates etc - some might disagree here, but I feel the
       | experience could be a lot better.
       | 
       | Main reasons I love and continue to use python...
       | 
       | 1. Python 2/3 break. A breaking update sounds scary, but getting
       | rid of the accumulation of "language warts" all at once was
       | literally amazing. And by all at once, I mean a gradual
       | transition over a decade. I also think Node's way of having
       | individual API's have an independent "stability" metric that is
       | unrelated to the platform or language is another decent way of
       | handling this.
       | 
       | 2. They've taken great care with the most common data structures,
       | with regard to both performance and ergonomics. A python
       | dictionary is wonderful to use and is actually quite fast
       | (specialized for common cases and transparently alters hashing
       | algorithms depending on input). You can use any immutable data
       | structure as a key (tuples!). Its so nice.
       | 
       | 3. For somewhat complicated work, the standard library actually
       | has all the good stuff baked in. heapq, deque, bisect,
       | permutations, combinations, lru, and the list goes on. Then
       | convenience oriented data structures like Counter, defaultdict
       | and such that other languages would balk at adding. When you have
       | stuff like list and dictionary comprehensions layered on top of
       | these baseline algorithmic tools, it feels __so damn good __. Do
       | these things have warts? Yes, sometimes. Like heapq is default
       | min heap with no way to change the behavior other than negating
       | the input /output - but I don't care, its there, and its usable
       | and you can explore it to the edges pretty quickly.
       | 
       | The only still-pretty-shitty parts that makes it less than
       | perfect in my eyes is the GIL combined with asyncio/async/await
       | being modal.
       | 
       | This is just a guess, but it seems like languages that over-
       | specify internals paired with a goal of never breaking backwards
       | compatibility are doomed to ... not fail, clearly, but to be a
       | pain in the ass to use forever. Take unordered_map from C++: what
       | an unholy mess made out of the most common data structure in
       | computer science. Yes, you can use Google's swiss table impl in
       | Abseil or some competitor, but the fact that I have an unwieldy
       | poorly designed hash map baked into standard library for all time
       | is such a missed opportunity. std::async was a huge missed
       | opportunity as well (bad default arguments, not guaranteed to be
       | backed by a thread pool).
       | 
       | In short, not allowing for mistakes is a tragedy that creates
       | pressure to over-specify, which I think damages __everything __in
       | ways you cannot predict.
        
       | ngrilly wrote:
       | One of the best tech talk ever. Great example of a mise en abyme.
        
         | gjvc wrote:
         | https://en.wikipedia.org/wiki/Mise_en_abyme
        
       | chubot wrote:
       | At the beginning of the talk he needs to define "person" in terms
       | of one word axioms. So he takes "man" as an axiom, and says:
       | 
       |  _A woman is like a man but not of the same sex_
       | 
       | and
       | 
       |  _A person is a man or woman_
       | 
       | How about just:
       | 
       |  _A person is a kind of ape. It can talk, make tools, and walk on
       | two legs. It has hands and thumbs._
        
       | [deleted]
        
       | jdontillman wrote:
       | For some reason that version has a large number of audio
       | glitches.
       | 
       | But very recently the Computer History Museum published a
       | cleaned-up version:
       | 
       | https://youtu.be/lw6TaiXzHAE
       | 
       | Good!
        
         | tosh wrote:
         | wow, thank you!
        
         | pfarrell wrote:
         | Thank you for that link. Even back to when this talk was hosted
         | on google video, it's always had the glitches. And because of
         | the nature of this talk, they take away from Steele's excellent
         | timing.
        
         | jdontillman wrote:
         | And the old version still has some great comments.
        
         | dang wrote:
         | Changed from https://www.youtube.com/watch?v=_ahvzDzKdB0.
         | Thanks!
        
       | mathgladiator wrote:
       | This was good, and much needed.
       | 
       | I'm currently writing my own programming language, and I'm
       | thinking about how to I encourage growth since I'm realizing that
       | I'm still at the starting line.
       | 
       | I'm sorting out how I balance out "telling people and inviting
       | people in" versus "how do I polish what I want to polish?" versus
       | "use the damn thing to make things!"
       | 
       | The language is: http://www.adama-lang.org/ and it is a work in
       | progress
        
       | balfirevic wrote:
       | It's not often that "art" and "computer science lecture" sets
       | overlap.
        
       | pixelmonkey wrote:
       | One of my favorite tech talks of all time. Really worth just
       | sitting down and truly listening to its full length, regardless
       | of what programming tradition you come from. I wrote some
       | commentary on it related to a different HN post here:
       | 
       | https://news.ycombinator.com/item?id=10568382
        
       | dang wrote:
       | Previous threads about this classic, but HN has perhaps not
       | really done it justice yet:
       | 
       | 2018: https://news.ycombinator.com/item?id=16847691
       | 
       | 2015: https://news.ycombinator.com/item?id=9918286
       | 
       | 2015: https://news.ycombinator.com/item?id=10153391
       | 
       | 2012: https://news.ycombinator.com/item?id=3744125 (seanmcdirmid
       | was there!)
       | 
       | 2011: https://news.ycombinator.com/item?id=2359174
       | 
       | 2009: https://news.ycombinator.com/item?id=626380
       | 
       | 2009 (2 comments): https://news.ycombinator.com/item?id=827107
       | 
       | 2008: https://news.ycombinator.com/item?id=152311
       | 
       | 2007 (1 comment): https://news.ycombinator.com/item?id=92542
        
       | db48x wrote:
       | Worth watching even if you hate Java.
        
       | tikhonj wrote:
       | Absolutely my favorite tech talk--brilliant idea that's explained
       | so well it seems obvious in hindsight, even though it really
       | wasn't. It's rare for a single talk to change my fundamental way
       | of thinking about an area I already care about (programming
       | language design), and "Growing a Language" managed it in a _big_
       | way.
       | 
       | It applies to more than just language design too. Why do I love
       | Emacs so much? It isn't the idiosyncratic terminology or weird
       | keybindings, it's the fact that Emacs is an editor that grows.
       | Once I understood basic Elisp, there was no real friction to take
       | Emacs and start molding it to exactly my needs and preferences.
       | Something I don't like? Something that's missing? I don't have to
       | spend hours setting up a plugin to fix it; chances are it will
       | only take a few lines to change whatever I want to change, and I
       | can use Emacs's remarkable discovery features to quickly find
       | _which_ lines those are.
       | 
       | Why do people swear by command-line invocations and bash? Bash
       | _is awful_. But it 's an environment that grows in a way that
       | I've never seen with GUI apps. A small set of simple tools and a
       | universal way to compose them is remarkably powerful, even if
       | it's as awkward and error-prone as POSIX shell scripting.
       | 
       | Excel? I don't use it myself, but I've seen the same thing from
       | Excel power users: it goes beyond mere calculations to letting
       | people seamlessly build what they need _on top_ of Excel. Excel
       | is integral to the modern world in a way that no other pieces of
       | office software is because it can grow to solve complex problems
       | in a way other tools can 't. (With, as I've seen working at a
       | large company, occasionally terrifying consequences.)
       | 
       | What I would really love to see next is an alternative to Jupyter
       | that can grow in the same way. Maybe gtoolkit[1] is a candidate?
       | That's what I'm exploring now, and it's pretty exciting so far.
       | 
       | [1]: https://gtoolkit.com/
        
       | pfarrell wrote:
       | This is a great example of content that should get reposted every
       | six months or so. Every budding programmer should digest it.
       | 
       | Also, this line cracks me up every time.
       | 
       | "I have to say the full phrase "Java programming language," for
       | there is a guy who works where I do who deals with the laws of
       | marks of trade, and he told me I have to say it that way."
        
       ___________________________________________________________________
       (page generated 2020-09-05 23:00 UTC)