If you ever wondered how to write a programming language, this is probably the best resource to get started (and then of course Crafting Interpreters).
I can't recommend highly enough to implement a simple lisp (or a forth).
Illuminating experience and it will also help you see (among many other things) the parentheses in a different light.
stdatomic 2 hours ago [-]
First day of paradigms course in the 2000s and prof says "if your opinion of Scheme is too many parentheses, then you're an idiot."
Needless to say that was my opinion and every day I think, more and more, how right he was.
(later I did make some gui apps that included scripting and chose s-expr syntax because of how simple it is to implement it)
bananaflag 1 hours ago [-]
There are two problems with Lisp parentheses in my opinion:
1) Humans are not that equipped to handle that level of nesting without some other aid, this is why Lisp code is usually indented.
2) Parentheses aren't just about grouping, and this is unintuitive. For example, x is not the same as (x). This is a bit like in set theory where x is not the same as {x}, but parentheses do not look like the kind of sign that would work like that.
NooneAtAll3 2 hours ago [-]
main problem isn't brackets themselves - it's that they're too on the right
had brackets been displayed as curly braces in C - everything would look much more manageable
phpnode 1 hours ago [-]
so, instead of
(foo (bar (1 2 3))
you'd prefer
{
foo {
bar {
1
2
3
}
}
}
is that right?
irishcoffee 55 minutes ago [-]
Emacs vs vim, go!
eska 1 hours ago [-]
I changed my opinion about parens when I stopped formatting like C, and used indent rather than parens to denote blocks. That is, a large amount of them at the end is totally fine.
RedCinnabar 46 minutes ago [-]
Man these kind of resources have aged really bad in the age of AI.
Crespyl 42 minutes ago [-]
Why would AI make these age worse than, say, libraries or languages becoming obsolete?
I don't think a good learning resource gets worse just because there's a newer alternative.
RedCinnabar 15 minutes ago [-]
> I don’t think a good learning resource gets worse[...]
Probably not, but they become irrelevant. The other day I found an old programming book at my parents’ and while it was still a terrific resource, I couldn’t image anyone learning a language from a book nowadays.
AI is doing the same thing but 100 times effectively than anything else.
incanus77 33 minutes ago [-]
How do you mean “these kind”?
RedCinnabar 21 minutes ago [-]
Blog tutorials, guides, programming books and youtube tutorials. They are completely irrelevant in a time where you have a personal tutor willing to explain every single detail of a subject.
jgalt212 44 minutes ago [-]
How so?
urcite_ty_kokos 2 hours ago [-]
Appreciated the title xD
joshuamorton 1 hours ago [-]
There are edge cases where this fails, but `def parse(s): return json.loads('['+re.sub('([")])\s*(["(])','\g<1>,\g<2>',re.sub('[^()\s]+','"\g<0>"',s)).replace('(','[').replace(')',']')+']')` is a surprisingly robust lisp parser.
e12e 2 hours ago [-]
(2010)?
45 minutes ago [-]
timonoko 1 hours ago [-]
One of those exercises that are now just boring, because AI does it better.
Gemini did write Lisp-1 interpreter in Linux-assembly the other day. It was ready to implement garbage collection and compiler and all shit, but that was just depressing from human point of view.
genxy 43 minutes ago [-]
There is always someone better than you at almost everything you do, this is statistical reality.
If all you care about is the artifact and not the path, there is no reason to do anything.
Use the tool to better yourself, your understanding and push the limits of what is possible. If a Lisp in assembly with GC is now hello world, change what a hard project is.
I see this attitude a lot, and I think it is rooted in a sort of self-centered elitism. Anyone can do it, so why do it? Instead you could have the AI teach you how to implement it yourself with a deep understanding that no human, even if you paid them, would put up with.
But sure, get depressed. But why tho?
abecedarius 8 minutes ago [-]
It's funny, in the 8-bit days a lot of us learned programming for its own sake without much expectation it'd be lucrative. Took ~50 years to get back to that spirit as the default.
tosh 53 minutes ago [-]
is learning how to accomplish or understand something boring
just because someone or something else does it better?
Lyngbakr 41 minutes ago [-]
It depends why you're doing it. Are you doing it for the product or the process? (Of course, they're not mutually exclusive.) I do it for the fun of building, in which case AI is irrelevant.
chamomeal 55 minutes ago [-]
I mean it’s still worth doing, even if AI can do it. But I definitely empathize with that bit of AI ennui.
Rendered at 17:53:11 GMT+0000 (Coordinated Universal Time) with Vercel.
See also part 2 https://norvig.com/lispy2.html
https://www.codesections.com/blog/raku-lisp-impression/
Illuminating experience and it will also help you see (among many other things) the parentheses in a different light.
Needless to say that was my opinion and every day I think, more and more, how right he was.
(later I did make some gui apps that included scripting and chose s-expr syntax because of how simple it is to implement it)
1) Humans are not that equipped to handle that level of nesting without some other aid, this is why Lisp code is usually indented.
2) Parentheses aren't just about grouping, and this is unintuitive. For example, x is not the same as (x). This is a bit like in set theory where x is not the same as {x}, but parentheses do not look like the kind of sign that would work like that.
had brackets been displayed as curly braces in C - everything would look much more manageable
I don't think a good learning resource gets worse just because there's a newer alternative.
Probably not, but they become irrelevant. The other day I found an old programming book at my parents’ and while it was still a terrific resource, I couldn’t image anyone learning a language from a book nowadays.
AI is doing the same thing but 100 times effectively than anything else.
Gemini did write Lisp-1 interpreter in Linux-assembly the other day. It was ready to implement garbage collection and compiler and all shit, but that was just depressing from human point of view.
If all you care about is the artifact and not the path, there is no reason to do anything.
Use the tool to better yourself, your understanding and push the limits of what is possible. If a Lisp in assembly with GC is now hello world, change what a hard project is.
I see this attitude a lot, and I think it is rooted in a sort of self-centered elitism. Anyone can do it, so why do it? Instead you could have the AI teach you how to implement it yourself with a deep understanding that no human, even if you paid them, would put up with.
But sure, get depressed. But why tho?
just because someone or something else does it better?