5 ms·
Considering Python can power the largest web sites (Netflix, Instagram), I don’t understand why there’s so much use of much more complicated platform/languages
by pbreit 7y ago
Considering Python can power the largest web sites (Netflix, Instagram), I don’t understand why there’s so much use of much more complicated platform/languages (eg java, .net)?
Note: I am an amateur which is likely the reason for my ignorance.
- paxys 7y agoJava and .NET are no more or less "complicated" than Python or PHP or any other language/stack. The most suitable language for any app/service is what the founding team knows very well.
- brightball 7y agoYou can do anything in anything. Everything boils down to trade offs for the problem or company at hand. I can say with Java and .NET shops, it's usually because the company has heavily invested in Java and .NET infrastructure, process, automation, tooling, monitoring, etc. If there are certifications involved, I also know for a fact that Microsoft feeds big discounts on expensive products (SQL Server) depending on how many employees you have with Microsoft Certifications. It becomes a self feeding system. You're already invested so much in the stack that the choice of using something else is far more complicated than language comparisons. It's one of the reasons that there are so many language options available that run on the JVM that can take advantage of all of that investment without forcing the devs to write raw Java (Groovy, Scala, Clojure, Kotlin, etc).
- RhodesianHunter 7y agoIt isn't just the company's heavy investment, it is the community's. The availability of good, tested, performant OSS libraries available in Java is unparalelled. People talk about languages like Python being "faster" to develop in because they're easier to write. This is true until you need a solid concurrency friendly loading cache or a DB connection pool that works at scale and in Java that's just adding a dependency that you know you can trust.
- brightball 7y agoI didn’t expand on it, but that’s what I meant by trade offs for the problem at hand. Agreed.
- krapht 7y agoDifficult problems remain difficult no matter what language you use. Also, there's a real cost to everything being dynamically typed in large systems. Humans can't keep all the program types in their brain, and having the compiler help you out is kind of a big deal.
- pbreit 7y agoI would say 90% of software is glorified CRUD. Very little is that complicated. Over-complicated, for sure.
- _delirium 7y agoA lot of stuff powered "by Python" is in practice powered by multi-language infrastructures, which can be pretty complex. For example, the Python ecosystem for data science is mostly implemented under the hood in a mix of C, C++, and Fortran, with high-level Python bindings, due to a mixture of legacy reasons and pure Python being too slow. Obviously lots of people still like the end result, but saying this kind of software is in Python is only half the story.
- jahewson 7y agoThe is true of node.js too. Lots of native modules. Yet the package management experience there is much better. Anaconda does a reasonable job of fixing this for Python, but as noted, it’s yet another 3rd party solution with some pretty annoying defaults.
- hyperpallium 7y agoPython is eating the world, just not digesting it.
- hyperpallium 7y agoPython has already eaten the world — it's just not very evenly digested.
- chrisseaton 7y ago> I don’t understand why there’s so much use of much more complicated platform/languages (eg java, .net)? What language is Python implemented in? Is it Python, or something else? This tells you that even the implementors of Python don't think Python is suited for everything.
- zys5945 7y agoPyPy is a python implementation in python (RPython to be exact)
- rhacker 7y agoYou typically have to bootstrap your language in a different one. There are some languages that have since gone back and re-wrote the compiler or runtime engine in the same language (in those languages that need a runtime).
- joshuamorton 7y agoNo it doesn't. As someone else mentioned, RPython exists, and in general, bootstrapping is nice, but there are a variety of compelling reasons to not rewrite CPython in python, that have nothing to do with it being "suited" or not. History, reliability, simplicity, lack-of-value, etc. At this point there's not much to gain by rewriting cpython in python (pleasing some guy on the internet), and quite a lot to lose (simple c-interop) for what would be years of work by a lot of people.
- chrisseaton 7y agoIt wouldn't have been years of work if they started right after Python was first implemented instead of a big-bang now. For 25 years each time they've implemented a new feature they've chosen C over Python to do it, for reasons of it being better suited, some of which you've listed yourself! Like simple C-interop! I don't think it's a criticism of Python! I've worked on meta-circular implementations of languages and I don't do it for the sake of it. Not every language is suited for every task.
- 7y ago
- deleted 7y ago[deleted]
- dehrmann 7y agoSomeone I know made the observation that Python doesn't scale well with code complexity and team size. Statically tyed languages like Java give you a lot of guardrails, and IDEs make it easy to navigate around code, so it's easier for larger teams with larger projects to safely reason about things.
- adrianN 7y agoPython is pretty slow. If you can rewrite your stuff in Java or Go or something else that runs faster you can save half your servers at least. At a certain size that's a lot of money.
- closeparen 7y ago- Language design characteristics like static typing and a general lack of support for "magic" can help maintain order in large, long-term, many-contributor codebases. - The JVM and CLR are both significantly faster and less resource intensive than CPython for a lot of workloads. - Java and .NET library ecosystems are mature and extensive. Python 2's ecosystem was also mature and extensive, but the community is in the process of throwing it away. - The real heavy lifting for media transcoding, storage, and serving is certainly not done in Python. Python is acting as orchestration glue for C/C++ programs there, which is a role it does well.
- KptMarchewa 7y ago>general lack of support for "magic" Don't throw this kind of comments when in next line you're mentioning Java, where everything worth using is implemented by reflection fuckery.
- RhodesianHunter 7y agoA great deal of Netflix is Java, which is why a great deal of OSS Java libs were written by Netflix.