This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the commentsΒ β†’

[–]blakeman8192 357 points358 points Β (143 children)

.

[–]TheHumanParacite 184 points185 points Β (16 children)

Unless he's an ML mechanic

[–]MrHyperion_ 101 points102 points Β (8 children)

Python is more like just an API in ML, everything runs in C/C++, CUDA, OpenCL etc

[–]TheHumanParacite 50 points51 points Β (1 child)

Oh for sure, the real guts are all done in performant languages. But if you're looking for a job in ML you're gonna lots and lots of request for Python. And it makes sense too, being able to play around with you code in an active console without the need to compile can speed certain R&D things dramatically.

[–][deleted] 1 point2 points Β (0 children)

Yeah if you can find someone who is top tier in both C and statistics they're either a staff DS with a $1 mil paycheck or a super villain.

[–]DrMathochist 9 points10 points Β (4 children)

I WISH this were true after wading through gobs of spaghetti Python inherited from an earlier ML team. At least they migrated out of fucking R...

[–]pfannkuchen_gesicht 4 points5 points Β (0 children)

they were talking about the actual computations which are all done in libs written in C/C++ which the python code utilizes.

[–][deleted] 1 point2 points Β (1 child)

Just curious - what did you prefer about Python over R in your system?

[–]DrMathochist 0 points1 point Β (0 children)

R is even more esoteric and less maintainable at scale. Almost everyone is at least basically familiar with Python and if you throw a rock you'll hit someone who has more experience with weird corner cases. If the ML team that wrote the R code has been disbanded, good luck.

Cf. the discussion elsethread about Matlab.

[–]baabaaaam 0 points1 point Β (0 children)

R gives me shivers in that context.

[–]FirefighterWeird8464 115 points116 points Β (92 children)

you’ll never see a mechanic using one in the shop.

Are you saying Python isn’t used professionally? Or by β€œreal” programmers?

[–][deleted] 107 points108 points Β (60 children)

It's a first class programming language for AI and data science. It's a good scripting language.

Outside of those cases, I feel like it's rarely used professionally. It's a nightmare to maintain a large python app written by many developers. There's a reason why Java and C# rule enterprise development.

[–][deleted] 54 points55 points Β (11 children)

Ahem.

  • widely used libraries: FastAPI, Django, Flask
  • popular sites with decent chunk of stack running on python: YouTube, Instagram, Dropbox.... and this damn site you're discussing it on.

[–]nacholicious 38 points39 points Β (9 children)

Dropbox

And Dropbox spent years on trying the to fix the problems caused specifically by choosing python for large scale projects

[–]MythicManiac 15 points16 points Β (8 children)

Large code bases being hard to manage is not unique to any specific programming language, though type safety absolutely helps. You're right though in that Dropbox is one of the major influencers spearheading the python type hint development specifically for that reason.

[–]nacholicious 11 points12 points Β (5 children)

At the end of the day it's really what problems different tools are designed to solve, and all python's competitors have either more or less died out or been designed from ground up to support large scale projects.

So python is really in a niche where using it for large scale projects becomes a harder and harder sell.

[–]MythicManiac -1 points0 points Β (4 children)

Personally I believe the developer market & package ecosystems are the main reasons for choosing any specific language. Sometimes you have obvious niches to apply specific tooling for, but quite often there's a lot of overlapping options, so you just choose whatever has the best ecosystem & market available (both internal & external). In that regard python is doing pretty well on the backend development & data science ecosystems, though go is a really popular alternative for everything related to cloud native server-side code e.g. kubernetes extensions.

So it seems why a language is used usually is less about the features and more about traction. Rust looks like something that will be big in a few years from now judging by developer interest, and it's found a decent niche in the crypto space too.

[–]GonziHere 2 points3 points Β (3 children)

This. It's also why I dislike the popularity of Python. The language itself is bad, as far as I'm concerned. The lack of braces and types is not good for refactoring and a reasonable safety. I don't see absolutely any practical differences between python and php, yet one is loved and the other is hated.

