My idiosyncratic but free advice:<p>Lisp and specifically Racket because:<p>1. It&#x27;s a community that is strongly oriented toward meeting the needs of students.<p>2. It&#x27;s documentation is top notch.<p>3. It&#x27;s a single download with no external dependencies. There&#x27;s even a pretty good IDE (that even has a fairly compatible Emacs mode).<p>4. Racket in the large is an ecosystem that has tools for many many aspects of computer science that a student even at the graduate level might want to play with [meta-programming, objects, type systems, logic programming, ffi, Algol 60, web systems, etc.]. And it all comes down in one package and there&#x27;s no futzing around with package managers unless you want something that you probably don&#x27;t want for a long while...did I mention it&#x27;s a single download.<p>5. It&#x27;s beginner friendly. It has its own textbook. It has a gradient of languages with increasing complexity.<p>I&#x27;ve got nothing against Haskell or Go or anything else. And for a person in a different situation I might be high on one of them...or Erlang. But the orientation of their communities is different and so the problems that they&#x27;re good at is different, i.e. Go solves Google&#x27;s problem of hiring a lot of people with a C++ background for systems programming and the problem of packaging programs that run on more servers than one can deploy reasonably to in a week [it uses native executable binaries].<p>Or learn JavaScript.<p>Good luck.