[HN Gopher] The Art of Lisp and Writing (2003)
       ___________________________________________________________________
        
       The Art of Lisp and Writing (2003)
        
       Author : Bogdanp
       Score  : 155 points
       Date   : 2025-06-15 07:07 UTC (15 hours ago)
        
 (HTM) web link (www.dreamsongs.com)
 (TXT) w3m dump (www.dreamsongs.com)
        
       | noelwelsh wrote:
       | I love Richard Gabriel's writing. "The Structure of a Programming
       | Language Revolution"
       | (https://www.dreamsongs.com/Files/Incommensurability.pdf) is both
       | insightful and beautiful.
        
         | Douger wrote:
         | Thank you for sharing. It's a shame that while reading this I
         | get the feeling of prose I associate with fiction. Where
         | there's no reason for that to be the case.
        
           | noelwelsh wrote:
           | "outside enormous puffed clouds dwelled overhead, lit from
           | beneath by the town of Porto de Galinhas on the Brazilian
           | coast; the smells of burning sugarcane and bitter ocean
           | pushed into my room." is not the kind of sentence one would
           | expect to find in a scientific paper, but I think the paper
           | is improved by it.
        
           | EdwardCoffin wrote:
           | The author also has an MFA in poetry
        
             | fuzztester wrote:
             | A bit like pg, who also studied fine arts.
             | 
             | https://en.m.wikipedia.org/wiki/Paul_Graham_(programmer)
        
           | kragen wrote:
           | Why is it a shame? Is it a feeling that causes you to suffer?
        
       | auggierose wrote:
       | (2003, with some footnotes added later)
        
       | bowsamic wrote:
       | Having developed in a wide variety of different languages in my
       | free time, I really think the idea that languages like lisp and
       | smalltalk give a sense of creative freedom is pretty overblown.
       | 
       | I have realised recently that there are much more concrete
       | barriers to creative expression in coding: many of us are
       | carrying around iPhones that you cannot write applications for,
       | even for yourself, without paying a $100 a year fee. All the ways
       | the language makes you feel means little compared to whether or
       | not you can actually write code for your computer. The person who
       | makes the computer can decide if you are allowed to be creative
       | with it. And, as a society, we have decided (or perhaps been
       | implicitly brainwashed?) to not want to be creative with our
       | computers. In such a situation, the distinction between Java's
       | OOP and Lisp's "computational ideas and expression" means very
       | little.
       | 
       | A bit of a "Stallman was right" moment for me.
        
         | dunefox wrote:
         | And that has what exactly to do with Lisp? Pretty much
         | irrelevant to the language itself.
        
           | bowsamic wrote:
           | Well a major topic of the article is about the creativity
           | that lisp affords compared to other languages. I'm pointing
           | out that there are much more ultimate restrictions on
           | creativity than programming language. I.e. whether the
           | "powers that be" even allow you to program
           | 
           | Also looping back to the article, it speaks about how lisp
           | and smalltalk have fallen out of fashion which can explained
           | by the more ultimate loss of permission and desire for
           | creativity
        
             | pjmlp wrote:
             | I rather be creative for mobile devices while using Swift,
             | Objective-C, Java or Kotlin, with their Smalltalk and Lisp
             | influences from Xerox PARC work in what an IDE is supposed
             | to be and language frameworks, than being stuck on the C
             | and C+ mentality[0] that they are the only true way to
             | develop for small devices.
             | 
             | [0] - I really typed C+ and not C++ on purpose.
        
               | bowsamic wrote:
               | Sure, I'm not saying embedded programming in C is the way
               | to go. That's just a totally different thing to mobile
               | app development
        
             | dunefox wrote:
             | That's why you should compare languages in proper
             | environments, not make an irrelevant point about some
             | mobile development platforms.
        
               | bowsamic wrote:
               | Is it irrelevant to creativity in programming and whether
               | or not people use Lisp that the most commonly used
               | computers in the world can't be programmed?
        
         | f1shy wrote:
         | Both Stallman and Rossman are right (in that regard) as far as
         | I am concerned.
         | 
         | Now I do not mean to be rude, but I want to really drive a
         | point home: what you are saying sounds to me like "Advances in
         | medicine are not so relevant, because medicine is too
         | expensive, and people in Africa cannot pay for it anyway".
         | 
         | You are mixing 2 totally independent things. That Apple exist,
         | with all the bad things (and also the good) has nothing to do
         | with how a programming language is designed. And all things
         | being equal, people can feel more freedom to express their
         | programs in one or other language, independent of what
         | platforms are avaialble to later deploy them.
         | 
         | Note that while today Apple exists, there is Linux, which you
         | can really do anything you want with, with total freedom
         | (except of some little places with blobs if you are purist) but
         | again, nothing to do with programming languages.
        
           | bowsamic wrote:
           | Well they are both relevant to what it means to be creative
           | and what allows for it.
           | 
           | If the king banned painting and someone wrote an article
           | comparing the creative differences between oil and
           | watercolour, I would also then point out that the difference
           | is minute compared to the king banning painting
           | 
           | And that there is a country where painting is allowed does
           | not mean it is not a major restriction for so many of us, or
           | indeed we should not be so individualistic to say "just
           | move". _I care how it affects others, not just me_
        
           | coliveira wrote:
           | I think the comment above is applicable because programming
           | is closer to writing than to medicine.
           | 
           | A good example is the web. When it was given to us by Tim-
           | Barnes Lee, the web was a free ecosystem with a simple markup
           | language. But companies like Google decided that this was not
           | a good thing, and now to develop a simple web site you need
           | to know dozens of technologies, otherwise your web page will
           | be considered outdated and disregarded by web search engines.
           | 
           | The same process happened to programming languages, only the
           | ones that could be molded to the needs of large companies
           | were deemed to be "good".
        
         | mark_l_watson wrote:
         | I love your comment, even disagreeing with the first sentence
         | (I used Common Lisp and Swift yesterday - there is a difference
         | for me).
         | 
         | I also don't like the hurdles of writing private Apple
         | ecosystem apps. Apple may fix this via Playgrounds, not sure
         | though.
         | 
         | I feel captured by Apple's ecosystem, and that is not a
         | comfortable feeling. Also, Richard is right, we just don't
         | listen.
        
           | bowsamic wrote:
           | It is a scary feeling, and scary to know how much people
           | don't care
        
         | globular-toast wrote:
         | Stallman was right and that only becomes more clear to me with
         | each day that passes. But there is a big difference between
         | having the legal/technical ability to do something and that
         | being at all practical. I'm becoming increasingly more
         | concerned about the practical aspect rather than the technical.
         | 
         | Take the issue of freedom of speech. While it may be legally
         | protected to various degrees, with the US having one of the
         | strongest protections, is it practical when all communication
         | happens on private platforms with opaque filtering
         | ("moderation")?
         | 
         | I see the same thing in programming freedom. Android might
         | technically be "open source" but it is no more practical to
         | actually hack the software on your Android phone than an Apple
         | phone. Similarly, PCs might be available that are under the
         | complete control of the owners, but you need to be an expert
         | programmer to realise this control.
         | 
         | Lisp is simply a more practical language to begin hacking.
         | Emacs is probably the best example. Everything is there to make
         | it easier to hack. It's not just technically free, it's
         | practically free too.
        
           | coliveira wrote:
           | The so called free speech is a technical advantage that gets
           | lost by self-censorship applied by most of the media in the
           | US. A recent example is people (who I disagree with) talking
           | against vaccines, or major movie companies censoring topics
           | that they don't like. This happens all the time.
        
         | SomeHacker44 wrote:
         | This is a primary reason why I do not use Apple products. I use
         | Windows and Linux on my laptops, and even have a ChromeBook. I
         | use a SteamDeck as a console. I use Android phones, tablets and
         | eReaders. I use Android based TVs and streamers. Even if I
         | never code a line for them, I like that I could.
        
         | timewizard wrote:
         | The world Lisp was born in is more like your iPhone example
         | than the intervening years were. Lisp is older than POSIX by 20
         | years.
        
           | bowsamic wrote:
           | I'm aware. Why bring that up?
        
           | cbrozefsky wrote:
           | I think this contributed more to the demise of CL than is
           | recognized. It was cmucl, sbcl, and other free
           | implementations that kept it alive thru the 90s.
           | 
           | I don't begrudge Franz and others their licenses, but what
           | happened with the LMI and Symbolics IP is a cultural
           | disaster.
        
       | pjmlp wrote:
       | When on Gabriel's site, take the opportunity also read about
       | Cadillac, and Foundation for a C++ Environment.
       | 
       | How it became XEmacs, what the Cadillac protocols remind you of
       | on a famous editor currently, the infrastructure for a image like
       | development environment for C++, all around early 1990's.
       | 
       | https://dreamsongs.com/Cadillac.html
        
       | holri wrote:
       | I think that Python has inherited a lot (but unfortunately not
       | all) of the artistic qualities of Lisp. So in a sense the
       | artistic dynamic approach of Lisp won given the popularity of
       | Python.
        
         | bgwalter wrote:
         | I find Python a pretty rigid and boring language. There are no
         | macros, the syntax is infuriating, it is mostly OO these days.
         | 
         | You can do introspection and access the variables at runtime
         | (using a horrible syntax), but that's it.
         | 
         | I don't see much artistic aspirations in the language or in its
         | creators. Ruby already has a much better metaprogramming story
         | and the code looks more elegant.
        
           | Torwald wrote:
           | reply to parent and grandparent:
           | 
           | > Python looks like an ordinary dumb language, but
           | semantically it has a lot in common with Lisp, and has been
           | getting closer to Lisp over time.
           | 
           | > They might even let you use Ruby, which is even more Lisp-
           | like.
           | 
           | https://www.paulgraham.com/lispfaq1.html
        
       | azeirah wrote:
       | This was a wonderful read.
       | 
       | It's a bit sad to see that the book he's referring to at the end
       | is a book released in 2003, to which this is the foreword.
       | 
       | Lisp is an incredible experience to write and experiment in,
       | unlike any other language I've ever worked in.
       | 
       | Still, I believe there are many people out in the field that are
       | mostly about "just delivering the spec" or about making money;
       | pragmatists who care not too much about the art behind the
       | software, and I suspect that will always remain the case.
       | 
       | Craftmanship marrying art and mastery is a niche, but that
       | doesn't mean it's not thriving in spaces for enthusiasts.
        
         | TacticalCoder wrote:
         | > ... but that doesn't mean it's not thriving in spaces for
         | enthusiasts
         | 
         | Seconded by an enthusiast posting on a site written in Arc then
         | rewritten in SBCL ; )
        
       | mightyham wrote:
       | Ironically, this author gets the relationship between lisp and
       | writing totally wrong. Lisp may be much more artistic, but
       | programming in Java, for instance, is much more akin to writing
       | than programming in lisp is. Written languages have well
       | established vocabulary and grammar, that cannot be changed or
       | redefined by the writer. The author is completely correct that
       | lisp is more of a "programming medium" than a "programming
       | language", since the language itself can be molded and changed by
       | the programmer in very self-expressive ways. However, he doesn't
       | follow through with this observation to the obvious conclusion
       | that this feature of lisp, as a medium, makes it fundamentally
       | different from human language.
        
         | jbmilgrom wrote:
         | I don't think that's the right take. Poetry manipulates common
         | grammatical rules and still communicates meaning from the
         | writer to the reader, perhaps in an even deeper way because of
         | that manipulation. Of course in Java and many other programming
         | languages, grammatical errors will simply not compile. LISP is
         | one of those few languages where grammar can change from
         | program to program, much like with poetry
        
           | mightyham wrote:
           | Even though there is much more freedom in poetry, it is still
           | defined by a specific set of rules/features: verses, rhythm,
           | stanzas, spacing, meter, and rhyming. It's only because of
           | these restrictions that it is so obvious when writing is or
           | isn't poetry. These features and forms can streched, but
           | unlike lisp they cannot be completely redefined.
        
             | KerrAvon wrote:
             | You've got to read more poetry before making assertions
             | like this. In practice, the definition is more fluid than
             | that.
             | 
             | Lisp cannot be completely redefined. You can't avoid
             | parentheses, and if you stray too far from common idiom,
             | you're no longer writing Lisp, you're writing something
             | else using Lisp syntactic forms.
        
             | KineticLensman wrote:
             | > It's only because of these restrictions that it is so
             | obvious when writing is or isn't poetry. These features and
             | forms can streched, but unlike lisp they cannot be
             | completely redefined.
             | 
             | I disagree here. To take rhyming as an example. It's
             | possible to have a poem where every line rhymes AND a poem
             | where there is no rhyme at all. It's not as simple as
             | saying 'okay the lines in this text don't rhyme so it can't
             | be a poem'. The same is true of the things like spacing and
             | meter. These are all massively variable, and the result
             | doesn't even have to be bound by the usual rules of
             | grammar. English - or any other natural language - is much
             | more variable than Lisp.
             | 
             | For me the defining feature of poetry is that the form and
             | nature of the language used in a text may suggest meaning
             | over and above what the individual words say. This
             | definition is subjective, and suggests that the poetry is
             | in the eye of the beholder, but is more honest than a
             | simplistic checklist of features to look out for.
        
         | monkeyelite wrote:
         | In writing you are free to adopt any structure and style and
         | make new ones.
        
           | layer8 wrote:
           | In Lisp you are more inventing your own vocabulary and
           | grammar.
        
             | monkeyelite wrote:
             | And there are still rules. This is a dumb argument about
             | the degree to which an analogy holds.
        
         | quantadev wrote:
         | English Language is the best general purpose conveyance of
         | arbitrary ideas, and it has syntax rules just like programming
         | languages. It's "best" by the metric of being "easiest for
         | humans to understand". That's what I mean by best, in this
         | case.
         | 
         | I think one can argue that LISP is the "best" computer
         | programming language based on a set of metrics that revolve
         | around simplicity and composability. There's no simpler
         | language. There simply cannot be, because there's nothing
         | "extra" in LISP. It's the most compact (while still being human
         | readable) way to define and/or call functions.
         | 
         | You can also argue that LISP is closer to English than any
         | other programming language, because in English we use
         | parenthesis's and lists to enumerate things related to what has
         | been said. For example "(add, 1, 2)" is axiomatically the best
         | way to express adding two numbers, in a way that scales to
         | arbitrary numbers of operations. It's superior to "(1+2)"
         | because the plus sign is a single character (cannot scale), and
         | therefore there are a limited number of them, and using symbols
         | means humans have to memorize them rather than simply reading
         | their name. But "add" is a name one can read. Also "add one and
         | two" is a valid English sentence, so all LISP programs are
         | similarly valid English language expressions, where the
         | parenthesis is merely used for grouping language "clauses".
         | 
         | If the world were ever to be forced to agree on one single high
         | level programming language, it would necessarily need to be
         | LISP for about 10 other huge reasons I could name: Everything
         | from ease of writing parsers, to compression of code,
         | simplicity, ease for learning, even as a young child, etc.
        
           | Jtsummers wrote:
           | > English Language is the best general purpose conveyance of
           | arbitrary ideas, and it has syntax rules just like
           | programming languages. It's "best" by the metric of being
           | "easiest for humans to understand". That's what I mean by
           | best, in this case.
           | 
           | Given that most people alive today don't understand English
           | at all, I don't think this claim holds up very well.
           | 
           | > For example "(add, 1, 2)" is axiomatically the best way to
           | express adding two numbers, in a way that scales to arbitrary
           | numbers of operations. It's superior to "(1+2)" because the
           | plus sign is a single character (cannot scale), and therefore
           | there are a limited number of them, and using symbols means
           | humans have to memorize them rather than simply reading their
           | name.
           | 
           | I'd be willing to wager that "1+2" is understood by far more
           | people across the globe than "(add, 1, 2)".
        
             | quantadev wrote:
             | * I use "English Language" as a synonym for "Human
             | Language". However even if you want to be pedantic and
             | interpret all my words in the literal sense, everything I
             | said is still literally true.
             | 
             | * I never said LISP format was widely understood.
        
               | Jtsummers wrote:
               | > I use "English Language" as a synonym for "Human
               | Language".
               | 
               | That was unclear given you kept calling out English, and
               | not natural or human language more broadly in the rest of
               | your comment. But I'll go with it.
               | 
               | > all my words in the literal sense, everything I said is
               | still literally true.
               | 
               | No, they aren't. You need to make a stronger case than
               | "Because I declared it axiomatically true".
               | 
               | + has become part of nearly every language already,
               | what's the value of picking one word (add) from one
               | language (English) to replace it? Or to be more generous
               | to say that every language should substitute for +
               | whatever their language's word is. Now they can't
               | communicate without a translator. Or, they could just use
               | + as has been done for centuries. Why make things harder
               | on ourselves?
        
               | quantadev wrote:
               | The point about `(+ 1 2)` v.s. `1+2` is about the fact
               | that the LISP syntax generalizes to all computations,
               | whereas mathematical expressions do not. The beauty of
               | LISP is that one simple syntax solves everything about
               | computation in the axiomatically simplest way possible.
        
         | timewizard wrote:
         | Very wrong, you are.
        
       | chris_armstrong wrote:
       | The author spends a lot time describing programming as a solitary
       | activity (discovery, analysis) using like metaphors (poets,
       | explorers, etc) and draws his conclusions thus, emphasizing the
       | malleability of LISPs and Smalltalk as ideal for this task.
       | 
       | I think the author examining the fads of agile or XP would draw
       | quite opposite conclusions if they observed programming as a
       | social activity, building a shared knowledge and understanding
       | that is constantly refined before it is "abandoned" as a piece of
       | software.
        
         | chris_armstrong wrote:
         | I think the tragedy is that we don't have fluid ways to move
         | between them, that these different development modes (solitary
         | and social, dynamic and static) have produced philosophically
         | and practically incompatible tools and methodologies.
        
         | kragen wrote:
         | I think he was at the AI Lab in the 70s and consequently
         | familiar with that sort of programming activity. Maybe he just
         | hasn't found it as creative, or as enjoyable, as I have.
        
         | jcynix wrote:
         | The author is Richard P. Gabriel
         | https://en.wikipedia.org/wiki/Richard_P._Gabriel and he had a
         | rather long and impressive career in software.
        
           | lisper wrote:
           | It is also worth noting that Gabriel wrote this in 2003. At
           | that time, programming was a much more solitary activity than
           | it is today. Git would not exist for another two years.
        
             | cbrozefsky wrote:
             | But we had several distributed version control systems, and
             | collaboration online was rather mature
             | 
             | WRT the earlier comment, I don't see anything in RPGs
             | writing that assumes solitary development
        
       | rednafi wrote:
       | I used to feel similar when I'd write Python. It was a beautiful
       | language in its primordial days, and you'd feel like a hipster
       | renegade if you could sneak it into an enterprise environment
       | where C#, Java, and C++ were the norms. Even just whipping up a
       | tiny script that didn't require compilation and could do some
       | stuff felt like magic.
       | 
       | These days I mostly write Go for work, and as I've gotten older,
       | I no longer find the act of programming profound. I take more joy
       | in hiking and kayaking than programming, since LLMs have
       | commoditized something that used to be gatekept to the teeth.
       | 
       | I'm glad that AI tools have trivialized many parts of the act and
       | let people focus on the result rather than the process. Kind of
       | like how good linters completely killed off the bike shedding
       | around code aesthetics.
       | 
       | That said, nowadays I appreciate tools that last. Languages that
       | take backward compatibility seriously and don't break user code
       | on a whim. Languages that don't support ten ways of doing the
       | same thing. Languages that don't require any external dependency
       | managers or build tools. Languages that are fast, have less
       | syntactic noise, and let me do my stuff without much fuss. So to
       | my eyes, those useful languages are the most beautiful.
       | 
       | So Python, with its bolted-on type system, no built-in dependency
       | manager (uv doesn't count; there will be more unless they put it
       | in the standard toolchain), and a terrible type checker, doesn't
       | really appeal to me anymore.
       | 
       | I'm sure anyone could write a beautiful ode to any language of
       | their choice and make something profound out of it. If I could,
       | I'd probably write an ode to Go.
        
         | timewizard wrote:
         | > since LLMs have commoditized something that used to be
         | gatekept to the teeth.
         | 
         | I don't see any LLM commoditization and I can't apprehend your
         | point of view that programming was guarded by gatekeepers. The
         | past 20 years have been an explosion of systems, open code, and
         | languages. Where do you get this point of view from?
        
       | b0a04gl wrote:
       | lisp's power came from its default being openness. not just
       | macros or homoiconicity, but how the system assumed you would
       | reshape it. that expectation isn't present in modern languages.
       | today, customisation is an advanced feature, not the baseline. we
       | talk about lisp as a language, but it behaved more like a
       | writable substrate. the cultural part wasn't romanticism it was
       | just people using what was there without artificial walls
        
         | grugagag wrote:
         | Yes but that power proved to be a weakness as well.
        
           | convolvatron wrote:
           | so much of programming has been shaped by fads than I don't
           | think you can safely point the finger at 'everything is a
           | dsl' as being a root cause. back when lisp was really being
           | put out to pasture, it seemed like the major complaints were
           | about performance and syntax. and how if it wasn't object
           | oriented then it really belonged in the dustbin (of course
           | ignoring clos and the mop)
        
       | quantadev wrote:
       | I've been realizing lately that we're already to the point where
       | LLMs can basically take written English language and create the
       | computer code it's describing. I think in the future perhaps most
       | (and eventually _all_ ) software can be written basically the way
       | we write method/function documentation today. You describe a
       | function, give it a name, describe it's inputs/output arguments.
       | And with enough specificity there will be a [perfect] function
       | that can be written (multiple of course actually) which
       | accomplishes what's described. So we can create entire
       | applications this way. I guess this is already being called no-
       | code or low-code systems, but I think perhaps as a universal
       | language where instructions MUST be given, perhaps LISP is indeed
       | the best because anyone can learn the syntax in basically a
       | couple of minutes.
       | 
       | I can't see how, in 100 years (or maybe even just 50) humans will
       | still need more than ONE computer programming language. Or at the
       | most two. We might always need C++ to exist for low level stuff,
       | but we only need ONE higher level language.
        
       ___________________________________________________________________
       (page generated 2025-06-15 23:00 UTC)