\documentstyle[html]{article}

\begin{document}

\title{Computational Reflection and Meta-level Architectures}
\author{}

\maketitle

{\em Computational reflection,\/} proposed by Brian Smith, is a
computational process that is able to reason about itself.  This
framework can be applied to extensible software systems (known as {\em
Open Implementations\/}) that can be easily extended by
modifying/replacing their implementations.  We believe that reflection
is beneficial to programming languages, especially for parallel and
distributed systems, and design several reflective programming
languages.  Also, we study theoretical aspects of reflection as a
formal background of the Open Implementations.  This document
introduces the research activities on computational reflection and
meta-level architectures at \htmladdnormallink{the laboratory}{/}.

\begin{itemize}
\item \htmlref{Research Activities in the Lab.}{sec:RA}
\item \htmlref{Publications from the Lab.}{sec:bib}
\item \htmlref{Available Systems}{sec:systems}
\item \htmlref{Members Working on Reflection}{sec:members}
\item \htmlref{Related Research Groups}{sec:groups}
\end{itemize}

Note: Postscript version of this document is also
\htmladdnormallink{available.}{meta.ps}

%\section{Brief history of computational reflection.}

%** 3-Lisp---at the begining
%** ABCL/R---Reflection goes to the concurrent world
%** CLOS-MOP---As a practical tool for language extension
%** Trends
%        OS(Apertos), Distributed Languages (AL-1/D, RbCl, Open C++), 
%        Parallel Languages (OCore meta-architecture, ABCL/R3),
%        Open Compilers (Anibus, Intrigue, Open C++ ver.2, MPC++)


\begin{rawhtml}
<HR>
\end{rawhtml}

\label{sec:RA}
\section{Research Activities in the Lab.}

Our interests on computational reflection are \htmlref{its
theoretical aspects}{sec:th}, \htmlref{reflective programming
systems}{sec:concurrent}, and \htmlref{use of reflection for practical 
use}{sec:application}.

\label{sec:th}
\subsection{Theoretical Aspects of Reflection}

As a formal foundation of {\em Open Implementation,\/} theoretical
aspects of reflection, such as semantics, are studied.

\begin{itemize}

\item Group-wide reflection and ACT/R \cite{watanabe90rexfool}

  Group-wide reflection is a dimension of computational reflection in
  concurrent systems.  A general model for group-wide reflection is
  described based on Actor model, and several properties are proved.

\item \label{rscheme} Rscheme \cite{ichisugi92imsa}

  Rscheme is a reflective Scheme based on the {\em kernel-less\/}
  design principle of \htmlref{RbCl}{rbcl}; all its run-time modules
  (including meta-interpreter components) can be replaced via the {\em
  system object table.\/}

\item Black

  Inspired by \htmlref{Rscheme}{rscheme}, general framework of
  reflective languages is studied.  A reflective language {\em
  Black\/}, which admits us to replace meta-interpreter functions, is
  designed.  Based on Black, we show an implementation framework of
  reflective languages, via {\em duplication of meta-interpreters and
  partial evaluation\/}\cite{asai96lsc}.  Further partial evaluation,
  which leads to efficient implementation techniques, are also
  studied\cite{asai95techrep}.  \htmlref{An
  implementation}{black-impl} in Scheme is available.
  An online partial evaluation designed for use in reflection is
  discussed in \cite{asai97pepm}.

\end{itemize}

\label{sec:concurrent}
\subsection{Languages Systems for Object-Oriented/Concurrent/Logic Programming}

In concurrent/distributed programming systems, like our
\htmladdnormallink{ABCL family of languages}{/pl/abcl.html},
extensibility in both language constructs and run-time systems are
beneficial for efficient execution.  To provide such extensible
language systems, reflection in concurrent/distributed systems are
studied.

\begin{itemize}

\item ABCL/R\cite{watanabe88oopsla}

  The notion of reflection proposed by Brian Smith and Pattie Maes, is
  introduced into object-oriented {\em concurrent\/} computation(link
  to ABCL project).  The reflective architecture, later called as {\em
  Individual Based Reflective Architecture\/}, is designed and its
  description language ABCL/R is \htmlref{implemented}{abclr-impl}.

\item ABCL/R2

  To formulate reflective features provided in practical reflective
  systems (e.g., resource management), a {\em hybrid group reflective
  architecture\/} is proposed.  This architecture has notion of group
  shared resources, which, for example, corresponds to processor
  elements of parallel computers\cite{matsuoka91ecoop}.  Its
  description language {\em ABCL/R2\/} is designed, and efficient
  implementation technique is studied\cite{masuhara92oopsla}.

  A \htmlref{pseudo-parallel version of ABCL/R2
  system}{abclrtwo-impl} is available via anonymous FTP, and used for
  several research projects as an extensible concurrent language
  platform.

\item \label{rbcl} RbCl

  RbCl is a reflective object-oriented concurrent
  language\cite{ichisugi92imsa}.  It is designed so that {\em any\/}
  run-time routine of the language can be replaced with RbCl
  objects---what we call {\em no kernel\/} in the language.  The RbCl
  system has {\em system object tables\/}, which registers run-time
  routines, which is written in C++ at the beginning.  The table can
  be modified, and user defined RbCl objects can be executed as
  run-time routines via a novel feature {\em linguistic symbiosis.\/}

