ACM Home Page
Please provide us with feedback. Feedback
Faith, evolution, and programming languages: from Haskell to Java to links
Full text PdfPdf (45 KB)
Source Dynamic Languages Symposium archive
Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications table of contents
Portland, Oregon, USA
SESSION: OOPSLA 2006 invited & keynote talks table of contents
Pages: 508 - 508  
Year of Publication: 2006
ISBN:1-59593-491-X
Author
Philip Wadler  University of Edinburgh
Sponsors
SIGPLAN: ACM Special Interest Group on Programming Languages
ACM: Association for Computing Machinery
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 6,   Downloads (12 Months): 50,   Citation Count: 0
Additional Information:

abstract   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1176617.1176623
What is a DOI?

ABSTRACT

Faith and evolution provide complementary - and sometimes conflicting - models of the world, and they also can model the adoption of programming languages. Adherents of competing paradigms, such as functional and object-oriented programming, often appear motivated by faith. Families of related languages, such as C, C++, Java, and C#, may arise from pressures of evolution. As designers of languages, adoption rates provide us with scientific data, but the belief that elegant designs are better is a matter of faith.This talk traces one concept, second-order quantification, from its inception in the symbolic logic of Frege through to the generic features introduced in Java 5, touching on features of faith and evolution. The remarkable correspondence between natural deduction and functional programming informed the design of type classes in Haskell. Generics in Java evolved directly from Haskell type classes, and are designed to support evolution from legacy code to generic code. Links, a successor to Haskell aimed at AJAX-style three-tier web applications, aims to reconcile some of the conflict between dynamic and static approaches to typing.