Programming Language Research

A collection of information and resources for research in programming language theory, design, implementation, and related areas. Additions are welcome! NB: Some of the bibliographies were culled from the Net and may be out of date.

Related topics can be found on Dan LaLiberte's programming language page, Shai Geva's Theory of Computation page, and Jonathan Hardwick's page of supercomputing and parallel computing research groups.

Language overviews

Functional languages FAQ (Frequently Asked Questions)
Modula-3 home page
Modula-3 is a systems programming language that supports interfaces, objects, generics, lightweight threads of control, the isolation of unsafe code, garbage collection, exceptions and subtyping.
Standard ML
A functional language with static polymorphic typing and parameterized modules.
LISP FAQ, Common LISP repository, and an introduction to Common LISP
LISP is a family of dynamically typed functional languages. Common LISP has a rich set of data types and operations and an object-oriented programming facility (CLOS).
The Scheme page at MIT, and a short introduction to Scheme.
Scheme is a dialect of LISP that stresses conceptual elegance and simplicity.
The Haskell FAQ, language definition, and tutorial.
Haskell is a polymorphic lazy functional language with overloading.
The Sather page.
Sather in an object-oriented language with parameterized classes, strong static typing, multiple inheritance, higher-order functions, and exception handling.
The Theta page
Theta is an object-oriented programming language featuring separate type and class hierarchies, multiple super-types, single inheritance, parametric polymorphism, and subtype polymorphism.
The Elf Meta-Language
Elf is a constraint logic programming language based on the LF Logical Framework. It is intended as a uniform meta-language for specifying, implementing, and proving properties of programming languages and logics.
The lambda Prolog page
An extension to Prolog featuring higher-order programming, polymorphic types, modules, abstract datatypes, and direct support for lambda-terms. Based upon the intuitionistic theory of higher-order hereditary Harrop formulas.
The Python Programming Language
An interpreted, interactive, object-oriented language that incorporates modules, exceptions, dynamic typing, very high level dynamic data types, and classes.
A Short Introduction to the ABC Language
An interactive programming language and environment, originally intended as a replacement for BASIC.
Object-oriented languages FAQ, bibliography, and other resources.
NESL, a strongly typed, functional, data-parallel language with nested parallelism.
Fortran M: A Language for Modular Parallel Programming
Here is some information about more conventional languages like C, C++, and Ada.
The Language List gives information on over 2000 languages.
Also useful is this catalog of free compilers and interpreters.
Here is a list of programming language FAQs.

People, Projects and Papers

