Hacker News new | past | comments | ask | show | jobs | submit login

The bad news is the initial build is peak of the experience with Python - it's all downhill after that, since Python and other dynamic languages are mainly optimised for code creation rather than code maintenance.

It's fascinating just observing at a higher level our different systems and what makes it through as bugs after all testing, code review etc is done.

Java - null pointers are the main thing.

Python - it's a dogs breakfast. Latest bug was someone forgetting a comma in a list of strings since ['foo' 'bar'] is valid. But all kinds of crazy stuff - kwargs everywhere with people putting invalid values or types in. Straight up incorrect numbers of args going into functions which our linters don't notice for some reason. Refactoring anything widely used is a highly risky endeavour. Even with type hinting across all the exposed interfaces, Python is like a sieve for bugs, they just fall straight through. Once you get a complicated enough system, you just have to rely on total test coverage (ideally integration / end to end) or just letting your users find the bugs.




Having coded in both Python and Java I have to agree with your assessment. The things that people criticise Java for tend to be things that make sense when thinking about scripting or small programs, but as things scale up, being pedantic can be a benefit. I'd rather inherit 100k lines of Java than Python, that's for sure.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: