FundamentalistFunctionalProgramming
Generative Programming and Component Engineering
Abstract
In 1984, John Hughes wrote a seminal paper titled, "Why Functional Programming Matters," in which he eloquently explained the value of pure and lazy functional programming. Due to the increasing importance of the Web and the introduction of many-core machines, in the quarter of a century since the paper was written, the problems associated with imperative languages and their side effects have become increasingly evident. This talk argues that fundamentalist functional programming—that is, radically eliminating all side effects from programming languages, including strict evaluation—is what it takes to conquer the concurrency and parallelism dragon. Programmers must embrace pure, lazy functional programming "all the way"—with all effects apparent in the type system of the host language using monads. A radical paradigm shift is the answer, but does that mean that all current programmers will be lost along the way? Fortunately not! By design, LINQ is based on monadic principles, and the success of LINQ proves that the world does not fear the monads.
Bio
Erik Meijer is an accomplished programming-language designer who has worked on a wide range of languages, including Haskell, Mondrian, X#, C-Omega, C#, and Visual Basic. He runs the Data Programmability Languages Team at Microsoft, where his primary focus has been to remove the impedance mismatch between databases and programming languages. One of the fruits of these efforts is LINQ, which not only adds a native querying syntax to .NET languages, such as C# and Visual Basic, but also allows developers to query data sources other than tables, such as objects or XML. Most recently, Erik has been working on democratizing the Cloud using Volta and preaching the virtues of fundamentalist functional programming in the new age of concurrency and many-core. Some people might recognize him from his brief stint as the "Head in the Box" on Microsoft VBTV.
GPCE08.FundamentalistFunctionalProgramming moved from GPCE08.ErikKeynote on 05 Aug 2008 - 05:21 by JeremySiek -
put it back