9 ms·
“Yeah, Python is great in so many ways, too bad it’s not really scalable.” I'm not even sure what this means anymore. I guess I'm just not sure how any languag
by dmalvarado 9y ago
“Yeah, Python is great in so many ways, too bad it’s not really scalable.”
I'm not even sure what this means anymore. I guess I'm just not sure how any language, when used correctly, could be inherently unscalable. My guess is statements like this came from a time when monoliths were the application design of choice? Now, assuming Instagram has just 1,000 photo handling servers, each one is only responsible for 95,000 photos a day.
Of course, that's not to say that Instagram doesn't have CAP issues. It does, especially in the "C" area, but again, not a problem inherent in the language.
- adventured 9y agoAs one example, PHP 5.x as-is (without caching) isn't a language that scales well at all. It becomes a horrible bottleneck under heavy load.
- thehardsphere 9y agoEven with caching it's quite poor, especially if you are using frameworks that aren’t written to properly take into account its unique means of execution (which the vast majority do not).
- mahyarm 9y agoThe threading story isn't great. It's not statically typed, which can make working on a large codebase with more people more painful. It also forces you to write more unit testing code coverage to make up for the lack of a static compiler checking things for you. Raw performance is not good compared to golang or java. When you start getting to a certain scale, developers are cheaper than your server costs in some cases. That is when something being performant is more worth it.
- bpicolo 9y agoAnd at that scale you can make additional microservices for the critical path where it matters.
- mahyarm 9y agoNot really. You'll notice a pattern in most tech bigcos where they move from dynamic lang X to a statically typed language that can multithread properly. A few examples: Ruby on rails to java (twitter). Java & c++ (google). Java (linked in). Python/Node -> Java/Go (uber). Or they start doing silly things like make a new VM (facebook).
- plafl 9y agoI wonder if there is some survivor bias there. I'm sure there must be cases where everything went wrong but nobody writes about it.
- adrianratnapala 9y agoWouldn't survivor bias explain who BigCo X can be found using whatever questionable choice they originally made, but not explain why lots of BigCos have changed their practices. This might explain Facebook and PHP, but it doesn't explain the stuff mentioned in the previous comment.
- stuartaxelowen 9y agoI heard through the grapevine that Go was only chosen at Uber to help with hiring.
- stock_toaster 9y agoThat seems silly. There are far more Java devs out there than Go devs. Also, I would assume Uber probably has hiring problems in general at this point.
- sidlls 9y ago> That seems silly. There are far more Java devs out there than Go devs. I wouldn't underestimate the level of hype-driven development that exists in this area. "Chasing the new shiny" seems like it could be a line item in a resume, these days, sometimes.
- ubernostrum 9y agoAll of these are decades-old talking points which have been largely shown to be factually incorrect. Why are you repeating them without justification?
- crdoconnor 9y ago"It's not statically typed, which can make working on a large codebase with more people more painful. It also forces you to write more unit testing code coverage to make up for the lack of a static compiler checking things for you." I never missed static typing on large code bases but I had numerous bugs caused by python's implicit type conversions - string to iterable of characters ["h", "e", "l", "l", "o"], None to False, string "no" to True, 0 to False, "" to False, etc. A lot of this mirrors C's infuriating implicit type conversions.
- brianwawok 9y agoFor what it is worth string to iterable char bugs happen to me plenty in scala. Hard problem to fix. Array of strings or string of chars?
- crdoconnor 9y agoI don't think it is that hard. Simply stop making strings implicitly iterable and make chars a different type.
- nawitus 9y agoYou can "brute force" scale pretty much anything just by throwing up more computing resources at the problem - but that means the language/framework/library is less scalable than something else which requires less resources. If the different in scalability is large enough, I suppose one can claim that one of the alternatives is "not really scalable". I suppose that quote could use better wording.
- threeseed 9y agoIt's old but still useful: https://www.techempower.com/benchmarks/ https://www.techempower.com/benchmarks/ Almost every language can handle typical performance requirements. But when people say slow or unscalable it's almost always in relation to other languages.
- jeeyoungk 9y agoSee issues like https://engineering.instagram.com/dismissing-python-garbage-collection-at-instagram-4dca40b29172 https://engineering.instagram.com/dismissing-python-garbage-... If you have to turn off a crucial language feature to increase performance, I'm not sure whether a language is considered "scalable".