Ask HN: Which popular programming languages are you NOT interested in and why?
Currently I am not interested learning modern front-end stack and js-framework-of-week. Life is short. This stack is changing so fast. I will wait few more years. Hopefully then it will be stable to learn.
Pretty much all of them. I started with C and never liked OO programming. Even when kind of optional in the language, for your own code, you still have to deal with an OO library ecosystem because everyone writes the libraries that way when the language supports it.
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).
Do tell more, what high level stuff do people want to use Rust for?
Depends on what you define as "high level stuff", really. We're seeing an increasing amount of people who are writing network services and web back-ends in Rust; that's sometimes perceived as "high-level", depending on where you sit in the stack.
Javascript. There is not much to learn if you come from c. And ‘the javascript way’ is just a tangled mess. 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. You have to use both, of course
> Javascript. There is not much to learn if you come from c.
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.
Like i said i use both. But I didn’t find it interesting to learn either.
Fair enough, but just be honest about saying rather than trashing other people's work: JavaScript has a ton to learn which a C programmer will not know, and Python has a history of reasoned decisions.
Which idioms in Python are you referring to?
The pythonic ones
I can't really think of a current language I wouldn't be interested in learning or learning better.
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.
Depends what you want and what you value.
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 :-)
After having dabbled a fair bit in Lisp, Haskell, Ocaml and, to a lesser extent, Elixir, I've found F# to strike a very nice middle ground when it comes to functional programming.
edit: https://fsharpforfunandprofit.com/ is a very nice introduction to F# and all the things it can do.
Hm, I was always kinda scared about setting up .Net on my linux box. What setup do you use?
Here you go: https://fsharp.org/use/linux/
Or if you just want to learn it, you can run it in your browser here: https://try.fsharp.org/
What's the more general pitch for learning a functional language in the first place?
I don't think there is a general one anymore.
The original "wouldn't it be better if we just passed data around through simple composable functions" kinda won, you have first-class anonymous functions with support for closures in most languages today in use :-)
I think the next pitch is along the lines of "We can solve the evil of mutable state making your app hard to debug/test" and i.m.o. that took over a bit as well, i.e. with frontend we usually have state in one tree sitting somewhere and what we display is just a function from state to our html.
And I have seen the state being represented as a fold/reduce over events in the application.
So the pitch i.m.o. is along the lines "Hey, we converged on the idea that functional programming is good, why not use language that has good support for it" :D
It forces you to learn a new and different way of thinking about programming and solving software problems. Even if you never end up actually using a functional language, many of the techniques and approaches you learn can be applied in all languages.
Learning Haskell was probably the single best thing I've done with regards to becoming a better programmer even I've never really written much Haskell since then
> Would love to hear reasons it might be a better choice and in what circumstances it is advantageous.
Check out /r/haskell. You'll get plenty of posts supporting the language.
Python and Ruby. I don’t see how you could not want static typing. Not least because of it’s documenting qualities. Otherwise what are we relying on variable and method names to tell us what type something is?! Ha ha.
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).
Rust and the other new zero cost abstraction languages. Reason being that I think performance is a solved problem. The future is in safety and readability. Not squeezing the last few percent of fps out of your hardware. Go is in the same category. People are inventing better versions of C++ when I want them to invent better versions of Python. :)
"I think performance is a solved 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.
> Go is in the same category. People are inventing better versions of C++ when I want them to invent better versions of Python. :)
In terms of use cases Go is much closer to Python than to Rust and C++.
Basically anything on the JVM or .NET. I used to use Java and C#, had to use C++.NET for a job, and now I'm just done. I much prefer compiled languages and scripting languages, and I don't see much of a need for something in between. I also don't like working with Windows or Android, so there's not much reason for me to care.
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.
C++. I know it, I use it, I don't usually like it. A lot of the language just feels like a hack. I usually much prefer to write performance critical code in C but sometimes the utility of C++ or of certain C++ libraries outweighs that desire.
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.
C/C++ is what I started and built my first career on, back when performance mattered for just about every program.
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.
Go. I don't feel the need for yet another language without conditional expressions.
(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).
Python. I've seen too much of what happens to code files on multi-person teams to ever want to have to deal with syntactically relevant white space.
I know, large teams make it work. It still is a source of potential headaches that I don't need.
I am with you on that. I hate Python, and I always wonder why there isn´t any other popular language that has the idiotic policy of considering spaces part of the language syntax... there might be a reason for that.
It's barely a hurdle, if you can't manage to configure your setup to meet your teams setup then it probably means you are not qualified.
Thank you for your charitable interpretation of my qualifications.
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.
Sorry, I don't mean to even suppose about your qualifications. Most scans will detect mixed tabs/spaces and they don't even make it into the repo. And if it is a continual problem with a particular team member then that has been in my experience a sign that this person doesn't know what the hell they are doing. Again I make no suppositions about your particular qualifications, I apologize.
No big deal. It just rubbed me the wrong way - perhaps more than it should have.
But yes, if you have a team member that repeatedly does this, then there's clearly a problem. If you run a scan that won't let people do this, that's clearly a solution.
I don't like python, because most of the languages I have used and learned are influenced by the c language. They use similar syntax with parentheses. I like parentheses, because they define narrow logic scopes that help me focus. Python is also not as flexible as javascript, if I need for a dynamically typed language.
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.
Any front-end stuff, I just have no interest in them.
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.
I'm not interested in any language with ambient authority, where every function may decide to read a file and phone home without declaring that in its signature.
Go and Rust for being unimpressive for something so modern and being corporate-driven. javascript for... everything.
C#, because it only seems to be useful for Windows and the language does not seem to offer enough merit on its own to try to use it on a Unix-based system.
I am playing around with Clojure/ring for the backend. I am not happy about using node/ror/php on the backend.
Ruby. I just think it's ugly.
Isn't it also kind of dying out in terms of popularity? (I really don't know)
It's slowly being replaced by Python. The only reason to use Ruby nowadays is for Rails.
Ruby is still the language I turn to when I need to write a script and the shell does not suffice. I turn to it before Python because it's more terse while still being very readable.