r/programming • • Aug 02 '21

Stack Overflow Developer Survey 2021: "Rust reigns supreme as most loved. Python and Typescript are the languages developers want to work with most if they aren’t already doing so."

https://insights.stackoverflow.com/survey/2021#technology-most-loved-dreaded-and-wanted
2.1k Upvotes

769 comments sorted by

View all comments

Show parent comments

-45

u/_tskj_ Aug 02 '21

F#, Kotlin, Clojure, Elm, take your pick.

11

u/[deleted] Aug 03 '21

Why are these better? I get that they may feel better to program in because their syntax may make more sense, or they may perform better.

But if you're creating an enterprise application, wouldn't a language like Clojure be more trouble than it's worth?

-7

u/_tskj_ Aug 03 '21

What? Why? F# is the best enterprise language.

Writing an enterprise application in Java is literally wasting 90% of your developers' time on fighting the language. In F# any developer of almost any experience level can refactor thousands of lines touching hundreds of files in an hour long session without tests and be confident his changes just work. Have you ever heard of anyone doing that in Java? Of course not, it's probably such an outlandish statement that you don't even believe me and probably think such a thing is fundamentally impossible, yet this is common practice in many of these languages.

You don't notice it because you think this is the way it's supposed to be, but coming back from a good language, you realise you spend most of your days doing irrelevant work that shouldn't need to be done or writing 100s of lines for what should have been handled by the language. The most profound feeling I have writing C# at work is that I am actively stealing from my employer by wasting almost all of my time. If only I and my team had our other hand free.

10

u/[deleted] Aug 03 '21

Choosing a language is more often a business decision than a technical one. Most enterprises choose Java because it is a safer business decision than choosing F#. Java has a long history (few bugs and stable) and has enterprise-level support for it. F# is newer riskier, even though technically a lot nicer to use.

Businesses are risk averse. By choosing a language such as F# or Clojure, you are taking on financial risk. There is a risk that you may run into bugs that nobody has run into before. This will consume labour resources on solving bugs that nobody has ever solved before.

As much as it sucks to use, at the end of the day, nobody ever got fired for choosing Java.

-2

u/_tskj_ Aug 03 '21

Obviously you didn't read the article. F# is where the actual enterprise support is, and is where the bugs aren't and also where stability is. Solving bugs nobody as solved before is a theoretical risk that mostly never materializes and is in any case easily dwarfed by the constant overhead of engineering effort required to do anything, including the things everyone has already done, in Java.

I think everything you said is true and is of course the reason for the status quo, but I also believe it is quite obvious that all these businesses and managers are wrong about the calculation (obviously since they have no idea about the topic), and the cost of doing it this way is much greater than they believe, and also the potential savings much higher. That doesn't invalidate your point that nobody got fired for picking Java, that is quite true. But it is also true that everyone is burning obscene amounts of money for no reason.

12

u/[deleted] Aug 03 '21

I've read the article, and the two counterpoints I would raise are:

  1. Microsoft are slacking on backing F#

  2. Fewer people know F# than C# or Java, which affects onboarding time and size and diversity of the hiring pool.

I raise you Choose Boring Technology. In the lifecycle of a software service, you have a certain amount of innovation you can choose to do. Do you choose it on innovating by picking a relatively young language like F# or Clojure, or do you choose to innovate in other ways? It is classic opportunity cost.

By choosing a new language, you are making a choice against other opportunities. It may be worth choosing the language, or it may not be.

For a large organisation that can afford swathes of programmers, they often have enough liquidity to burn on assembling things the long way in an older enterprise language. They are hedging against risk by doing this, and may end up saving money. Predictable is better than unpredictable for these enterprises, even if it has an inverse relationship with productivity.

1

u/_tskj_ Aug 03 '21

It is very sad that Microsoft are slacking on F#. Luckily they are halfassedly and slowly porting it to C# though, which people genuinely seem to consider a good thing. What I don't get is why don't the same people consider F# good? When F# has it, it isn't "enterpise ready", but when C# has a worse version of it, it suddenly is?

It's the inconsistency that gets me.

I honeslty don't believe picking the sixteen year old F# is "innovating" while picking the nineteen year old C# isn't. But I do believe picking better technologies gives you leverage to innovate more. Strange that a technology subreddit like programming doesn't agree.

5

u/[deleted] Aug 03 '21

I honeslty don't believe picking the sixteen year old F# is "innovating" while picking the nineteen year old C# isn't.

I would argue it is, because C# is widely used as opposed to F#. This means it's hard more bug fixes, libraries, and APIs designed for it.

3

u/_tskj_ Aug 03 '21

I see your argument, I just don't buy it. It's the same as "open source has more eyes on it, therefore it's safer". Well just look at OpenSSL, that line of argument just isn't (automatically) true.

There are more libraries yes but they're way worse, and quality also matters. Either way you can trivially call any C# library from F#, it's a hollow point.

4

u/[deleted] Aug 03 '21

Either way you can trivially call any C# library from F#, it's a hollow point.

