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