Ask HN: What are the best programming languages?
Here's the twist. I don't care about pragmatic considerations.
- I don't care about the learning curve
- I don't care about the documentation
- I don't care about performance
- I don't care about licensing cost or restriction
- I don't care about the tooling
- I don't care about the community
- I don't care about the support
- I don't care whether anyone uses it
- I don't care whether the language uses text, voice input, graphical interface, AI, brain interface, etc.
- I don't care whether a compiler exists or not
I am looking for a language with uncompromised elegance. I am looking for the language people would use if magic existed. I am looking for a glimpse of what programming could look like in 10, 20, 50 years.
Go wild.
28 comments
[ 593 ms ] story [ 1302 ms ] threadForth,
APL,
Prolog/Datalog,
Newspeak, http://www.newspeaklanguage.org/ or Smalltalk,
Common Lisp
Each of the languages mentioned above has cornered some aspect of uncompromised elegance in completely different way.
I am trying to combine aspects of those three in Spry (sprylang.org) creating a homoiconic (LISP), DSL friendly (Forth & Rebol) and natural smooth OO (Smalltalk) language.
But if you are simply looking for an existing well defined language (and not interested in helping creating one) - then I would probably point at CLOS (although I personally love Smalltalk). But... the future? <shamelessplug>Spry :)</shamelessplug>
Check out:
Rust
Clojure
Nim
Fire, Stone tools, Art, Language, Navigation (boats,horses etc),Metallurgy, Books, Steam-engines, Electricity, Telephones, Computers were all programming languages (or AI) in themselves. So in a broader way - what we call as best programming language is/was another way of saying 'HOW CAN WE HUMANS OPTIMISE OUR LIVES (i.e eat, reproduce, defend, conquer)'.
What do you suggest we do?
Pessimistic way to see this is : since there is enough inequality - what if few people turn to evil-cyborgs and create more inequalities. And eventually cultivate human colonies envisioned in Matrix to their own pleasure in brain (or cpus or gpus or tpus).
Another way to look at this is - all work produced by humans are result of their neurons firing up in certain way followed by motor movements. Hence your every line of code in editor and a cup to drink coffee are a result of lot of neurons firing by you and others respectively. In a way you cannot differntiate one is programming and another is not. So question that remains is ? Is your current code/work good or bad for human neurons using it ? So good or bad perception is mostly horomones/neuro transmitters in various parts of brain ? Writing this has made me feel - most humans are already a form of AI when compared to animals - eg: so what is the good we are searching for whereas elephant herds in africa are following rain patterns and reproducing like ever - they have more neurons than we do ? Was fun to let imagination go here.
[0] http://picolisp.com/
Although it's not what programming will look like in 50 years. It's fifty years old already and hasn't caught on. My guess; in 50 years time, programming will look pretty much how it does today.
That said, I have a list of candidates. Or rather, I have pieces of languages that I think fit:
Lisp macros.
Haskell's type system (but not using monads for everything - though that may be a consequence of the type system).
C++'s RAII paradigm (and destructors).
Perl's natural language approach. No, really. When programmers talk to each other, they say things like "Read in a line of text. If it ends in a newline, remove it." If you try to talk to the compiler that way, it says, "Read in a line of text from where? If it ends in a newline? If what ends in a newline?" But Perl lets you program that way. Read in a line of text? Well, since you didn't specify from where, that means from the default place, which is a file handle that loops through all the files that were in the command line. Put the line where? You didn't specify, so it goes into the default variable. If it ends in a newline? You didn't specify what, so you must mean the default variable, which conveniently is where we just stuck that line of text..."
It has it's bare metal beauty, like a sharp knife, unless you know what're doing, you're more likely to cut yourself than do anything useful.
- A compiler that can target any platform. With the same techniques as above, the compiler can discover the primitives of the target with fuzzing.