Topic: Properties of a great programming language
1. It should have good grammer which specifies inputs and outputs.
#language A
a = "foobar"
out("foobar.txt")
#fails to mention input for foobar.txt
#language B
a = "foobar"
out("foobar.txt", a)
#shows clearly what is the input for output file foobar.txt
An even better way in language B would be to mention complete filepath in the filesystem wrt root.
2. It should have a small and easy to read compiler created by a reputable community (prevent to be ethical in past wrt actions).
3. It should be easy to learn with very few easily understandable logical concepts which you can remember.
Haskell fails miserably on this. Veterans cannot even explain the concepts of monads and functors easily and they want to teach Haskell. Make things simple, not complex. Language is just a tool to convert human language to binary.
For me, functions and data is a complete set. You have data as input and output, and you have functions which process data.
4. It should force the programmer to write clear, concise and beautiful code.
I've not found such a language today. I tried to Multiple ways to write a program should be removed. Things should be strict so that all people are on the same page and don't struggle with different representations.
Bad
int a = 0;
int b;
b = 0;
Good
int a = 0;
Above code is still simple to understand but it gets more and more complex for more multiple representations.
5. Prevention of corruption.
Once the language is complete and mature, the urge to do something with it should be suppressed and the language should be left as it is without adding additional features. Maintainers of the language should make sure that all the higher level modules made by the devs are consistent with above principles and only then add them to the packages. This might suppress freedom a bit but it maintains the beauty of the language and the ease of understanding. If some base working of computer hardware changes, only then should the language be changed.