4 ms·
> Building large systems in Python requires a lot of discipline becuase it is so easy to violate sound engineering practices in this language. People come out o
by groovy2shoes 13y ago
> Building large systems in Python requires a lot of discipline becuase it is so easy to violate sound engineering practices in this language. People come out of school without an understanding of how to build large systems and just throw code in until the thing becomes a large sphagetti mess.
I posit that it's the same with any language. I've seen messy Java codebases and messy C++ codebases. I haven't read as much C# as I'd like, but I'm willing to bet it's the same story with those codebases. Python has a very similar object model to all of those languages with the exception that it's untyped.
- YZF 13y agoNot in my experience. Python gives you complete control over object's internals with no real protection mechansim and this is very often abused. Duck typing is abused. Compilers give you some compile time guarantees that you don't get in Python. Not to mention eval(). Monkey patching. You can only pass by reference, not by value, again a big problem. Side effects galore. I enjoy coding in Python and I've used it on and off for small things over many years but since getting involved in a project which has 100klocs of Python I've become pretty convinced it's a poor choice for this sort of scale. Reading statically typed code you know what types the different objects are. In Python, no clue. This can be somewhat mitigated through documentation (e.g. see Google's Python style guide). Want to find all the places a variable, or a class, or a function are used? You're out of luck. Good luck refactoring that bowl of spaghetti. Yet another factor is that there a lot of people who have built very large systems in other languages (C/C++/Java/C# etc.) so the knowledge of how to manage that is more accessible.