- MCP server with stdio transport for local use - Search episodes, transcripts, hosts, and series - 4,511 episodes with metadata and transcripts - Data loader with in-memory JSON storage 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
138 lines
8.5 KiB
Plaintext
138 lines
8.5 KiB
Plaintext
Episode: 2942
|
|
Title: HPR2942: Why I love lisps
|
|
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr2942/hpr2942.mp3
|
|
Transcribed: 2025-10-24 13:38:25
|
|
|
|
---
|
|
|
|
This is HPR Episode 2942 for Tuesday the 12th of November 2019.
|
|
Today's show is entitled Why I Love Lips.
|
|
This is the first show of our new host, Nielazo,
|
|
and it's about 8 minutes long and carries a clean flag.
|
|
The summary is, a very wooden scripted episode about why I love the Lisp programming language family.
|
|
This episode of HPR is brought to you by Ananasthost.com.
|
|
Get 15% discount on all shared hosting with the offer code HPR15.
|
|
That's HPR15.
|
|
Better web hosting that's AnastomFair at Ananasthost.com.
|
|
Hi, I'm Nielazo.
|
|
I'm new to recording for HPR, and I decided to do my first episode on something I think
|
|
it's certainly of interest to hackers, but somewhat overlooked, Lisp's.
|
|
I'm going to explain what Lisp's are, introduce some cool things they can do, and hopefully
|
|
explain well enough that you can maybe check out using a Lisp for your next project.
|
|
Before I start, I want to say I have no formal qualifications in computer science whatsoever.
|
|
I've never worked as a software developer, and I've never worked on any large projects.
|
|
So take everything I say with a grain or two of salt.
|
|
I'm also slightly ill when I'm recording this, so forgive my voice for sounding weird.
|
|
Now that's out of the way, let's talk about Lisp's.
|
|
And to start, I guess I'll explain what a Lisp is for those who don't know.
|
|
This is a simplified definition, and it's certainly narrower than it maybe should be.
|
|
Lisp's are a family of programming languages that all shares some interesting traits.
|
|
The one that is most obvious is their syntax.
|
|
Lisp's all use a syntax called S expressions, which are far simpler than the syntax of any
|
|
other language.
|
|
Also, all support first-class functions and tail calls, making them ideal functional
|
|
programming languages.
|
|
They also all support rappel-driven development, which I'll talk more about later.
|
|
The most interesting feature of Lisp's to me, though, is their support for meta-programming,
|
|
which I'll also go into more detail about soon.
|
|
The three most popular Lisp's are common Lisp, Scheme, and Closure.
|
|
Let's start with the most obvious feature of Lisp's, S expressions.
|
|
S expressions make up the basic syntax of all Lisp's, and they're incredibly simple.
|
|
The only significant symbols are the open and close parentheses.
|
|
That's it.
|
|
S expressions are also written in prefix notation, so 1 plus 1 would be plus 1 1 in Lisp.
|
|
This confuses a lot of people at first, but it leads to an overall more consistent language,
|
|
and they are also incredibly easy to pass for developers of interpreters.
|
|
It's very difficult to describe syntax in audio, so I'll put some examples in the
|
|
show notes.
|
|
To some programmers, this is scary, and they find it difficult to read.
|
|
I omit there is a learning curve, but once you get more used to it, you wonder why the
|
|
syntax of other languages seem so clumsy and inconsistent.
|
|
The simplicity and regularity of Lisp's expressions means Lisp can be edited not just as
|
|
text, but structurally.
|
|
Addit to plugins like PowerEddit and PowerInfer allow you to directly edit the structure of
|
|
your program, which leads to far quicker development.
|
|
Speaking of quicker development, people sometimes speak about how much quicker they can develop
|
|
software in Lisp's.
|
|
This is mostly down to another key feature, Ripple Driven Development.
|
|
Ripple is a short term for a redeveloped print loop.
|
|
This basically does what it says on the tin.
|
|
It reads in some code, evaluates it, prints out the result, and then loops around.
|
|
Now, you might be thinking, so what?
|
|
Python has a Ripple, JS has a Ripple, what's new?
|
|
But the difference is Lisp Ripples tend to do more than just that.
|
|
A traditional development workflow with a language like C is write, compile, execute.
|
|
You write your code, compile it, and execute it.
|
|
Languages like Python remove the second step, so it becomes write, execute.
|
|
Python also has a Ripple, but it's disconnected from the rest of a Python development environment.
|
|
It's useful for quick prototyping, but you won't be using it while you write your actual
|
|
application.
|
|
Lisp Ripples are very different.
|
|
They usually have error handling.
|
|
You can customize how they run, and they're very tightly integrated into the development
|
|
environment.
|
|
When I'm writing closure and I want to test a function, I can just select it to my editor
|
|
and it will make that function available in my Ripple session so I can test it.
|
|
And within the editor, I can access the Ripple and modify parts as it runs to have incredibly
|
|
quick iterations.
|
|
This integration of the Ripple with the development environment changes programs from being something
|
|
written and then run to a completely live and interactive environment.
|
|
The speed at which I could update and iterate on my closure programs blew my mind the
|
|
first time I used it, and I cannot overstate how great of a tool it is to have.
|
|
I won't go into the functional programming stuff here, that would be better suited to
|
|
its own episode, but Lisp's were the original functional programming languages, and in my
|
|
opinion, still some of the best.
|
|
You can expect tail recursion, proper anonymous functions, minimize state, and all that neat
|
|
stuff.
|
|
So this is great.
|
|
We have a functional programming language, with a simple syntax.
|
|
We have added tools to make writing get quicker than any other language, and we can very
|
|
quickly iterate on changes we make to our program.
|
|
We still haven't actually got the most powerful feature of Lisp's, home of Iconicity and
|
|
Macros.
|
|
Home of Iconicity is the fact that Lisp code and Lisp data are the same thing.
|
|
Your program is an S expression tree, which is also the way data is commonly represented
|
|
in Lisp's.
|
|
This allows for powerful meta programming, Lisp sub macros which work similarly to functions,
|
|
but instead of returning a value, they return S expressions.
|
|
And these aren't like C's text substitutions, they are insanely powerful.
|
|
You can do anything in a macro, you can do in the rest of your programs, which leads
|
|
to insane extensibility.
|
|
For example, closure has libraries that add features like pattern matching, or even prolog
|
|
esch logic programming, and these are nothing more than libraries that contain macros.
|
|
I have no chance of being able to properly explain all of meta programming in this episode,
|
|
but I encourage you to check it out.
|
|
Using macros and meta programming, you can also modify and build the language around
|
|
what you want to do.
|
|
For example, overtone, which is a closure library to create computer music, contains macros
|
|
which add new constructs to closure specifically for music, like constructs for defining instruments
|
|
and a global metronome and timing system.
|
|
So, why do I like Lisp's?
|
|
Because I can program a whole lot quicker than in other languages, and I can program functionally,
|
|
which I prefer over other paradigms.
|
|
I can modify the language as I see fit to make doing exactly what I want to do easier,
|
|
and I can have edited tools that mean I have to do a whole lot less typing.
|
|
Hopefully, after this episode, you want to give Lisp's a shot, and if you do, I recommend
|
|
learning scheme with the schema box, the little schema, and the season schema.
|
|
However, those are quite academic rather than real world.
|
|
If you want a more practical approach, idlo enclosure, it's the most practical real world
|
|
Lisp, and it has plenty of great resources.
|
|
I learned using a book called Closure for the Brave and True.
|
|
I heard this episode has been informative, interesting, or at least some good background
|
|
noise for whatever you're doing, and I would like to thank HPR for providing a platform
|
|
for podcasts like this.
|
|
Hey, this is Neil Arzo, when I'm editing this, I'm sorry that this was so wooden.
|
|
Like, I really do care about Lisp, but it's hard for that to come across when I'm reading
|
|
off a script.
|
|
You've been listening to Hecker Public Radio at Hecker Public Radio dot org.
|
|
We are a community podcast network that releases shows every weekday, Monday through Friday.
|
|
Today's show, like all our shows, was contributed by an HPR listener like yourself.
|
|
If you ever thought of recording a podcast, then click on our contributing to find out
|
|
how easy it really is.
|
|
Hecker Public Radio was founded by the Digital Dove Pound and the Infonomicon Computer Club,
|
|
and is part of the binary revolution at binwreff.com.
|
|
If you have comments on today's show, please email the host directly, leave a comment on
|
|
the website, or record a follow-up episode yourself.
|
|
Unless otherwise status, today's show is released on the creative commons, attribution,
|
|
share a like, 3.0 license.
|