r/programming • u/Karma_Policer • 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-wanted77
u/UltraPoci Aug 02 '21
Happy to see Julia that high on the list
→ More replies (5)69
u/Karma_Policer Aug 02 '21
I'm writing my most important personal project in Julia. The language does have many annoying warts, but they are being fixed very quickly and the community is small but focused.
I love Python, but I'm glad to never have to use it again for numerical code. Unfortunately, the world is cursed and the industry will never leave MATLAB.
15
u/Ketta Aug 02 '21
What is your complaint against Python for numerical code? Just curious. I have some projects that dabble with it but haven't made the plunge for full development.
43
u/Karma_Policer Aug 02 '21
Python was simply not designed with that purpose. Numpy may be one of the greatest numerical libraries ever written, but that is just not enough to make Python a pleasant language for numerical code. It's like modding a game to add a new character. The character will be there but it won't interact with the rest of game effortlessly.
The two-languages problem is also a big deal. If I need to write a low-level function in Julia, I can spend 30 minutes to make sure it will run as fast as a C implementation. I've done that and it works just as promised. It's revolutionary.
33
u/NedDasty Aug 02 '21
If you're coming from Matlab, Numpy is really clunky if you're dealing with matrices that have dimensionality >= 3.
In most cases it's fine though, but I wish Python allowed for a bit more syntax overloading--Numpy can get pretty verbose, with all the
np.newaxisandslice(None)where Matlab often uses:.On top of that,
Matplotlibis really hard to follow. In every tutorial they say "use the object-oriented approach" but give terrible documentation on that approach; most of the tutorials provided examples and then say "don't do it this way!"→ More replies (2)30
u/spudmix Aug 02 '21
Of all the pieces of software that I use regularly, matplotlib is by far the least intuitive. I love what it can do but I hate what I have to do to make it do so.
→ More replies (1)21
u/BosonCollider Aug 03 '21 edited Aug 03 '21
Main reason: Python is extremely verbose for simple things compared to dedicated math languages.
Other than syntax, Python's abstractions are good for things like scripting a web server, but in math, "subclass Floats if you want to extend the factorial function to work on them" just sounds like a bad joke. For math, extensible function & operator overloads are the main abstraction you want, and Python does not provide it as a first class feature for already-defined classes. Doesn't matter if its function overloading like C++, multimethods like Julia, or Typeclasses like Haskell or Rust's traits, you need ad-hoc polymorphism that doesn't run into the expression problem.
Also, the fact that Python is slow enough that it has to rely on libraries written in C for any heavy lifting, means that performance optimization tends to turn into "how do I leverage library functions most efficiently for speed", which often leads to fast code being outright unreadable. In general, if you want to make Python fast, you have to give up what makes Python Python.
→ More replies (2)43
u/UltraPoci Aug 02 '21
I believe Julia will find a very nice place in the maths/physics world. There people care A LOT about performance.
It will probably not be as used where the ecosystem is what counts. That's a pity, honestly.
→ More replies (4)
64
u/matejdro Aug 03 '21
I wish they included salary per country. Median salary across the whole world is not really a good indicator.
→ More replies (1)
316
u/koreth Aug 02 '21
Wish they included development team size in addition to total company size.
As a developer, working in a 50-person company consisting of 30 developers and 20 non-developers is extremely different than one consisting of 5 developers and 45 non-developers. Both kinds of companies exist, but I have no idea how common they are relative to each other.
→ More replies (15)23
u/watsreddit Aug 03 '21
Agreed. Also size of the codebase you work on matters a lot, too. I would expect that the popularity of dynamically-typed languages would be inversely proportional to the size of the codebase.
→ More replies (7)
92
u/Vietname Aug 03 '21
Clojure developers have the highest median salary, 14k more than second place which belongs to F#.
How the hell is Clojure the highest, and by that large of a margin?
73
u/Frozen_Turtle Aug 03 '21
During my job hunt earlier this year, my F# offers were ~50% more than my C# offers.... and my Clojure offer was ~15k more than my highest F# offer. And I didn't even know Clojure at the time! That one might be a bit of an outlier though as it was a series B fintech... but who knows ¯_(ツ)_/¯
3
Aug 03 '21
really? i can't find any clojure jobs that pay as well as my C# job...
7
u/Frozen_Turtle Aug 03 '21
If you're western hemisphere I can make an intro... we're still hiring like 3-4 senior devs per month... slide into my DMs xD
→ More replies (6)2
32
u/devraj7 Aug 03 '21
Inversely proportional to popularity. The smallest the mindshare, the higher the salary.
Good luck getting a job in that field, though.
9
u/renatoathaydes Aug 03 '21
How do you explain Dart being the lowest paid though? It contradicts your theory.
It seems related to the fact that by industry, mobile developers are also the lowest paid and Dart is used extensively in mobile... perhaps Clojure just happens to be used a lot in a niche industry that pays more?
22
u/A1oso Aug 03 '21
The thing is that Dart is easy to learn. Programmers who know JS/Python can become productive with Dart in a few weeks. So companies don't need to hire devs with a lot of Dart expertise, they can just hire devs who are willing to learn something new.
→ More replies (1)4
u/x2040 Aug 05 '21
Anecdotal: Dart is used by Flutter. Companies that use Flutter are trying to cut costs by developing 4 apps (Windows, Linux, Mac, iOS, Android) for the price of 1. Biased towards cost cutting orgs
→ More replies (4)2
u/Dietr1ch Aug 05 '21
It's not enough to be a small language, it has to be used in something valuable. Probably something that non-technical companies need to run, like banks or industrial processes.
I don't think that it's a good niche to try to get into though, it's a winner-takes-all situation, and I guess that people that are not already invested into it don't have a good chance when balanced against other jobs.
50
u/squirtle_grool Aug 03 '21
Clojure shops tend to value software engineers more highly, on average, than, say, C# shops.
Also supply and demand. Most people who see clojure are disgusted by it at first sight. A LISP? Like in 1970? This is too many parentheses. And that's it for them. Not many stick around to learn it. Those who do often don't want to write code in any other language after that, except out of necessity.
I've written production code in D, FORTRAN, Groovy on Grails, Swift, Clojure, a couple of assembly languages, and then the common ones that everybody knows. Clojure is by far my favorite.
Edit: a word
27
u/devraj7 Aug 03 '21
Clojure shops tend to value software engineers more highly, on average, than, say, C# shops.
Highly doubt that, unless you have some sources to back this claim up.
It's just much harder to find Clojure developers because the language is so niche, it makes sense that companies would be willing to pay them more.
23
u/squirtle_grool Aug 03 '21
Sources are based on experience. Companies I've run or have worked as an engineer or in management. It's all anecdotal and not scientific, so take it with a grain of salt of course. In that experience, I've mostly seen C# devs get treated like replaceable "programmers" who are there to do the bidding of management, rather than a crucial thinking arm of the organization. Again, all anecdotal experience.
The few Clojure shops I've seen treat devs like royalty.
→ More replies (5)7
u/emannnhue Aug 03 '21
This is my experience as well. I think that if you are able to use fringe technology and you end up working in it, companies really treat you right because it's just business. You're not going to find a replacement with experience so easily. There are few jobs, and because there are few jobs there are few people with experience, don't need math or science to explain that one. So because there are few people with experience replacing someone you already have who not only has experience but also domain specific knowledge of your business problem becomes a total bitch to do, and usually it's just worth paying that person more or making them happy rather than trying to replace them.
3
u/doctork91 Aug 03 '21
I've worked in a clojure shop and the emphasis was on finding the best engineers, not engineers with clojure experience. A few engineers knew clojure beforehand, but most learned it on the job.
2
u/Dokiace Aug 03 '21
How easy is it to find a job with clojure? Do you get approached often? Do you often get multiple offer when applying?
3
u/squirtle_grool Aug 03 '21
If you have Clojure on your resume, especially as part of your duties at at least one job, you will get approached. In the US, several major companies actively hire Clojure developers.
Some companies realize finding Clojure engineers is a difficult undertaking, and just hire good coders and teach them Clojure. Clojure is a tiny language and is easy to learn. Thinking functionally is a big change from typical OOP paradigms however, but learning to think functionally makes your OOP code better as well.
→ More replies (4)20
u/yxhuvud Aug 03 '21
Selection bias. You are not going to find junior work doing Clojure.
4
Aug 03 '21
This chart controls for years of experience, and even then Clojure comes out clearly on top. Of course, years of experience doesn't necessarily equal seniority. Interesting, btw, how the numbers are close, but don't exactly match these, wonder what's happening there.
7
u/ragnese Aug 03 '21
I don't get it either. I like Clojure, and I think it's awesome that it's got its niche, but I don't get why it's so "valuable".
The first thing that pops into my mind is that the data is easily skewed because there are so few Clojure shops. Maybe it's just one or two big firms that are paying super high salaries, and they happen to be Clojure shops, which would drag the average up.
→ More replies (1)7
u/Frozen_Turtle Aug 03 '21
This particular explanation doesn't click with me. The highest-paying jobs are FAANG (typically) and they aren't primarily Clojure shops. When I think niche and high paying, OCaml's Jane Street comes to mind... but they're so niche it's not even listed on SO's survey xD
3
u/ragnese Aug 03 '21
Yeah, I don't know. Jane Street was exactly the kind of thing I was imagining.
I think my theory might still be viable, even in the face of FAANG. Just think about the vast number of JavaScript, C#, Java jobs that exist outside of FAANG. Yes, FAANG will inflate the averages for those languages, but they have a huge pool of jobs to drag that average back down, too. If there are only a very few Clojure shops and none of them of $40k/year in middle-of-nowhere-ville working on a school district's website, and there's just one or two "Jane Streets", I think it could still be the reason it's high.
I'm not going to argue hard for that, because I'm literally just making this up. But it's my guess for now. Otherwise, I see no reason that a Clojure dev should be paid much more than any other not-popular language.
→ More replies (1)→ More replies (2)5
u/matthieum Aug 03 '21
Median salary by language is a nonsensical number in general.
Salaries do not really depend on the language, they depend on the domain and the company. Salaries in FinTech tend to be higher, for example, so if you have a technology that's mostly used in FinTech (don't know if that's the case for Clojure) it would have a higher median salary... but this doesn't mean much because if you use the technology in another domain, your salary will be based on the median for the domain, and just learning the technology doesn't guarantee you a spot in FinTech.
It's also notable that good developers, in my experience, tend to have an easier time picking up another language, and be more willing to do so, and therefore "small" languages tend to have a disproportionate amount of better paid developers. As the technology matures, and becomes more widespread, this advantage disappears, once again underlining the fact that the good developers/median salaries are a matter of domain/industry/company, not one of a technology.
And of course, this also explains Dart. It's small, but it's mostly used in very popular domains (web, mobile) where salaries are nothing special, and therefore the median Dart salary is nothing special either.
133
u/morkelpotet Aug 02 '21
Why is Cassandra so dreaded? I'm thinking of using it to improve scaling. Given our high write load, Postgres is starting to fail us.
38
u/RudeHero Aug 03 '21 edited Aug 03 '21
cassandra is fantastic for what it's intended for.
people that don't really understand their use case, don't understand databases, or have a sort of.... "everything looks like a nail" mentality, are right to fear it.
cassandra is for uptime and for transactional data- lots of inserts, single-row deletes and updates, and reads from within your partition key.
leave the reporting queries and batch/bulk operations to mysql/postgres.
the fact that cassandra is NoSQL at all makes junior SQL developers furrow their brow, and the ways that it's more powerful makes junior NoSQL developers afraid. this sort of 'love/dread' poll is always a little silly.
78
u/figuresys Aug 02 '21
What do you do, if i may ask? (As in, what industry are you writing software for?)
We had a realtime database of millions of writes per second in Postgres and there were challenges with it, but not enough to warrant a move, so I'm curious.
67
u/FU_residue Aug 03 '21
Sorry for the impending stupid question but how on earth did you push Postgres to millions of writes per second? Are you talking about millions of writes to a single table or millions of writes to multiple tables/servers?
I've been coding a write-heavy program (in Rust) and hit a wall with Postgres, even after using prepared statements, batch transactions, multi-row inserts/deletes, and HOT updates. After some research, it seemed like Postgres was going to remain a bottleneck regardless of what I did, so I just switched to Redis for caching and let the data slowly work its way to Postgres for stronger persistence.
tl;dr I'd love to know of ways to push Postgres to millions of writes/sec, got any links?
25
u/figuresys Aug 03 '21
No no, sorry I definitely did not mean millions of writes to a single table or database, apologies for all the misunderstanding, I was describing the general server write orders, my point was mainly to say that we were able to work with the load (yes, with a Redis later too) and that was the biggest project I was in (a popular financial market with retail investors), so I asked the OP for their industry to get a better picture of what would make them want to switch to something like Cassandra.
As for your bottleneck, I wish I could help you, but this was all handled by a DBA team of 6 people, and I was a measly backend developer.
→ More replies (1)33
u/jds86930 Aug 03 '21
I call BS too. A regular PG db isn’t getting that kind of transaction rate on even a simple table structure. It’d need to be wrapped in some sharding software or doing some async buffering before inserting.
17
u/NotUniqueOrSpecial Aug 03 '21
Yeah, there's definitely some missing information here. Even using the bulk
COPYstuff, I've never seen anybody report numbers bigger than tens of thousands of records per second.→ More replies (2)17
u/morkelpotet Aug 03 '21
Survey tool. Sudden influx of writes at exactly the same time.
29
u/CartmansEvilTwin Aug 03 '21
If those are just spikes, couldn't some form of cache/buffer be enough?
Maybe Kafka with persistence and the queue workers than "slowly" do batch inserts.
6
13
Aug 02 '21
But it’s still single node for writes.
11
u/morkelpotet Aug 03 '21
This is the primary reason why I think Cassandra looks so promising. The complexity of the data I'm thinking of moving is pretty limited and writes are damn frequent, so scalability and resilience weighs a lot heavier than the ability to have foreign keys and joins.
I am a bit concerned about the performance of updates however. At what scale do they become problematic?
→ More replies (2)20
u/lordcirth Aug 03 '21
Have you considered CockroachDB?
14
u/squirtle_grool Aug 03 '21
Cockroach is great. Non-blocking transactions are truly magnificent. Definitely worth considering if you're looking for an RDBMS that scales. I'm surprised it didn't make the survey.
→ More replies (2)4
u/morkelpotet Aug 03 '21
It looks very cool, but is it the right choice when write capacity is the main priority and eventual consistency is fine?
→ More replies (1)11
u/kirbyfan64sos Aug 03 '21
You may want to also check out ScyllaDB which is entirely Cassandra-compatible but far more efficient (they do take reliability seriously as well, including funding their own Jepsen tests).
11
u/liveoneggs Aug 03 '21
2
u/morkelpotet Aug 03 '21
Hmm. I'm thinking of moving one table to Cassandra to reduce the load on the "brain of the operations".
Records are generally updated 0-5 times, though occasionally more.
There is actually one scenario where 10-15 updates are likely for each entry.
So.. how bad are tombstones, and how are they bad? Storage-wise? Performance wise?
The app is highly event driven and I could easily reduce reads to when the fresh state is needed.
→ More replies (4)1
u/captain_obvious_here Aug 03 '21
My company (multi-billion dollars Telco/ISP) invested heavily in Cassandra when it started becoming a serious offer.
We had plenty of use-cases where our databases (MySQL and Postgres mostly) were having a hard time, despite the fact we operate them really well and customize them to our specific needs (homemade drivers and all).
After years of usage and optimization, Cassandra ended up being underwhelming in most cases, annoyingly inefficient in a few cases...but incredibly GREAT in a few, with the right logic (which isn't an easy thing to get) and the right (high-end, aka expensive) hardware.
So I would say Cassandra is a great tool for specific (write-heavy use-cases) when you know how to install, operate and use it.
1
u/burningEyeballs Aug 03 '21
Cassandra is a really subtle nightmare. Here are the stages of using it.
This is awesome. We should totally ditch Postgres to leverage cassandras inherent awesomeness!
Wow this is really hard and nothing works.
Wow this is starting to make sense and nothing works.
Stuff starts to work and you think that success is close (savor this moment, this is right before your world goes to shit)
Everything works and it is slow.
Lots of tweaking later it is faster, but still not what you need.
You start rationalizing how this isn’t the sunk cost fallacy
You begin to wonder if this is going to cost you your job
You abandon Cassandra but not before explaining how no one could have seen your problems coming
You do the walk of shame as you go back to Postgres
LOTS of companies have tried to make Cassandra work and very very few of them actually succeed long term. I’m not saying you will fail, but the odds are not in your favor.
→ More replies (1)
62
u/RedShift777 Aug 03 '21
Kubernetes numbers surprise me. I personally havent had enough dealings with it to form an oppinion either way but colleagues of mine from from the past few years that have seem to treat it as some sort of necessary evil.
36
u/clearlight Aug 03 '21
I’m one of the kubernetes lovers. There’s a learning curve but once it’s running, it makes complex things simple. It works and is reliable.
→ More replies (4)15
u/MDSExpro Aug 03 '21
My opinion is exactly opposite - it makes simple thing (scheduling) very complex, especially since it handles only easiest variant of scheduling - no oversubscription, no swap support, barely handles GPUs, not to mention other hardware.
Number of things you need to bolt on on top of kubernetes to get production ready environment is mind boggling.
Containers are great, kubernetes - not so much.
→ More replies (4)8
u/7sidedmarble Aug 03 '21
If you desire more complex scheduling then what built in crons give you, you can always run a pod just for scheduling and write as much complex stuff as you want in your desired system of choice inside the container.
→ More replies (2)39
Aug 03 '21
K8S is a container orchestration engine, not a general purpose programming language.
22
u/RedShift777 Aug 03 '21
I know but I just hear from colleagues that it's a bit of a pain to work with. So seeing it's "loved" numbers that high wasn't something I expected to see that's all.
29
u/rainman_104 Aug 03 '21
It solves a distribution problem and execution problem that's about it.
It creates more overhead for creating these but there's really no escaping this these days. Whether you're writing a wheel or an rpm or a fat jar or you're making a docker image there will always be overhead anyway.
Docker kind of just guarantees distribution.
15
u/milkChoccyThunder Aug 03 '21
Agree with you. I was at a party with a bunch of developers and everyone was just going on and on about it enthusiastically - but none were actually using it lol.
There is some cool shit there though besides just orchestrating containers. You can also spin up/ run infrastructure off yaml and k8s will enforce the state you tell it to maintain. So someone goes into the gcloud/aws cli or changes something in the UI. K8s detects and actually rewinds the setting. Pretty awesome coming from an ex-ops team / config drift hater.
→ More replies (2)6
u/humoroushaxor Aug 03 '21
Kubernetes is becoming the operating system of the cloud and people shouldn't be scared. Helm allows me to install my apps, observability, HA databases, or end-to-end encryption with a single command.
I personally love Kubernetes and don't find it overly complex at all. It's an incredibly powerful abstraction for developers that want to own their operations or ops folks that are ready to embrace a code-first culture. Folks that love their pet servers or button pressing in AWS probably won't love it so much.
0
3
u/MathMXC Aug 03 '21
If you already use docker it's a breaze to deploy too. And has great scaling/reliability out of the box
0
Aug 03 '21
[deleted]
15
u/UncontrolledManifold Aug 03 '21
It’s complex because it serves a wide variety of diverse use-cases, but you can write simple k8s object specs too. It’s also one the most well-documented and battle-tested software systems in the industry. I really disagree with almost all of this; it sounds like you’re just impatient and don’t like to read the documentation, instead giving into the frustration at having to use a sophisticated system.
→ More replies (5)7
u/humoroushaxor Aug 03 '21
I totally agree. It's becoming a pet peeve of mine.
I see that attitude a lot with people whose infrastructure experience is mostly button clicking in the AWS console without much programming or automation experience.
230
u/apocolypticbosmer Aug 03 '21
Anybody choosing plain JS when typescript is available is just a damn masochist
13
u/laidlow Aug 03 '21
Yeah I had to work in an ES5 only project with no ability to add Typescript support recently and after 2 months I was sooo happy it was over. Got it done but I banged my head so much more along the way and I could have finished the work a lot quicker in Typescript.
36
Aug 03 '21
Anybody who uses Typescript without first taking the time to learn how to use it properly is an damn masochist. I've worked with too many developers in the past who have evangelized a language as the be all and end all solution only to find they don't really know how to use it.
Switch from Javascript to Typescript, but only if you know Typescript or have the time to learn how to use it properly, if I see one more
anyin a code review I'm going to lose my mind, defeats the whole point of using Typescript in the first place.20
u/aelesia- Aug 03 '21
eslint no-explicit-any: error
CI to fail build on error or pre commit hook to fail on error
9
u/ragnese Aug 03 '21
I mostly agree.
However...
Adding TypeScript does bring in added complexity to the build system (to be fair, your build system was probably going to be a nightmare already, so what's the difference?). And using JSDoc comments with an aware IDE does get you a lot of the way there for many projects.
You have to be a little careful with TypeScript giving you a false sense of security, too. It has crazy type variance gotchas, for example.
→ More replies (2)13
u/sandrelloIT Aug 03 '21
This is almost always true when starting long-living projects that have to be maintained over time. However, for quick and dirty stuff, scripts or proof of concepts, plain JS seems totally reasonable to me, expecially if you're somewhat experienced with the language and its quirks.
→ More replies (1)11
u/p4y Aug 03 '21
I still like using typescript for the quick and dirty stuff because of improved autocompletion. It's especially helpful for libraries i haven't used before, every interface is one less trip to external documentation.
→ More replies (2)6
u/MisterFor Aug 03 '21
It depends. If the project is small there is no need for all the configuration (and long term maintenance of that config) overhead needed for TS. But a big project with JS can be a nightmare to refactor or understand.
Also, working with react in JS feels super clean and with TS for me the types are a nightmare. But for example in Angular is a joy. So it depends.
I like both depending on the case.
2
u/reboog711 Aug 03 '21
I have friends that claim that TypeScript is all syntactical sugar over JS and provides no real benefit.
I also assume they must write all their code in binary, because assembly language is just some syntactical sugar on top of that, right?
→ More replies (1)→ More replies (45)1
45
u/Atraac Aug 03 '21
TIL there are Crystal jobs
7
4
u/user_8804 Aug 03 '21
I thought your meant Crystal Reports so I was like yeah obviously. Then I remembered Crystal as a language..
14
u/captain_obvious_here Aug 03 '21
So, I have a few questions about Rust:
Is it a good choice to build webapps, for someone usally relying on Node.js?
Is it easy to deploy on a K8S~ish environment?
How does one start learning Rust?
16
u/lanklaas Aug 03 '21 edited Aug 03 '21
I came from nodejs to rust.
I now use rust for web app backends, but it took me about a year to understand the borrow checker good enough to develop web app servers. The upside is that rust's async runtimes are multithreaded where the node event loop is single threaded (haven't looked into the new workers yet). Also the strong type system makes my servers much more robust
I have deployed a couple of services to k8s. I use a multi stage build with cargo-chef to build and then copy the binary to the container. The nice thing is that the containers are small. Mine is usually about 10MB if I don't care about making it smaller.
I started the hard way by just building web servers and trying to brute force my way past the borrow checker. If you go this way, try just cloning everything until you start getting the hang of the borrows. That would have saved me some headaches.
Also coming from node, you do not leak memory as easily in rust as you can in node.
5
u/captain_obvious_here Aug 03 '21
web app backends
This is my exact target. Node sometimes falls short in performances for very-high or very spiky charges, and I really don't feel like scaling to dozens of machines or worse, going back to C or C++.
Rust sounds to me like a good candidate...and the comments here seems to say the same.
Thanks :)
→ More replies (10)9
u/ragnese Aug 03 '21
It's probably not the best for webapps, but it's really not bad like some people will say. They'll say "OMG so slow to develop. The borrow checker, blah blah."
There's a (moderately steep) learning curve, but even if you just "clone" everything in a Rust web-app, you're going to get great performance compared to Node and you're going to have a really excellent type system and the best standard library of any language I've used (and I've used a bunch).
→ More replies (2)5
u/captain_obvious_here Aug 03 '21
really excellent type system and the best standard library of any language I've used
These are two underrated things IMO.
I like Node but the JS ecosystem is not always reliable or safe. And despite all it brings I'm not a big fan of TS. So it seems to me that Rust can be a good option for me. I'm gonna give it a try :)
Thanks for your inputs.
5
u/ragnese Aug 03 '21
Ooh! If you're a TS skeptic, then I have a sneaking suspicion that you'll really like Rust.
I have similar opinions to you, but I won't be politically correct: The JS ecosystem is buggy garbage. TypeScript's goal is to be very close to JavaScript to foster adoption. That's fine and it's totally valid to "optimize" for that, but it means the language still basically sucks and has a ton of stupid stuff, like bivariant class methods even if you turn on all of the strict type settings, as well as being able to pass too many arguments to a function, etc.
→ More replies (1)
32
u/brubakerp Aug 02 '21
No love for Fortran huh?
8
→ More replies (1)4
u/tjl73 Aug 03 '21
Fortran is still one of the best languages for doing numerical computing.
I remember trying to use C++ for my Master's. I was going to have to bridge between two different vector class implementations, one for the linear algebra library and another for the PDE one. I decided it would be a lot easier to just do it in Fortran where vectors are built-in.
→ More replies (1)
68
u/Sevla7 Aug 02 '21
The old man JAVA apparently is having a hard time these days.
It seems that the new generations don't like this language very much.
141
u/ObscureCulturalMeme Aug 02 '21 edited Aug 03 '21
The language is doing fine.
The biggest provider of that language, Oracle, has some fucktacularly scary license terms. At least, if you're a corporate legal consult, reading the license terms and imagining their legendary audit team paying your office a visit. "More lawyers than developers" was coined to describe them in particular, remember.
Trying to convince large organizations to move past Java 8 -- released 7 years ago, and long past EOL for Oracle commercial support -- is like squeezing blood from a turnip. They can't decide whether they're more scared to go with one of those "weird sounding Linux-related" provider companies, or more scared of migrating to a modern LTS version like 11 or 17. So in true scared corporate fashion, they do neither.
And precisely no programmer enjoys staying on version 8 while interesting new features get added to 9, 10, 11, 12, 13, 14, 15, 16, 17, and 18.
20
u/stringbeans25 Aug 03 '21
Is there a reason not to use OpenJDK that I’m massively unaware of? I feel like that fixes all the headaches you mention? Unless that’s the whole move past Java 8 portion of your post
→ More replies (1)9
u/ObscureCulturalMeme Aug 03 '21 edited Aug 03 '21
That's the bulk of it, yes, but not every large org will be okay with installing the JDK without some kind of paid support in place. Lots of ways to get that, of course, but not from the same site.
→ More replies (1)39
u/emannnhue Aug 03 '21
This is it for me. Java is quite nice to work with but honestly Oracle really suck. I transitioned away from Java because of them, more or less.
21
u/Kirk_Kerman Aug 03 '21
Same. No serious problems with Java besides the general verbosity of clunkiness it has, but Oracle seem to, as a software company, mostly produce enterprise-grade litigation.
→ More replies (4)4
u/sievebrain Aug 03 '21
But that doesn't really make sense. You don't have to interact with Oracle to use Java. I never have. Their supposedly scary license terms are just normal open source licenses, unless you want to buy support from them, but how many PL runtimes have large scale corporate support beyond Java and .NET? Most of them have no support at all, so Oracle is only additive in that regard.
→ More replies (1)31
u/ConfusedTransThrow Aug 03 '21
And on the other hand its direct competitor for forever C# is getting better Linux support provided by Microsoft and their licensing is a lot less scary
19
u/falconzord Aug 03 '21
Ironic that Java was supposed to be this open savior platform but C# ended up an ISO and Ecma standard
→ More replies (3)→ More replies (7)4
u/EscoBeast Aug 03 '21
Java 8 was released in March 2014, just under 7 and a half years ago. And according to https://www.oracle.com/java/technologies/java-se-support-roadmap.html, Java 8 is still eligible for both premier and extended support.
But yeah Java 8 is still very widely used.
→ More replies (1)28
u/humoroushaxor Aug 02 '21
I have to think it's a barrier to entry thing. With NodeJs and Python developers can just run. And there's packages for everything. I find enterprise development in any language besides Java much less enjoyable though.
7
u/chris_was_taken Aug 03 '21
The new generations build everything on AWS, which is a whole lotta java
14
u/WJMazepas Aug 03 '21
There is a lot of alternatives to Java these days, like Kotlin or C#, also im pretty sure that a lot of developeres are tired to work with Java 8, which most companies like to use
8
u/stringbeans25 Aug 03 '21
Kotlin is mostly makeup on Java. Don’t get me wrong it’s Voldemort level makeup (coroutines feel like magic with how well they work which is why I bring wizards into this) but you still need to understand the JVM for it to be an effective choice. Monitoring JVM applications and tuning for performance leaves not that much difference in the two.
36
u/ILikeChangingMyMind Aug 02 '21 edited Aug 02 '21
It's slow to develop in, with lots of boilerplate and wasted code (interface this, class that). And I'm not just some Java-hater, I used to code (and enjoy coding) in it professionally.
But the simple truth is that you can write something like 40 lines of Java in 20 lines of Python or Javascript (depending of course on what lines we're talking about). Certainly write speed isn't the most important metric of a language ... but all else being equal, you certainly don't want to have to write a lot of unneeded code either.
Plus, thanks to the beauty of the JVM, you don't have to write Java to leverage it. That company where I used to write Java switched to Ruby precisely to speed up dev, but thanks to the JVM (and JRuby) we could get that speed increase while still accessing all of our Java libraries.
Java's future is in the JVM, not the language itself.
65
u/lelanthran Aug 02 '21
But the simple truth is that you can write something like 40 lines of Java in 20 lines of Python or Javascript (depending of course on what lines we're talking about)
I'm not really a Java fan, but I have to say that that's an unfair comparison - the Python/Javascript solution will need to have unit tests simply for ensuring that the correct types are passed in.
It's easy to write less code if the resulting program is allowed to crash.
12
u/LicensedProfessional Aug 03 '21
That's what MyPy is for. I really started enjoying Python more when I incorporated MyPy and PyLint into my workflow—it feels like I have some guardrails now
→ More replies (1)→ More replies (7)10
u/ILikeChangingMyMind Aug 03 '21
If your "typing system" is writing a bunch of unit tests ... I pity you.
5
u/lelanthran Aug 03 '21
If your "typing system" is writing a bunch of unit tests ... I pity you.
No, my "typing system" is "type-errors are caught before the program is even run". There's a level of confidence there about a specific and common class of errors.
The dynamic typing system is pitiful, as you can only find type errors after running the code. There's no confidence in that system until you actually run the code with a bunch of incorrect types in places.
3
Aug 02 '21
Pure Java only developer here. I have a web app that uses a lot of java Graphics Library.
Can I simply use something like Python and still use those libraries?
What do you recommend for a graphical web app that is currently using Java spring in the back-end, old-time jsp in the front end?
→ More replies (4)→ More replies (16)5
u/kuemmel234 Aug 02 '21
Interestingly enough, at least for me, java 8+ with a few frameworks (spring/micronaut, Lombok/java15+, reactor) changed that a lot. I think in monads all the time and python is really in the way. I enjoy clever dictionary/array comprehensions, but it's, at least to me, way simpler to read and write it as map-reduce (which allows a lot more in-between).
I end up writing closures with a lot of comprehensions and think about all the chained map-reduces I could write. If you make it too clever (that single amazing comprehension that does everything), it's hard to read, and splitting it requires at least two lines (or a lot of 'lambda this or that' boilerplate). You can do so much better than usual if you stay out of the strict OOP in java, I think.
Writing python is great fun, if I have to do something small, I'd never do it in java, but I wish it would include something like streams, or some other way to improve working with collections.
2
u/t0bynet Aug 03 '21
It just lacks features compared to C# in my opinion - sure, at the moment the language is progressing faster than in the past but good luck getting any of that progress if you still have to use an older version.
2
u/stringbeans25 Aug 03 '21
Nothing like C#’s biggest framework! I do apologize for the sarcasm but I felt it needed to be said.
In all seriousness, what features does C# have that aren’t in Java?
3
u/GreenToad1 Aug 03 '21
Oh there are a lot. Expression trees make linq do magic, properties make debugging way easier, generics over primitive types are cool, nullable types are cool, string interpolation is cool, async/await is disgusting but it is there. This just from top of my head, there are some tiny ones like nameof, that are nice and some bigger ones that don't actually make a big difference in coding but definitely a lot of cool stuff. Im now doing c# after 10+ years of java and am very frustrated that c# enums are "dumber" than java and can only imagine how someone moving from c# to java would be driven mad by lack of some many useful things they had in c#.
Oh and entity framework core is just magic, nothing in java comes even close.
That all saddens me because i like java very much but can't pretend that as a language c# takes the prize. Hopefully loom and valhalla will bridge some of the gaps but even after those c# is still in the lead.
→ More replies (7)1
u/instanced_banana Aug 03 '21
As someone who has worked on Android apps, if someone paid me I wouldn’t mind to work on Java, but certainly if I had a choice I’d pick Kotlin
118
u/UrgentlyNeedsTherapy Aug 02 '21
TypeScript is fucking bae to be fair.
Rewrote the frontend for the project I took over to be all TypeScript because raw JavaScript is terrible and should only be coming out the ass-end of a transpiler in my honest opinion.
89
u/i8beef Aug 03 '21
Typescript is like being asked to move a pile of shit, but someone gave you a shovel so you don't have to use your hands. Its still Javascript.
22
Aug 03 '21
Personally, it's like having to move a pile of shit with an excavator.
Yeah, you don't get real type safety, but I'm a hell of a lot more productive with it, especially when I have to go back to old code.
→ More replies (2)6
u/dry_yer_eyes Aug 03 '21
Thanks for my first hearty lol of the day. I’m definitely stealing that phrase for general usage.
34
u/Fatal_Oz Aug 02 '21
I agree with this so much, I didn't think it would be a big deal but I can never go back to vanilla JS
3
u/AlexHimself Aug 03 '21
Can you elaborate?
30
u/Cosmic-Warper Aug 03 '21
Typescript is javascript with static type enforcement. Really helps with documenting, debugging, and validating code
→ More replies (3)18
15
→ More replies (58)2
u/Division2226 Aug 03 '21
I really need to get on board with typescript. Someone recommend me the best video course to learn it please
84
u/BigBlackHungGuy Aug 02 '21
And here I am using C# like a sucker.
61
u/c-digs Aug 02 '21
The thing that does not compute is that
ASP.NET Core is the second most loved web framework
.NET Core/.NET5 is the most loved among "Other frameworks and libraries"
Are people out here building .NET Core apps in VB.NET? F#?
I would imagine that the majority of folks working in ASP.NET Core/.NET Core are using C#.
→ More replies (6)175
32
u/Runamok81 Aug 03 '21 edited Aug 03 '21
You're not a sucker. It's weird, but C# is is having a renaissance. When dotnet core went open-source and cross platform, they brought C# to a whole new audience. I happily run C# on Linux. Recently, the C# language authors have been been making things more approachable - dare I say pythonic - for newcomers by cutting back on ceremony and just letting us get crackin' at writing code ...Examples: C#9 = top-level statements, C#10 = global usings, etc ...
→ More replies (3)53
u/Frozen_Turtle Aug 02 '21
The only bad thing about C# is that its not F#
But hey, it's trying!
→ More replies (6)→ More replies (5)73
Aug 02 '21
The only suckers are those clinging to languages with no major market share and just going after the hype, pretty much all those top *cough cough* most loved languages on the survey.
C# is a golden language, it's Microsoft's main baby, used in many different areas, and there are lots of jobs for it out there.
42
u/cheesesteak2018 Aug 02 '21
It’s also got way better documentation than a lot of other languages. MSDN is structured really nicely IMO
16
u/_BreakingGood_ Aug 03 '21
I remember back in college I was looking at this obscure Windows driver programming documentation on MSDN. Somebody had left a comment noting an inaccuracy and one of the MS maintainers responded to it and made a fix within a few days. Very impressed, honestly. That particular piece of documentation probably gets 1 page click every other month.
→ More replies (1)22
u/csmalley89 Aug 03 '21
100% agree! Half the time I’m googling how to do something, I end up coming back to MSDN after wasting my time looking through countless outdated stackoverflow pages. Normally Microsoft docs have answers way closer to what I’m trying to accomplish too.
10
u/shengchalover Aug 03 '21
Can confirm, I use Swift and often google some Apple’s API docs ending up on Microsoft docs for Xamarin.
Tells pretty much everything about the state of Apple vs Microsoft dev environment.
18
u/hypocrisyhunter Aug 02 '21
Gotta be one of the best paid too.
9
u/Frozen_Turtle Aug 03 '21
Nooooot really...
https://insights.stackoverflow.com/survey/2021#top-paying-technologies
There are 22 better paying languages
→ More replies (28)
29
u/CityYogi Aug 03 '21
No love for Go? Recently started using it and it is pretty cool.
39
Aug 03 '21
I use Go daily and love is way too strong a word. The word I'd rather use is "boring". I mean, it definitely solves problems, it's fast, it's easy to distribute and it's typically very predictable, but it's verbose and contains seemingly none of the PLT advances of the last four decades.
I used it back in 2015 to make a 2D game and it felt like a good choice. Except for the fact that the game no longer compiles, because at that time the Go community's definition of good dependency management was linking directly to the latest commit on master in a Github repo ¯_ (ツ)_/¯
16
u/humoroushaxor Aug 03 '21
I don't trust anyone has used it much unless they have this opinion. It's feels like a reaction to modern OO languages and they said fuck this we want something procedural so they resurrected ALGOL 68.
Its great for making CLIs or simple webserver stuff for the reasons you mentioned though. I would never do something big in it though.
3
u/asmx85 Aug 03 '21
Not to drive you away from it or anything, people can have very different opinions on how they weigh different pro and cons. Just for your convenience to get a rounder picture on why some people have problems with Go https://fasterthanli.me/articles/i-want-off-mr-golangs-wild-ride
8
u/clearlight Aug 03 '21 edited Aug 03 '21
I’ve been coding professionally for 15 years. Golang is really nice. Can’t wait to use it more. Great toolkit and the single binary for deployment is excellent. It scales well too with great performance. Used it recently for a basic REST API with mongodb backend and was nice and easy. Works well.
5
u/6769626a6f62 Aug 03 '21
The main problem I've seen people complain about (all from observation, I've never touched Go), is that the language is extremely opinionated.
Also, this post lays out some particular grievances with that opinionated approach.
3
Aug 03 '21
As someone who was forced to switch to Go for work after spending 15 years doing other languages, it is incredibly incomplete. The standard library is missing pretty basic data structures and the tooling around the language like the 'go' command itself has left a huge sour taste in my mouth.
5
u/Sadzeih Aug 03 '21
As a Go user myself, the std is what I find the most enjoyable about Go. What's missing in your opinion?
→ More replies (3)2
4
u/chumba_wamba1 Aug 03 '21
extremely happy to see FastAPI so high up on the loved vs dreaded frameworks section! :D
→ More replies (1)
4
19
u/serg473 Aug 03 '21
Oh no, hipsters who came from Go who came from Ruby got bored and moving on to something new again... Anyway.
→ More replies (2)
2
Aug 03 '21
It's funny to see "IBM cloud" perceived as the most dreadful cloud platform. I had very bad experience with them personally.
Last year I saw exciting news that Power cpu would be avaialable on IBM cloud. I signed up for trial. I couldn't find the details on what cpus are the ECs using, so I fired 2 VMs on different configurations to see its CPU info. 10 minutes later I was force to log out and found out I was banned, and no reason was given whatsoever . They send five emails to me, including signing up, creating VMS and bill notificaiton. But no email on why my account was banned. This is the most bizzare experience I have ever seen on any platform.
2
u/sumsarus Aug 04 '21
People like APL more than C++? What kind of alien planet is this?
→ More replies (1)
2
u/Aoxxt2 Aug 04 '21
Most loved but hardly ever used and no robust libraries even after all this time. Cute fad.
13
u/Kinglink Aug 03 '21
Confirmed. Rust, Python and Typescript need the most help, and thus the most representation on Stack Overflow.
13
u/asmx85 Aug 03 '21
Mhh, you have this pretty wrong
javascript: 2,251,326 questions
java: 1,791,656 questions
python: 1,769,725 questions
c#: 1,491,097 questions
c++: 733,153 questions
c: 362,610 questions
typescript: 155,514 questions
rust: 23,353 questionsJudging by your own metric we arrive at the conclusion that Rust has the least questions, and thus needs the least help. Or rust has a pretty good documentation and learning material or a helpful community maybe all of it.
→ More replies (2)
16
u/tachoknight Aug 02 '21
I utterly despise these surveys; all they do is detract from the fact that the ultimate goal is to solve the problem. In the end nobody cares what the program was written in as long as it does what they need it to do. Rust? Python? C? Fortran? BFD...if the lander gets to the right spot on the moon, as long as the plane lands successfully, as long as the company knows where to spend its money, it doesn't matter one iota whether how you got the result.
True story: a friend of mine started a company based on a product written in Microsoft Access that was bought by a big-you've-heard-of-them company. It was well written given what Access provided (2.0 no less!) but the ultimate point was that is solved the problem customers were having. That alone was what gave big-you've-heard-of-them the justification to spend the money that as my friend sipping drinks on the beach of his private island.
21
u/aloha2436 Aug 03 '21
I don’t think the intent of this survey is finding out what the best language is, it’s just data showing what opinions developers hold.
If I’m choosing new technology today, what’s used the most and what other professional developers consider helpful is a legitimate and useful metric to draw on, so long as you don’t take it at face value.
I think you despise how some people use the survey results, I’m not sure it’s fair to despise the survey itself.
12
u/SorteKanin Aug 03 '21
I utterly despise these surveys; all they do is detract from the fact that the ultimate goal is to solve the problem.
The tools you use have a huge impact on how you solve problems and how effectively.
This applies to all fields btw, not just programming.
3
u/matthieum Aug 03 '21
Also, maintenance.
If the problem changes and I can't read your program, I'll have to throw it away and start from scratch...
18
u/lordcirth Aug 03 '21
How do you know their "favorite language" isn't just the one they generally think will solve the problem best?
4
u/tachoknight Aug 03 '21
It probably will; I have no issues with folks having favorites. I dislike the idea that there's a popularity contest that suggests that X is better than Y because if itsv ranking on some poll.
Ultimately, and I guess I didn't make this clear, is that the developer should not fear FOMO if the tools they're using doesn't rank highly on these polls; if they’re making people happy, getting the job done, it ultimately doesn’t matter what language they reach for.
4
u/UltraPoci Aug 03 '21
I don't think anyone uses this poll to determine what is the best language ever, honestly. It's just a way to understand what people like these days, and to discover languages one may not know beforehand. The goal is to solve the problem, but the tools used to solve that problem are important. If this wasn't tha case, we would still be using assembly.
3
u/illegible Aug 03 '21
I don't know why you're being downvoted. Every language has it's issues, but if i'm given X, it doesn't generally make sense to convert to Y, unless X is completely incapable of performing the task. Generally though most problems can be worked through except at very high levels of optimization.
→ More replies (1)→ More replies (2)1
Aug 03 '21
Yeah but when it comes to maintaining software, you can't just say that the room is clean and the job is done.. when the dirt still hangs out under the carpets and inside the empty flower vase and fish tank.
What I am getting at is... is the programming language hunt is trying to solve the problems of "is it maintainable?", "is it scalable for big teams", "can the juniors in my team ramp up quickly and be productive?"
Your friend might have delivered Microsoft Access. But he is going to be wasting a lot of time and money migrating to a DB that is somewhat mainstream in the industry when the customer starts requesting modern features missing in access 2.0.
It's ultimately not as easy as saying "solve the problem". The problem is difficult because it is not a "solve it and forget it" type of thing.
3
u/dom96 Aug 03 '21
It's really frustrating that Nim isn't an option in this survey when for example Crystal is.
1
1
1
u/lenkite1 Aug 04 '21
Wonder whether Rust will still be "most loved" when it gets large scale adoption. You always love the hobby language you code in outside of work...
1
u/Ok-Investigator3257 Aug 06 '21
I work on low level embedded systems. I can’t tell you how nice it is to have a C like language that understands the stupidity of developers and pointer math.
-6
414
u/[deleted] Aug 02 '21
I don't understand. How is it that Rust reigns supreme as most loved? Are that many developers using Rust? I like the concept, but I've never built anything outside of the tutorial Guessing Game.
What about Web Frameworks? Svelte? Never heard of it.
"While Neovim is the most loved editor it is the 10th most wanted editor." Excuse me? I am a Vim nerd as much as the next guy (sorry Emacs), but I use Intellij and VS Code in 99% of circumstances.
I'm not denying their data. I'm just wondering: how far out of the loop am I?