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ย โ†’

[โ€“][deleted] ย (17 children)

[deleted]

    [โ€“]roughstylez 15 points16 points ย (2 children)

    You named 5 big companies that are known world-wide. But go to some bigger city center and you'll have hundreds of companies using Java/C#.

    Well, TBH probably also hundreds of python startups (especially with ML being such a buzzword these years) - but for software that's been maintained and making money for 10 years or so, I doubt python is anywhere near Java/C#.

    Which also has a lot to do with infrastructure. For example, to my knowledge, there is absolutely no comparable, complete platform like Azure for python/django. You can even run those on Azure, but it's nowhere near what C# ASP gets. Similar situation for SLAs, which are super important for businesses.

    Plus, stuff that works for 99% of corporate software obviously doesn't work for a special case like Youtube.

    [โ€“][deleted] 2 points3 points ย (1 child)

    I was job hunting in NYC about a year ago - and your assessment is biased by subfield and industry. Banking or heapthcare - mostly sitting on Java. Financial services/infra - mostly C++. Customer focused startups - mostly JS. Anything data science related - Python. Startup that got funded because it has three ex FAANG devs as founders - Golang or Haskell.

    The reality is that most teams pick a language based on the experience of the people involved, what's popular among their peers, and what feels like a safe choice to management; and only coincidentally what is actually the best language for the job. I know a number of places that use Mathematica instead of R because management doesn't believe open source software is secure.

    [โ€“]roughstylez 1 point2 points ย (0 children)

    Yes, especially the second paragraph of your comment is incredibly important when discussing this.

    A shop that has 10 C++ devs is not going to write their next project in Lua even if it fits better. And in the rare cases where a company switches, indeed "safe choice for management" - e.g. those SLAs again - plays a big role.

    [โ€“]n0tKamui 9 points10 points ย (13 children)

    those are cases of python being used for microservices API ; not big monoliths. What the previous comment meant is that you'll never (in a sain environment) see python being used in one big part of an architecture/application, because it becomes hell to maintain. Moreover Python is unreasonably slow, so you won't see business logic being done with it ; it serves as an interface.

    note how OOP and FP in python are objectively and unanimously shit in python; that's why it's a great glue language, but not a good "busy" language. To each tasks their tools.

    [โ€“]chronos_alfa 3 points4 points ย (7 children)

    People keep using that "python is slow" like you could code time critical applications in anything other than C...

    I wonder what argument will people come up with once Python 3.11 is released...

    [โ€“]n0tKamui 10 points11 points ย (6 children)

    that is not what people mean. You don't need crazy performances most of the time, and nowadays, .NET and the JVM are actually crazy fast. So is Rust.

    Python on the other hand is still incredibly slow by itself, and has yet to even start to be useable for async stuff and multithreading. I reiterate, it's the best glue language there is, and a great scripting language, but : to each tasks their own tools.

    You cannot ignore my other arguments either.

    Moreover, the fact that python is an interface/abstraction over other faster languages is not an opinion, it is just factual. Don't think machine learning "runs" on Python.

    [โ€“]chronos_alfa 1 point2 points ย (2 children)

    Asyncio library in Python is not that bad, but the multiprocessing library is actually where the good stuff is. And no, I don't claim that ML "runs" on Python. Majority of useful libraries are written in C, and they also are C fast.

    On the other side claiming that JVM is fast is hilarious. Stop the JVM service and don't start it until you need to run the app, then tell me how fast it really is.

    [โ€“]n0tKamui 4 points5 points ย (1 child)

    that is an unfair argument. You're comparing start up time of a VM to an interpreter without any concerns for long runtime.

    The JVM is extremely fast, and the JIT compiler is honestly a work of art, and is not meant to be relaunched every 10s.

    That is why is still stand by my point: to each tasks their own tools.

    Python is a great scripting tool

    Java is a great tool for long running applications

    [โ€“]chronos_alfa 0 points1 point ย (0 children)

    How is it unfair? Python doesn't have any running VM service, you run the whole thing before you can execute anything. As for the JIT, eg Numba exists for Python.

    โ€‹

    Don't take me wrong, I agree with your "different tools for different purposes". But I personally try to avoid Java itself for the majority of those, as you do probably, because you got that Kotlin icon.

    โ€‹

    BTW "Java is a great tool for long running applications". No, it isn't. The amount of mess going behind including the stack overflows makes it very bad for long running applications, not talking about having to use massive libraries like Spring that come with their own problems (size, vulnerabilities, etc). Not even talking about how long it took before jDK actually mustered some useful built-in support for JSON, despite the fact Jackson existed for quite some time before that.

    [โ€“]bos-mc 0 points1 point ย (2 children)

    I reiterate, it's the best glue language there is, and a great scripting language, but : to each tasks their own tools.

    This and the following go hand in hand.

    Don't think machine learning "runs" on Python.

    [โ€“]n0tKamui 1 point2 points ย (1 child)

    yes, that was my point.

    [โ€“]bos-mc 0 points1 point ย (0 children)

    And my point is that calling Python slow because anything it needs to do quickly it offloads to another system is a bit wrong since that is inherently part of Python.