\item \label{CodA}CodA\cite{mcaffer93rw,mcaffer95ecoop}

  CodA is a framework for creating, controlling and understanding
  concurrent computing environments.  Objects in CodA conceptually has
  several meta-objects, which are individually replaceable.  Its
  implementation on Smalltalk seamlessly ties CodA objects and
  Smalltalk objects, so that existing Smalltalk libraries can be
  easily extended for different environments, such as \htmlref{distributed
  computing}{Tj}.  (\htmladdnormallink{For more
  information.}{/members/jeff/research/coda.html})

\item ABCL/R3

  Computational reflection is a potential way to optimize
  high-performance applications especially for parallel computers.  To
  realize this, we re-design a reflective concurrent object-oriented
  language {\em ABCL/R3\/} so that various features of parallel
  computers can be managed via
  reflection\cite{masuhara93rw,masuhara94swopp,masuhara96reflection}.  

  Also, compilation frameworks for efficient execution are
  investigated\cite{masuhara95oopsla,masuhara97imsa,masuhara98ecoop}
  based on partial evaluation\cite{asai97pepm}.  Given
  meta-level and base-level programs, our compiler specializes the
  meta-program with respect to the base-program, and yields a
  single-level program in which interpretive execution is
  substantially
  eliminated.

\item RKL1

  RKL1 is a reflective version of KL1, which is a parallel logic
  programming language developed at ICOT.  The notable feature of RKL1
  is simplicity of its reflective architecture; programmers can modify
  only around the invocation of the body part of each clause.  This
  simplicity helps us to easily develop a compiler that can generate
  programs that is embedded meta-level code, and runs efficiently.
  In fact, some example programs with meta-level descriptions exhibit
  good performance on multiple workstations connected via Ethernet.
  \cite{takahasi94fgcs}

