17 ms·
When did Python go out of fashion? This is the second article I've seen talking about it as if it's some kind abomination. I get that it's not the shiny new t
by jlarocco 1y ago
When did Python go out of fashion? This is the second article I've seen talking about it as if it's some kind abomination.
I get that it's not the shiny new thing, but I don't understand people hating on it. Is this just junior devs who never learned it, or is there some new language out that I missed? (And please don't tell me Javascript....)
- wk_end 1y agoYes, I'd say Python's crown as the go-to lightweight scripting and web development language was mostly ceded to JS. It's still reigning champion of data science, and of course it has a huge number of uses and users still around, but it's not really cool or in vogue outside of those circles.
- jraph 1y agoDo people really turn to JS (instead of Python) for lightweight scripting? Are we talking about the "better Bash" use case?
- tempest_ 1y agoJS devs do, and there are a lot of them
- ajkjk 1y agothat would be very surprising
- roflchoppa 1y agoI mean if its really light weight, and I want to avoid bash, then JS is not too bad. The downside being that the built-ins are not really there compared to Python. The famous answer.... _it depends_.
- machiaweliczny 1y agoI use "tsx script.ts" often and it's very nice good due to gradual typing you can use (plus I know lang well)
- mjr00 1y ago> It's still reigning champion of data science, and of course it has a huge number of uses and users still around, but it's not really cool or in vogue outside of those circles. This is a wild take. You're never going to get a fully accurate measurement but every source I've seen[0][1][2] puts Python as the most common programming language by a country mile. If it doesn't seem "cool" or "in vogue", that's because everyone is already using it. [0] https://www.tiobe.com/tiobe-index/ https://www.tiobe.com/tiobe-index/ [1] https://pypl.github.io/PYPL.html#google_vignette https://pypl.github.io/PYPL.html#google_vignette [2] https://www.pluralsight.com/resources/blog/upskilling/top-programming-languages-2025 https://www.pluralsight.com/resources/blog/upskilling/top-pr...
- slightwinder 1y agoPython has never been THE web development language, that's always been JavaScript. Python is one of the more popular server-side languages, and JavaScript has move from frontend to backend in the last decade too. Not sure whether this has really taken the crown of any backend-language. And what is lightweight scripting? Isn't scripting by definition lightweight? But Python overall is still very popular outside the Data Science-circles. Not sure where this claim is coming from.
- deleted 1y ago[deleted]
- ravenstine 1y agoI personally dislike Python, but it does surprise me that anyone is acting like it's generally disliked because that has definitely not been my impression since time immemorial. I doubt that it's gone out of fashion. More likely, acting like something actually doesn't suck after all has become the clickbait framework du jour.
- vinceguidry 1y agoThere are massive numbers of devs who would never even think of trying to code in a dynamically-typed language, even though the big players all have gradual typing. They don't know what they're missing.
- leptons 1y agoI have no problem with dynamically-typed languages, my main problem with Python is the significant whitespace. I really do not like it. I can deal with everything else in Python, or any other programming language, but significant whitespace is what kills it for me.
- biztos 1y agoHaving gotten back into Python for a project after some time away, I found the solution (for me) is to automatically fix the whitespace every time I run the code. I just have a line in my Justfile that does this. Probably would be better to format on save but I use different editors and haven’t gotten around to it. Still doesn’t fix the creeping doubts about everything in a language conceived by people who made that whitespace call, but it removes the specific pain point.
- yoz-y 1y agoEven after writing tons of python the whitespace is still the reason why I never reach for it by default. Today the IDEs got much better, but I still can’t see the significant whitespace as anything than downside. With brackets I can indent, but also have automatic indenting succeed every single time.
- daedrdev 1y agodo you mean requirement of whitespace or how much space that takes up? Because you can change how many spaces python needs for its indentation to get some reduction in whitespace
- leptons 1y agoI've been writing code for 40+ years. I know how to set up my editor, thanks. If you copy and paste some Python code and it isn't indented properly, it breaks the python program. It's the stupidest thing I've seen in any language, including javascript (which isn't as stupid as many claim it is).
- guhcampos 1y agoApparently the author used to be a Java person. I have this feeling - or prejudice - that people still in the Java World are a bit out of tune with the tech industry, working on huge legacy projects on big retail or US banking. These people tend to be conservative and resistant to change, so maybe that's where these types of articles are coming from.
- tombert 1y agoI gave a talk recently at a conference about how modern Java doesn’t suck very much, and that the worst part of Java is Java developers, who seem to be completely intellectually unambitious. I don’t think Java makes anyone unambitious, I think it’s that Java is taught in schools and unambitious people don’t feel the need to learn anything else, and they get jobs at unambitious corporations. It selection-biases towards unambitious people who don’t want to learn more than they have to. Compare this to something like Clojure or Haskell or something, which isn’t routinely taught at schools and is not very employable. People who learn these languages generally seek out these things because they’re interested in it. This selection-biases towards intellectually ambitious people. As a result, Java people can be insufferable for people like me. The people who make Java have actually made the platform and language pretty ok in the last two decades, but I had to fight at a previous job to use NIO, which I think was introduced in Java 4, but none of my coworkers had really heard of it or used it because the regular Java blocking IO has been “good enough”.
- dzonga 1y agolink to talk please if recorded. I think one comment I saw here on HN that Java is better if written in Pythonic way. I agree completely with that stance. but yeah within Java you've 'merchants of complexity' people who wanna do things in the most abstract way rather than the simple way. btw Java can be as simple as Go.
- _swfb 1y agoI don't think that the talk has been released on public YouTube yet (and they made it clear to not share the unlisted links publicly), but here is the posting: [url-redacted] And the slides are available here: [url-redacted] I'm afraid that my humor isn't really reflected in the slides, but imagine everything here is said kind of snarkily. Java can be mostly as nice as Go, the BlockingQueues and Virtual Threads can get you pretty far, though they're not quite as nice as Go channels because there's no real way to select across multiple BlockingQueues like you can with Go channels. Overall though, I think Java 21 is actually not too bad. Shockingly, I even sometimes have fun writing it.
- callc 1y agoI coded happily in python for many years and fell out of love with it. It doesn’t ship with a first party package manager so you got the community trying to fill this gap. Use any other language with good tooling like golang or rust and it is a breath of fresh air. Python used as an actual PL is a footgun because it’s dynamic scripted. (Don’t tell me about using tools X, Y, Z, mypy, …) You essentially become the compiler checking types, solving basic syntax errors when uncommon paths are executed. A programming language that’s only good for < 100 line scripts is not a good choice. I honestly wish python were in a better state. I switched to rust.
- rsyring 1y ago> A programming language that’s only good for < 100 line scripts is not a good choice. What a bunch of crap. It's so trivial to show very popular and useful programs written in Python that far exceed this number I'm not even going to do the work. What a lazy criticism.
- rendall 1y agoFrom the community guidelines: > In Comments > Be kind. Don't be snarky. Converse curiously; don't cross-examine. Edit out swipes. > Comments should get more thoughtful and substantive, not less, as a topic gets more divisive. > When disagreeing, please reply to the argument instead of calling names. "That is idiotic; 1 + 1 is 2, not 3" can be shortened to "1 + 1 is 2, not 3." > Please don't fulminate. Please don't sneer, including at the rest of the community. > Please respond to the strongest plausible interpretation of what someone says, not a weaker one that's easier to criticize. Assume good faith. https://news.ycombinator.com/newsguidelines.html https://news.ycombinator.com/newsguidelines.html
- callc 1y agoHi rsyring, I made this comment out of experience. As python projects grow and grow, you need to do lots of support work for testing and even syntactic correctness. This is automatic in compiled languages where a class of issues is caught early as compile errors, not runtime errors. Personally I prefer to move more errors to compile time as much as possible. Dynamic languages are really powerful in what you can do at runtime, but that runtime flexibility trades off with compile time verification. Of course, every project can be written in any language, with enough effort. The existence of large and successful python projects says nothing about the developer experience, developer efficiency, or fragility of the code.
- stanleydrew 1y ago> Is this just junior devs who never learned it Seems more like it's fallen out of favor with senior devs who have moved to Go/Rust.
- ajkjk 1y agoyou'd be crazy (senior or not) not to use Go for Go stuff and Python for Python stuff
- biztos 1y agoI use both, with a preference for Go but I feel like I should be doing more Python just to keep it fresh. It seems like two of the main entries under “Python stuff” are “working with people who only know Python” and “AI/ML because of available packages.” What are some others?
- ajkjk 1y agoI mean... to oversimplify a bit, Python is for scripting and Go is for servers.
- pyuser583 1y agoI consider this self-inflicted. Pythons Async functionality is … unfortunate. JavaScript has much more intuitive async syntax, which was actually borrowed from a Python framework. For whatever reasons, the Python folks decided not to build on what they had, and reinvents things from scratch.
- bee_rider 1y agoI don’t know anything about go. But Rust is more of a competitor to C and C++, right? It is sort of bizarre if these languages are butting heads with a scripting language like Python. Python compares fairly well to Bash or JavaScript or whatever, right? (Maybe JavaScript is better, I don’t know anything about it).
- maleldil 1y ago
- tombert 1y agoI have had a somewhat unearned distaste for Python for the last decade or so. I mostly just don’t like some of the design decisions it made. I don’t like that lambdas can’t span multiple lines, I don’t like how slow loops are, I don’t like some functions seem to mutate lists and others don’t, and I am sure that there are other things I missed. But it really comes down to the fact that my career hasn’t used it much. I occasionally have had to jump into it because of scripting stuff, and I even did teach it for a programming 101 course at a university, but I haven’t had a lot of exposure otherwise. For scripting stuff for myself, I usually end up using Clojure with GraalVM (yes I know about babashka), or nowadays even just a static linked compiled language like Rust. I don’t really understand why people think that compiled languages can’t be used for scripting (or at least task automation), honestly. Yes you have to add a compilation step. This involves maybe one extra step during development, but realistically not even that. With Rust I just do cargo run while developing, I don’t see how that’s harder than typing Python.
- Joker_vD 1y agomsedit main.py && ./main.py !! !! But indeed, pressing F5 solves that for both Rust and Python
- dec0dedab0de 1y agowhy would you want a lambda to span multiple lines? How would that be any better than a function?
- tombert 1y agoBecause sometimes I want to have logic that spans multiple lines and I don't want to assign it a name. An easy example might be something with a `map` or a filter. For example, in JavaScript [1,2,3,4].filter(x => { let z = x * 2; let y = x * 3; let a = x / 2; return (z + x * a) % 27 == 2; }); Obviously I know I could name this function and feed it in, but for one-off logic like this I feel a lambda is descriptive enough and I like that it can be done in-place. You're free to disagree, but I think there's a reason that most languages do allow multi-line lambdas now, even Java.
- m0llusk 1y agoThe v2 to v3 transition threw a lot of people.
- codethief 1y agoCan we please stop reiterating the same old stories? That was years ago. Most Python devs these days never wrote a single line of Python 2. I learned it 16 years ago and, while frameworks like Django were still in the middle of the transition back then, I pretty much started learning & writing Python 3 right away.
- FredPret 1y agoThis might be true but I still find myself typing: print "xyz" now and then. It's not a big deal, but it reminds me of struggling with pip->pip3 and many other things for a long time years ago.
- ewoodrich 1y agoHah that brings back memories of me smugly insisting to my freshman roommate that using Python 3 tutorials to learn programming was a complete waste of his time and he should be using 2.7 for life like the rest of us l33t hax0rs. Tbf at that point Django was still pretty shaky with 3 and basically none of the 3rd party Django libraries supported it at all, plus I was using Google AppEngine which at the time was tightly coupled to the 2.7 runtime. But really I was just parroting the Slashdot hivemind which was 100% convinced the transition was the new Perl 6 and would kill Python, and that Python.org was dishonestly teaching newbies who didn't know better a dead language and worthless skill when they changed the default. Fortunately for him he ignored me and most of the big Django libraries were ported like a year later at which point I had to switch anyway to get updates. Fully agreed that in 2025 it's pretty much irrelevant, and honestly despite some legitimate pain the transition was much more successful than the cynics assumed it would be at the time.
- dec0dedab0de 1y agoWhen it got big enough that companies were forcing people to learn it. People automatically hate things they didn't choose themselves. Plus there has been a rising sentiment against dynamic typing by masochists over the last decade or so.
- verandaguy 1y ago> by masochists Hey! The masochism pays dividends. I can't do anything with duck typing that I can't also do with `dyn Trait` abuse :)
- dec0dedab0de 1y agoHA! Alright Fair enough :-)
- kelipso 1y ago[flagged]
- polotics 1y agowould be great if you manage to substantiate your "terribly designed" statement. any pointers? :-)
- blurbleblurble 1y agoAfter using Rust's tooling, Python's tooling is obscenely painful. Like intolerable. Which makes some of us feel overwhelmingly frustrated with the language itself. The amount of time I've squandered on Python because of its tooling... I'm never getting that back. But then uv came along. It's not just another poetry or pipenv or whatever. It works well and it has uvx and `uv tool install` and other nice things. Previously when I saw that something was written in Python I'd curse under my breath because I don't have the mental energy to make a virtual environment and source its shell script and remember where I put it just to try something out. On arch Linux I can't just pip install something without going through some crazy setup that I used to have patience for but as I get older it's been better to just curse that snake language altogether and spend time doing something more chill like writing rust. But now I can just type "uvx" and it works. I'm probably not going to start writing python again any time soon, but at least now I have less reason to be disappointed with people who themselves choose to write Python.
- jonas21 1y agoA decade ago, Python was pretty rough around the edges in production. Of course you could make it work, but you had to sacrifice a lot in terms of: - Environment / dependency management - Type safety - Performance As the author points out, these have largely been addressed now by uv, type hints, pydantic, FastAPI, etc.
- dccsillag 1y agoTyping still sucks big time. Same for perf, unless you are working with numerics that fit with something like NumPy or JAX.
- ActorNightly 1y ago>A decade ago, Python was pretty rough around the edges in production. Not really. Environment/dependency management is/was never an actual problem. People act like you update a version and stuff breaks. Even then, venv existed for this reason, and you could specify version in the setup.py or requirements.txt. Type safety should in theory be covered by unit tests. If you assign a variable to another one in a dynamic setting accidentally, like a string to a dict, then your functionality breaks. In reality though, its really not that hard to use different variable names. In my experience, the only time things start getting confusing is if you start using Java concepts with things like Factories and a lot of OOP and inheritance in Python. None of that stuff is really necessary, you can get by with dicts for like 90% of the data transfer. And in very type safe languages, you spend a lot of time designing the actual type system instead of just writing code that does stuff. Performance is still slow, but language performance doesn't really matter - you can launch natively compiled code easily from Python. Numpy was built around this concept and is also 10 years old. You will never beat C (with explicit processor instructions for things like vector math) or CUDA code, but most of your code doesn't require this level of performance.
- codazoda 1y agoI haven't tried uv but my biggest pain point with Python has been the way env works. I always find it painful and odd. Backward compatibility, which I suppose is closely related to needing to use env, is also a pain. In my experience you can't go forward or backward in many cases. It's especially painful on projects that don't change very often. I'm sure that an active codebase can probably be kept updated from version to version, but if you've waited a bunch of versions, it seems painful. But, I'm not sure I've given it a fair shake because I haven't needed to. It's use in AI does make it an attractive option, now more than ever.
- taeric 1y agoI think for a lot of us, it was very frustrating when it was being pushed with no real analog for the practices we had in other languages. Poetry used to be pushed as how to do dependency management, but it was not obvious that it was not necessarily your build manager, as well. Even today, I'm not entirely clear what the standard approach is for how to manage a project. :(
- blurbleblurble 1y agoIf I were to try again I'd go with uv, it seems way way better
- taeric 1y agoI have been sticking with poetry for a while, now. What would make me want/need to move to uv?
- cdelsolar 1y agoyeah Poetry is fine
- blurbleblurble 1y agoMaybe you'll find this series of articles interesting: https://www.loopwerk.io/articles/tag/uv/ https://www.loopwerk.io/articles/tag/uv/
- taeric 1y agoThanks! I'm not entirely sure I see a reason to change on there, oddly. I'm very fortunate that my python projects are all relatively small, so maybe that colors things a bit. Certainly looks like something that would have swayed me to uv at the start, but as things are, I think I mainly just wish there was a more standard/accepted work flow for build and release.
- blurbleblurble 1y ago
- whatever1 1y agoI think during the python 2-> 3 transition period (which was almost a decade long) a lot of people started looking into alternatives, because frankly that mess was the last straw. In the scientific domain this is when Julia started growing. Of course then crypto bros happened and the rest is history.
- _dain_ 1y agoI think a combination of: - statically typed languages got better, reducing the relative benefits of dynamic typing. people realized they didn't really hate static types, they hated the way [insert 90s-00s enterprise language here] did static types - the GIL became more and more painful as computers got more cores - it used to be a language for passionate hackers, like a latter-day lisp (cf that old pg essay). "written in python" used to be a signal of quality and craftsmanship. now it's the most commonly taught beginner language; millions of bootcamp devs put it in their CV. average skill level plunged. - PSF was asleep at the wheel on the packaging / tooling problems for years. pip/venv are dinosaurs compared to cargo, nix, or even npm.
- photonthug 1y agoPython is probably too awesome and versatile to go out of fashion, but as a long time user.. the ecosystem is frustrating. Dependencies and packaging have been, and still are a nightmare after thousands of years. Problems are fixable sure but the thing is that they never end. After you get plenty of practice fixing all the related problems, you'll have to keep fixing them for yourself, your less savvy teammates, and in third-party code pretty much forever. This is worth it in exchange for "import antigravity" for the first 100 years, but it's frustrating eventually. Everyone will mention uv/pyenv/poetry/conda/virtualenvs, so fine, let's pretend it's not a problem that you tried each of those in desperation and they are all household names. Suppose the packaging wars actually ended and everyone uses what you use without you needing to tell them, and suppose further that every pypa problem isn't blaming debian maintainers for obvious regressions. Pypi will still yank[0] packages at the source to perhaps randomly break deterministic behaviour, smashing anything in the blast radius rather than only clients using a --strict flag or something. You can pin your own dependencies but who knows what they will pin (nothing, or the wrong stuff, or the wrong way probably!) or what they will yank. Now for repeatability you need to host a mirror for everything you use- which is fine for corporate but a nonstarter for the novice and annoying for FOSS projects. If you have zero dependencies or a slowly changing environment that is receiving constant care and feeding, you'll probably never notice how bad things are. If you put down most projects for a month though and pick them back up, perhaps with a different environment, machine, or slightly different python version it's broken, bitrotted, and needs serious attention to be rehabilitated. People might argue.. that's just software dev. Nope. I say it with lots of love and gratitude for the efforts of the community.. but most langs/ecosystems would never tolerate this level of instability. One has to eventually just admit that working, portable, and actually repeatable environments with python basically just require docker. Can we talk about how "--break-system-packages" is hilarious? After you retreat to docker you can type this a few times a day, push the container up, pull it down months/years later, and then realize that literally the only way to get a stable working environment is to request a broken one. QED [0]: https://docs.pypi.org/project-management/yanking/ https://docs.pypi.org/project-management/yanking/
- globular-toast 1y agoIt's not out of fashion. We're just seeing the long tail finally picking it up. It's becoming somewhat of a lingua franca of programming.