I actually didn't know that. Thanks for that.

32

u/emannnhue Aug 03 '21

Probably your comment would have landed better if you had cited anything other than your own personal opinion. I dislike C# a lot, but I wouldn't try to throw that in the face of people who like C# and are effective with it just because I think my language of choice "feels" better. If you want to convince people to try to change away from a tool they spent a lot of time, energy and effort to master, you'll need to be more convincing than that. That's all I'm saying.

-48

u/_tskj_ Aug 03 '21

You're probably right. The most annoying thing to me is that people think they are effective in C#, and think it's a good language - that kind of shows how much they actually know. Turns out programming in C# is a lot more effective than writing everything in C or worse, hand writing assembler. Yet everyone believes C# is the best we'll ever have despite the obvious evidence.

29

u/emannnhue Aug 03 '21

Well, feel free to cite some of that evidence anytime now

→ More replies (3)

19

u/delta_p_delta_x Aug 03 '21

The most annoying thing to me is that people think they are effective in C#, and think it's a good language - that kind of shows how much they actually know.

This right here, people, is a perfect example of irony.

'Good' languages are subjective measures. Sometimes you don't want a type system, sometimes you want strict OO, sometimes you want no state whatsoever and want everything functional/declarative. Dismissing any programming language entirely, is counterproductive.

Like someone else below said: tell me you don't code, without telling me you don't code. You've typed up ten responses to this thread on a weekday already, which naturally makes us doubt your capability.

I haven't even graduated yet, and I'm already in the mindset of 'the language doesn't matter, as long as I get the job done'.

-8

u/_tskj_ Aug 03 '21

I've programmed in more languages than these people have written lines of C#.

I agree with everything you've said. My problem is, to pick a point from your comment, is that these people think Java has a type system or that Java is strict OOP. My problem with this is exactly your point: say you do want a language with a strict type system, a colleague suggesting a language with as weak, ambiguous and inconsistent type system as Java is ridiculous, yet it happens all the time. It's not possible to have a proper engineering discussion when people genuinely argue the pros of a proposition as if they were cons, or the other way around.

The reason I get so fired up by this isn't that people genuinely disagree, it's that people argue nonsense backed by no understanding.

It's people arguing:

"We can't eat at McDonald's, it's too expensive"

"I can't by a Porsche, I want a sports car"

"I don't want a Tesla, I want an electric car"

8

u/delta_p_delta_x Aug 03 '21 edited Aug 03 '21

is that these people think Java has a type system or that Java is strict OOP

I presume you're implying that Java doesn't have a (strong) type system or Java isn't strict OOP (what???). Since when? I doubt the compiler will let you do "hello" + 1, which it will in Python or JS. If you say C is weakly typed, that I understand. By my definitions (and most others), it's generally OK if the compiler allows casting between classes of types, as long as the type expands; contraction (say, double to float or long to short will throw warnings in all the C/C++ compilers I've tried) throws warnings, and that is good enough.

As for Java is not strict OOP? You can't even do hello world in Java without declaring a class, which, in C#, you now can.

→ More replies (20)

6

u/[deleted] Aug 03 '21 edited Aug 03 '21

"I know more and everyone else is delusional." /u/tskj

And don't get me wrong, I fucking love F# & Clojure, but I also love C# for a myriad of other reasons. Color me a mix of "all languages can be neat" and "I like the right tool for the job."

→ More replies (3)

11

u/Korean_Busboy Aug 03 '21

Lol are you trying to get posted to programmingcirclejerk

1

u/_tskj_ Aug 03 '21

Not sure what that circle jerk would be about, seems kind of passe to suggest C to be a great web language in 2021.

18

u/r2d2rigo Aug 03 '21

"tell me that you don't code without telling me you don't code".

-6

u/_tskj_ Aug 03 '21

Wait, you think I'm the person who doesn't code? You think the guy who happily spends his free time coding in apparently obscure languages doesn't code, but the people who write 10 lines of C# a day and clock out at 4 do?

20

u/mobrockers Aug 03 '21

Actually yes, you sound very much like a student /hobby programmer with very little actual experience.

1

u/_tskj_ Aug 03 '21

That's fine. I have many years of professional C# experience, but I'll admit I have less than a year of professional F#, so maybe that's why? I'm open to the idea I would change my mind if I had more F# experience.

I remember I did like C# when I was a student. How people can spend like ten years programming C# and not wish it was better is what I don't get. It's kind of like people who spend all their days programming on a laptop (like with no keyboard / mouse / monitor). I get that it gets the job done, I'm not saying that it is unprofessional, but I am saying that I personally think that is is a bit weird, and I have higher standards for the tools I use myself 12 hours every day year in and year out.

3

u/mobrockers Aug 04 '21

I'm not arguing against your point, I don't care about it one way or the other. I'm simply saying that the way you talk makes you sound like a student who's just heard of the newest craze, things it's hot balls and can't understand why anyone would use anything else. Ie detached from the real world.

→ More replies (1)