7 ms·
The Art of Lisp and Writing (2003)
- noelwelsh 1y agoI love Richard Gabriel's writing. "The Structure of a Programming Language Revolution" (https://www.dreamsongs.com/Files/Incommensurability.pdf https://www.dreamsongs.com/Files/Incommensurability.pdf) is both insightful and beautiful.
- Douger 1y agoThank 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 1y ago"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 1y agoThe author also has an MFA in poetry
- fuzztester 1y agoA bit like pg, who also studied fine arts. https://en.m.wikipedia.org/wiki/Paul_Graham_(programmer) https://en.m.wikipedia.org/wiki/Paul_Graham_(programmer)
- kragen 1y agoWhy is it a shame? Is it a feeling that causes you to suffer?
- Douger 1y agoI view it as a shame that I haven't encountered more instances of prose in this (scientific/technical) context. I think it adds to the 'quality' of the piece. From a selfish point of view I would enjoy if I encountered more of this style of writing while being introduced to topics. Although, I'm also not contributing any writing of any quality to any corpus. So there is dissonance there. As a complete aside, I thought your writing here http://canonical.org/~kragen/memory-models/ http://canonical.org/~kragen/memory-models/ was helpful. And I now know about BNF!
- kragen 1y agoI agree about the style. I often find higher-quality prose in older papers, prior to 01950 and especially prior to 01900. Thank you very much!
- auggierose 1y ago(2003, with some footnotes added later)
- bowsamic 1y agoHaving 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 1y agoAnd that has what exactly to do with Lisp? Pretty much irrelevant to the language itself.
- bowsamic 1y agoWell 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 1y agoI 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.
- pjmlp 1y agoWhen 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 https://dreamsongs.com/Cadillac.html
- john61 1y agoI 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 1y agoI 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 1y agoreply 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 https://www.paulgraham.com/lispfaq1.html
- mejutoco 1y agoI think the first versions of python were implemented in lisp. I believe this is why docstrings are the same in both.
- azeirah 1y agoThis 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 1y ago> ... 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 ; )
- deleted 1y ago[deleted]
- kristianp 1y agoI think it was Arc that was rewritten in SBCL?
- eadmund 1y ago> Lisp is an incredible experience to write and experiment in, unlike any other language I've ever worked in. I think that the experienced of Smalltalk is very similar in some ways, despite the languages themselves being very different. At the end of the day I prefer Lisp, in large part because I feel that it interoperates with the rest of my system better (I could be wrong — no doubt expert Smalltalkers have figure out solutions to all the issues which annoyed me once upon a time). They’re both roads not taken. It’s sad, and I think that our industry would be in a much better position had we not wasted decades in the C trap. But history unfolded as it did. Maybe it had to.
- mightyham 1y agoIronically, 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 1y agoI 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 1y agoEven 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 1y agoYou’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.
- chris_armstrong 1y agoThe 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 1y agoI 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 1y agoI 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 1y agoThe author is Richard P. Gabriel https://en.wikipedia.org/wiki/Richard_P._Gabriel https://en.wikipedia.org/wiki/Richard_P._Gabriel and he had a rather long and impressive career in software.
- lisper 1y agoIt 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 1y agoBut 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 1y agoI 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 1y ago> 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?
- bgwalter 1y agoThat is the mindset that the industry has drilled into programmers from 2015-2024 (everyone must learn how to code). This worked for OSS corporate employees who pretended to promote equity while always keeping their own leadership positions. Since the layoffs, corporations stole all open source code via "AI" and are now selling it back to the authors while humiliating them ("you have been gatekeeping!"). Totalitarian projects like CPython, whose "leaders" jumped on any corporate bandwagon and have yelled "gatekeeping" on any occasion, are now guarding the leftover places and the GitHub lock icons have increased exponentially (many of them have been fired). As you say, all of this is just self-serving propaganda and there has never been any real gatekeeping in programming. especially when compared to law or medicine.
- b0a04gl 1y agolisp'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 1y agoYes but that power proved to be a weakness as well.
- convolvatron 1y agoso 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)
- tartoran 1y agoI'm sure of that but it seems that LISPs being too flexible hurt their adoption rate somewhat and the mainstream preferred to have more guardrails on their programming languages. Ultimately developers are the ones who decide what they like and popularity quite often reflects what's being done commercially. I agree about the fads part.
- b0a04gl 1y ago[dead]
- quantadev 1y agoI'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.
- lproven 1y ago> LLMs can basically take written English language and create the computer code it's describing Not really. I know people think they are... but then some people think water can magically be imbued with healing powers. Here's how that works: https://www.howdoeshomeopathywork.com/ https://www.howdoeshomeopathywork.com/ LLMs are 99% hype. They can't think, or reason, or count... or program.
- deleted 1y ago[deleted]
- neilv 1y agoToday, one of the remaining appeals of Lisps (e.g., CL, Scheme) is that (aside perhaps from Clojure) they're not very employable, and so the communities and ecosystems are more old-school hardcore in sensibility. In Python, I have to really get on a roll on a project in it, to where I can ignore most of the unfortunate aspects, that are apparent when having to Web search through writing and code that seems 99.99% by people who wouldn't be doing this if it didn't pay money. Many are skilled and professional and conscientious, despite the circumstances of it being a job, but that's not the norm. In JavaScript universe, jeebus, you can't read about even the smallest things, without it cavalierly telling you to install a supply chain disaster from NPM. In Rust, some of their linguistic thinking is appealing. They still have the positive-employability problem, :) but the difficulty has a gatekeeping effect that isn't entirely unwelcome (if you only want a job, just learn JavaScript or Python). I can foresee flexing some of my systems programming skills like I haven't been able to as much in Python, JavaScript, or Scheme, to build efficient and trustworthy software. But then, for example, the other day, I thought "I'll try this UI package, which is a wrapper around a platform Web rendering widget, since maybe they found a sweet spot..." But somehow, "hello, world" requires compiling 503 Rust crates, just for the wrapper alone, not counting the code for the non-Rust platform Web widget that the they wrap. We already know that the platform widget is going to be buggy with memory errors and design flaws, and we're going to be running bloated Web stack atop that widget, and with callouts to Rust code, and how many people in the world can even reason about debugging that (or auditing it!), just to display simple GUI widgets in a fashionable way.
- rhabarba 1y ago> Today, one of the remaining appeals of Lisps (e.g., CL, Scheme) is that (aside perhaps from Clojure) they're not very employable, and so the communities and ecosystems are more old-school hardcore in sensibility. One of the reasons why I wrote 42links in Lisp is that it’s less likely to end up in a ChatGPT reply without any license hints.