4 ms·
For a language that has "There should be one-- and preferably only one --obvious way to do it." as part of its core philosophy, this is very ironic.
by wintorez 8y ago
For a language that has "There should be one-- and preferably only one --obvious way to do it." as part of its core philosophy, this is very ironic.
- spookthesunset 8y agoWas thinking the same thing. When python was getting started it was up against Perl, which toon the opposite approach and there was a myriad of ways to do something in the language. Package managers for languages were just starting to become a thing back then. (At least I think that is true...). Now days you wouldn’t dream of releasing a new language without some kind of standard package manager... Dunno where I’m going with this comment but it is definitely interesting to see how much has changed since then. Hell even Microsoft has a package manager for it’s languages...
- blowski 8y ago> Now days you wouldn’t dream of releasing a new language without some kind of standard package manager... Isn't this one of the major criticisms of Go?
- HeyImAlex 8y agoYeah, and the exact same thing is happening.
- Dangeranger 8y agoMy feeling is that a good package manager is the exception to the rule. Particularly around managing versions of the language runtime and the versions of packages available within projects using that runtime. Rust is the exception here in that Cargo is a very nice piece of kit. In terms of generic runtime version managers, ASDF is very nice cross language version manager for scoping versions to projects and switching between them easily.
- curun1r 8y ago> Rust is the exception here in that Cargo is a very nice piece of kit Also Rustup, which is pretty key to Cargo remaining flexible going forward. There's a huge advantage to having the build/dependency management piece being highly coupled with the language runtime/compiler. Making cargo work with all versions of Rust would mean having to build in backwards compability and make it much more difficult to do projects like the new modules changes. It's a key insight that there needs to be two tools surrounding a language, not just one. You need good dependency management and good version management. Node also has this right with nvm and npm/yarn.
- coldtea 8y agoWell, it's not like Go if feature packed in other areas people ask it to either...
- Waterluvian 8y agoThat philosophy is pure and well intentioned. It will always fight with reality.
- callahad 8y agoIt's aspirational, not prescriptive. Just consider urllib, urllib2, urllib3, and requests. Or getopt, optparse, argparse, and docopt. Or countless others. I appreciate that the Python community continually strives for ever-more obvious and ergonomic ways of accomplishing tasks. While there is an ecosystem complexity cost to the solutions-that-weren't, it's no greater than the churn than I've seen in other popular languages. The Zen of Python even pokes fun at the "one obvious way" by writing its three em-dashes three different ways in the same document.
- wintorez 8y ago>> The Zen of Python even pokes fun at the "one obvious way" by writing its three em-dashes three different ways in the same document. I did not know this! Thanks :)