[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)