David MacQueen's Seminar

Donna Brooms donna at cs.uchicago.edu
Wed Nov 8 14:08:07 CST 2000


UP-COMING SEMINAR


Title: Building Adaptable Programs in HOT Languages:
        A Comparison of Polymorphism, Modules, Objects, and Classes

Speaker: David MacQueen
University of Chicago, November 15, 2000
in Kent 120, at 3 P.M.
Refreshments in Ryerson 255, at 4 P.M.

The adjective "HOT", meaning {\em Higher-Order Typed}, has been used
to describe a broad class of programming languages characterized by
their advanced type, module, or class systems and by higher-order
features like first-class functions or objects.  The class of HOT
languages includes functional languages such as ML and Haskell and
typed object-oriented languages like Java and Eiffel.  The last twenty
years has seen substantial progress in the foundations of HOT
languages, and in the design of languages based on those foundations.

Beyond the usual benefits of a sound, statically-checked type system,
HOT programming languages provide superior support for building
flexible software; that is, programs and libraries that are easy to
adapt or specialize for reuse in different contexts.  There are two
main approaches employed by HOT languages to provide this flexibility:
various forms of parameterization (typical of functional languages),
and subtyping and "open recursion" (characteristic of object-oriented
languages).

At the data level, flexibility and expressiveness are provided through
two higher-order features: first-class functions and objects. Both are
basically constructs for combining code and data, but they require
rather different typing schemes, and give rise to very different
programming idioms.

At the type level, functional languages employ type abstraction
(i.e. abstract data types), simple type parameterization (parametric
polymorphism), and type parameterization with signatures (ML functors)
or dictionaries (Haskell type classes).  Object-oriented languages, on
the other hand, use subtyping combined with implementation inheritance
(classes) or related program construction schemes that I characterize
collectively as "open recursion".

I will explain how these different approaches are used to support
generic, adaptable libraries and frameworks, and discuss the relative
strengths and weaknesses of parameterization versus subtyping/inheritance,
and modules versus classes.  Finally I will briefly consider some language
designs that attempt to unify the two paradigms (Generic Java, Ocaml,
Moby).
-- 

















**************************************************************************
Donna R. Brooms                        Computer Science Dept.
Project Assistant                      Ryerson Hall, Room 152
University of Chicago                  Chicago, IL 60637
                     donna at cs.uchicago.edu
                        (773) 702-6614
                        (773)702-8487-fax
**************************************************************************
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.cs.uchicago.edu/pipermail/colloquium/attachments/20001108/128a9669/attachment.htm


More information about the Colloquium mailing list