Comment by kamaal
1 year ago
Python is mostly the Perl of the current day. And it attracts tons of beginners, that also means nearly equivalent amount of bad code(Just like in the Perl days).
These days if you are doing serious work, you simply use Java. Especially if you want something running for years. Java is really the only option you have.
A decade back I interviewed at a major telecommunications firm. Python was the new fashion then, they were trying to rewrite a fairly big Java code base to Python. Anyway I didn't get the job. My friend did. After a few years of this they realised, Python was not a serious alternative for an application of that nature. And abandoned it midway.
I know several other banks that have had a similar arc. Python is an amazing glue language and perfect for lots of automation and adhoc glue work. Its just not meant to be a serious alternative for long term, stable applications which are typically written in Java/C++.
Other languages like golang have come up in the past. While they are really good for smaller applications. They are just not there for something serious. 'Simplicity' has different meanings in different contexts. Either way, I think both Python and Java are here to stay and will be used for tasks where they are good at.
But we are now past the 'Python for everything' days.
Even as a lifelong java dev, this is a silly take.
Python is an absolutely lovely language. It is not the 'perl of it's day'. In my experience, things get hairy when you start building bigger systems that require a lot of collaboration but you can probably do away with most of the pitfalls if you use type hints. Beyond that, it's main downside is performance but you would be shocked how little code you have to convert to C/C++ to remove bottlenecks.
You are right that most large orgs choose a language like java, but I'd also argue that C# and golang are good fits as well. They're fast, and they have a garbage collector. I suppose typescript / node could be in that same category but I steer away from that stack as a backend dev.
Do you realise how your comment sounds? No actual reason for any of the opinions, just "this happened" and words like "serious". What does serious means, is it type safe or something? Can you try again with substance?
I think it's a copy pasta.
Someone should rewrite this but Rust instead of Java; it would be a perfect meme.
I guess Instagram, Threads, Reddit, Uber, and Spotify aren’t serious long term applications.
I'm not sure i'd cite Reddit as a positive example of such a thing.
You wouldn’t cite Reddit as a positive example of successfully using Python to run a large scale, high traffic application?
1 reply →
I rarely get server errors on Reddit despite its massive scale… It’s the client which is a tire-fire. People blame React but that doesn’t have anything to do with it either. It’s just utter shit.
1 reply →
> Its just not meant to be a serious alternative for long term, stable applications which are typically written in Java/C++
The what, now?
Using Python for a serious backend thing at a telecom firm is a big no-no, and I say that as a guy who has been paid to write Python code for almost 20 years now.
Python's absolutely fine to use for a "serious backend thing" at a telecom firm.
It's a language that attracts casuals, but that does not mean it's incapable of being used for serious software engineering. The only scenarios where I wouldn't use python for a "serious backend thing" are scenarios in which there are dramatic cost/performance/etc consequences resulting from the overhead of using python which would be substantially reduced if using $lowLevelLanguage. Even then, there's always the option of outsourcing specific units of functionality to say, c++, anywhere the performance difference actually matters.
I would say that for the vast majority of use cases, acceptable performance could be easily achieved by simply writing better python.
Writing this reply brought to mind some absolutely atrociously inefficient ORM code I encountered in a python codebase recently. If you don't have an understanding of how to utilize SQL efficiently, it doesn't matter what language you're using to construct the SQL queries, the software engineering equivalent of warcrimes is possible in any language.