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