Wrong again #157
It has been said that one can tell what language a programmer used previously by looking at their first Mathematica program. Similarly, it is common to see Python programs rated on how ‘pythonic’ they are.
In a Lisp tutorial, one wants to see Lisp used in the way it is intended to be used, rather than examples that are direct translations from a language such as Basic. If you have learnt Basic, the best advice is to forget all about it, so I was disappointed to see Basic mentioned in a Lisp article together with program examples written in a Basic style.
Lisp is primarily a functional language; purely functional languages have some drawbacks, so Lisp includes some non-functional features, but these are for use in special cases, so should not be included in a first tutorial. Lisp has an REPL (read, evaluate, print loop), which means results are automatically printed, so any mention of the print command is an unnecessary distraction. In Lisp, variables are best used only in special cases, so the setq command shouldn’t be mentioned in a first tutorial either.
It is a mistake to suggest that Lisp is “quirky”
(as your ‘expert’ does). A quirk implies something unpredictable or unaccountable, but Lisp is the way it is for good reasons.
An example to show that besides integers, floating point numbers and strings, Lisp functions can return both lists and functions would go some way to explaining why many of the cognoscenti consider Lisp the best available programming language.
A first tutorial should conclude by providing pointers to further information, which in this case should include www.paulgraham.com/lisp.html. I hope you’ll try to make sure that future articles will bear all this in mind. I’ve talked about Lisp, but much of what I’ve said would apply to articles on other programming languages, too.
John Payne
Neil says…
Thanks for the feedback, I do take it on board. We tend to get the odd email from people who know way more about subjects than I or the writers do. I think people’s take on how subjects should be approached may not appreciate the magazine’s level – though we shouldn’t be making mistakes, of course. We’re largely here to introduce subjects in a fun manner and not any formal or academic style, and I don’t think Mike would ever describe himself as an expert in Lisp, which really is quite quirky from a lay person’s perspective, which was always the point of these articles.
I’m using a Raspberry Pi 4 8GB with Raspberry Pi OS on a 64GB SD card, all accessed via RealVNC, as the RDP didn’t seem stable. I’m not planning on using the Pi for emulation itself but rather for hosting lobbies for my friends. I installed the Yuzu emulator via Flatpak, which seems good when it works. I then tried Citra but couldn’t get it to work with Flatpak or AppImage – even trying an executable, the Snap says it’s not ARM64-compatible.
Basically, I’d like to try an N64 emulator with the Aqz plugin, and the PSX emulator using Netplay, but a Docker setup also seems an interesting option – I’ve no idea what that would entail, though.
Richard Smart
Neil says…
Congratulations for embarking on a Raspberry Pi and Linux emulation odyssey. It’s a great platform to try emulation on, though it sounds like you’re taking a more complicated approach than perhaps you have to. Citra looks like it’s x86 only, so ARM-based Pis aren’t supported, which is the error the Snap was giving you. Frankly, if the Pi isn’t supported, you’re wasting your time trying to compile this.
If you want a simple emulation solution, you should take a look at Batocera.linux from https://batocera.org
– it offers not only Raspberry Pi images but also x86 images, so you can use your desktop or Steam Deck among a host of other devices.