skip to main content
10.1145/1297027.1297078acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
Article

Confessions of a used programming language salesman

Published:21 October 2007Publication History

ABSTRACT

For many years I had been fruitlessly trying to sell functional programming and Haskell to solve real world problems such as scripting and data-intensive three-tier distributed web applications. The lack of widespread adoption of Haskell is a real pity. Functional programming concepts are key to curing many of the headaches that plague the majority of programmers, who today are forced to use imperative languages. If the mountain won't come to Mohammed, Mohammed must go to the mountain, and so I left academia to join industry. Instead of trying to convince imperative programmers to forget everything they already know and learn something completely new, I decided to infuse existing imperative object-oriented programming languages with functional programming features. As a result, functional programming has finally reached the masses, except that it is called Visual Basic 9 instead of Haskell 98.

References

  1. http://caml.inria.fr/Google ScholarGoogle Scholar
  2. http://docs.google.com/view?docid=ddhp95vd_6hg3qhcGoogle ScholarGoogle Scholar
  3. http://docs.google.com/view?docid=k73_1ggr36hGoogle ScholarGoogle Scholar
  4. http://dreamsongs.com/worseisbetter.htmlGoogle ScholarGoogle Scholar
  5. http://en.wikipedia.org/wiki/pimp_my_rideGoogle ScholarGoogle Scholar
  6. http://haskelldb.sourceforge.net/Google ScholarGoogle Scholar
  7. http://research.microsoft.com/~toddpro/papers/law.htmGoogle ScholarGoogle Scholar
  8. http://research.microsoft.com/fsharp/about.aspxGoogle ScholarGoogle Scholar
  9. http://research.microsoft.com/specsharp/Google ScholarGoogle Scholar
  10. http://research.sun.com/projects/plrg/fortress.pdfGoogle ScholarGoogle Scholar
  11. http://www.artima.com/weblogs/viewpost.jsp?thread=182412Google ScholarGoogle Scholar
  12. http://www.cis.upenn.edu/~bcpierce/types/archives/1988/msg00042.htmlGoogle ScholarGoogle Scholar
  13. http://www.cs.iastate.edu/~leavens/jml/documentation.shtmlGoogle ScholarGoogle Scholar
  14. http://www.doc.ic.ac.uk/~scd/Google ScholarGoogle Scholar
  15. http://www.eiffel.com/Google ScholarGoogle Scholar
  16. http://www.javac.info/closures-v05.htmlGoogle ScholarGoogle Scholar
  17. http://www.jclark.com /xml/xmlns.htmGoogle ScholarGoogle Scholar
  18. http://www.plt-scheme.org /publications.htmlGoogle ScholarGoogle Scholar
  19. http://www.scala-lang.org/Google ScholarGoogle Scholar
  20. http://www.w3.org/tr/xquery/Google ScholarGoogle Scholar
  21. http://www.w3.org/xml/schemaGoogle ScholarGoogle Scholar
  22. The Haskell 98 Foreign Function Interface 1.0, 2003.Google ScholarGoogle Scholar
  23. Joe Armstrong. Programming Erlang: Software for a Concurrent World. Pragmatic Bookshelf, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Nick Benton, Luca Cardelli, and Cédric Fournet. Modern Concurrency Abstractions for C. ACM TOPLAS, 26(5):769--804, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Véronique Benzaken, Giuseppe Castagna, and Alain Frisch. CDuce: an XML-Centric General-Purpose Language. In Proceedings ICFP, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Gavin Bierman. Formalizing and Extending C# Type Inference. In Proceedings FOOL/WOOD, 2007.Google ScholarGoogle Scholar
  27. Gavin Bierman, Erik Meijer, and Wolfram Schulte. The essence of Data Access in Cω. In Proceedings ECOOP, volume 3586 of LNCS, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Gavin Bierman, Erik Meijer, and Mads Torgersen. Lost in Translation: Formalizing Proposed Extensions to C#. In Proceedings OOPSLA, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Gavin Bierman and Alisdair Wren. First-Class Relationships in an Object-Oriented Language. In Proceedings ECOOP, volume 3586 of LNCS, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Per Bjesse, Koen Claessen, Mary Sheeran, and Satnam Singh. Lava: hardware design in haskell. SIGPLAN Notices, 34(1):174--184, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Matthew Bortolin. The Dharma of Star Wars. Wisdom Publishers Inc., Boston, 2005.Google ScholarGoogle Scholar
  32. Gilad Bracha. Pluggable Type Systems. In Proceedings OOPSLA Workshop On The Revival Of Dynamic Languages, 2004.Google ScholarGoogle Scholar
  33. Gilad Bracha and David Griswold. Strongtalk: typechecking smalltalk in a production environment. ACM SIGPLAN Notices, 28(10):215--230, 1993. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Niklas Broberg. Haskell Server pages Through Dynamic Loading. In Proceedings Haskell Workshop, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Magnus Carlsson and Thomas Hallgren. FUDGETS - A Graphical User interface in a Lazy Functional Language. In Proceedings FPCA, 1993. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. James Cheney and Ralf Hinze. First-Class Phantom Types. Computer and Information Science Technical Report TR2003-1901, Cornell University, 2003.Google ScholarGoogle Scholar
  37. Pip Coburn. The Change Function: Why Some Technologies Take Off and Others Crash and Burn. 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. Jeffrey Dean and Sanjay Ghemawat. MapReduce: Simplified Data Processing on Large Clusters. In Proceedings OSDI, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. Conal Elliott, Sigbjørn Finne, and Oege de Moor. Compiling embedded languages. Journal of Functional Programming, 13(2), 2003. Updated version of paper by the same name that appeared in SAIG'00 proceedings. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. Mary F. Fernandez, Jérôme Siméon, and Philip Wadler. A semi-monad for semi-structured data. In Proceedings of the 8th International Conference on Database Theory, volume 1973 of LNCS, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. Cormac Flanagan. Hybrid type checking. In Proceedings POPL, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. Matthew Fluet and Riccardo Pucella. Phantom types and subtyping. Journal of Functional Programming, 16(6):751--791, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. Matthew Fluet and Riccardo Pucella. Practical datatype specializations with phantom types and recursion schemes. Electronic Notes on Theoretical Computer Science, 148(2):211--237, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. Peter Freyd. Recursive types reduced to inductive types. In Proceedings LICS, 1990.Google ScholarGoogle ScholarCross RefCross Ref
  45. Jeremy Gibbons and Oege de Moor, editors. The Fun of Programming. Cornerstones in Computing. Palgrave, 2003.Google ScholarGoogle ScholarCross RefCross Ref
  46. Jim Gray and Andreas Reuter. Transaction Processing: Concepts and Techniques. Morgan Kaufmann Publishers Inc., San Francisco, CA, USA, 1992. Google ScholarGoogle ScholarDigital LibraryDigital Library
  47. Matthew Harren, Mukund Raghavachari, Oded Shmueli, Michael G. Burke, Rajesh Bordawekar, Igor Pechtchanski, and Vivek Sarkar. XJ: Facilitating XML Processing in Java. In Proceedings WWW, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  48. Haruo Hosoya, Jérôme Vouillon, and Benjamin C. Pierce. Regular expression types for XML. ACM TOPLAS, 27(1):46--90, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  49. Paul Hudak. Building domain-specific embedded languages. ACM Computing Surveys, 28(4es):196, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  50. J. Hughes. Why Functional Programming Matters. Computer Journal, 32(2):98--107, 1989. Google ScholarGoogle ScholarDigital LibraryDigital Library
  51. Nigel Perry, Jason Smith and Erik Meijer. Mondrian for .NET. DDJ, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  52. Simon Peyton Jones. Tackling the awkward squad: monadic input/output, concurrency, exceptions, and foreign-language calls in haskell. In Marktoberdorf Summer School, 2000.Google ScholarGoogle Scholar
  53. Simon Peyton Jones, Mark Shields, John Launchbury, and Andrew Tolmach. Bridging the Gulf: a Common Intermediate Language for ML and Haskell. In Proceedings POPL, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  54. Richard Kelsey, William Clinger, and Jonathan Rees (Editors). Revised 5 report on the algorithmic language Scheme. ACM SIGPLAN Notices, 33(9):26--76, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  55. Donald Kossmann, Michael Carey, Don Chamberlin, Mary Fernandez, Daniela Florescu, Giorgio Ghelli, Jonathan Robie, and Jerome Simeon. Xqueryp: An XML application development language. In Proceedings XML, 2006.Google ScholarGoogle Scholar
  56. R. Lämmel and E. Meijer. Mappings make data processing go 'round' -- An inter-paradigmatic mapping tutorial. In Generative and Transformation Techniques in Software Engineering, volume 4143 of LNCS, 2005.Google ScholarGoogle Scholar
  57. R. Lämmel and E. Meijer. Revealing the X/O impedance mismatch (Changing lead into gold). In Datatype-Generic Programming, volume 4719 of LNCS, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  58. Ralf Lämmel and Dave Remy. Functional OO Programming with Triangular Circles. In Proceedings XML, 2006.Google ScholarGoogle Scholar
  59. Peter J. Landin. The next 700 programming languages. Communications of the ACM, 9(3):157--166, March 1966. Google ScholarGoogle ScholarDigital LibraryDigital Library
  60. John Launchbury, Jeffrey R. Lewis, and Byron Cook. On embedding a microarchitectural design language within haskell. In ICFP '99: Proceedings of the fourth ACM SIGPLAN international conference on Functional programming, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  61. Daan Leijen. Functional Components: COMComponents in Haskell. Master's thesis, Department of Computer Science, University of Amsterdam, September 1998.Google ScholarGoogle Scholar
  62. Daan Leijen and Erik Meijer. Domain specific embedded compilers. In Proceedings DSL, 1999. Also appeared in ACM SIGPLAN Notices 35, 1, (Jan. 2000). Google ScholarGoogle ScholarDigital LibraryDigital Library
  63. Daan Leijen, Erik Meijer, and James Hook. Haskell as an Automation Controller. In The 3rd International Summerschool on Advanced Functional Programming, volume 1608 of LNCS, 1999.Google ScholarGoogle Scholar
  64. Sheng Liang. Modular Monadic Semantics and Compilation. 1997.Google ScholarGoogle Scholar
  65. Sheng Liang. Java Native Interface: Programmer's Guide and Reference. Addison-Wesley, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  66. Andres Löh and Ralf Hinze. Open data types and open functions. In Proceedings PPDP, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  67. Erik Meijer. Server-Side Web Scripting in Haskell. Journal of Functional Programming, 10(1):1--18, january 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  68. Erik Meijer and Brian Beckman. XLINQ: XML Programming Refactored (The Return Of The Monoids). In Proceedings XML, 2005.Google ScholarGoogle Scholar
  69. Erik Meijer, Brian Beckman, and Gavin Bierman. Linq: reconciling object, relations and XML in the .net framework. In Proceedings SIGMOD international conference on Management of data, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  70. Erik Meijer and Koen Claessen. The Design and Implementation of Mondrian. In Proceedings Haskell Workshop, 1997.Google ScholarGoogle Scholar
  71. Erik Meijer and Peter Drayton. Static Typing Where Possible, Dynamic Typing When Needed: The End of the Cold War Between Programming Languages. In Proceedings OOPSLA Workshop On The Revival Of Dynamic Languages, 2004.Google ScholarGoogle Scholar
  72. Erik Meijer and Sigbjorn Finne. Lambada, Haskell as a Better Java. In Proceedings Haskell Workshop, 2000.Google ScholarGoogle Scholar
  73. Erik Meijer, Maarten Fokkinga, and Ross Paterson. Functional Programming with Bananas, Lenses, Envelopes, and Barbed Wire. In Proceedings FPCA, volume 523 of LNCS, 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  74. Erik Meijer and John Gough. Technical overview of the common language runtime, 2000.Google ScholarGoogle Scholar
  75. Erik Meijer and Graham Hutton. Bananas in space: extending fold and unfold to exponential types. In Proceedings FPCA, 1995. Google ScholarGoogle ScholarDigital LibraryDigital Library
  76. Erik Meijer, Daan Leijen, and James Hook. Client-side Web Scripting with HaskellScript. In Proceedings PADL, volume 1551 of LNCS, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  77. Erik Meijer, Nigel Perry, and Arjan van Yzendoorn. Scripting .NET Using Mondrian. In Proceedings ECOOP, volume 2072 of LNCS, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  78. Erik Meijer and Wolfram Schulte. XML Types for C#. BillG ThinkWeek Submission Winter 2001.Google ScholarGoogle Scholar
  79. Erik Meijer, Wolfram Schulte, and Gavin Bierman. Programming with Circles, Triangles and Rectangles. In Proceedings XML, 2003.Google ScholarGoogle Scholar
  80. Erik Meijer, Wolfram Schulte, and Gavin Bierman. Unifying Tables, Objects and Documents. In Proceedings DP-COOL, volume 27 of John von Neumann Institute of Computing, 2005.Google ScholarGoogle Scholar
  81. Erik Meijer and Mark Shields. XMLambda: A Functional Programming Language for Constructing and Manipulating XML Documents. Unpublished draft.Google ScholarGoogle Scholar
  82. Erik Meijer, Amanda Silver, and Paul Vick. Overview Of Visual Basic 9.0. In Proceedings XML, 2005.Google ScholarGoogle Scholar
  83. Erik Meijer and Danny van Velzen. Haskell Server Pages: Functional Programming and the Battle for the Middle Tier. In Proceedings Haskell Workshop, 2000.Google ScholarGoogle Scholar
  84. Robin Milner, Mads Tofte, Robert Harper, and David MacQueen. The Definition of Standard ML (Revised). The MIT Press, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  85. Adriaan Moors, Frank Piessens, and Martin Odersky. Towards equal rights for higher-kinded types. In Proceedings MPOOL, 2007.Google ScholarGoogle Scholar
  86. Thomas Nordin and Simon Peyton Jones. Green Card: a Foreign-language Interface for Haskell. In Proceedings Haskell Workshop, 1997.Google ScholarGoogle Scholar
  87. Andy Oram and Greg Wilson, editors. Beautiful Code: Leading Programmers Explain How They Think. O'Reilly, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  88. Matthew Parkinson. Class invariants: The end of the road? In Proceedings IWACO, 2007.Google ScholarGoogle Scholar
  89. Benjamin C. Pierce. Types and Programming Languages. The MIT Press, Cambridge, Massachusetts, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  90. Rob Pike, Sean Dorward, Robert Griesemer, and Sean Quinlan. Interpreting the data: Parallel analysis with sawzall. Science of Computer Programming, 13(4):277--298, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  91. Riccardo Pucella, Erik Meijer, and Dino Oliva. Aspects de la Programmation d'Applications Win32 avec un Langage Fonctionnel. In Journées Francophones des Langages Applicatifs, 1999.Google ScholarGoogle Scholar
  92. Christopher Re, Jerome Simeon, and Mary Fernandez. A complete and efficient algebraic compiler for xquery. In Proceedings ICDE, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  93. Ben Rudiak-Gould, Alan Mycroft, and Simon Peyton Jones. Haskell is not not ml. In Proceedings ESOP, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  94. Claudio Russo. The joins concurrency library. In Proceedings PADL, volume 4354 of LNCS, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  95. Mark Shields and Erik Meijer. Type-Indexed Rows. In Proceedings POPL, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  96. Jeremy Graham Siek and Walid Taha. Gradual typing for objects. In Proceedings ECOOP, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  97. Erik Meijer Sigbjorn Finne, Daan Leijen and Simon Peyton Jones. H/Direct: A Binary Foreign Language Interface for Haskell. In Proceedings ICFP, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  98. Erik Meijer Sigbjorn Finne, Daan Leijen and Simon Peyton Jones. Calling Hell from Heaven and Heaven from Hell. In Proceedings ICFP, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  99. Erik Meijer Simon Peyton Jones and Daan Leijen. Scripting COM Components in Haskell. In Proceedings Software Reuse, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  100. P. Thiemann. A Typed Representation for HTML and XML Documents in Haskell. Journal of Functional Programming, 12(5):435--468, July 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Confessions of a used programming language salesman

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in
      • Published in

        cover image ACM Conferences
        OOPSLA '07: Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems, languages and applications
        October 2007
        728 pages
        ISBN:9781595937865
        DOI:10.1145/1297027
        • cover image ACM SIGPLAN Notices
          ACM SIGPLAN Notices  Volume 42, Issue 10
          Proceedings of the 2007 OOPSLA conference
          October 2007
          686 pages
          ISSN:0362-1340
          EISSN:1558-1160
          DOI:10.1145/1297105
          Issue’s Table of Contents

        Copyright © 2007 ACM

        Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 21 October 2007

        Permissions

        Request permissions about this article.

        Request Permissions

        Check for updates

        Qualifiers

        • Article

        Acceptance Rates

        OOPSLA '07 Paper Acceptance Rate33of156submissions,21%Overall Acceptance Rate268of1,244submissions,22%

        Upcoming Conference

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader