计算之智与哲学之慧分享 http://blog.sciencenet.cn/u/huangfuqiang

博文

Martin Richards

已有 5092 次阅读 2009-3-25 20:34 |个人分类:IEEE计算机先驱奖|系统分类:人物纪事| 2003, Pioneer, Awards



2003 Computer Pioneer Awards

Martin Richards

I am now a RETIRED Senior University Lecturer but still have an office (and come in most days) in the

University of Cambridge Computer Laboratory ( Click here for maps and floor plan of the new building )
William Gates Building,
JJ Thomson Avenue,
Cambridge CB3 0FD, United Kingdom.
My office: +44 (0)1223 334633, Reception: +44 (0)1223 763500, Fax: +44 (0)1223 334678
email: mr@cl.cam.ac.uk.

I am also a Fellow of St Johns College. My speaking voice sounds like this. Here is a fun Java applet: Damongo Sundial.


Shortcuts to main Packages

If you know what you want, just right click on one of the following: bcpl.tgz, bcpl64.tgz, mcpl.tgz, cintpos.tgz, bench.tgz, cobench.tgz, tcobench.tgz, vspl.tgz, gp2x.tgz, musprogs.tgz, edsac.tgz, or archive.tgz. Otherwise, continue reading below. If the browser tries to change the extension from .tgz to .tgz.gz, change it back again.

My Research Interests

My most recent work has been on a package to allow BCPL programs to generate native machine code dynamically at runtime in a machine independent way (currently only available for i386 machines). See bcplprogs/mc in the standard BCPL distribution. For the n-queens problem this give a 24-fold speed up. A second project I am working on is a program to provide an automatic musical accompaniment to a soloist. The score is represented in the MUS language specifically designed for this project. This language allows the user detailed control of tempo, volume, phasing and many other aspects of the performance. In due course the program will analyse in real time the sound picked up by a USB condenser microphone allowing the program to keep in time with the performer. The project is in the early stages of development, but parts are beginning to work. See the directory mus2mid in the Musprogs distribution. Some demonstration Midi files generated by this system are:

cantilena.mid The slow movement of Poulenc's sonata for flute and piano.
chords45.mid A chord recognition test for subdominant and dominant triads in root, first or second inversions.
chordsAll.mid A chord recognition test for any triads in root, first or second inversions.
chordseq.mid A sequence of all triads of C major and minor in root, first or second inversions.

Programming language design and implementation. Typeless programming languages. Analysis and optimisation of complete programs. Implementation of efficient interpreters. Compact interpretive codes and ultra compact codes suitable for just-in-time compilation. Tautology and Satisfiability checkers. Thread, Coroutines and Process Control. How to implement complex real time applications that need to run reliably for the next 30 or more years.

BCPL, an interpretive implementation of the BCPL language and system, including many demonstration programs. Click on BCPL.html to obtain a copy of the current version.

A 64-bit Cintcode version of BCPL is under development, click on BCPL64.html for more details.

Cintpos, an interpretive implementation of the Tripos Portable Operating System. Click Cintpos.html to obtain a copy.

MCPL, a typeless language with features taken from BCPL, C, ML and Prolog. Click MCPL.html to obtain a copy.

Bench, a machine and language independent benchmark program. Click Bench.html to obtain a copy.

The GP2X is a handheld Linux based gaming machine containing two ARM processors and flash memory of up to 2 Gbytes. It has a 320x240 16-bit colour display and several gaming type buttons including an 8 way joystick. I have implemented both BCPL Cintcode and Cintpos for this machine. So that it can be used standalone without a keyboard, I have implemented a terminal emulator, called Joyterm, for it allowing the user to send ASCII characters to a bash shell using just the joystick and the buttons. For more information click GP2X.html.

Musprogs holds various BCPL programs concerned with sampled and MIDI sound and ultimately a program to act as an automatic friendly accompanist to (typically) a solo player. This is currently under development and will not be ready for some time (years!). My initial plan is to use a USB ribbon microphone for input, a USB connection to a Roland SonicCell with the SRX-6 (Complete Orchestra) extension board and run the program under Windows XP using Cintpos and the MC package (for the time critical signal processing). I will use my own ASCII representation of the score (somewhat influenced by that used in Lilypond). For several reasons, I am not expecting to use FFT for the realtime analysis of the sound input. For more information click Musprogs.html.

Edsac contains an interactive simulator of Edsac the first general purpose stored program computer to run in Cambridge. It was designed and built by a team under the leadership of Maurice Wilkes and ran its first program on 6 May 1949. It was the first machine in the world to provide a computing service. Click Edsac.html to obtain a copy.

Tcobench contains various implementations of a language independent benchmark program to test how well different languages can implement an application which is well suited to using coroutines running in a multi-threading environment. Currently only a BCPL version is available, the other implementations are under development. Click Tcobench.html to obtain a copy.

Cobench, a machine and language independent benchmark program for BCPL style coroutines. Click Cobench.html to obtain a copy.

An archive of old BCPL and Tripos code is available. Click Archive.html to obtain a copy.

VSPL, a very simple programming language designed to be a case study for comparing different ways of implementing a compiler. It currently has implementations in BCPL, C and Lex/Yacc. Implementations in other languages such as C++, Java, ML and Prolog are planned. Click VSPL.html to obtain a copy.

Click demodiss.tar for a tar version of a collection of files that constitute as LaTeX version of a CST or Diploma project proposal and dissertation.

Some Publications

If you have DIFFICULTY READING a .pdf file under Internet Explorer, try copying it to a temporary directory by right-clicking the link and using the "Save Target As ..." menu item. It can then read it using acroread (or equivalent) by double clicking the saved file. Alternatively use Netscape.