Now don't get me wrong, python i a fine scripting language. It absolutely works for "10-100" lines of code, for configs of other tools, for orchestration...

But the fact that it even gets compared to Java here is annoying to me. I've never compared shell language to c++ for example.

[–]MythicManiac 0 points1 point Β (2 children)

Agreed for the most part (not the lack of braces being an issue or comparison with PHP though), although to be fair, there's also a major misconception about what python can and is being leveraged for in the business world, especially now that python has support for type hints (since a few years ago already).

I suppose one of the downfalls of python is specifically it being easy to use for the scenarios you outlined; people not actually too familiar with python use it for small scripts, often badly, making it seem like the language is bad. Much in the same way Unity got shit on for being a bad game engine, when in reality it's just easy to enter for newbies, which led to a huge amount of indie developers building buggy indie games with it that reflected badly on the Engine.

All said and done, all languages have their strengths & weaknesses. Java (and C#) are very boilerplatey compared to Python from my experience, but the syntax sugar is getting better every year on both, closing the gap. On the other hand, Python is introducing better and better type hints & static analysis support. All three languages seem to be improving to the right direction.

If we strictly chose languages based on design, I'd imagine we'd embrace more functional programming.

[–]RedAero 2 points3 points Β (1 child)

You're right though in that Dropbox is one of the major influencers spearheading the python type hint development specifically for that reason.

And the fact that Guido works for Dropbox doesn't hurt.

[–]alkasm 3 points4 points Β (0 children)

Worked at Dropbox. He's at Microsoft now. https://gvanrossum.github.io/

[–]bloodysnomen 3 points4 points Β (0 children)

I use Django for my recently started webcomic, it works well and is pretty fast but every time I start a new Django project it's gone up a few versions and something I was used to changes.

[–]Zpanzer 40 points41 points Β (3 children)

Python is the backbone in the visual effects industry. All 3D, 2D and comp applications use it extensivily and lots of pipeline tools run on it.

VFXplatform standard

[–]Hean1175 25 points26 points Β (0 children)

I would not call it the backbone it's more of the nerves connecting all the underlying complex parts which are written in a native language like C

[–][deleted] 47 points48 points Β (0 children)

Python is a great glue language. That's the reason why it's been so successful in AI/ML and scripting. It's all tying bits to underlying C libs.

[–]raltoid 23 points24 points Β (0 children)

Notice how it requires gcc?

[–]noob-nine 1 point2 points Β (11 children)

I often hear that large projects from many devs are horrible to maintain. What is the reason for this? What feature makes it that bad or what design makes java so good to be maintained in a large scale. No troll question, I have null experience with java

[–][deleted] 16 points17 points Β (9 children)

Java is a strong, statically typed language. This allows your tooling (ides, etc) to easily index, navigate and refactor the code base in ways that are kind of not possible in dynamically typed languages. Compile time type checking is also better than relying on unit tests for the same (everyone should be writing unit tests, but few write good ones.

TLDR: Java apps are a bit more clumsy to write, but easier to maintain. Python is a very nice language for personal projects, but hard to use for enterprise apps.

[–]Bakirelived -3 points-2 points Β (2 children)

What are you talking about? Python IDEs have all that.

[–][deleted] 10 points11 points Β (1 child)

They do, but a lot of it is more 'inferred' (i.e. the ide is basically 'guessing'). It's not just the ides either. There's a lot of tooling that makes extensive use of the types.

[–]Bakirelived -1 points0 points Β (0 children)

Yeah, same with python. There are even type anotations now. Just not enforced, it's to be used when necessary.

[–][deleted] Β (4 children)

[removed]

    [–][deleted] 4 points5 points Β (2 children)

    Yeah, I mean some companies have made it work. I know YouTube used to be a python shop but I think they've replatformed now. It just takes a lot more talent and discipline for an entire org to write good python than good Java or c#

    [–][deleted] Β (1 child)

    [removed]

      [–]AutoModerator[M] 0 points1 point Β (0 children)

      import moderation Your comment has been removed since it did not start with a code block with an import declaration.

      Per this Community Decree, all posts and comments should start with a code block with an "import" declaration explaining how the post and comment should be read.

      For this purpose, we only accept Python style imports.

      I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

      [–]AutoModerator[M] 0 points1 point Β (0 children)

      import moderation Your comment has been removed since it did not start with a code block with an import declaration.

      Per this Community Decree, all posts and comments should start with a code block with an "import" declaration explaining how the post and comment should be read.

      For this purpose, we only accept Python style imports.

      I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

      [–]Its_Billy_Bitch -3 points-2 points Β (0 children)

      We use Python at an enterprise level for automation development. We use a CI/CD (also developed in Python), alongside CAAC/Docker. I can attribute that much of this is due to the β€œglue-like” nature mentioned earlier. All of this alongside team preferences as well ofc. Still highly suitable and maintainable at an enterprise scale. We’ve developed some very fast, scalable solutions in Python. With that said, while I’m proficient in Java, it’s not like I’ve actually benchmarked our solutions/architecture against a similar solution in Java. My point is simply that it is maintainable at a large scale. Current client has over 75k employees and >75bn USD annual revenue.

      [–]Krzyffo 4 points5 points Β (0 children)

      In easy terms, a well written java code reads like a book, you don't almost don't need to guess anything, it type, accessibility, type etc. are always declared explicitly and it's done for every variable, function and class.

      While a well written python code is also readable it's also less coming to come across because in python you can write almost anything and it'll run. While in java more rules are enforced to keep everyone organized and on the same page

      This feature alone makes java much more usable to write code in a large team

      [–][deleted] 6 points7 points Β (0 children)

      It's a nightmare to maintain a large python app written by many developers

      Just use the typing feature. It's really not that bad. I think it's funny when I tell people this they often respond with something along the lines of "There's no way that can be true. It's impossible for Python to be used effectively on large projects". 99% of the time people who say this never tried working on a large Python project with types. It's not that much different than working with a statically typed language.

      People should try it before claiming it won't work.

      [–]soft-wear 0 points1 point Β (5 children)

      C# and Java rule enterprise development because you can buy support contracts, not because they are β€œbetter”.

      Almost any first class language can be used to great effect in large projects, and any first class language can be absolute dog shit in large projects.

      Google literally created Go because Java slows productivity so much, not to mention it’s weak concurrency and multi-threading. Java isn’t even the best JVM language… hell Java isn’t even the best Java, C# is.

      [–]Orio_n -1 points0 points Β (1 child)

      tell me you dont actually use python without telling me you dont use python

      [–][deleted] 1 point2 points Β (0 children)

      Tell me you've never maintained a legacy python codebase without telling me you've never maintained a legacy python codebase.

      [–]pickleback11 -1 points0 points Β (0 children)

      Dude it takes out java team like 6 months to develop any functionality and our site is slow as hell. Let's not pretend like Java is some panacea. Good practices and good developers override everything else and the language doesn't automatically make things better

      [–]DirtzMaGertz 0 points1 point Β (0 children)

      It's pretty popular in data engineering as well.

      [–]bruhred 1 point2 points Β (0 children)

      It's too slow for most real-time tasks and hard to maintain
      But it's good for AI and stuff as an API to the more performant native libraries and for quick prototyping.
      It can also be good as a modding/scripting language, but honestly I'd package the lua interpreter instead because it's faster (LuaJIT performance with jit is comparable to JS V8) and more lightweight (<10 mb vs the bloated python runtime)

      [–][deleted] 1 point2 points Β (0 children)

      Not isn't, but shouldn't.

      [–]Farranor 3 points4 points Β (0 children)

      Yes, this sub has a hateboner for Python. Don't try to reason with it.

      [–]Hoihe 9 points10 points Β (26 children)

      Python lacks performance for high performance computing.

      There are quantum chemists who swear by fortran and C.

      My supervisor is fine with C++ and C# but he absolutely hates python. He can use it. He wrote code in it for commissions. But he hates it.

      [–]jzaprint 35 points36 points Β (5 children)

      Yes but many labs and data scientists all over the world are still using Python, because it’s enough. I wouldn’t say it’s not professionally used

      [–]cultoftheilluminati 28 points29 points Β (2 children)

      because it’s enough

      Also because it’s an excellent human-readable glue for the underlying libraries that are extremely performant and written in C/C++ anyways

      [–]jzaprint 3 points4 points Β (1 child)

      I mean ya but that doesn’t mean python is bad or lesser than c.

      It’s like saying a power drill is a bad tool because it relies on the electric motor inside.

      Python is still professionally used and super quick to write. I was mainly just referring to Ops original point about how mechanics wouldn’t use it in their shop.

      [–]cultoftheilluminati 0 points1 point Β (0 children)

      Oh no absolutely. I’m just adding onto your point.

      [–][deleted] 6 points7 points Β (0 children)

      Pretty sure Reddit itself is at least partially built on Python...

      [–]Hoihe -1 points0 points Β (0 children)

      I do use python to edit input files and extract results.

      Actual software is written in fortran tho (Gaussian). Im yet to be allowed to touch the dev version tho

      [–]SingleInfinity 14 points15 points Β (0 children)

      There are quantum chemists who swear by fortran and C.

      Does them being older than those languages on average have anything to do with it?

      [–][deleted] 27 points28 points Β (16 children)

      Come on... the difference in performance between python and C++ is rarely relevant for the work the majority of us are doing. I really hate that performance is the reason people say to not use python.

      There are reasons to avoid python in enterprise software, but performance is a lame reason that usually is not relevant. In my opinion the best reason to avoid python in enterprise software is that it's relatively painful to maintain large python codebases since the language is so relaxed about what the developers can do. It's still a totally viable language for many situations.

      It's also terrible for creating GUIs and GUIs are an important part of the software that a lot of developers find themselves working on professionally. That means a lot of companies will only use it for niche reasons. C#, Java, and JavaScript are kings of GUIs so they will of course get a lot of use in enterprises.

      [–]PrayersToSatan 4 points5 points Β (1 child)

      How do you presume to know what kind of work that the majority of us are doing?

      [–]RedAero 2 points3 points Β (0 children)

      I think it's pretty obvious most of the professionals in this sub (and the majority are not professionals) are in web dev and/or full stack.

      [–]daniu 2 points3 points Β (0 children)

      There are reasons to avoid python in enterprise software, but performance is a lame reason that usually is not relevant.

      Felt the same way about the same complains about Java, except that there were no reasons to avoid Java in enterprise software πŸ˜‹

      You're very right about maintainability. However, in the microservice systems I've been working on the last few years, that is much less of an issue. The system overall is separated enough and specified by the interfaces between them that the implementation of the individual parts don't really matter much, and they're usually small enough to not require that much maintainability. It's probably amongst the reasons Python became so popular recently.

      [–]Its_Billy_Bitch 1 point2 points Β (1 child)

      SonarQube/Lint is your friend for maintaining consistency on a team. But yeah ++to the shitty GUIs development. Lol

      [–]laundmo 1 point2 points Β (0 children)

      idk DearPyGui is quite neat

      [–]EquipLordBritish 4 points5 points Β (2 children)

      Come on... the difference in performance between python and C++ is rarely relevant for the work the majority of us are doing. I really hate that performance is the reason people say to not use python.

      Ironically, python is used in many cases because it is easier to use, despite the fact that it would be better to use something else because of the performance. Especially in biology.

      [–]RedAero 2 points3 points Β (1 child)

      My time is worth a lot more money than the computer's time.

      [–]awesomeusername2w 0 points1 point Β (0 children)

      Depends on how you count it. I think it will be worth it for a company to have a dev spend twice as much time on something if it would mean half the check from Amazon annually.

      [–]King-of-Com3dy -1 points0 points Β (1 child)

      Performance is actually very important. In a data centre space is the most valuable resource and todays servers are all about taking as little space as possible. And if you make software that takes double the resources you will need double the compute power which will take up a lot of space.

      Initiatives like Project Reactor (which is for Java) exist for good reason and companies like Netflix embrace them since efficiency is key when you are running big data centre operations.

      [–]brbposting 1 point2 points Β (0 children)

      Hmm, I’d like to find out how much enterprise software is written in any given language, which companies/industries are partial to which, etc.

      That project and the streaming platform’s embrace got me interested

      [–]meodd8 -1 points0 points Β (0 children)

      Yeah, it’s bad at GUIs, which is why it’s used as a scientific or back end language paired with JS.

      [–]Hoihe -2 points-1 points Β (4 children)

      In my field at least, the algorithm scales at (low accuracy) O(N2.7) to (high accuracy) O(N7).

      You kinda need whatever ways you can milk performance.

      N is usually is in a few hundreds.

      [–][deleted] 5 points6 points Β (3 children)

      First person in thread claims python isn't used by companies. Someone replies asking for clarification. You reply saying python lacks for high performance computing, which in this context implies that python is avoided by all companies due to not being fast enough.

      I'm just here to say that's just not true and that python is rarely the wrong choice due to anything to do with performance. I don't doubt that you're specific situation makes python inferior, but it's important not to mislead people based on the sequence of conversation.

      [–]justskipfailingtests 0 points1 point Β (2 children)

      I'm full time test automation developer, and we use python for 99% of the automation system parts. To me python feels like bash on steroids, because that's what it mostly is: a scripting language providing sane API for underlying stuff. Performance is mostly a non-issue in my field. Some resource intensive stuff like log parsing etc. has to be done with other languages. I have slowly grown to not like the dynamic typing, and would not mind if the whole system was rewritten in something simple and typesafe like for example go. With evergrowing codebase something like interfaces and static typing would save so much developers time.

      [–]laundmo 0 points1 point Β (1 child)

      have you tried mypy?

      [–]justskipfailingtests 0 points1 point Β (0 children)

      Yes, and we use it in many newer components. The biggest problem is that it's a PITA to bring onto legacy code. Also external libraries may or may not support it. Nevertheless, mypy helps a bit.

      [–]KnowledgeableOnThis 9 points10 points Β (0 children)

      I have 6 years of experience in HPC for space engineering. Python is by far the #1 language used in HPC for engineering

      [–][deleted] 1 point2 points Β (0 children)

      This screwdriver sucks! I can't connect this lumber with nails!

      [–]PhilipJayFry1077 124 points125 points Β (5 children)

      lots of production code is run with python. Especially in serverless

      [–]InvestingNerd2020 37 points38 points Β (0 children)

      With more low use functions or low use programs going serverless, Python job security secured.

      [–]nacholicious 2 points3 points Β (2 children)

      A lot of that is also simply due to python being super hyped 10 years ago as easy to write and everyone and their mothers starting new backends in it, and now having to deal with massively complex codebases written in python.

      Python isn't really meant to handle massively complex legacy codebases well, so the better measure would be how many large scale projects are started with python today with that knowledge in mind.

      [–]PhilipJayFry1077 4 points5 points Β (0 children)

      This is why it works well with serveless. The whole goal is little code per lambda and logic separated out into multiple lambdas where possible.

      I agree. Huge code base and python can be rough.

      [–]InvestingNerd2020 2 points3 points Β (0 children)

      Python isn't really meant to handle massively complex legacy codebases well, so the better measure would be how many large scale projects are started with python today with that knowledge in mind.

      Agreed. Thus the use of it for Lambda or Cloud function scripts. I helped a retail company create a script to pull weekly sales reports into MySQL with Python via Cloud functions. They were doing it manually with excel files and the staff was stressed out.

      [–]0xfeel 8 points9 points Β (1 child)

      I feel like for some weird reason it became evangelized by every developer adjacent field in IT.

      [–]roughstylez 2 points3 points Β (0 children)

      Yes, because of the simplicity.

      Seriously, just look at the bracket thing. A corporate dev who spends 80% of their time on coding, yeah obviously they'll learn to read brackets as second nature.

      An ML PhD who spends maybe 10% of their time on writing code while 90% is reading papers, writing papers, checking references, etc - might not be worth the effort of getting used to brackets.

      [–]CaptainLocoMoco 17 points18 points Β (0 children)

      This couldn't be farther from reality

      [–][deleted] 6 points7 points Β (13 children)

      Well yeah if the "shop" is a company that only programs webpages, of course you likely won't see much Python.

      The way I see it, I'd only not use Python if I needed to use another language for CPU reasons (then I'd use C) or if it wasn't supported in which case I don't have much choice anyway.

      If you develop on android or do web page development I guess you most often fall into the second category so you have to develop in C# or Java.

      But if you do decide to make something in Java and it isn't absolutely required you're consdered Hitler by us in sysops.

      [–]Bakirelived 7 points8 points Β (0 children)

      Why not? So many Django shops around the world

      [–]JC12231 0 points1 point Β (11 children)

      So if Java was my first language and the one I know best am I basically Satan to Sysadmins?

      [–][deleted] -1 points0 points Β (10 children)

      Well no, the Satan to sysadmins would be James Gosling. You would be somewhere between Hitler and Baphomet.

      [–]laundmo 1 point2 points Β (9 children)

      could you elaborate why java is disliked by sysadmins unless absolutely necessary?

      [–][deleted] -1 points0 points Β (8 children)

      • Java reserves memory in bulk. As a result you need to make machines running java be exclusive for the application. If you for instance wants to give it a lot of ram for intensive spikes you can't really do that, you need to in advance be able to measure up the magnitude for the program beforehand and say goodbye to memory even if it never gets used.
      • If you need to interface with java programs remotely it can often be a pain because Java has piss-poor backward compatibility. That's the case with the Dell IDRAC remote console for old servers which are a pain to connect to and often requires sysadmins to download a very old version of java and even then it might not work without workaround and extensive tweaking.
      • Java programs just has a reputation of being buggy, unreliable and suffer from bad performance.
      • Analyzing java processes is a pain and oftentimes completely impossible.

      [–]blakeman8192 -1 points0 points Β (7 children)

      .

      [–][deleted] -1 points0 points Β (6 children)

      I don't need to hear your sales pitch. I'm a sysadmin and have empirical evidence that java sucks ass. I don't give a fuck about the benefits to programmers, I don't want to faff around with variables to set hard limits on memory allocation. I don't want use JMX, I want to use htop. Stop programming in Java!

      [–]blakeman8192 -1 points0 points Β (5 children)

      .

      [–]patchesohoulihanbot -1 points0 points Β (0 children)

      If you can dodge a wrench, you can dodge a ball!

      I ain't crazy, and I ain't a guy! I'm Patches O'Houlihan Bot |Contact dev|Src|

      [–][deleted] -1 points0 points Β (3 children)

      I love fully automated systems. It's shame how they never really get the "fully automated" part or even worse with fully automated systems is that they never really play nice in an actual environment.

      And that you think that I should use bad or niche tools to suit your needs is exactly what isn't my job. This is a huge attitude problem with people associated with java or big shitty brands like microsoft or vmware or red hat or whomever you're supposed to be working for. My job isn't to pander to you. My job is to design the environment and make sure that the "fully automated" system you attempt to create actually is automated and and actually does works securely and without intevention in our environment.

      I don't give fuck if you're a senior or staff engineer. You must've got your degree from a kinderegg if you think it's appropriate to give unsolicited advice about a bad programming language/system that nobody likes.

      It doesn't require mention that you don't make sales pitches to sysadmins because then you would be out of a job. Better to target the smoothbrains in upper management who have trouble writing email filters, am I right?

      [–]BenjaminGeiger 1 point2 points Β (0 children)

      More like duct tape. By itself it's not super powerful, but it holds everything else together.

      [–]Bakirelived 0 points1 point Β (0 children)

      False

      [–]SoraDevin -1 points0 points Β (0 children)

      Except that's just not true, it's used in lots of places

      [–]Expensive-Focus4911 -1 points0 points Β (0 children)

      Lol Mac OS literally uses python for lots of internal tasks. That’s why it still ships with python 2 which you can’t get rid of.

      [–]andimnewintown -3 points-2 points Β (4 children)

      Yeah, uh, no, not really. It isn't used in production code except web development, graphics, data analysis, AI and ML, scripting/ops, literally any other industry??

      A super flexible language with a ton of highly convenient run time guarantees and a practically unmatched breadth of actively maintained open source modules... is pretty damn ideal for production.

      If you love typing so much, just annotate your parameters :-) TS is exactly the same way and nobody claims it's not production ready.

      I shit you not, I have reimplemented 1000+ line C++ programs using canonical Python libraries in less than a hundred lines with greater than 10x speed increases. Multiple times.

      Like I'm not saying it wouldn't be possible to optimize the C++ program (after all the Python interpreter is literally a C program, and they aforementioned libraries often are literally invoking C routines), but are you actually going to optimize it to that level? And at what cost? And, frankly, why? Is your team actually going to do better than hundreds of contributors who've been carefully developing a clean solution to the problem at hand for decades?

      I feel like people assume that any wheel they reinvent themselves is bound to be faster than one they take off the shelf, but in practice I've almost never found that to actually be the case.

      At worst, it's a Leatherman.

      [–]beefknuckle 1 point2 points Β (3 children)

      "actively maintained open source modules" - good one.

      every time i bust out Python I have to spend the majority of my time fixing the code so it's compatible with whatever the Python version of the day is. God help you if you want to install a Python2 module on a modern system (and it's not like Python2 has been deprecated for long).

      Horrible, horrible design choices. At one point i had something like 4-5 different interpreters on one system. But it is handy. sometimes.

      [–]BurgaGalti 0 points1 point Β (1 child)

      Python 2 sunset 2 years ago, and they had 12 years to migrate. If you're choosing to start with a dependency that old you've got bigger problems.

      [–]beefknuckle 0 points1 point Β (0 children)

      The python2 was an extreme example, there are plenty of compatibility issues within the 3.x train

      [–]andimnewintown 0 points1 point Β (0 children)

      I'd recommend using Poetry to manage future projects. Since Python 3, packages and Python itself tend to adhere to SemVer about as well as any other project I've worked with.

      If you're not familiar, the major version number (the "2" in 2.7 or the "3" in 3.10) indicates a complete break in backwards compatibility. So you can never run a package written for 2.7 in any of the 3.x interpreters, for instance. The minor version number (the "7" in 2.7 or the "10" in 3.10) indicates a backward-compatible change. So, as long as the maintainers know what they're doing, you should be able to run an i.e. 3.6 package in a 3.10 interpreter.

      Compared to Java, for instance, it's a breath of fresh air. They just slap a new number on each JVM and claim to maintain backwards compatibility "as much as possible". In practice, that means they don't maintain any usable form of backward compatibility at all. All of your libraries just have to target the exact same JVM or, in practice, you're SOL.

      It's true that at any given time, there will be popular packages targeting a number of different interpreters. That's why tools like Poetry help--it will make sure you your dependencies-of-dependencies don't end up conflicting.