Computer Language Implementation - ponyatov/orth GitHub Wiki

https://www.quora.com/How-can-I-promote-Smalltalk-Lisp-Forth-vs-Python-Java-C-F-Haskell/answer/Dmitry-Ponyatov

It would be great to have some large MOOC set of courses on Computer Language System Design available for free, as the MIT does with some of its courses. I mean don’t teach languages, but teach how to implement very basis of every language, especially such strange ones as Prolog and ML family.

It is a very big theme, and it is not so many manuals available to learn how to do it yourself. I can only point two of them:

  • Glorious Dragon book (2nd edition only): it has a lot of additional themes compared to the previous edition, but it primarily targeted for static compilation and nothing about dynamic language implementation
  • PLAI book: great tutorial on writing something LISPic

As the practical application, there is a large area of script engines embedded into large program systems written in mainstream languages. Lua is the most known in this role, but looking on its syntax I have strange feelings.

  • FORTH it is unbeatable in the role of minimalistic command line interface for embedded devices combining extra low computing resource requirements (bytecode), simple language model, programmability and extendability by an end user, and can be reimplemented in a few days.

  • Python is the best for the first touch on imperative programming: its algolic syntax very close in language model to mainstream Java/C++, but has no such ugly syntax with piles of type modifiers and a thicket of curly braces. Python is good as first/learning language as student can move to Java/C++ with lower

  • Ruby has peculiar syntax with some feel of SmallTalk, I can't say about it more as I still did not found a smooth intro to Ruby: all tutorials and books I found starts like formal language specification standard (Python manual by Rossum, Dreik, Otkidach,.. was great as first into to language).

  • SmallTalk is stronghold of OOP. And its message passing model is native for scalability. I'm horrified why it was not yet ported as a mainstream cloud-based operating system?!

  • AI rises like a bouncing rakes, take care of your heads! Prolog was known many many years as base for expert systems (and I never have seen any expert system nowhere). And some Lisp was popular.

  • LLVM good as static compiler frontend. I'm trying to jump on in for an ARM Cortex-M MCUs.

I can’t find any smooth step-by-step intro to writing dynamic languages:

  • object system,
  • memory allocation with GC,
  • structural matching (Haskell/*ML)
  • fault tolerance green threads and clustering from Erlang

And finally, there is one skill all programmers must have: syntax parsing with automation tools (code generators and libraries)

  • PLY library, ANTLR and classical lex/yacc

it is required for anybody who ever was faced with text data processing: CAD and science systems have a huge amount of this, some dropped legacy software, websucking, data interchange formats starting from XML and JSON etc.