notebook

python but my way

I've long wanted to make a programming language. Partially because there's a lot of elements I like about various languages whose ecosystems I don't like, but mostly because I think it just sounds kinda fun.

I actually really enjoy programming in python because it feels comfy, but there's a couple little quirks about it that I'm not a huge fan of. I am also a big fan of go (the language). It's a shame that go (the ecosystem) sucks.

So my idea here is to make a python-like language. That means significant whitespace, no curly brackets, and easy to write. However, I do kind of want compile time type hinting. Not necessarily full static typing, probably something more like rust's type assumptions. Not sure what kind of syntax I want to go for with that; I don't mind postfix types, but they do remind me a little too much of JS. I'll probably go with them though just for ease of assuming them.

I also want to take the golang idea of compilation. I really, really like how go can precompile binaries, but you also really don't have to because it compiles so fast. I also kind of like go's package importing using straight github links, though I'll probably steal Wren's importing syntax.

An important element is to make sure I can run shell commands and subprocess as easily as possible. Like as easily as bash or python's os.system() thing.

Something I thought of at one point is to separate out the concept of assignment and copying. Why not make = always be for assignment by reference and copy be for assignment by copy. Like:

x = 1
y = x
x++
print(y)
# outputs: 2

x = 1
y copy x
x++
print(y)
# outputs: 1