6 ms·
For my entire time as an undergraduate, the large top-ten research university I attended offered no courses in programming language theory, nor were these topic
by benrbray 5y ago
For my entire time as an undergraduate, the large top-ten research university I attended offered no courses in programming language theory, nor were these topics woven into the computing curriculum at large. (actually, there may have been a handful of graduate courses, but undergrads were strictly prohibited from joining -- there was a mandatory theory of computation class required for all CS majors, but the topics varied wildly between semesters and the primary lecturer was notoriously apathetic about teaching)
In graduate school, I attended another large top-ten research university and again, no courses on programming language theory. The reason being all the PL faculty had either recently been poached by industry or accepted positions at more prestigious universities.
The result was that my entire computing education felt like watching shadows on the wall of Plato's cave; I was never exposed to fundamental concepts like lambda calculus or to non-standard languages like Haskell or Lisp that might have given a different perspective on computing.
Only recently in the past 1-2 years have I started to fill in the gaps myself, but I can't help but feel cheated. It's pretty crazy that the research-level faculty turnover can prevent thousands of students from being exposed to such an important aspect of computing.
(imagine, for instance, if an entire class of engineers had no option to take a course on heat transfer simply because there was no research faculty available who specialized in heat transfer research)
- dataflow 5y agoRelevant: https://steve-yegge.blogspot.com/2007/06/rich-programmer-food.html https://steve-yegge.blogspot.com/2007/06/rich-programmer-foo...
- iratewizard 5y agoI personally feel the pain of this when trying to hire someone who understands core concepts in PL theory and can help maintain a framework. It's also not the sort of thing I can teach to my Sr devs on the job in under a year when they've never even touched anything like forth or lisp, or even tried to write a parser by hand.
- benrbray 5y agoI feel an analogous pain on the flip side of interviewing! I would kill for a job that lets me exercise some of these skills, rather than the brain rot of a typical software job which doesn't demand that one thinks too deeply about things.
- Aeolun 5y agoReact re-rendering logic requires one to think plenty deep.
- benrbray 5y agoOf course, there's interesting work to be done at all levels of the stack. However, not every company will allocate time for solving frequently-encountered problems with creative solutions. Often, it's "ok, what's the minimum amount of time we can spend to fix this problem *right now*?", rather than "how can we make sure we don't have to re-solve this problem again ten more times in the future?" Not me, but a friend described a whole team of engineers at his company hired to put out the fires caused by using database software that is a poor fit for the application, rather than biting the bullet and either 1) performing a migration or 2) rolling their own solution.
- ollran 5y agoI think the only way to do this might be founding your own company and building your own product in Forth and Lisp.
- tsss 5y agoI wish my colleagues would appreciate the beauty of abstraction and PL theory as much as you do. It seems they actively resist any effort in that direction.
- divbzero 5y agoWhat are the best ways to fill in those gaps? I bet many of us never enjoyed those classes in school, or even had a traditional computing education.
- benrbray 5y agoFor me learning Haskell has been a great way to expose myself to things that were previously "unknown unknowns". I do a mix of coding, for intuition, and reading papers, for theoretical context. The papers written by SPJ et al in the 1990-2000s give a remarkably clear history of how certain functional programming concepts jumped the gap from CS theory to practical implementation in Haskell. Just as assembly gives as close to a "bare metal" view of hardware as many of us will ever come, languages like Haskell and Lisp give a "bare metal" view of CS theory.
- vishnugupta 5y agoSeeing SPJ refreshed very fond memories for me :-). I accidentally stumbled onto Haskell in my masters course. On the first day at university I attended a trial class of functional programming[1] course and instantly liked the way professor taught. However, I didn't take the course then and forgot all about it. The next semester I took compilers course and approached that professor for my masters thesis. During a meeting he gave me couple of options one of which was in functional programming domain. This time I took the plunge and went all in. Took the FP course and the professor who taught FP became my thesis advisor. The next two years were the most intense and intellectually satisfying years of my life. Not only did I learn Haskell but also built a compiler for it. I still get goosebumps remembering the rollercoaster ride I had in those two years. During all that, the book by SPJ [2] became my constant companion. The book was actually out of print but my advisor had a book that was signed by SPJ himself :-). And I promptly photocopied it so I have it with me even to this day. Suffice to say Haskell, lambda calculus along with SPJ and my advisor have had a lasting (and continue to) influence my life. [1] https://www.cse.iitb.ac.in/~as/fpcourse/fpcourse.html https://www.cse.iitb.ac.in/~as/fpcourse/fpcourse.html [2] https://www.microsoft.com/en-us/research/wp-content/uploads/1987/01/slpj-book-1987-small.pdf https://www.microsoft.com/en-us/research/wp-content/uploads/...
- logicchains 5y agoThis also applies to interviewing. Google for instance generally doesn't include anything PL theory related in their interviews, even though it would often be more relevant to the work than random dynamic programming problems. As a result of this they produced languages and frameworks like Go, Dart, Angular and Tensorflow, which display ignorance if not outright contempt for modern programming language theory. This led to the latter two being mostly replaced by React and Pytorch, which are more influenced by language design best practices, to Dart being mostly ignored, and to Go being violently rejected by a significant subset of the programming community.
- kaba0 5y agoI really dislike Go, but its creator(s) is more than familiar with language theory, and it is absurd to say otherwise.
- codesections 5y agoI didn't read the GP as making a statement about the _creators_ of Go, but rather about its target users. And Go is explicitly targeted at "Programmers working at Google [who usually] are early in their careers and are most familiar with procedural languages, particularly from the C family."[0] If Google's interviews gateted on the sort of programming language questions the GP mentioned, then Go's target users would have been very different, and Go would likely be a different (better? Worse?) language. [0]:https://talks.golang.org/2012/splash.article https://talks.golang.org/2012/splash.article
- UncleMeat 5y ago> As a result of this they produced languages and frameworks like Go, Dart, Angular and Tensorflow, which display ignorance if not outright contempt for modern programming language theory. This is a non-sequitor. Google hires a lot of PL PhDs (I'm one of them). And for relevant teams there is a "Domain Expertise" portion of the interview. And many of the people working on the languages and frameworks you mention have such background. You don't like these systems. That's fine. But "Google would do it all differently if they just hired some PL PhDs" is just false.