bcplman.pdf. The BCPL Cintcode and Cintpos Users Guide (still being modified), September 2005.

oldbcplman.pdf. Archive of the old BCPL Cintcode System Users Guide, December 2003.

musman.pdf. The MUS Users Guide (very early stages of development), May 2008.

cintposman.pdf. Archive of the old Cintpos Portable Operating System (draft), October 2002.

mcplman.pdf. The MCPL Programming Manual and User Guide, TR 431, July 1997.

lengtarj.pdf. Slides for the talk "The Lengauer Tarjan Algorithm for Computing the immediate Dominators Tree of a Flowgraph", A informal talk given at Cambridge, 17 May 2001.

checker.pdf. Rough draft of "Experiments with a Tautology Checker Algorithm" (1998).

chkslds.pdf. Slides for the talk "A Tautology Checker loosely related to Stalmarck's Algorithm", A Seminar given at Cambridge, 13 March 1998.

qbf2slds.pdf. Slides for the talk "A Presentation of the Paper: A Linear-time Algorithm for Testing the Truth of Certain Quantified Boolean Formulas" A talk given at Cambridge, 5 February 1998.

mcplslds.pdf. Slides for the talk "Pattern Matching in a Typeless Language", POP Seminar given at CMU, 10 December 1997.

ptcslds.pdf. Slides for the talk "Portable Target Codes for Compilers", SCS Seminar given at CMU, 6 October 1997.

backtrk.pdf. Backtracking Algorithms in MCPL using Bit Patterns and Recursion, TR 433, July 1997.

model.pdf. Demonstration Programs for CTL and Mu-Calculus Symbolic Model Checking, TR 434, August 1997.

edsacposter.pdf. A PDF version on two A4 pages of the poster explaining the two EDSAC paper tapes etched onto the glass panels surrounding the first floor coffee lounge area in Cambridge University Computer Laboratory, September 2005.

Other Interests

Horn playing, Music, skiing, theatre, concerts, walking, travel.

Frequently accessed URLs

A Bibliographic Database
Another Bibliographic Database

BCPL

BCPL is a simple typeless language that was designed in 1966 by Martin Richards and implemented for the first time at MIT in the Spring of 1967.

A machine independent interpretive implementation of BCPL is available free of charge for private and academic purposes. If you would like to install it on your machine, have a look at the distribution README file and obtain a copy of bcpl.tgz. or bcpl.zip. The sizes and dates of creation of these files can be found in FILES.

BEWARE: Your browser may silently decompress bcpl.tgz producing a .tar file with name bcpl.tgz. If this happens, it can be de-tarred using: tar xvf bcpl.tgz rather than the expected tar zxvf bcpl.tgz. Your browser may suggest you write the file to bcpl.tgz.gz. If this happens make sure you make the target bcpl.tgz.

This distribution includes all BCPL and C the source files, a collection of demonstration BCPL programs and an experimental native code version running on Linux and DEC Alpha machines. A version for the GP2X handheld linux machine has just been added (but is still under development). As an aside the Cintpos portable operating system will also soon be available for this wonderful little handhend machine.

An older rather out of date version of BCPL is still available via BCPL23-4-04.html. But I no longer recommend that you use it.

The current version is much more compatible with the Cintpos distribution. The main changes are the use of a new BCPL compiler with some extensions including a cross-referencing facility, changes in the directory structure and the use of the environment variables BCPLROOT, BCPLPATH and BCPLHDRS (in place of CINTCODE and BCPLPATH). The Windows CE version of this system has also been upgraded, and, as of 13 July 2004, its distribution seems to work at least on my HP 620LX running Windows CE 2.0.

Free Distribution

This distribution assumes the following overall directory structure:
|
*--BCPL -- bcpl.tgz or bcpl.zip, 32-bit Cintcode BCPL
| |
| *--cintcode
| |
| *--bcplprogs
| |
| *--natbcpl
|
*--BCPL64 -- bcpl64.tgz or bcpl64.zip, 64-bit Cintcode BCPL
| |
| *--cintcode
| |
| *--bcplprogs
| |
| *--natbcpl -- Not yet available
|
*--MCPL -- mcpl.tgz or mcpl.zip
| | A typeless language related to BCPL, ML, C and prolog
| *--mintcode
| |
| *--mcplprogs
| |
| *--natmcpl
|
*--Cintpos -- cintpos.tgz or cintpos.zip, a Cintcode interpretive
| | version of the Tripos Portable Operating System
| *--cintpos
|
*--Bench -- bench.tgz or bench.zip
| | A language independent benchmark
| *--src
|
*--Cobench -- cobench.tgx or cobench.zip
| A language independent benchmark for BCPL style
| coroutines
|
*--Tcobench -- tcobench.tgz or tcobench.zip
| A language independent benchmark using both threads and
| BCPL style coroutines. (Under development)
|
*--VSPL -- vspl.tgz or vspl.zip
A complete compiler and interpreter for a simple but
not trivial language called VSPL. It is implemented
in several different ways using several different
implemetation languages including BCPL, C, and java.
The BCPL version is about 21 pages long.

A precompiled version for Windows is included in the standard distribution as the file cinterp.exe. It can be recompiled using Microsoft Visual C. To run it, edit the file setupwin32.bat and the execute it.

An advantage of an interpretive system is that it is easy to generate data relating memory references to time. Such data can be used to produce a picture of the execution of a program, for example RASTERps.zip contains an A4 sized Postcript diagram of a version of the BCPL compiler compiling itself.



https://blog.sciencenet.cn/blog-89075-222470.html

上一篇:2009年首届中国云计算大会
下一篇:Computer and Information Ethics
收藏 IP: .*| 热度|

0

该博文允许实名用户评论 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-18 00:04

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部