Can someone give an example of this for someone who has programmed primarily in java, python, and javascript? What would be one worth learning?
Can someone give an example of this for someone who has programmed primarily in java, python, and javascript? What would be one worth learning?
Scala is Java's more upstanding, though less popular, sister. There's some online course for the basics of it by Martin Odersky.
C is essentially a nicer way to write PDP-7 assembly. If you learn about that processor, and C, in parallel, it's an interesting experience. And C is not so big.
C++ is a complex and multi-faceted beast which would take you forever to learn - "teach yourself C++ programming in 10 years". It's also not done, i.e. there are important parts of the language which don't yet exist, but should, and will, it's just taking a bit of time. So by the time C++ becomes 50 years old it will be kind-of ready.
SQL is a domain-specific language. It's actually pretty big but you can just learn a fragment of it and it's basically enough for the gist of the thing. It's essential for working with (most) databases.
There are more of course.
Writing processor microcode will change your view of the computer. It's harder to do that these days but if you've been programming at an extremely high level, even assembly code will change your conception of the machine.
Common Lisp / Clojure / Scheme (or any language from that family) will really let you appreciate some fundamental functional programming tricks once you finally "grok" them.
Prolog, it's great. You'll never look at graphs, trees, search or first order logic the same way. And, maybe, some day you'll be the one that says "that's just two lines of prolog".
Haskell, or any other very strongly statically typed language. I'm definitely partial to dynamically typed languages, but you gotta try it before you knock it :-)
Also if you have some money to spend, try Mathematica. It's one of those things that keeps getting reinvented, but poorly. Shamefully it's not open.
Something like Haskell.
Since you're already familiar with Java, Clojure is likely the best bet for you as it builds on top if it. Otherwise the slightly easier to learn but a bit less real world practical is Racket Scheme.
When this text was written, Object-Oriented programming was exotic.. now, most large kits of any flavor use OO structures without mentioning it.. and a new coder may not know what is OO and what is not.. so something basic with Objects, to make the layout clear.. A very simplified Javascript might do this.
If your direction is math, then there are certain choices, but as we all know now, not all programming is actually related to classical math.. Functional programming got a new life with massive data graph traversal, but how many individuals do that ? I would say not "functional programming" but .. explicit graph traversal more .. like Sparql or something..
lastly, what used to be someone's "little language" is now just a set of expressions in a bigger, more stable language.. so the old lex-yacc skills are not so much critical IMHO, as something with patterns and patterned thinking.. the old pattern wiki is interesting if you can make yourself go through some kind of hands-on practice.. http://wiki.c2.com/
SQL / datalog
apl / j / k
Rust
Clojure / Racket / Scheme / Common Lisp
Forth
Julia
Mathematica
java, python, and javascript