4 ms·
Thank you for writing this article. Very interesting. The dualities static vs dynamic, whitespace insensitive vs sensitive, brackets vs nobrackets, pascal/fort
by samsquire 4y ago
Thank you for writing this article. Very interesting.
The dualities static vs dynamic, whitespace insensitive vs sensitive, brackets vs nobrackets, pascal/fortran/style vs algol, interpreted vs compiled, dynamic scope vs lexical scope, aot compiled vs jit compiled, functional vs oop are all dualities that a language must bear with the ramifications of that decision. I don't think it's obvious that one category of the duality is ALWAYS superior to the other in every scenario.
Obviously we would prefer a language that is expressive, easy to read and compiled for performance and avoids errors at compile time. Does this language exist?
And that is as easy to write as a scripting language such as Python or Ruby. Python is extremely fast to write scripts for.
I'm working on my own programming language and it resembles Javascript, so it is C style brackets and semicolons. In the interests of getting running fast, I compile to my own imaginary assembly language which is a switch based interpreter. This means I can work on the frontend and backend of the language in parallel. My language is a multithreaded language and can communicate integers between threads. I am still designing compound struct sharing between threads. Since this enters the move vs copy or by reference or by value semantics problem. If I send an object/struct/hash/list by copy then the code is slow. If I do it by reference, I have memory management to worry about if I plan to rewrite my language in a compiled language and not rely on Java's garbage collection.
On eatonphil's discord we talk programming language design.