6 ms·
Can't speak to graduate student experiences, but I did take Dr. Harper's principles of programming languages class as an undergrad. The course was ambitious an
by jstrieb 5y ago
Can't speak to graduate student experiences, but I did take Dr. Harper's principles of programming languages class as an undergrad.
The course was ambitious and moved at a breakneck pace, and Dr. Harper could be a whirlwind in lecture. As some of the anecdotes mention, he's pretty opinionated. He'd often go on intense (albeit well-informed), tangential rants, particularly about Python.
Personally, I would have preferred a less comprehensive course with more time to let some of the abstract ideas settle, but I can imagine his attitude and approach being well-suited to energetic graduate advising.
For those curious about the material, we covered a significant portion of his Practical Foundations of Programming Languages book: https://www.cs.cmu.edu/~rwh/pfpl/2nded.pdf https://www.cs.cmu.edu/~rwh/pfpl/2nded.pdf
- 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.
- 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.
- ogogmad 5y agoWhat didn't he like about Python? There are things about Python which are ugly, but the language is nice for being flexible, lacking surprises, having an ethos favouring readable code, and having a comprehensive set of libraries that are easy to use. Python's famed readability takes a dip when you use libraries like Pandas or Tensorflow -- which awkwardly glue a whole new language onto Python -- but standard library Python is very common-sense and readable. (Also, Python's OOP is awkward with object.f() meaning something different from f(object), when really they ought to mean the same thing. In Pandas, you sometimes have a function with the same name as a method, which behave subtly different from each other.) Academic functional languages don't have most of those, and academia has no right to complain given that they've done little to rectify this.
- DonaldPShimoda 5y agoBob Harper is known (among my circles, anyway) as taking pretty hard stances in favor of first-principles approaches, and he's also one of the foremost researchers in advanced type theory. Python is about as far away from his interests as you can possibly get, I'd imagine. > Academic functional languages don't have most of those, and academia has no right to complain given that they've done little to rectify this. On this note, I'll have to (hopefully politely) ask you to learn a bit more about what you're going to talk about before offering such opinions. Most (maybe all?) modern languages were developed primarily as direct results of academic involvement. And in those areas in which the influence is not direct, advances are usually still due to the efforts of those in PL academia. I don't say this to be obnoxious, but you can pretty well trace the developments through conference proceedings over the past few decades. As for what we refer to as academic languages: they are not meant to be useful to the general programmer. They don't need powerful standard libraries or flexibility. They're meant for exploration and experimentation. Haskell (for example) was never supposed to catch on in the mainstream. It was designed to answer questions like "What does programming in a lazy language look like?" and "Is such a language useful?" and "In what ways is it not useful?" This is detailed in the phenomenal paper "A History of Haskell: Being Lazy with Class" from I think HOPL 3.
- bmitc 5y ago> Python ... the language is nice for ... lacking surprises Really?! The number one thing I dislike about Python is that it is chalk full of surprises, especially if you know more regular languages like MLs (e.g., SML, F#) or Schemes (e.g., Scheme itself, Racket). The scoping rules alone are a minefield. If one knows F#, for example, going to Python is a step back in basically every way unless you need a package that is only in Python (somewhat rare). > Academic functional languages don't have most of those, and academia has no right to complain given that they've done little to rectify this. It's an interesting stance, given Guido van Rossum seemingly did everything he could to avoid what came out of academia.
- YorkshireSeason 5y agoIf you are interested in Harper's opinions of dynamically typed languages, I recommend his blogpost "Dynamic Languages are Static Languages" [1]. It was also discussed on HN [2], in the context of a blogpost of Tratt's, defending dynamically typed languages. [1] https://existentialtype.wordpress.com/2011/03/19/dynamic-languages-are-static-languages/ https://existentialtype.wordpress.com/2011/03/19/dynamic-lan... [2] https://news.ycombinator.com/item?id=8206124 https://news.ycombinator.com/item?id=8206124
- mpweiher 5y agoOh...that guy? As far as I can tell, literally everything he writes in that post is factually wrong. Not "wrong" as in "I disagree", but "wrong" as in "provably incorrect". So the previous posts made me very curious about the talks, but if that's the level of care and insight...no thanks.