Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456 Norman Ramsey
Want to work harder than you knew you could
and learn more than you imagined was possible?
Consider COMP 40!
Send email to
nr@cs.tufts.edu.
Send physical documents
to my postal address.
If you come yourself you'll want directions.
Telephone +1 617 627 4923.
Skype (chat preferred): norman-ramsey AIM: norman62ramsey Yahoo chat: norman_ramsey
Fax +1 617 627 2227 (but if you can, scan and email instead)
My vita and public key
(now with photo!) are online.
My research interests are broad, but grounded in programming
languages.
I like programming languages because there is nothing like
a good language to help us express computations precisely, in ways
that we can reason about them, while still keeping things
at a high level.
I focus on reusable, low-level programming-language infrastructure;
I want to make it easy and cheap to build the programming
languages of the future.
I also work in functional programming and programming-language design,
including the design of special-purpose languages for solving problems
in distributed systems.
My most recent work has been on reusable back ends and optimization
libraries,
which has been applied to the increasingly misnamed Glasgow Haskell Compiler (GHC).
My research is currently in transition: I am working on or
interested in
compilers; interpreters;
precise, machine-checkable, composable specifications for programming
assignments;
algorithms and infrastructure for managing replicated data;
and distributed version control.
I have collected both highly significant and recent papers.
Links are to abstracts so you can check
out the topic without downloading a monster.
For a complete view, including older work, see my
publications list.
Stochastic Lambda Calculus and
Monads of Probability Distributions (with Avi Pfeffer).
Proceedings of the 29th ACM Symposium on the Principles of Programming
Languages, in SIGPLAN Notices, 37(1):154–165, January
2002.
This paper explores the design of probabilistic languages in a
foundational, principled way. Its special contribution is to analyze
important implementation techniques in a way that is completely formal and is
rigorously connected to the theory of probability.
A Transformational Approach to
Binary Translation of Delayed Branches (with Cristina Cifuentes).
ACM Transactions on Programming Languages and Systems,
25(2):210–224, March 2003.
The paper solves a small but difficult problem in analysis of binary
codes. This problem is repeatedly a stumbling block for industry groups that
work with binary codes, and I believe our solution is definitive.
Automatically Generating Back
Ends Using Declarative Machine Descriptions (with João Dias).
In Proceedings of the 37th ACM Symposium on the Principles of Programming
Languages, pages 403–416, January 2010.
The most beautiful results from João Dias's doctoral
dissertation: (a) if all you know is the semantics of the intermediate
code and the target instruction set, generating a code generator is
undecidable; and (b) by using a clever new heuristic search based on
algebraic laws, João can generate code generators for real machines
quickly. The core of the algorithm combines Hoare logic and unification to
find sequences of machine instructions that implement intermediate code. Will
appeal especially to those who like inference rules with their compilers.
Five other significant papers
Specifying Representations of
Machine Instructions (with Mary F.
Fernández).
ACM Transactions on Programming Languages and Systems,
19(3):492–524, May 1997.
This is the most technical and the definitive description of my early
work on declarative machine descriptions.
A Single Intermediate Language
That Supports Multiple Implementations of Exceptions (with Simon L. Peyton
Jones).
Proceedings of the ACM SIGPLAN '00 Conference on Programming Language
Design and Implementation, in SIGPLAN Notices,
35(5):285–298, May 2000.
This paper is the most technical and rigorous of the C-- papers.
It exemplifies what I am trying to achieve in C--: clean, low-level
mechanisms that compiler writers can use to implement different
high-level–language features and to control cost tradeoffs.
An Algebraic Approach to File
Synchronization (with Elöd Csirmaz).
In Proceedings of the 8th European Software Engineering Conference (ESEC)
and 9th ACM SIGSOFT Symposium on the Foundations of Software Engineering
(FSE-9), pages 175–185, September 2001.
This paper discusses how to maintain consistency among multiple
replicas of files that may be modified concurrently. We proposed reasoning
about this problem by examining the algebraic structure of a sequence of
modifications.
Hoopl: Dataflow Optimization Made
Simple (with João
Dias and Simon
Peyton Jones).
July 2009.
A refinement of our 2005 work on compiling with applicative
control-flow graphs. If you are a functional programmer and have any interest
in dataflow analysis, you will like this paper. And if you have always found
dataflow analysis complicated and mysterious, we hope to have demystified it.
Hoopl: A Modular, Reusable
Library for Dataflow Analysis and Transformation (with João Dias and Simon
Peyton Jones).
In Proceedings of the 3rd ACM SIGPLAN Symposium on Haskell
(Haskell 2010), September 2010.
We implement dataflow analysis and transformation in modular fashion
using advanced features of Haskell. Unlike our 2009 technical report, which
emphasizes the advantages of using Hoopl, this paper focuses on the
implementation, which has been carefully modularized to separate each of the
tricky bits from all of the others. Of greatest interest to hard-core
functional programmers and compiler writers.
Resourceable, Retargetable, Modular
Instruction Selection Using a Machine-Independent, Type-Based Tiling of
Low-Level Intermediate Code (with João Dias).
In Proceedings of the 38th ACM Symposium on the Principles of Programming
Languages, pages 575–586, January 2011.
In most compilers, building an instruction selector requires a mapping
from intermediate form to target-machine instructions. The mapping must be
defined once per target machine. Here we describe a single mapping that works
for all register machines. By using this mapping, we make the
machine-dependent components simple enough that they can be generated
automatically.
For a complete view, including older work, see my
publications list.
The ACM requires this disclaimer:
The documents contained in these pages are included
to ensure timely
dissemination of scholarly and technical work on a
non-commercial basis. Copyright and all rights therein
are maintained by the authors or by other copyright
holders, notwithstanding that they have offered their
works here electronically. It is understood that all
persons copying this information will adhere to the terms
and constraints invoked by each author's copyright.
These works may not be reposted without the explicit
permission of the copyright holder.
I no longer maintain a
hot list; this is more of a random list.
An interest in personal productivity and pointers from
Benjamin Pierce
and
Phil Wadler
got me to Inbox Zero
on Wed 21 Feb 2007 at 6:00 PM.
After serious lossage caused by various alarums and excursions,
I recovered Zero at 6:30 PM on Mon 31 Dec 2007.
It was a pleasure to start the New Year with an empty inbox!
After starting at Tufts, I got a little behind; at the end of my
first year, my email debt was over 600 messages.
At the end of my third year, at 9:12 PM on Monday 23 May 2011,
I recovered Zero once again, but I cheated—I put
600 messages from 2009 and 2010 into an
email
demilitarized zone.
I signed the email
charter; if you won't, I won't.