3 ms·
If I were to invent a programming language for the 21st century
- PaulHoule 9y agoI feel strongly for point 2; so many things about floating point numbers are distractions that make computers seem unintelligent. (Some of "A.I." is about not acting stupid.) Compilation speed in 1 turns out to be really important to many users. C/C++ projects with 1 hour+ build times are a reality for many in the industry. PHP beat out Perl on the web partially because the PHP language was faster to parse. Even so, I've seen people very frustrated by a 30 second build process with PHP. As for point 3, C/C++ metaprogramming is hell because the creators of C/C++ got the math wrong at the very beginning https://en.wikipedia.org/wiki/The_lexer_hack https://en.wikipedia.org/wiki/The_lexer_hack Other forms of metaprogramming are so powerful that they should not be dismissed just because of that train crash, particularly if you don't care how fast the compiler is. Metaprogramming is particularly strong for creating domain specific languages, which especially put power into the hands of non-professional programmers. Two themes they don't mention: 1. The most significant difference between natural and computer languages is that natural languages are much more lenient in what people call "identifiers". For instance, we can say "Phil Collins" "The lead singer from Genesis" "The guy who sings on the track I am listening to right now" to refer to something (and you certainly could write database queries to do the same) but programming languages require you to use a limited number of specific terms that appear in the symbol table. If you opened up the ability for the computer to accept many possible names for things, you also open up the possibility of errors caused by over-eager matches, and resolving that one is a toughie. 2. Advanced programming languages can benefit from IDE integration. Start with the benefits of an IDE such as PyCharm or IntelliJ Idea. Java would be vastly more painful to program in if it did not have automated refactoring tools, thus good IDEs can transform the acceptability of a language. In the case of ambiguity resolution, as mentioned above, an IDE could engage the user in a dialogue about ambiguities in the program.