IU Programming Languages Research
Current programming language research at IU explores a variety of semantic
and pragmatic issues and their relation to other areas of theory and
application.
The work of Kent Dybvig, Dan Friedman, Amr Sabry, and Chris Haynes
focuses on functional, object-oriented, dynamic, and symbolic programming
mechanisms, often expressed via extensions and derivatives of the Scheme
programming language.
This work often involves formal methods of static program analysis,
such as partial evaluation, abstract interpretation, and type systems.
Through such methods, and imaginative engineering, one hopes to combine
expressive abstraction mechanisms and efficient execution.
A number of faculty have interests that tie programming language research
with other areas of research.
- Dennis Gannon explores aspects of programming language design related
to parallel and scientific computation.
- Steve Johnson uses transformation techniques developed for programming
languages in the formal
derivation of hardware
systems.
- Daniel Leivant has worked on logics of programs, and on applicative
programming languages that capture computational complexity classes.
- Dirk Van Gucht works on the theory and design of query languages for
database systems that maintain complex objects such as structured
documents, multi-media objects, and geometric data.
- David Wise is developing applicative programming for parallel
processing, including compile-time and run-time memory management,
using software and hardware support, and reformulations of algorithms
that map well onto generic multiprocessors.
Books
-
The Scheme Programming Language, Third Edition
-
The entire text, online.
-
Essentials of Programming Languages
-
Information, errata, and other materials related to this book.
- Scheme and the Art of Programming
-
The code given in the book is available via anonymous
FTP.
Projects
- Syntactic abstraction
- We have developed a powerful syntactactic abstraction system for
Scheme that is
compatible with the high-level macro system in the Revised^4 Report
on Scheme.
The article
Syntactic
abstraction in Scheme (LASC, 5(4), 1993) justifies
the system and places it
in perspective with other existing macro systems.
Documentation can be found in either
The Scheme Programming Language
or
The Chez Scheme User's Guide.
The technical report
Writing
hygienic macros using syntax-case also describes the system.
We have extended the system to support modules; this work is
described in the paper
Extending
the Scope of Syntactic Abstraction.
A portable
implementation, based on the implementation used in
Chez Scheme is also available.
-
Educational infrastructure (EI) project
- This project involves developing software tools and pedagogy
for using Scheme in the undergraduate curriculum.
This project supported, among other things, the development of the
Scheme Widget Library.
- Scheme Widget Library
- The Scheme Widget Library is a windowing and graphics library for
Scheme supported by NSF through EI project.
The most recent version can be downloaded from
this page.
- Memory management
- This includes garbage collection, but more generally this encompasses
all aspects of managing memory in run-time systems that dynamically
allocate heap storage. There is a
technical
report that describes our system.
We also have a paper on
guardians
which is a
language feature that allows objects to be saved from automatic
deallocation so that clean-up or other actions can be performed on them.
- Scheme implementation
- In addition to our work on memory management and syntactic
abstraction, we are continually investigating other facets of Scheme
implementation. Some papers on our work include
Kent Dybvig is also the principal developer of the commercial
Chez Scheme
implementation of Scheme.
Many of his students have contributed to its development.
More information, including the complete text for the
Chez Scheme User's Guide and a download area for
Petite Chez Scheme, a free interpreter-based version of
Chez Scheme, can be found at
this page.
- Dynamo
- A compiler architecture for dynamically optimizing stand-alone
programs. Dynamic optimization uses run-time values and invariants to
improve code as it executes, yielding performance that is often
superior to that of statically optimal code.
- The Scheme
repository
- IU maintains the Scheme Repository that used to be at York University.
There is a list of its
latest
additions.
- Integrated parallel Scheme architecture
- A scalable multiprocessor architecture for efficient execution of
applicative languages.
-
Infer
- Infer is a statically-typed dialect of Scheme.
- pC++/Sage++
- pC++ is a portable parallel C++ for high performance computers. It is a
language extension to C++. Sage++ is an object-oriented compiler preprocessor
toolkit.
Personnel
Faculty
Students
Graduates