I recommend you not make your dream language as your first project. Instead, 
create a small and simple language as your first step. Perhaps a FORTH 
derivative. Learn from that. See where that learning takes you. Do you want to 
make a general purpose language? or one to formalize legal contracts? or one 
where you demonstrate something creative and new?

Definitely learn at least one assembly language (ARM has less legacy cruft than 
x86) because this is the basis of the interface between the computer and the 
higher level language. Modern technology like LLVM allows you to have an 
abstraction of the computer, but it is good to have detailed knowledge of real 
hardware.

My start to learning a little about programming languages was this. I started 
from a computer engineering degree; so I had knowledge of hardware. I set my 
goal: I wanted to program a microcontroller using Python. I knew it was 
unlikely that I could fit the entire language and its libraries in the small 
memory of a late 1990s 8-bit microcontroller. First step was to get "Hello 
World" to work. I wrote that program in Python and "disassembled" the program 
into Python's bytecodes. From that I started to write a tiny interpreter 
supporting only the bytecodes I needed. I created the datatypes in C that I 
would need to hold the Python datatypes. I created execution frames (what a 
procedure becomes when it comes time to run it). I held off on ceating a memory 
management and garbage collection system until I absolutely needed it.

I do NOT recommend you learn an interpreted language like Python. I just wanted 
to share the thinking of: start small, get that working, see what's next.

Reply via email to