24
atheist
7y

Python. Ok, so it's a really cool language, as a scripting language it's awesome, quick to write.

When it's been used to make full fledged oop programs that you suddenly have to maintain things like duck typing become problematic. Looking at an object fuck knows what methods are available. Worse still when some bastard that thinks he's being clever doesn't bother declaring any object attributes and instead overrides the __set_attr method to dynamically add them as they are used there is no hope for the poor sod that has to maintain it later.

I've also now worked out I'm at least the 3rd person having been given the task of maintaining it, i spent a day changing CLI options wondering why they didn't do anything but occasionally crash the app. I've now found a few thousand lines deep that someone had hard-coded these values because they couldn't work out where to get the CLI args from!

I've gained a new appreciation for nominative, strictly typed languages.

Comments
  • 7
    don't say this to pythonheads. They will tear you apart. It's really hard to make then understand that every language has it's purpose.
  • 5
    Actually that's what it has been invented for - just a replacement for bash to write scripts. Not full fledged programms
  • 1
    @theZorgEffect what about Django? that's far away from 'only scripting'
  • 4
    People simultaneously call Python a "toy" language for beginners, and then blame the language for the bad crap people write in it when they don't take the time to really learn it but want it to be X language they already know.

    This doesn't apply only to Python but crosses the language barrier. Every language has projects where people do horrible things that are OK in other languages.

    These all sound like general bad programming practices. Don't blame the language.
  • 2
    I agree, Python is not a bad language. I do however think that duck typing as a language feature makes large scale long term projects harder to maintain (as someone that was just assigned to adding a feature to one such project). I'm using sublime and it's usual goto definition struggles to parse the project. I'm running find on the entire project folder then sifting through the results as this seems to be the best way to find definitions of things.
  • 1
    @carrizo I was addressing the point that people coming from other languages find it surprisingly hard to structure applications in python (I still don't know how pythons module resolution really works). Of course once you got into pythons quirks you can exploit them and build awesome stuff
  • 0
    @alwaysmpe Yuck! You might try the free edition of pycharm to see if it helps, and maybe try getting your company to get you a pro subscription.

    Depending on the Python version, type hints may help too.

    Good luck!
  • 0
    Duck typing is cool and it's convenient at times but even in languages that support it and strict types, I, more often than not, assign everything to a type.

    No extensive experience with Python, but for my Groovy projects everything usually has a well defined interface and typed properties to avoid the pains of maintenance later on... Like what OP is experiencing now lol
  • 0
    My rule of thumb: if I can express everything I want my application to do on a single page then Python is perfect for it! Otherwise...
  • 1
    Dropbox and Google both swear by Python. I wonder how they manage it at such scale 🤔
  • 1
    @kshep92 They don't. Google's internal infrastructure may use Python but their externally-facing server code is all C++.

    It's all about using the appropriate tool for the job.
Add Comment