Question for lispers with experience: If you should start to learn a LISP style language today, which one do you pick up? Why?
[#]lisp #scheme #commonlisp #programming #lispers #developers
=> More informations about this toot | More toots from syntaxerror@mastodon.sdf.org
@syntaxerror
I know it might not seem like it but #julialang is secretly a LISP. That's what I'd recommend these days.
=> More informations about this toot | More toots from dlakelan@mastodon.sdf.org
@dlakelan @syntaxerror first class lambdas with lexical closure or reader macros or regular macros?
=> More informations about this toot | More toots from jayalane@mastodon.online
@jayalane
First class lambdas with lexical closures. String conversion macros (basically you can write your own parser for strings that produces syntax tree). And regular macros.
@syntaxerror
=> More informations about this toot | More toots from dlakelan@mastodon.sdf.org
@dlakelan @syntaxerror well I am impressed. I am learning matlab which is kind of cursed and have been tempted by Juliablog articles.
=> More informations about this toot | More toots from jayalane@mastodon.online
@jayalane
Common LISP was an explicit inspiration for Julia, as was Matlab syntax (for math, but not similar semantics). And it compiles to native code and most of Julia is implemented in Julia. Used to be the parser was in scheme but they've moved to JuliaSyntax package as the parser recently.
@syntaxerror
=> More informations about this toot | More toots from dlakelan@mastodon.sdf.org
@jayalane
Matlab is absolutely cursed. Julia is a much better language but also still good for math expressions.
@syntaxerror
=> More informations about this toot | More toots from dlakelan@mastodon.sdf.org
@dlakelan @syntaxerror I was trying to do an O(n) algorithm for some matrix class and I got confused so instead of synthetically counting the steps i timed the run and despite everything couldn’t get O(n) behavior with standard matrix data structure. Not only was allocation O(n^2) but calling functions was O(n^2) because it copies giant matrices for pass by value semantics.
=> More informations about this toot | More toots from jayalane@mastodon.online
@syntaxerror in my opinion, Scheme as a perennial quality that other languages lack. It's simply a work of beauty. ("Tail recursion is its own reward".)
But it lacks certain essential features (and every implementation provides their own, in a non-compatible manner)
Common Lisp's design is more of a political compromise of the past. It's perhaps more popular, but I'd say that the popularity of both is close to negligible.
I learned both, but Scheme stuck with me. (I started with Common LIsp though).
Personally I would recommend #Kawa, because it extends Scheme with practicality. But I won't do that, because its main author - Per Bothner - posted a few years ago that he's looking for someone to maintain the thing, and no one volunteered.
And unfortunately the implementation isn't free of bugs.
Racket on the other hand is a great teaching language, and a well maintained implementation with some exceptional qualities (and the HTDP book).
I guess the answer will depend on why exactly someone wants to learn a Lisp.
If someone just wants to expand their mental horizons, then I would recommend both Structure and Interpretation of Computer Programs (Scheme) and Paradigms of Artificial Inteliigence Programming (Common LIsp).
Both are great books, and I don't think that the choice of their particular programming languages makes them hard to read.
On the other hand, if the students have some particular projects in mind, I think this should dictate the choice.
Also, there is a fantastic online environment for learning Clojure called maria.cloud
=> More informations about this toot | More toots from PaniczGodek@functional.cafe
@PaniczGodek Thank you very much for your reply. I'm curious about SICP because everyone raves about it. At the same time I have limited time and I want to learn something that can also be useful to develop personal projects.
=> More informations about this toot | More toots from syntaxerror@mastodon.sdf.org
@syntaxerror do you have any particular projects in mind?
SICP is great, because it teaches to think with immutability. But if you want to do web browser stuff, I think that Clojure has the most mature ecosystem.
Then again, many differences between those languages are superficial, so learning one might benefit all.
I think that Racket with "How to Design Programs" might be a good start, because it is optimized for the learning experience.
=> More informations about this toot | More toots from PaniczGodek@functional.cafe
@PaniczGodek Currently I have no interest in web stuff. I didn't know about "How To Design programs". Thank you for your suggestions :)
=> More informations about this toot | More toots from syntaxerror@mastodon.sdf.org
@syntaxerror I'd say it really depends on the type of person, what goal they have, and what they can and can't tolerate from a language. Most Lisps would be a bad idea if someone doesn't like the idea of having to write something from scratch. It'd also be a bad idea if someone doesn't like the idea of having to sometimes read code to understand how to use some library. It'd also be a bad idea if someone doesn't like the idea of reading books to learn a language.
In general you need to be open a DIY approach if you're going to adventure with a Lisp. How I started with Lisp was a small group of friends knew Common Lisp. So, my answer isn't really based on anything technical but social: start out with the Lisp that someone you know uses. If you don't have that, just pick one based off what seems like a good book.
=> More informations about this toot | More toots from zyd@sup.zyd.lol
@zyd I like the idea of writing something from scratch. I like the idea of reading code to understand how things work and I enjoy learning with good books.
Thank you for your reply. Do you have any book suggestions?
=> More informations about this toot | More toots from syntaxerror@mastodon.sdf.org
@syntaxerror If you want to learn Common Lisp quickly, Practical Common Lisp: https://gigamonkeys.com/book/ - If you don't mind a lengthier book with lots of exercises and uses old-style AI to teach good Lisp programming, Paradigms of Artificial Programming: https://norvig.github.io/paip-lisp/#/
General support resource for Common Lisp: https://lispcookbook.github.io/cl-cookbook/
=> More informations about this toot | More toots from zyd@sup.zyd.lol
@syntaxerror The curse of not being able to edit posts on my gts instance: Paradigms of Artificial Intelligence Programming. :woe:
=> More informations about this toot | More toots from zyd@sup.zyd.lol
@syntaxerror Racket. Approachable; fantastic docs; batteries included; best in class macro system.
=> More informations about this toot | More toots from rntz@recurse.social
@syntaxerror Common lisp because that's the one I started on with the awesome book "Practical Common Lisp"!
=> More informations about this toot | More toots from etenil@toot.cat This content has been proxied by September (3851b).Proxy Information
text/gemini