5 ms·
> He'd often go on intense (albeit well-informed) tangential rants, particularly about Python. As an academic, it must be soul destroying to see the world domi
by grumpyprole 5y ago
> He'd often go on intense (albeit well-informed) tangential rants, particularly about Python.
As an academic, it must be soul destroying to see the world dominated by ad-hoc efforts like Python. Just like Linux, it was one persons hobby project that repeated old mistakes and now threatens the existence of argubly better technology.
- bruce343434 5y agoYou don't have to be an academic for that. The world is full of imperfections. Marketing and luck are bigger factors than merit.
- varjag 5y agoNothing was threatened by Linux as better technology didn't really exist. It was past Symbolics or Xerox Alto times.
- grumpyprole 5y agoCommercial Unix like Solaris and QNX were far better engineered than Linux ever was. Even Minix, which was used to bootstrap Linux, had a micro kernel design.
- gunfighthacksaw 5y agoMinix was so good that Intel lifted the codebase (within the terms of the FOSS license, not telling the author) for their management backdoo- uhh engine.
- turminal 5y agoWe can only speculate, but it's very unlikely this had anything to do with how good minix is.
- varjag 5y agoOnly someone who never used Minix would seriously argue it was better in any respect.
- webmaven 5y ago> Commercial Unix like Solaris and QNX were far better engineered than Linux ever was. As with many other fields of endeavor, it is very hard to compete against free. Throw in the ability to fix any problems that might affect you personally, and you have a powerful combination. The same goes for Apache as well, and to a lesser extent MySQL and Perl/Python/PHP. Trying to set up an equivalent commercial stack was both painful and expensive (and not just the software licensing, but the minimum hardware requirements too). Not to mention that once you're considering commercial options, Microsoft was a contender, often with better initial ROI (the cost to exit Microsoft platforms was quite another matter).
- varjag 5y agoThis also glosses over that commercial Unices weren't superior technology. There was more polish (and a ton of own proprietary ugliness too) but you could pretty much build and run the same application stuff on Linux.
- grumpyprole 5y agoSolaris had technology like ZFS and dtrace (granted these now integrate with Linux). QNX had a micro-kernel and support for real time. Solaris would have made a better server OS and QNX a better mobile phone OS. However Linux is free, and we have all benefited enormously from that, myself included and the tech giants.
- varjag 5y agoSolaris most assuredly had neither ZFS nor dtrace for the first decade of Linux existence. Kernel architecture (be it micro or monolithic) per se is no virtue.
- grumpyprole 5y agoYou are trying to move the goal posts. Both Solaris and QNX are still examples of "superior technology" to Linux, despite both being dead for a long time. Kernel architecture is also highly relevant, ever wonder why Android phones only get a few years of updates?
- DonaldPShimoda 5y ago> As an academic, it must be soul destroying to see the world dominated by ad-hoc efforts like Python. I dunno that I see it that way. (I am a PhD student in programming languages, likely going to end up in academia.) In many ways, yes, Python is "bad". It lacks an expressive static type system, it has some bizarre rules about scope, and there are other idiosyncrasies that, were I to build my own language from scratch, I would seek to avoid. But in many other ways, Python is very good. The standard library is phenomenally complete, featuring functionality for the vast majority of common use cases. I also find the documentation to be pretty approachable, though that sentiment seems to not be very well-shared. As for the language proper, the lack of a type system does irk me somewhat, but I use mypy to get back some of those guarantees so it's not as bad as it could be. I find the syntax mostly pleasant, and the module system is usually intuitive. Some of the things they've added are very nice features: I like that multiple consecutive string literals are treated as a single string (useful for splitting strings across lines); I like f-string formatting, too; the use of underscores as numerical separators is great (though not unique to Python); the overall design of the language, while truly odd at first, is relatively consistent and powerful (e.g., everything-is-an-object, iterators/iterables are prevalent, classes can be modified dynamically [which is maybe not always a good thing, but it's a neat tool for the power-user], etc.). Again, it's not a language I would build myself, but as far as languages that exist, it's not even close to my least favorite. I think it's also worth considering the space of programming language design in linguistic terms. Natural (human) languages are amazing because they constantly evolve through regular use. New terms are inducted into lexicons constantly, and new grammatical rules can be generated and regularized among a group to give the users their own characterization separate from other speakers of the same language. Natural language is beautiful. If we look at individual programming languages as separate languages, they do not exhibit the same properties. They are pretty much static, except when a new major version is released. But if we look at programming languages rather as dialects of a single common language (easy to do when we consider "Turing-complete languages" together, for example), then we see each language as a new manifestation of the unique ideas of a group of people, similar to a dialect in natural language. There are new idioms and expected constructions. The capability of expression remains constant, more or less, but the minor connotative differences are many and varied. All this is to say: Python is not "should destroying". It's just another way of looking at the same system. One from which we can learn things when we seek to design new programming languages, certainly, but I don't think its idiosyncrasies inherently make it so bad as many portray it.
- lmeyerov 5y agoAs someone who did it for 10 years... Python is fine, PHP and arguably Go are the annoying ones :) PL is like art theory & art criticism... You think more about individual aspects, and as long as something's happening, great. Ex: concurrency is super hard, and where python got to with async/await is surprisingly principled for a dyn lang. In contrast, Go's initial interfaces mess was almost an intentional snubbing that unsurprisingly had to get revisited. Weirder is big ideas take literal decades to come out. Ex: mypy is types from 50 years ago, while stuff like pandas suggests we still need basics like dependent/row types for typing any data science code, which is not a new idea either. But with OSS, it's become more about academic hubris / ivory tower vs an indictment of pythonistas for whether those happen. It's a pretty fun time in PL for folks who do care: easy to start free frameworks with global reach and not worry about funding/sustainability, so a lot of playing in areas like synthesis and data.
- agumonkey 5y agoMaybe but not necessarily. It's possible they enjoy their little academic world where they can forget about average crap and pursue pure abstractions. Jump from conf to conf. And enjoy patiently the 30 years lag between discovery and mainstream application.
- MaxBarraclough 5y agoI'm not sure I understand you here. How is Python more ad-hoc than any other language? It strikes me as less ad hoc than, say, Bash. At least Python has a proper standard library. What do you mean by Python's mistakes? I'm no Python zealot but I'd say the Python language broadly achieves its aims. It's not a platform for cleverness with type theory or monads, and it's not a sensible choice for proving the correctness of programs. Those aren't its aims.
- grumpyprole 5y agoEven accepting it as a dynamic language that is predominantly imperative, it still has many surprising characteristics. The scoping, binding/assignment are conflated, no built-in records, limited lambdas, pervasive mutability and null/None, etc. I accept that it's a huge improvement over many mainstream languages (certainly bash!), but I find e.g. OCaml/F#/ML code far easier to reason about. These languages are also hybrid imperative and so there is no need to use monads, they can be used just like Python.