based on a lexer and parser that is so stupid
it needs semicolons to figure out where a line ends
I don't agree, the problem is not the semicolon at the end of the line
the problem is the C grammar itself which allows silly constructs
it goes deeper than that.
have you ever wondered why there is a need for .h files ?
The c compiler had to run on a machine with very little memory. this was a shared user machine and as students they were only allocated a small amount of resources....
They designed the compiler as single pass. simply because anything else didn't fit and was too complex. Same goes for that stack/heap construct.
all the c compilers compile for this 'virutal model and then shoehorn the output on the target architecture. this is not optimal. memory is not laid out that way on all machines.
Take a look at header files. In 2016 that is the most stupid thing ever (when the language was create it was not !). As a human ,i have to declare the functions in the header file ,and then write the same construct once again in the real code section. Why do i need to forward declare functions ? i don;t know what the final format of those functions will be ! i have not designed them yet ! and i need to fix stuff in different files every time i make a modification to the function i/o.
Why can't the compiler just go over the source code once, collect all the functions , and then start compiling ? There is not even a need for includes. simply go look in other files in the directory and see if you can find it there first. descend into subdirectories automatically. if files reside on a central server then you can point to them if needed.
The reason is historical . disk i/o was non exisitent ( the machine had TAPE for crying out loud... so you could not just randomly access files... ) and multipass meant eating lots of ram at compile time.. ram the machine did not have !
so we are stuck anno 2016 with a language and compilation method that was built for a long dead architecture with very limited resources.
C should evolve. Any language should evolve. compilers must be made multipass. I want to do away with all the overhead as a human. the less keyboard pounding i need to do the better. any character i type is a potential source of mistake. (speelling erroooors )
Now people will pitch in : use a good code editor with autocompletion blablabla.. that is not solving the problem, it is just a workaround ...