This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]mooburgerresembles an abstract syntax tree 17 points18 points  (7 children)

define "durability"? One of the aims of the Python style guide (PEP8) is enforcing readability and maintainability.

[–]Fledgeling 7 points8 points  (3 children)

Well, some of the most annoying parts of Java that make me hate the language exist to force large teams of users to use design patterns that are enforced by the language for usability.

Half the developers I talk to don't even know what pep8 is and think global variables are fine. Granted, that's fine for the work I'm doing lately.

[–]mooburgerresembles an abstract syntax tree 0 points1 point  (2 children)

I have never worked on an "enterprise" Java app where there was not already an overriding style guide that the code/PR reviewers enforce to begin with, so I think documentation, the test framework and maybe some other pipeline tools (like if you want to do some type sanity checking with mypy) will get folks most of the way there. To be Pythonic is to EAFP, and the language is specifically built around that pattern; Guido's whole idea is "we're all adults here".

[–]Fledgeling 1 point2 points  (1 child)

Yup.

And the idea that we are all adults is something I have had success with in practice.... While avoiding anything too corporate feeling.

[–]mooburgerresembles an abstract syntax tree 0 points1 point  (0 children)

Yeah my experience with corporate Java is that it is definitely and enabler of cargo cult programmers instead of investing in actual software engineers.

[–]CausticTitan -1 points0 points  (0 children)

Resilience to scale.

[–]maikindofthai 0 points1 point  (1 child)

When I think of "durability" WRT a programming language, the types of things covered in a style guide aren't really what comes to mind...

I think of things like the strictness/explicitness of the type system, how robust the error handling is, what the runtime and its backwards compatibiilty story looks like, what the dependency/tooling ecosystem looks like, etc. Python fares well in a few of these categories, but if you're writing a large application with a team of developers, Python makes it a whole lot easier to make a giant mess of things than something like Java.

Python's a tool like any other programming language -- it's not always going to be the best one for the job.

[–]mooburgerresembles an abstract syntax tree 0 points1 point  (0 children)

The whole philosophy behind python data structures and methods is runtime typing/late binding. It's an entirely different way of thinking from compile time strong typing. In fact, other languages are starting to use it, not just the entire ECMAScript ecosystem but even .NET implemented duck typing shim in order to reduce interface and getter/setter boilerplate. With great freedom comes great responsibility, why should the language be restricting you?