Ancestors

Toot

Written by SyntaxError :sdf: on 2024-11-13 at 00:12

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

Descendants

Written by Daniel Lakeland on 2024-11-13 at 00:24

@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

Written by Chris L on 2024-11-13 at 00:27

@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

Written by Daniel Lakeland on 2024-11-13 at 00:33

@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

Written by Chris L on 2024-11-13 at 00:46

@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

Written by Daniel Lakeland on 2024-11-13 at 00:57

@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

Written by Daniel Lakeland on 2024-11-13 at 01:45

@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

Written by Chris L on 2024-11-13 at 22:17

@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

Written by Panicz Maciej Godek on 2024-11-15 at 21:50

@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

Written by SyntaxError :sdf: on 2024-11-16 at 00:04

@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

Written by Panicz Maciej Godek on 2024-11-16 at 06:49

@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

Written by SyntaxError :sdf: on 2024-11-16 at 19:18

@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

Written by λzyd on 2024-11-15 at 22:21

@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

Written by SyntaxError :sdf: on 2024-11-16 at 00:07

@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

Written by λzyd on 2024-11-16 at 00:17

@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

Written by λzyd on 2024-11-16 at 00:23

@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

Written by rntz on 2024-11-15 at 23:51

@syntaxerror Racket. Approachable; fantastic docs; batteries included; best in class macro system.

=> More informations about this toot | More toots from rntz@recurse.social

Written by Gene Pasquet on 2024-11-19 at 20:21

@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

Proxy Information
Original URL
gemini://mastogem.picasoft.net/thread/113472748039259493
Status Code
Success (20)
Meta
text/gemini
Capsule Response Time
345.722476 milliseconds
Gemini-to-HTML Time
8.484768 milliseconds

This content has been proxied by September (3851b).