Making your own programming language is hard. Making an interpreter for it is harder. What Lignum pointed out was things you should be looking at. Yes, those things are negative, but they are needed for you so you would be able to make something better, not to make you feel bad or anything.
Using globals variables is bad because:
- local variables are faster than global variables
- global variables can be accessed outside the program
If you, lets say, overwrite the FS API and save the original (not overwritten) FS API in a global variable, all someone would have to do is use that global variable to bypass your FS overwrite. This is just an example, but from it you should imagine why using globals is bad.
And about the language itself. It looks quite interesting, not as bad as other 'custom' programming languages might be. I have some suggestions actually:
how about ending function (or whatever they are called) with a bracket?
screen.log {
Hello
} <-- right here
Also, instead of an arithmetic library, why not use symbols (+, -, *, /)?
As I said, creating a language might be quite a challenge. I would suggest you to first fully design it, and then making an interpreter for it. By designing I mean something like this (just an example):
# this is my language
# all comments start with ( # )
# calling a function "print" which is in a library called "system"
# giving it a string argument "Hello World!"
system-print{ <Hello World!> }
# defining a variable of type "int" (integer) called "myNumber" and assigning '3' to it
def int myNumber -> 3
So this is an example of a design of a language that I made up while writing this post.
Good luck with it :)/>