As any other GenX developer out there, my first computer was a home computer of the late 80s. A C64, to be precise, if we don't consider the time spent on a friend's ZX81. It was impossibile not to love the ZX81 in its bare simplicity, but the C64 was of course easier to use and, in some way, more professional.
It also had a satisfying Basic, which I gladly explored with silly code. I respect Basic also because coding with it I earned my first real developer money. So, thanks Basic. But I fell in love immediately with Pascal when I got into the Turbo Pascal frenzy of ye olde times. Pascal led me to Modula-2, that I extensively used in university projects. And then to Ada, even if it isn't a Wirth-certified language.
So, Ada. I like Lisp (also) for its cryptic, sometimes almost runic, syntax. Ada is the opposite: a language you like - if you like it, I mean - for its declarative verbosity. There is almost no ambiguity in Ada code, and this is also why Ada has also been a by-design safe language for ages. Also, it's an official standard and this is definitely a plus.
Ada is certainly worth a try if you like Pascal-style syntax and approach. You can simply code in Ada and compile your stuff, as in the old days. Otherwise, if you need - or you think you need - a crate manager a-la-Cargo, there's Alire. It helps with complex programs, you don't need it for pet projects.
Pages as simple and plain as these you're reading now could seem strange and outdated, in our era where everything web must be flashy, opulent, dynamic, addictive. My idea is that an abundance of form matters less than basic function. Contents should be more important than the boxes they're into. If the conteporary web is a profusion of digital Art Nouveau, here I opted for a kind of Brutalism.
The first version of this digital garden was made in the simplest way possible: apache, html, a simple css file and that's all. Html pages were composed directly in a text editor and then uploaded online using good old ftp. Now, to give a little more aesthetic appeal, I'm using a framework - kiki, by Tomodashi Industrial - which follows a similar approach to web design.
The only logical alternative to this Brutalist model is, probably, Gemini. But managing a Gemini capsule is a different thing from managing some web pages. And the geminiverse is for sure entertaining but still not that popular. However, these pages can be esaily converted to Gemini contents.
Clojure could be a gentle(r) introduction to Lisp. They’re strictly related, of course, but Clojure is a bit less intimidating: it looks more like “normal” programming languages, for those of us who come from old school imperative ones. This doesn't mean it’s an easiest language, but simply that the learning curve is less steep if compared to Common Lisp.
That said, going down the Clojure road has some pitfalls. Its close relation with Java can be an issue for many – it’s been for me – and its REPL debugger is (my opinion) much more cryptic than Lisp’s.
Clojure is often perceived as “the Lisp who wants to befriend Java”, and Java is a quite demanding friend: what’s good for it should be good for you too. Like, the most mentioned reference IDE for Clojure is IntelliJ (no thanks) or, at the opposite side of the usability spectrum, the good old Emacs with plugins (no thanks either).
Lisp has a strange hypnotic fascination. Probably it’s for all those parenthesis, the idea that commands, expressions and therefore logical concepts have a beginning and an end. They’re not clear, but self-enclosed. Selfish, but in a good way.
Unfortunately, Lisp is not a fashionable programming language anymore. List processing (yeah: lis-p) today seems kinda meh as a selling point. Until you realize that since in Lisp everything is a list, list processing means the ability to process anything, code included. That said, let’s be honest: being at ease in Lisp requires to think in a Lisp-y way and this is not “immediate”.
Also, most of the official/popular books on Lisp aren’t that welcoming. The most effective textbook is probably “Common Lisp: A Gentle Introduction to Symbolic Computation”. And if they need to specify that it’s a “gentle introduction”... well, it should mean something. By the way, it’s actually gentle, I’m able to confirm that.
Many Lisp books and tutorials make approaching the language harder than it should be, essentially because of the author’s personal tastes in language platforms and IDEs. My very personal advice is to keep everything simple.
- First, install SBCL via CLI.
- Second, ignore all the stuff about “using Lisp in Emacs” if you’re not an Emacs lover already, otherwise you’ll spend precious time trying to understand Emacs. Use your favorite editor, you’ll always be able to get into Emacs later. - Third, go on and play coding.
Using Lisp is fun and quite rewarding, for desktop applications as much as embedded systems. It won’t make you rich and neither the star of your next developers meetup. But it’s really worth a try. And, probably, a good first step into the strange world of functional programming.