4 ms·
Why?
by ertucetin 9y ago
Why?
- bpicolo 9y agoEdification / amusement. I had a go in Rust recently. Was a great way to learn new things about Rust and also some interpreter concepts.
- deleted 9y ago[deleted]
- flavio81 9y agoWriting an interpreter (or compiler) greatly enhances one's programming skills.
- rjsw 9y agoWhy not work on improving an existing one ?
- phoe-krk 9y agoIn order to learn and build up a base of skills.
- chriswarbo 9y agoWhile we're at it, why don't we replace high school math tests with one question: "Solve the Riemann hypothesis". We can replace the physics curriculum with "Unify quantum mechanics with general relativity", and throw out computing courses in favour of "Prove whether or not P = NP". It's important to re-do things which others have already worked out, in order to reach a greater understanding :)
- rjsw 9y agoWhatever. I learned how to implement Lisp by reading the source code for multiple compilers. Started with Franz Lisp, then KCL and CMUCL. I don't feel that a toy interpreter is going to teach the same things.
- ozzmotik 9y agoeveryone learns in different ways, don't be too attached to your own perspective. we all interpret the world through different lenses and need to learn through the expressions of different methodologies. some people benefit heavily by implementing something themselves and not just reading through something someone else wrote. some people feed off of that practical and robust experience of implementation in order to get a proper context for how things actually work established in their head. concrete examples are more helpful than you might think to people who aren't as capable of abstract thought and logical analysis of something from its constituent parts
- rjsw 9y agoMaybe part of my reaction to this is a wish to avoid reinforcing the "Lisp is an interpreted language" meme.
- flavio81 9y agoYour approach is 100% valid, but it can't hurt to start making a really small lisp. Of course the implementation strategies of a "MAL" lisp and a Real Lisp are entirely different.
- munificent 9y agoOther people have different preferred learning styles. A toy language won't teach the exact same things, but it covers a lot of the same topics.
- metaobject 9y agoPerhaps you could write up the process you followed, in the form of blog post or something, so that you can pass on the knowledge. I, for one, would love a guided tour through those implementations to see which parts are worth studying to understand how an established Lisp is built.
- omginternets 9y agoI don't have the time to learn it that way. It's this or never doing it at all.
- kanaka 9y agoIt started with the question "Could you implement a Lisp using just GNU Make macros"? (Hint: Yes) Bit of trivia: Mal originally stood for MAke-Lisp. Conveniently the acronym didn't need to be changed for "Make-A-Lisp" It then grew into a personal learning tool for me for learning new languages. As I implemented more languages, I refactored the structure to make it more portable and incremental. At some point I realized that it might be an interesting learning tool for others so I wrote an early version of the guide and had a friend work through it and give feedback. He liked it enough that he immediately did a second implementation. At some point the project got some twitter/HN attention and other people began contributing implementations and feedback for the guide. Mal also serves as programming language "Rosetta Stone". A bit like rosettacode.org but using a full working project.