Language and compiler researchers on the Web: a preliminary compilation.
The SUIF compiler group at Stanford
Research on parallel programming languages, automatic parallelization, interprocedural analysis, compiling for distributed memory machines, etc.
The Logic Programming Section of Imperial College.
The Venari Project at Carnegie Mellon
Programming and specification language design, semantics, and implementation; concurrent and distributed systems; databases and persistent objects; software development libraries and environments.
Declarative programming of Parallel Systems (PDP) group at KTH, Sweden.
Implementation of declarative languages, mainly on parallel computers; integration of parallel programming primitives with declarative languages; lazy functional languages and data parallel programming.
The Concurrent VLSI Architecture (CVA) group at MIT's AI Lab and LCS.
Hardware mechanisms for fine-grained concurrent computing and software techniques to take advantage of them.
The Programming Methodology Group at MIT LCS
Programming languages, distributed systems, object-oriented databases and languages.
The Scandal project at Carnegie Mellon.
NESL, a data parallel language with nested parallelism; supercomputer compilation techniques, including data representation and layout.
The MESS Project at Carnegie Mellon
Semantics-based techniques for compiling advanced programming languages
The Programming Languages Research Group at Indiana
Infer, a statically typed dialect of Scheme; teaching with Scheme; macros; memory management; scalable multiprocessor architectures for applicative languages.
Project summaries from ARPA's Computing Systems Technology Office.
The Programming Language Semantics Group at Northeastern.
Compiler correctness, verified Scheme implementation, machine support for compiler correctness proofs, complexity of type inference problems, object-oriented programming.
IMPACT papers at the University of Illinois
Optimizing superscalar and parallelizing compilers for imperative languages.
The Self group at Sun Labs and Stanford
Papers on the Self language (a classless object-oriented language) and on compiler optimizations for OO languages; documentation and binaries of current Self system.
The Sparse Group at the Oregon Graduate Institute
Research in high-performance compilers: advanced analyses and optimizations for high-performance computing, ranging from code generation for superscalar RISCs to HPF support for MPP's.
The Cecil project at the University of Washington
Cecil is a pure object-oriented language incorporating multi-methods and predicate classes. Our research here is in two major areas: language design issues and type systems for languages like Cecil, and implementation research on making languages like Cecil run faster.
The Pacific Software Research Center at the Oregon Graduate Institute.
Generator-based program development, formal methods of program development, program transformation techniques, functional programming, reflection, and algebraic programming.
The Fox Project at Carnegie Mellon
Advanced languages and compilers for real-world systems programming.
Microsoft Program Analysis Group
The value dependence graph IR, slicing of real (large) programs, combined register allocation and instruction scheduling.
The Linda project at Yale.
Parallel and distributed computing, adaptive computation, and parallel programming languages.
Concert papers from the University of Illinois
Concert is a compiler for a fine-grained concurrent object-oriented language.
Papers from the Functional Programming Group at the University of Birmingham.
Papers from TOPPS, the semantics group of DIKU at the University of Copenhagen
A bibliography of these papers is also available.
DEC SRC techreports
DEC WRL techreports
Functional programming papers from Glasgow
Programming language techreports at Rice
Rice Center for Research on Parallel Computation (CPRC).
Scheme techreports and documents
Other online technical reports

Conferences

ECOOP '94 information
Micro-27 Symposium on Microarchitecture
LICS '94 information
PLDI '94 and LFP '94 information (includes ML, PEPM, and RT workshops)
OOPSLA '94 information
POPL '95 information.
Other conference announcements.
DIKU's list of conference announcements (courtesy andrzej)
A larger, searchable database of conference announcements for a wide range of research areas.

Miscellaneous

The comp.compilers archive and FAQ
Papers on garbage collection, persistence, and memory hierarchies.
ACM gopher: calls for papers, programming language miscellany.
Information about literate programming.
Visual programming and pen-based computing at Washington University (Missouri).
Other stuff culled from the net

Bibliographies of language-related journals and conferences

ASPLOS: Architectural Support for Programming Languages and Operating Systems
LICS: Logic in Computer Science
LOPLAS: Letters on Programming Languages and Systems
PLDI: Programming Language Design and Implementation
POPL: Principles of Programming Languages
TOPLAS: Transactions on Programming Languages and Systems
Journal of C Language Translation

Other language-related bibliographies

Several bibliographies on object-oriented programming languages.
Literate programming bibliography.
"Object-Oriented and Operating Systems" bibliography
Attribute grammar bibliography.
Persistent programming languages and database programming: a searchable bibliography
Garbage collection bibliography, also in postscript.
Another bibliography on garbage collection, persistence, and memory hierarchies
Partial evaluation bibliography.
Program transformations that exploit partially-known data.
Abstract interpretation bibliography.
A unifying framework for many program analyses
Graph reduction bibliography.
Implementation techniques for lazy functional programming languages.
Reflection bibliography.
Meta-programming and the theory of programs as data.
Lambda calculus bibliography.
Functional languages bibliography, with readme file.
Another functional-programming bibliography at St. Andrews University.
Also available as a hypercard stack.
State in functional languages bibliography (annotated, in postscript).
Scheme bibliography in bib format, postscript, and plaintext.
Three miscellaneous compiler bibliographies: one, two, three.
Parallel functional programming bibliography, including abstracts.
Also available as a searchable WAIS source.
Prolog bibliography
Parallel processing and distributed computing bibliography
Vectorizing compilers bibliography
Other online bibliographies


mleone@cs.cmu.edu