Learning, recently...

I started the crafting interpreters book yesterday. It takes you through writing a compiler+interpreter in first Java and then C. I'm going to be following the book with Typescript and Zig.

Wrote the implementation of a REPL and a Lexer yesterday that reads through the text and produces a Token stream:

Why am I doing this

Firstly to just learn, this stuff is super intriguing and I wanna know what pipeline my javascript travels through before its executed on what they call bare metal. I've also been wanting to learn about memory management for a while now. Last time this lead me to Rust, which was probably the wrong choice for the job, considering it obsfucates memory management through complex borrow checker patterns, though I did learn a lot in working in rust and started appreciating type systems. Anyways, I'm hoping crafting interpreters will help me learn the memory management stuff through using either C or Zig (whatever I end up using)

The other — I've realised I am very much interested in this domain (programming languages) of CS. Although I'm not interested in optimizations and speed and all of that stuff (mostly cause that stuff is better left to the CS majors) I think where my intersection — being a graphic designer and also having this interest in CS — will benefit me is visual programming languages.

When we think of Visual programming languages, we think scratch. The issue with most VPLs is that they are just a stylization over already existing Programming languages. Though what would a deterministic (or not) language look if the primitives were based on space and geometry. What would the Lexing -> AST -> Runtime chain look if syntax was based on interaction of lexemes in space.

Why (i think) people don't experiment with this

Mostly because any programming language when being created is thought as text, so writing, testing, running and all the tooling an resources are made with this base assumption. Programs are files that are edited with text editors.

Node based programming again is a frontend that outputs the same.

Though we can have this sort of spatial programming if we have a graphical editor... and then diagnostics would be based on where objects are in space rather than textual syntax.

[ps the vocabulary is lacking above, will come back to edit and refine this post]

[TODO: add a WIP/Draft renderer for the feed]