{"id":1341,"date":"2019-02-17T11:34:11","date_gmt":"2019-02-17T11:34:11","guid":{"rendered":"https:\/\/www.appservgrid.com\/paw93\/?p=1341"},"modified":"2019-03-07T17:28:47","modified_gmt":"2019-03-07T17:28:47","slug":"remembering-paul-hudak","status":"publish","type":"post","link":"https:\/\/www.appservgrid.com\/paw93\/index.php\/2019\/02\/17\/remembering-paul-hudak\/","title":{"rendered":"Remembering Paul Hudak"},"content":{"rendered":"<p><img decoding=\"async\" src=\"http:\/\/cdn.rancher.com\/wp-content\/uploads\/2015\/05\/02021442\/Hudak-300x175.jpg\" alt=\"Paul\nHudak\" \/>Renowned computer<br \/>\nscientist Paul Hudak, one of the designers of the Haskell programming<br \/>\nlanguage, died of leukemia this week. There\u2019s been an outpouring of<br \/>\nreactions from people Paul\u2019s life and work has touched. Paul was my<br \/>\nPh.D. adviser at Yale in the 1990s. He supervised my work, paid for my<br \/>\neducation, and created an environment that enabled me to learn from some<br \/>\nof the brightest minds in the world. Paul was an influential figure in<br \/>\nthe advancement of functional programming. Functional programming<br \/>\nadvocates a declarative style, as opposed to procedural or imperative<br \/>\nstyle, of programming. For example, instead of writing<br \/>\nresult = 0; for (i=0; i&lt;n; i++) result += a[i]; you write<br \/>\nresult = sum(a[0:n]). In many cases, the declarative style is easier<br \/>\nto understand and more elegant. Because the declarative style focuses on<br \/>\n<em>what<\/em>, rather than <em>how<\/em> to perform the computation, it enables<br \/>\nprogrammers to worry less about implementation details and gives<br \/>\ncompilers more freedom to produce optimized code. One of the strongest<br \/>\ninfluences of functional programming came from Lambda Calculus, a<br \/>\nmathematical construct formulated by Alonzo Church in the 1930s. Lambda<br \/>\nCalculus has had a huge impact on programming languages even though it<br \/>\nwas created before computers were invented. Lambda Calculus introduced<br \/>\nmodern programming constructs such as variable bindings, function<br \/>\ndefinitions, function calls, and recursion. Alan Turing, who studied as<br \/>\na Ph.D. student under Alonzo Church, proved that Lambda Calculus and<br \/>\nTuring Machine were equivalent in computability. It is therefore<br \/>\ncomforting to know that, in theory, whatever a computer can do, we can<br \/>\nwrite a program for it. In 1977, around the time Paul was starting his<br \/>\nown Ph.D. research, functional programming got a tremendous boost when<br \/>\nJohn Backus presented his Turing Award lecture titled \u201cCan Programming<br \/>\nbe Liberated from the von Neumann Style?\u201d Backus argued conventional<br \/>\nlanguages designed for sequential \u201cword-at-a-time\u201d processing were too<br \/>\ncomplex and could no longer keep up with advances in computers. Backus<br \/>\nfavored functional style programming which possessed stronger<br \/>\nmathematical properties. The Backus lecture had a strong impact because<br \/>\nit represented a radical departure from his early work in leading the<br \/>\ndevelopment of FORTRAN and in participating in the design of ALGOL 60,<br \/>\nthe major \u201cvon Neumann style\u201d languages of its day. Functional<br \/>\nprogramming research took off in the 1980s. Researchers from all over<br \/>\nthe world created numerous functional programming languages. The<br \/>\nproliferation of languages became a problem. Many of these languages<br \/>\nwere similar enough to be understandable by humans. But researchers<br \/>\ncould not collaborate on the implementation or run each other\u2019s<br \/>\nprograms. In 1987, Paul Hudak and a group of prominent researchers came<br \/>\ntogether and created Haskell as a common research and education language<br \/>\nfor functional programming. As far as I can remember, Paul always<br \/>\nemphasized other people\u2019s contributions to the Haskell language. There\u2019s<br \/>\nno doubt, however, Paul was a major driving force behind Haskell. This<br \/>\nis just the type of leader Paul was. He painted the vision and gathered<br \/>\nthe resources. He would create an environment for others to thrive. He<br \/>\nattracted a remarkable group of world-class researchers at Yale Haskell<br \/>\nGroup. I made great friends like Rajiv Mirani. I was fortunate to get to<br \/>\nknow researchers like John Peterson, Charles Consel, Martin Odersky, and<br \/>\nMark Jones. Mark Jones, in particular, developed a variant of Haskell<br \/>\ncalled Gofer. Gofer\u2019s rich type system enabled me to complete my Ph.D.<br \/>\nthesis work on monad transformers. I decided to pursue a Ph.D. in Yale<br \/>\nHaskell Group largely motivated by Paul\u2019s vision that we could make<br \/>\nprogrammers more efficient by designing better programming languages.<br \/>\nPaul believed programming languages should be expressive enough to make<br \/>\nprogrammers productive, yet still retain the simplicity so programs<br \/>\nwould be easy to understand. He had a favorite saying \u201cthe most<br \/>\nimportant things in programming are abstraction, abstraction,<br \/>\nabstraction,\u201d which meant a well-written program should be clean and<br \/>\nsimple to understand with details abstracted away in modules and<br \/>\nlibraries. Paul believed compilers should help programmers write correct<br \/>\ncode by catching as many mistakes as possible before a program ever<br \/>\nruns. By the time I completed my Ph.D. program, however, we found it<br \/>\ndifficult to get the larger world to share the same view. The computing<br \/>\nindustry in the late 1990s and early 2000s turned out to be very<br \/>\ndifferent from what functional programming researchers had anticipated.<br \/>\nThere were several reasons for this. First, the von Neumann style<br \/>\ncomputers kept getting better. When I worked on the Haskell compiler,<br \/>\ncomputers ran at 25MHZ. CPU speed would grow to over 3GHZ in less than<br \/>\n10 years. The miraculous growth of the conventional computing model made<br \/>\nbenefits compilers could get from functional programming irrelevant.<br \/>\nSecond, the tremendous profit derived from Y2K and Internet build-out<br \/>\nenabled companies to employ industry-scale programming, where armies of<br \/>\ncoders built complex systems. One of the last piece of advice Paul gave<br \/>\nme was to accept a job in Silicon Valley working on the then-nascent<br \/>\n<em>non-functional<\/em> language Java, instead of pursuing a research career on<br \/>\nthe East Coast. Like many others, I have witnessed with surprise the<br \/>\nrising interest in programming language design and functional<br \/>\nprogramming in recent years. No doubt this has to do with the slowing<br \/>\ngrowth of CPU clock-rate and the growth in multi-core and multi-node<br \/>\ncomputing. Functional programming frees developers from worrying about<br \/>\nlow-level optimization and scheduling, and enables developers to focus<br \/>\non solving problems at large scale. A more fundamental reason for the<br \/>\nresurgence of functional programming, I believe, lies in the fact<br \/>\nprogramming has become less of an industrial-scale effort and more of a<br \/>\nsmall-scale art form. The simplicity and elegance of functional<br \/>\nprogramming strike a chord with developers. Building on the rich<br \/>\nfoundational capabilities nicely abstracted away in web services, open<br \/>\nsource modules, and third-party libraries, developers can create<br \/>\napplication or infrastructure software quickly and disrupt incumbent<br \/>\nvendors working with outdated practices. I have not kept in touch with<br \/>\nPaul in recent years. But I can imagine it must be incredibly rewarding<br \/>\nfor Paul to see the impact of his work and see how the programming model<br \/>\nhe worked so hard to advance is finally becoming accepted.<\/p>\n<p><a href=\"https:\/\/rancher.com\/remembering-paul-hudak\/\" target=\"_blank\" rel=\"noopener\">Source<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Renowned computer scientist Paul Hudak, one of the designers of the Haskell programming language, died of leukemia this week. There\u2019s been an outpouring of reactions from people Paul\u2019s life and work has touched. Paul was my Ph.D. adviser at Yale in the 1990s. He supervised my work, paid for my education, and created an environment &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.appservgrid.com\/paw93\/index.php\/2019\/02\/17\/remembering-paul-hudak\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Remembering Paul Hudak&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-1341","post","type-post","status-publish","format-standard","hentry","category-kubernetes"],"_links":{"self":[{"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/posts\/1341","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/comments?post=1341"}],"version-history":[{"count":1,"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/posts\/1341\/revisions"}],"predecessor-version":[{"id":1414,"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/posts\/1341\/revisions\/1414"}],"wp:attachment":[{"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/media?parent=1341"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/categories?post=1341"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/tags?post=1341"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}