
If I were to invent a programming language for the 21st century - smb06
https://hackernoon.com/if-i-were-to-invent-a-programming-language-for-the-21st-century-78ba605c2ed2?source=linkShare-3e4d3e72fc4a-1495469894
======
PaulHoule
I 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.

