4 ms·
Python is amazing for scripting. Python is terrible for writing big systems. Projects whose V1 is written in Go/Rust/C++ don't normally go out and re-write V2
by ashishb 5mo ago
Python is amazing for scripting.
Python is terrible for writing big systems.
Projects whose V1 is written in Go/Rust/C++ don't normally go out and re-write V2 in Python.
The reverse is really common.
Even many famous Python packages are now Python wrappers.
https://ashishb.net/programming/python-in-production/ https://ashishb.net/programming/python-in-production/
- kurtis_reed 5mo agoPython is faster to write so obviously you'll see things built in Python first more often than the reverse. What's that quote -- "Better to remain silent and be thought a fool..."
- ashishb 5mo agoIndeed. Python is faster to write and harder to maintain over the long run. The "faster to write" advantage becomes less relevant if most code is going to be auto-generated. The "harder to maintain" might still remain more relevant.
- tclancy 5mo ago>harder to maintain over the long run. First off, this is begging the question. Second, if you never get to a point where you need to maintain something, who won?
- marliechiller 5mo agoI dont know if the reasoning for a rewrite is purely for maintainability though. Ive used python at scale and its fine if you have reasonably good code hygiene. The reason I'd want to rewrite in any of those languages is they're significantly faster _and_ are maintainable at scale.
- ashishb 5mo ago> Ive used python at scale and its fine if you have reasonably good code hygiene. True but that's the problem. Once you have a big enough team, it becomes an uphill battle to maintain that.
- quietbritishjim 5mo ago> Projects whose V1 is written in Go/Rust/C++ don't normally go out and re-write V2 in Python. That's because you would usually rewrite your Python program in something like C++ if you realise that it's too slow and you need the speed of a compiled language, despite the enormous extra complexity to create and maintain it that way. You wouldn't go back the other way because it's very rare to go to all that extra effort writing in a more efficient language only to realise that the slower performance of Python would've been adequate after all. And, thanks to sunk cost fallacy, even someone that does realise it is unlikely to make the switch back. There's no way you could convince me that writing your program in C++ is easier to code in, even for a very large system, than Python. C# maybe. > Even many famous Python packages are now Python wrappers. Of course! That's precisely because Python is much simpler to code in. If your Python libraries are wrappers around native code then you get the speed benefit without having to drop into those languages. (Plus they can release the GIL, allowing true multithreaded Python.) If native coding languages were good enough then there would be no need for Python wrappers - you'd just call into the native library directly.
- boringg 5mo agoThat and how many developers who would write first round in Go/Rust/C++ would think it beneath them to write in Python :) The complaints alone wouldn't be worth it even if there was some suprising specific use case.
- Tade0 5mo ago> You wouldn't go back the other way because it's very rare to go to all that extra effort writing in a more efficient language only to realise that the slower performance of Python would've been adequate after all. It's UIs which are typically rewritten in more "fun" languages - occasionally because it becomes too much of a maintenance burden when all one wants to do is move around some form controls.
- roncesvalles 5mo agoExactly. A lot of people forget that Python is just shell scripting++, taken way too far.
- devman0 5mo agoIf you use the typing system (which I do religiously) Python becomes a lot easier to reason about in larger projects it also makes linters and refactoring tools easier to use.
- iainmerrick 5mo agoMaybe I'm just using it wrong, but typed Python seems a long way behind typed JS (i.e. TypeScript). In Python in seems like there are multiple type-checkers with widely differing levels of coverage, so it's not at all obvious which one to use, and typing is really spotty in third-party libraries. So you can get some level of type-safety but it doesn't feel very dependable. In TS, there's one canonical checker and the others work hard to stay compatible with it; and typing in third-party libraries is generally very solid. There are still some old libraries without types, but I think those headaches are mostly in the past now (similar to the Python 2 -> 3 switch).