[HN Gopher] On being a PhD student of Robert Harper ___________________________________________________________________ On being a PhD student of Robert Harper Author : JoelMcCracken Score : 69 points Date : 2022-01-27 17:56 UTC (5 hours ago) (HTM) web link (www.cambridge.org) (TXT) w3m dump (www.cambridge.org) | jstrieb wrote: | 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 | YorkshireSeason wrote: | If 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- | lan... | | [2] https://news.ycombinator.com/item?id=8206124 | ogogmad wrote: | What 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. | bmitc wrote: | > 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. | DonaldPShimoda wrote: | Bob 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. | grumpyprole wrote: | > 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 wrote: | You don't have to be an academic for that. The world is full | of imperfections. Marketing and luck are bigger factors than | merit. | varjag wrote: | Nothing was threatened by Linux as better technology didn't | really exist. It was past Symbolics or Xerox Alto times. | grumpyprole wrote: | Commercial 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 wrote: | Minix 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 wrote: | We can only speculate, but it's very unlikely this had | anything to do with how good minix is. | varjag wrote: | Only someone who never used Minix would seriously argue | it was better in any respect. | webmaven wrote: | _> 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). | lmeyerov wrote: | As 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. | DonaldPShimoda wrote: | > 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. | eatonphil wrote: | Great read! Your casual reminder that there's a group of SML-ers | who hang out on Reddit [1]. | | [0] https://www.cambridge.org/core/journals/journal-of- | functiona... | | [1] http://reddit.com/r/sml | JoelMcCracken wrote: | Dr Harper has had a huge impact. Reading these experiences is | very cool. | Micoloth wrote: | I'm just some guy that works as a software engineer (i don't even | _have_ a phd) but I've always been interested in Type theory. | | So, a few years back, i found on youtube the lectures Bob Harper | gave at the OPLSS, and watched them all. | | It's been a revelation for me! | | It's truly an experience, and I've been a straight up Bob Harper | fan ever since. This is how _all_ lectures should be given. The | passion he has for these topics is completely evident! | | Before, i was vaguely interestes in type theory. Since then, i've | been _really_ into type theory, and I've gotten deeper and deeper | into it. | | So nice to see this homage to him! | exdsq wrote: | I don't have a degree but attended OPLSS last year and it was | really fun! Worth attending :) ___________________________________________________________________ (page generated 2022-01-27 23:00 UTC)