ÿþ<?xml version="1.0" encoding="utf-16"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <title>Edgar R. Chavez .. Programming Languages - Theory</title> <link rel="stylesheet" href="../erc01.css" type="text/css" /> </head> <body> <div id="top"> <img class="quill" src="../Images/myquill5.png" alt="myQuill"></img> <h2> Edgar R. Ch&aacute;vez</h2> <h3> Programming Languages - Theory </h3> </div> <div class="NavigationLinks"> <hr class="myLine" /> <ul> <li><a href="../home.html"> Home </a></li> <li><a href="./computers.html"> Computers </a></li> <li><a href="./cs.html"> Computer Science </a></li> </ul> <hr class="myLine" /> <ul> <li><a href="./pgmglangs.html"> Programming Languages </a></li> <li><a href="./pgmgtheory.html"> Programming Languages - Theory </a></li> </ul> <ul class="NavMargin1"> <li><a href="#compilers"> Compilation and compilers </a></li> <li><a href="#functionalpgmg"> Functional Programming </a></li> <li><a href="#lambda"> Lambda Calclulus </a></li> <li><a href="#misc"> Miscellaneous </a></li> <li><a href="#oop"> Object-oriented programming </a></li> </ul> <ul class="NavMargin2"> <li><a href="#designpatterns"> Design patterns </a></li> </ul> <ul class="NavMargin1"> <li><a href="#onlinebooks"> Online books </a></li> <li><a href="#parallelpgmg"> Parallel programming </a></li> <li><a href="#parsing"> Parsing </a></li> </ul> <hr class="myLine" /> </div> <div class="InfoArea"> <div id="compilers"><span class="Subhead2"> Compilation and compilers </span> <div class="Tab5"> <p><a href="http://llvm.org/"> Low Level Virtual Machine </a> &nbsp; <img src="../Images/stars4.gif" alt="Rank4" /> &nbsp; &nbsp; The LLVM Compiler Infrastructure is: (1) a compilation strategy, (2) a virtual instruction set, and (3) a compiler infrastucture. LLVM is a robust system, particularly well suited for developing new mid-level language-independent analyses and optimizations of all sorts, including those that require extensive interprocedural analysis. LLVM is also a great target for front-end development for conventional or research programming languages.</p> <p><a href="http://www.open64.net/"> Open64 </a> &nbsp; Open64 is the final result of research contributions from a number of compiler groups around the world. Open64 has been retargetted to a number of architectures. The Open64 compiler suite currently includes compilers for C, C++, and Fortran90/95 compilers for the IA-64 Linux ABI and API standards.</p> </div></div> <div id="functionalpgmg"><span class="Subhead2"> Functional Programming </span> <div class="Tab5"> <p><a href="http://haskell.cs.yale.edu/wp-content/uploads/2011/01/cs.pdf"> The conception, evolution, and application of functional programming languages </a> &nbsp; Paul Hudak, Yale University. ACM Computing Surveys 21 (3): 359 411. Author's draft. A copy of the published paper is found <a href="www.dbnet.ece.ntua.gr/~adamo/languages/books/p359-hudak.pdf"> here</a>.</p> <p><a href="http://www.defmacro.org/ramblings/fp.html"> Functional Programming For The Rest of Us </a></p> <p><a href="http://www.amk.ca/python/writing/functional#introduction"> Functional Programming HOWTO </a> &nbsp; A tour of Python's features suitable for implementing programs in a functional style. </p> <p><a href="./ruby.html#fp"> Functional programming in Ruby </a></p> <p><a href="http://research.microsoft.com/en-us/um/people/simonpj/Papers/slpj-book-1987/index.htm"> The Implementation of Functional Programming Languages </a> &nbsp; By Simon Peyton Jones, published by Prentice Hall, 1987. Read online or download the text in various formats. </p> <p><a href="http://www.cl.cam.ac.uk/teaching/Lectures/funprog-jrh-1996/"> Introduction to Functional Programming </a> &nbsp; by John Harrison. </p> <p><a href="http://www.cs.chalmers.se/~rjmh/tutorials.html"> Tutorial Papers in Functional Programming </a> &nbsp; Chalmers University of Technology. <br /> See also the <a href="./javascript.html#functionalpgmg"> functional programming </a> links under <a href="./javascript.html"> Javascript</a>. </p> <p><a href="http://www.informatik.uos.de/elmar/talks/oo-vs-fp.ps.gz"> Object-oriented programming versus functional programming </a> &nbsp; Elmar Ludwig, Univesity of Osnabr&uuml;ck. </p> <p><a href="http://www.cse.chalmers.se/~rjmh/Papers/whyfp.pdf"> Why Functional Programming Matters </a> &nbsp; By John Hughes. The Computer Journal, Vol. 32, No. 2, 1989, pp. 98-107. Also in: David A. Turner (ed.): Research Topics in Functional Programming, Addison-Wesley, 1990, pp. 17-42. </p> </div></div> <div id="lambda"><span class="Subhead2"> Lambda Calculus </span> <div class="Tab5"> <p><a href="http://www.cs.bham.ac.uk/~axj/pub/papers/lambda-calculus.pdf"> A short introduction to the Lambda Calculus </a> &nbsp; Achim Jung, The University of Birmingham. </p> <p><a href="http://www.soe.ucsc.edu/classes/cmps112/Spring03/readings/lambdacalculus/LambdaCalculusTutorial.pdf"> A Tutorial Introduction to the Lambda Calculus </a> &nbsp; Ra&uacute;l Rojas, Freie Universit&auml;t Berlin. </p> <p><a href="http://www.cs.man.ac.uk/~hsimmons/BOOKS/lcalculus.pdf"> An introduction to &lambda;-calculi and arithmetic with a decent selection of exercises </a> &nbsp; H. Simmons and A. Schalk, University of Manchester. </p> <p><a href="http://www.jetcafe.org/jim/lambda.html"> An Introduction to Lambda Calculus and Scheme </a> &nbsp; Jim Larson, JPL. </p> <p><a href="http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.39.8777"> Foundational Calculi for Programming Languages </a> &nbsp; by Benjamin C. Pierce. Chapter in the <span class="InlineTitle">CRC Handbook of Computer Science and Engineering.</span></p> <p><a href="ftp://ftp.cs.kun.nl/pub/CompMath.Found/lambda.pdf"> Introduction to Lambda Calculus </a> &nbsp; By Henk Barendregt and Erik Barendsen </p> <p><a href="http://www.st.cs.ru.nl/papers/1993/plaseek93/Ch03.Lam_Cal.ps"> &lambda;-Calculus </a> &nbsp; Chapter 3 of the book <a href="http://clean.cs.ru.nl/contents/Addison__Wesley_book/addison__wesley_book.html"> Functional Programming and Parallel Graph Rewriting</a> &nbsp; by Rinus Plasmeijer and Marko van Eekelen. </p> <p><a href="http://faculty.knox.edu/dblaheta/research/lambda.pdf"> The Lambda Calculus </a> &nbsp; notes by Don Blaheta, Knox College. </p> <p><a href="http://www.cl.cam.ac.uk/teaching/Lectures/funprog-jrh-1996/chapter2.ps.gz"> Lambda Calculus </a> &nbsp; and <br /> <a href="http://www.cl.cam.ac.uk/teaching/Lectures/funprog-jrh-1996/chapter3.ps.gz"> Lambda calculus as a programming language </a> &nbsp; Chapters 2 and 3 of <a href="http://www.cl.cam.ac.uk/teaching/Lectures/funprog-jrh-1996/"> Introduction to Functional Programming </a> &nbsp; by John Harrison. </p> <p><a href="http://www.soe.ucsc.edu/classes/cmps112/Spring03/readings/lambdacalculus/project3.html"> Lambda Calculus Tutorial </a> &nbsp; &nbsp; University of California, Santa Cruz Baskin School of Engineering </p> <p><a href="http://homepages.nyu.edu/~cb125/Lambda/"> Lambda tutorial </a> &nbsp; <img src="../Images/stars4.gif" alt="Rank4" /> &nbsp; By Chris Barker, Department of Linguistics, New York University. An excellent introduction to lambda reduction. You can enter a lambda expression in a window and see the result of the reduction in another. You can look at the code that does the reduction in either <a href="http://homepages.nyu.edu/~cb125/Lambda/lambda.js"> JavaScript</a> or <a href="http://homepages.nyu.edu/~cb125/Lambda/lambda.scm">R5RS Scheme.</a> </p> <p><a href="http://www.mathstat.dal.ca/~selinger/papers/lambdanotes.pdf"> Lecture Notes on the Lambda Calculus </a> &nbsp; Peter Selinger, Dalhousie University, Halifax, Canada. </p> <p><a href="http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.132.5717&amp;rep=rep1&amp;type=pdf"> Programming Language Theory and its Implementation </a> &nbsp; by Michael J. G. Gordon. This book provides elementary introductions to (1) Floyd-Hoare logic, and (2) Lambda calculus. Both can be studied independently. Originally printed by Prentice Hall in 1993. </p> <p><a href="http://www.cs.utah.edu/plt/publications/pllc.pdf"> Programming Languages and Lambda Calculi </a> &nbsp; Matthias Felleisen and Matthew Flatt </p> </div></div> <div id="misc"><span class="Subhead2"> Miscellaneous </span> <div class="Tab5"> <p><a href="https://sites.google.com/site/modelsofcomputation/#TOC-8---14-Nov:-Lambda-calculus"> Models of Computation </a> &nbsp; Computing Science, Chalmers, Univ of G&ouml;teborg. Excellent reading links. </p> <p><a href="http://www.cs.uu.nl/wiki/Techno/ProgrammingLanguageTheoryTextsOnline"> Programming language theory texts online </a></p> </div></div> <div id="oop"><span class="Subhead2"> Object-oriented programming </span> <div class="Tab5"> <p><a href="http://www.cs.rice.edu/~mgricken/teaching/202/08-fall/"> COMP 202: Principles of Object-Oriented Programming II </a> &nbsp; <img src="../Images/stars4.gif" alt="Rank4" /> &nbsp; &nbsp; Rice University. Java-based course. Excellent links to lectures and other resources. </p> <p><a href="./pgmglangs.htm#oop"> Object-oriented languages </a></p> <p><a href="http://www.cetus-links.org/"> Links to objects and components </a></p> <p><a href="http://g.oswego.edu/dl/ca/ca/ca.html"> Christopher Alexander: An Introduction for Object-Oriented Designers </a> &nbsp; by Doug Lea, SUNY Oswego </p> <p><a href="http://www.well.com/user/ritchie/oo.html"> The Object-Oriented Page </a></p> <p><a href="http://www.purl.org/stefan_ram/pub/doc_kay_oop_en"> Object-oriented programming </a> &nbsp; Alan Kay clarifies the meaning of the term "object-oriented": </p> <p class="noLineBreak Tab3"><i> OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things. It can be done in Smalltalk and in LISP. There are possibly other systems in which this is possible, but I'm not aware of them. </i></p> <p><a href="http://lists.squeakfoundation.org/pipermail/squeak-dev/1998-October/017019.html"> Prototypes vs classes </a> &nbsp; A note by Alan Kay, in which he says: </p> <p class="noLineBreak Tab3"><i> "I'm sorry that I long ago coined the term 'objects' for this topic because it gets many people to focus on the lesser idea. & The key in making great and growable systems is much more to design how its modules communicate rather than what their internal properties and behaviors should be."</i></p> <p><a href="http://www.objectfaq.com/oofaq2/"> Object FAQ </a></p> <span id="designpatterns" class="Subhead3"> Design patterns </span> <p><a href="http://www.industriallogic.com/papers/learning.html"> A Learning Guide to Design Patterns </a> &nbsp; </p> <p><a href="http://www.cs.wustl.edu/~schmidt/patterns.html"> Design Patterns, Pattern Languages, and Frameworks </a> &nbsp; Douglas C. Schmidt, Vanderbilt University </p> <p><a href="http://www.cs.wustl.edu/~schmidt/tutorials-patterns.html"> Design patterns tutorials </a></p> <p><a href="http://www-106.ibm.com/developerworks/patterns/"> IBM patterns for e-business </a></p> <p><a href="http://hillside.net/patterns/links.htm"> Links to patterns </a> &nbsp; Design patterns, patterns in Java, C++, and other kinds of patterns. </p> <p><a href="http://www.cmcrossroads.com/bradapp/docs/patterns-intro.html"> Patterns and Software: Essential Concepts and Terminology </a></p> <p><a href="http://www.c2.com/cgi/wiki?WelcomeVisitors"> Portland Patterns repository </a></p> <p><a href="http://developer.yahoo.com/ypatterns/"> Yahoo design pattern library </a></p> </div></div> <div id="onlinebooks"><span class="Subhead2"> Online books </span> <div class="Tab5"> <p><a href="http://www.cs.uu.nl/wiki/bin/view/Techno/ProgrammingLanguageTheoryTextsOnline"> Programming Language Theory Texts Online </a></p> <p><a href="http://www.divms.uiowa.edu/~slonnegr/plf/Book/"> Syntax and Semantics of Programming Languages </a> &nbsp; Ken Slonneger </p> </div></div> <div id="parallelpgmg"><span class="Subhead2"> Parallel programming </span> <div class="Tab5"> <p><a href="https://computing.llnl.gov/tutorials/parallel_comp/"> Introduction to Parallel Computing </a> &nbsp; Blaise Barney, Lawrence Livermore National Laboratory. </p> <p><a href="http://code.google.com/edu/parallel/mapreduce-tutorial.html"> Introduction to Parallel Programming and MapReduce </a> &nbsp; Tutorial from <a href="http://code.google.com/edu/"> Google Code University </a></p> </div></div> <div id="parsing"><span class="Subhead2"> Parsing </span> <div class="Tab5"> <p><a href="http://www2.cs.tum.edu/projects/cup/"> CUP - LALR Parser Generator in Java </a></p> <p><a href="http://www.hwaci.com/sw/lemon/"> The LEMON Parser Generator </a> &nbsp; The Lemon program is an open source LALR(1) parser generator. It takes a context free grammar and converts it into a subroutine that will parse a file using that grammar. Lemon is similar to the more famous programs YACC and BISON not compatible with either. There are several important differences: </p> <ul class="noLineBreak"> <li> Lemon uses a different grammar syntax which is less prone to programming errors. </li> <li> The parser generated by Lemon is both re-entrant and thread-safe. </li> <li> Lemon includes the concept of a non-terminal destructor, which makes it much easier to write a parser that does not leak memory. </li> </ul> </div></div> </div> <div class="MyCopyright"> <hr class="myLine" /> Copyright &copy; 2003-2012 by Edgar R. Ch&aacute;vez. All rights reserved. <hr class="myLine" /> </div> </body> </html>