\item MPC++

  MPC++ is a metalevel-architecture-based C++ compiler system.
  Researchers in \htmladdnormallink{RWCP(Real World Computing
  Partnership)}{http://www.rwcp.or.jp/people/ishikawa/home.html}, in
  cooperation with our group, are developing this system with the aim
  of providing practical parallel C++ systems using its meta-level
  architecture.\cite{takahasi96swopp,takahasi97jspp,takahasi97swopp,takahasi97iscope,takahasi98trans-ipsj}

\end{itemize}

\label{sec:application}
\subsection{Applications}

\begin{description}

\item[Inheritance Anomaly]
  In concurrent object systems, inheritance and synchronization
  constraints often conflict each other---known as {\em inheritance
    anomaly.\/}  One of our solution to this problem is the use of
  meta-level architecture; we proposed an object-oriented concurrent
  language X0/R with a reflective architecture and shown a solution on 
  it. \cite{matsuoka90rw,matsuoka93oopsla,matsuoka93rdcoop,matsuoka93phd}


\item[Tj] \label{Tj}
  Tj is a distributed computing framework implemented using the
  meta-architecture of \htmlref{CodA}{CodA}.  Thanks 
  to CodA, policies of language features related to distributed
  environment (e.g., object migration) is opened for programmers. 
  \cite{mcaffer95iwoos}
  (\htmladdnormallink{For more
  information.}{/members/jeff/research/tj.html})

\item[Synchronizer] 
  In object-oriented concurrent computing, the way to describe
  coordination of multiple concurrent objects is one major problem.
  Synchronization constraints ({\em Synchronizers\/}, in short) 
  proposed by Fr{\o}lund and Agha helps
  to describe such coordination independent from the description of
  each concurrent object.  
  We designed an extended Synchronizers for ABCL, and implemented
  using reflective architecture of ABCL/R2. \cite{igarasi94seniorthesis}

\end{description}

\begin{rawhtml}
<HR>
\end{rawhtml}

% \section{References to related papers}

%\bibliographystyle{alpha}
%\bibliography{strings,masuhara,abcl,reflection}

\label{sec:bib}
\input{reflection-ref}

If you can not obtain electrically, please make a request for hardcopy
version to:
\htmladdnormallink{paper-request@yl.is.s.u-tokyo.ac.jp}{mailto:paper-request@yl.is.s.u-tokyo.ac.jp}.

\begin{rawhtml}
<HR>
\end{rawhtml}

\label{sec:systems}
\section{Available Systems}

Some systems are available via anonymous FTP at
\htmladdnormallink{ftp.yl.is.s.u-tokyo.ac.jp}{
ftp://ftp.yl.is.s.u-tokyo.ac.jp/}.  For the other systems, please
make a request to each responsible person.

\begin{itemize}

\item \label{abclr-impl} ABCL/R: in directory
  \htmladdnormallink{\verb|/pub/abclr/|}{
    ftp://ftp.yl.is.s.u-tokyo.ac.jp/pub/abclr/}.

\item \label{abclrtwo-impl} ABCL/R2: in directory
  \htmladdnormallink{\verb|/pub/abclr2/|}{
    ftp://ftp.yl.is.s.u-tokyo.ac.jp/pub/abclr2/}.

\item \label{black-impl} Black: in directory
  \htmladdnormallink{\verb|/pub/black/|}{
    ftp://ftp.yl.is.s.u-tokyo.ac.jp/pub/black/}.

\end{itemize}

\begin{rawhtml}
<HR>
\end{rawhtml}

\label{sec:members}
\section{Members Working on Reflection}

\begin{itemize}
\item \htmladdnormallink{Professor Akinori
    Yonezawa}{/members/yonezawa/home.html}

\item \htmladdnormallink{Takuo
    Watanabe}{http://www.ldl.jaist.ac.jp/\%7Etakuo/} --- currently with
  JAIST, leading several projects including LEAD/LEAD++.

\item \htmladdnormallink{Satoshi
    Matsuoka}{http://matsu-www.is.titech.ac.jp/}
  --- currently with Tokyo Institute of Technology, leading the
  OpenJIT project.

\item \htmladdnormallink{Yuuji
    Ichisugi}{http://www.etl.go.jp/\%7Eichisugi.html}
  --- currently with ETL, working on extensible compilers including EPP.

\item \htmladdnormallink{Jeff McAffer}{/members/jeff/home.html}
  --- currently with Object Technology International.

\item \htmladdnormallink{Kenichi Asai}{http://www.is.s.u-tokyo.ac.jp/\%7Easai/} --- currently with Imai lab.

\item \htmladdnormallink{Hidehiko
    Masuhara}{/members/masuhara/home.html} 
  --- currently with Graduate School of Arts and Sciences.

\item \htmladdnormallink{Toshiyuki
    Takahashi}{/members/tosiyuki/home.html}
  --- currently with Real World Computing Partnership, working on MPC++.

\item \htmladdnormallink{Atsushi
    Igarashi}{/members/igarashi/home.html}
  --- currently with Kobayashi lab.

\end{itemize}


\begin{rawhtml}
<HR>
\end{rawhtml}

\label{sec:groups}
\section{Related Pages}

\paragraph{Research Groups}

\begin{itemize}

\item \htmladdnormallink{Open Implementation Home Page}{
http://www.parc.xerox.com/spl/projects/oi/}
  --- general information about Open Implementation, and their
  projects (CLOS MOP, Open C++, etc.).

\item \htmladdnormallink{Apertos project at Sony CSL}{
    http://www.csl.sony.co.jp/project/Apertos/} --- a reflective,
  object-oriented operating system.

\item \htmladdnormallink{OOPS at the Prof. Mario Tokoro group, Keio
    University}{http://www.mt.cs.keio.ac.jp/groups.japanese/oops.html} (in
  Japanese) --- working on reflective langugaes (AL-1/D, etc.) and
  operating systems.

\item \htmladdnormallink{Massively 
    Parallel Software Laboratory, Real World Computing Partnership}{
    http://www.rwcp.or.jp/people/ishikawa/home.html}
  --- working on MPC++ (an open compiler) and OCore (a concurrent
  object-oriented language with meta-level architecture).

\item \htmladdnormallink{OpenC++ Home Page}{
    http://www.softlab.is.tsukuba.ac.jp/\%7Echiba/}
  --- an open compiler based on compile-time reflection.


\item \htmladdnormallink{Object-Oriented Systems and Languages Group,
    Ecole des Mines de Nantes}{
http://www.emn.fr/cs/research/teams/object/objectives.html#reflection}
  --- ClassTalk, NeoClassTalk, OpenCORBA

\item \htmladdnormallink{DeVa Project, York University}{
    http://www.cs.york.ac.uk/\%7Estuart/deva.html}

\item \htmladdnormallink{Dalang Java}{
    http://www.cs.ncl.ac.uk/people/i.s.welch/home.formal/dalang/index.html}
  --- Java with run-time reflection.

\item \htmladdnormallink{Coyote Project and Iguana Programming Model}{
    http://dedanann.dsg.cs.tcd.ie/\%7Ecoyote/}
  --- middleware support with meta-object protocols
\end{itemize}

\paragraph{Conferences and Workshops}

\begin{itemize}
\item \htmladdnormallink{Reflection'96 online proceedings.}{
    http://jerry.cs.uiuc.edu/reflection/reflection96/index.html}

\item \htmladdnormallink{ECOOP'97 Workshop on Reflective Real-Time
    Object-Oriented Programming and Systems}{
    http://www.cs.york.ac.uk/\%7Estuart/ecoop_workshop.html}

\item \htmladdnormallink{ECOOP'98 Workshop on Reflective
    Object-Oriented
    Programming}{http://www.cs.york.ac.uk/\%7Estuart/ecoop98/papers.html}

\item \htmladdnormallink{OOPSLA'98 Workshop on Reflective Programming
    in C++ and Java}{
    http://www.softlab.is.tsukuba.ac.jp/\%7Echiba/oopsla98ws.html}

\end{itemize}

\end{document}
