[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)