To run and read codes helps you to learn language’s core concept.
Hi, I’m Dr. NISHIO Hirokazu. I’m writing a book to teach the core concepts of programming languages.
I think that to run codes helps you understand language’s behavior. To read implementation of languages also helps you. However, there are some problems:
One way to overcome these problems are implement small subset of languages which run on browsers.
languages on browsers
Parser-on-browser: | |
---|---|
The concept of parser is very important. It is a recursive descent parser of infix notation works on browser. You can change and observe operators’ priority and associativity. | |
LISP-on-browser: | |
LISP is a language with simple but extensible grammers. You can try LISP on browser and learn how macros works. | |
AST-Visualization-on-browser: | |
The concept of abstract syntax tree (AST) is very important. It is a visualizer which show AST of JavaScript in realtime. (it is better to change tree layout engine) | |
FORTH-on-browser: | |
FORTH is a language with simple grammers and stack-based execution. The concept of stack-based execution is important because a lot of modern language (such as Java, Python and Ruby) choose it for thier implementation of virtual machine. (completed) | |
EDSAC-on-browser: | |
EDSAC is a computer in 1950s. It allows us to make program with human-readable symbols instead of describing machine instructions as a bunch of bits. It is very primitive computer language. | |
Brainfxck-on-browser: | |
Very small language with interesting architecture, which was inspired by the turing machine. (completed, but should be improved) | |
LazyK-on-browser: | |
Lazy K is small functional language. (not yet) |
coderunner:
doc:
For detail visit each project page
All test codes for coderunner are under these license:
Its purpose is not to disturb reader’s work.
Tools (coderunner, sphinxdoc) and languages are under GPLv3. It is to ensure reusability of codes even if I give up to maintain this projects.
I greatly appreciate your contribution. You can contact me by e-mail: nishio (dot) hirokazu (at) gmain (dot) com. Or simply use pull-request of github.
tokibito, aodag, moriyoshi, Dragan Zivkovic, Sri Ariyani