It kind of depends on what you mean by popular. I don’t have much interest in Rust. It has a lot of hype right now. It doesn’t seem like a bad language, just too low level for what everyone wants to use it for (due to hype and most people not writing OSes).
Ah, yes, C, well known for having rich data structures, object orientation, higher-order functions, etc. Even if you weren't conflating rather different languages, JavaScript is inherently interesting for being the only language supported by web browsers and thus being one click away from billions of people.
> Python, because ‘the python way’ is just a bunch of weird idioms for apparently no reason other than making it odd to read for beginners.
That's a pretty flame-y way to say you didn't choose to learn the reasoning behind something. Python has a lot of history developing language features in public – note that https://www.python.org/dev/peps/ starts in 2000 — so it's not like this is hard.
But there are languages that I am just not sure I am sold yet on, like Haskell. I am not saying it is bad as I just don't know, and functional programming isn't bad, but I am just not sure why Haskell over other options. Would love to hear reasons it might be a better choice and in what circumstances it is advantageous.
Do you really need types? I did work in Clojure and I think having good support for immutable data-structures got me 80% of the benefits of functional programming.
Similarily, maybe you are sold on actors and message-passing and Erlang/Elixir is proven there :)
Or you would like types, but are not sure about the whole separation of IO from pure functions in type system, you could try Ocaml (or its Javscript-looking reskin Reasonml). Like, you don't get type-classes, but polymorphic variants are nice and there is this interesting module system.
Or, if you really want to encode your domain in types and then maybe even use the type-system to solve your programming for you, maybe try Idris? Like I have been meaning to go through 'Type-Driven Development with Idris' one day :)
But maybe Ocaml is too little and Idris is too much and Haskell sits in the nice middle ground you like :-)
edit: https://fsharpforfunandprofit.com/ is a very nice introduction to F# and all the things it can do.
Check out /r/haskell. You'll get plenty of posts supporting the language.
Lisp OTOH I could forgive the non static typing for the learning opportunity but not sure I’d use lisp for production code for the same reason unless there is a type checker utility.
I’ll put up with JS because of the Web and I can use TS but for server side I won’t use Ruby and Python as I can slot in C# or Java or Haskell and have much better time.
Finally Elm: definitely worth learning but hit its limitations pretty quick. The problem is you have to route everything in your app through their mandated UI pattern (imagine a web app where every piece of state including the currently viewed month of a date picker 20 levels deep HAS to be a React prop on the root object updatable only in in one root place with no abstractions like interfaces or type classes or even hell monkey patching dynamic language stuff to tame this problem).
I disagree. In fact, I wish performance was taken more seriously by the programming profession. Some of the most popular languages in wide use today are also the most resource intensive.
When performance is an issue in running programs, a common response is: hardware is cheap, just add another energy-guzzling server or use a more powerful computer.
This attitude is embarrassing when you consider that in every other industry there is a push for reduced resource usage and lower energy consumption. The programming field is the exception.
In terms of use cases Go is much closer to Python than to Rust and C++.
For actual preferences, I use and like Go, I'm playing with Rust quite a bit, and I use Python, Lua, and JavaScript for simpler tasks. I'm also somewhat interested in Nim and Swift, but the latter just doesn't seem interested in being truly cross platform and I don't have any Apple devices, so it's in hold for now.
Also while I don't really see C++ going anywhere anytime soon, I don't really see it expanding too much either.
Both of these facts make me a lot less interested in really diving into advanced features or low level details of the language.
Most .Net languages with the exception of F# which I'm quite curious about.
Haskell, not a popular language in general but in this circle. I still haven't bought into the value of building abstractions and abstractions upon that, and abstractions that let those abstractions play nice together. Ultimate yak shaving with a practical twist if you can pull it off. Seems too far removed for most problems I'm interesting in solving. Less higher-kinded functional langs (Clean, Elm), bring 'em.
Any ORM DSL. SQL is just fine.
Any version of ES20xx that's incompatible with TypeScript.
Scala. Tried it, abused it, went back and couldn't even read my own writing. I think it could be good in the right hands, those being someone who can design good languages for humans to use for each purpose. I haven't met many of them, mostly folks who just want to make a DSL using any/every feature available to do so.
(More generally: I'm pretty firmly in the camp of "terse code tends to be easier to read and reason about", and don't want language designers nudging me to break expressions up and name intermediates).
I know, large teams make it work. It still is a source of potential headaches that I don't need.
But, you know, stuff happens. Somebody's machine loses the hard drive; in the process of building the new hard drive, they miss restoring the configuration for their editor. Somebody else installs a new editor, and forgets that configuration matters. A new employee gets hired, and doesn't know either how or why to configure properly. And behold, bugs get introduced invisibly.
That won't happen often. It will happen more than zero, though. And when it does, it's a headache I don't need.
I also don't like go, because go forces to put curved bracket on the same line, whereas I use the Allman style everywhere.
With Allman, I can vertically align a pair of brackets, This helps me to see the scope they define.
Related to this, I am sad to see Swift (seemingly) taking over from Obj-C. I really liked it years ago and it has a special place in my heart.