N. Wirth
Abstract. Pascal-S is a subset of the programming language Pascal selected for introductory programming courses. This report describes an implementation that is especially designed to provide comprehensive and transparent error diagnostics and economical service for large numbers of small jobs. The system single, self-contained Pascal program. This machine-independent formulation in a high-level language facilitates its construction and is a prerequisite for easy portability.
Institut fuer Informatik ETH
Clausiusstrasse 55
CH-8006 Zuarich
Apeendices
Several years ago, the Computer Science Department of ETH
Zuerich had started to use the programming language Pascal in
its introductory programming courses [2,3]. These courses are
taught mainly to engineers, physicists, and mathematicians in
their first year. The large number of participants dictates in
use of an efficient and economical system;
economical with regard to students;
learning effort,
to computing time, and to storage requirements.
The first demand requires a system with
comprehensive syntax and run-time error checking
and the provision of meaningful, well-explained diagnostics.
Machine economy was realised through a combination of a compiler
and a sub-batch monitor,
the latter alternately invoking compilation
and program execution.
this scheme requires an absolutely
watertight protection against errors in compiled programs and
-- of course --
an entirely error free compiler and monitor.
数年前に、
ETH Zuerichの電子計算機科学部は
その導入のプログラムするコースの中で
プログラミング言語 Pascal を使用し始めました[2、3]。
これらのコースは
主としてエンジニア、物理および数学の学生の1年目で教えられます。
多くの参加者はシステムの効率的、経済的な利用を要求します。
学生に関して経済的です;
時間の計算に、および記憶必要条件に、努力を学習すること。
システムに求められた第1の要求は、
包括的なシンタックスのチェックと
実行時のエラーチェックすること、
意味がよく説明された診断ルーチンを備えることでした。
機械経済は、
コンパイラーおよびサブバッチモニターのコンビネーション、
交互に編集を起動する後者およびプログラム実行によって実現されました。
このスキームは、
コンパイルされたプログラムにおけるエラーからの絶対に防水の保護を要求します、
そして(もちろん)1つの、エラー(完全に)の無料のコンパイラーおよびモニター。
The system developed for this purpose by R. Schild proved to be
highly successful, and it turned out to be so economical with
respect to computing time that the system's extensive use by
about 350 students amounted to less than 0.5 % of the entire
computing services provided by the computation center averaged
over the entire term, although the student job batch was
collected, run, and returned four times per day.
この目的のために R.Schild によって開発されていたシステムは、
高度に成功すると分かりました、
また、それは時間の計算に関して非常に経済的なので、
総計計算センターによって提供される、
計算するサービス全体の0.5%未満までに
システムの約350人の学生による広範囲な使用がなったと生産しました、
学生仕事バッチは集められましたが、
全用語の間平均した、走る、また1日当たり返された4回。
Nevertheless, there were also some disadvantages. First of all,
there were only four fixed times when jobs were collected ( and
sometimes fewer due to machine failures). Then, the student jobs
had to be handled separately from all other jobs (separate
batching and special job cards to be provided by the operators).
these drawbacks and the advent of a separate medium speed batch
terminal located in the students program preparation room
indicated that a system with different characteristics might be
more appropriate. The students' batch terminal allows for
self-service. It is therefore highly desirable - if not
mandatory - that each student's job be scheduled and run
independently of other jobs.
Fast turn around can
- under the prospect of large numbers of jobs -
only be guaranteed,
if the jobs use relatively little store.
In fact, storage space is at a
much higher premium than processor time.
しかしながら、
さらにいくつかの損失がありました。
第一に、仕事が集められた(かつ機械失敗により時々より少数の)時、
4つの定時だけがありました。
その後、学生仕事を、他のすべての仕事
(オペレーターによって提供される個別のbatchingし特別の仕事カード)
から別々に扱わなければなりませんでした。
これらの欠点、
および学生プログラム準備室にある
個別のミディアム速度バッチ・ターミナルの到来は、
異なる特性を備えたシステムがより適切かもしれないことを示しました。
学生のバッチ・ターミナルはセルフ・サービスを考慮に入れます。
他の仕事と無関係に各学生の仕事が予定され実行されることは
したがって高度に望ましい(義務的でないにしても)。
多くの仕事の見通しの下では、
仕事が比較的小さな店を使用する場合、
早いターンアラウンドが保証することができます。
実際、貯蔵空間は、プロセッサー時間よりはるかに高いプレミアムにあります。
Under these conditions, a compact system is mandatory. Without
compromising on the demand for extensive error checking, our
interpretive solution appears as most promising, because it
allows for a simple compiler and dense code. Program size can be
further reduced, if the system is restricted to handling that
subset of Pascal, which is actually taught in these introductory
courses. Hence, the new system was intentionally designed to
process a subset. The resulting reduction of development labor
was an additional incentive for this decision.
これらの条件の下では、
コンパクトなシステムが義務的です。
広範囲なエラーチェックの需要について妥協せずに、
それが単純なコンパイラーおよび濃厚なコードを考慮に入れるので、
最も有望なものとして、
私たちの解釈の解決は現われます。
プログラム・サイズはさらにありえます、
システムが取り扱いに制限される場合、
縮小した、それはパスカル
(それはこれらの入門コースの中で現実に教えられる)
にサブセット化します。
従って、新システムは、
部分集合を処理することを故意に目指しました。
開発労働の生じる縮小はこの決定用の補足誘因でした。
In choosing an interpretive approach, one must be aware of and
willing to accept a substantial loss of efficiency in program
execution. A factor of 30 compared to reasonably good compiled
code is not unusual, and a factor of 20 must be called "very
good". Such factors can of curse only be accepted, if the gains
expected elsewhere are equally substantial. They can only be
compensated, if the execution effort of the compiled program is
relatively small, say at least 20 times smaller than job
initiation, compiler loading, compilation, and program loading
together.
解釈のアプローチを選ぶ際に、
一つは知っているに違いありません、
そしてプログラム実行の効率の本質的な損害を受理するのに自発的。
合理的によいコンパイルされたコードと比較された30の因数は異常ではありません。
また、20の因数は「非常によい」呼ばれるに違いありません。
他のところに期待された収益が等しく本質的な場合、
そのような要因は呪いに単に受理することができます。
コンパイルされたプログラムの実行努力が比較的小さい場合、
それらは単に償うことができます、
言う、仕事開始、コンパイラー積み荷、編集、
およびともにロードするプログラムより20倍小さな
In view of the everyday performance figures of common operating
systems, this condition is indeed satisfied for very many
problems that can successfully be assigned as programming
exercises. The most important single factor is gained by
eliminating the need for a relocation loader. This is achieved
by directly depositing the compiled code in store. As programs
tend to be small, even the demand for storage economy cannot be
used as a strong counterargument against this strategy.
共通のオペレーティング・システムの日常の実行図を考慮して、
この条件は、練習のプログラムとして成功裡に割り当てることができる
非常に多くの問題のために確かに満たされます。
最も重要な単一の要因は、再配置ローダーの必要の除去により獲得されます。
これは、店にコンパイルされたコードを直接残すことにより達成されます。
プログラムは小さい傾向があるとともに、
記憶経済の需要さえはこの戦略に対する強い反論として使用することができません。
The system described in this report consists of a compiler and
an interpreter for a subset of Pascal called Pascal-S. Chapter 2
defines that subset; it contains a complete syntax specification
mirror the structure of the compiler. Chapter 3 provides an
overview of the entire system which is described as a single
Pascal program. Some figures are provided concerning system size
and performance. Chapter 4 explains the architecture of the
hypothetical computer that executes compiled Pascal-S programs.
Some typical program constructs are listed together with the
code generated for them. The principles of operation of the
computer become understandable through these sample constructs
which at the same time picture the task of translating Pascal-S
into this code. Chapter 5 discusses the compiler itself, and it
starts out with an explanation of the tables and their structure
used to represent the information given in a program's
declarations.
この報告書に記述されたシステムは、
パスカル-Sと呼ばれるパスカルの部分集合用のコンパイラー
およびインタープリターから成ります。
2章はその部分集合を定義します;
それは完全なシンタックス明細を含んでいます、
コンパイラーの構造を映します。
3章は、単一のパスカル・プログラムと評される、全システムの概観を提供します。
いくつかの図はシステム・サイズおよび実行に関して提供されます。
4章は、コンパイルされたパスカル-Sプログラムを実行する
仮説のコンピューターのアーキテクチャーについて説明します。
ある典型的なプログラムは構築します、
それらのために生成されたコードと一緒にリストされます。
コンピューターのオペレーションの法則はなります、
理解し得る、によって、これら、サンプルは構築します、
それはパスカル-Sをこのコードに翻訳するタスクを同時に描写します。
5章はkコンパイラーについて自体議論します。
また、それは、プログラムの宣言で与えられた情報を表わすために
使用されるテーブルおよびそれらの構造の説明で外に始まります。
The explanations are necessarily terse and brief and incomplete.
They are intended for people who already have some background on
comilers; they are in particular referred to [3], where the
principles along which this system is constructed are taught and
developed. For all details, the reader is referred to Chapter 6
which is a full listing of the entire system. One may wonder
about the value of including a program listing in extenso. But I
think it is important and hope it will be useful. The primary
value of the language and system Pascal is that it allows to
construct large programs that are useful and highly efficient in
a form that can be read and communicated. The listing of the
Pascal-S system is intended to support this claim. It also
proves that compiler and interpreter can be described in a
machine-independent, well-structured form that nevertheless is
effectively machine translatable. The relative brevity of the
program (25 pages) also raises a new aspect of compiler
portability; it is entirely possible to transport such a system
by hand coding. the effort is at most one of a fe man months,
even for a computer where nothing but symbolic assembly code or
Fortran are available.
その説明は必ず簡潔で、簡潔で、不完全です。
それらは、共同1マイル走者の上に
既にある背景を持っている人々のために意図されます;
それらは、このシステムが構築される法則が教えられ開発されている場合に、
[3]を参照された項目にあります。
すべての詳細には、リーダが6章を参照されます、
どれがありますか、
1つの?A全システムを十分にリストすること一つはするかもしれません、
extensoにリストするプログラムを含んでいる値について思いめぐらすかもしれません。
しかし、私は、それが重要であると思い、それが有用になることを望みます。
言語およびシステム、パスカルの主要な値は、
読まれ通信することができる形式で
有用で、高度に効率的な、大規模なプログラムを構築することを
それが可能にするということです。
パスカル-Sシステムのリストは、このクレームを支援するように意図されます。
さらに、それは、しかしながら有効に翻訳可能な機械である機械独立して、
よく組み立てられた形式にコンパイラーとインタープリターについて
記述することができることを証明します。
プログラム(25ページ)の相対的な簡潔さは、
さらにコンパイラー・ポータビリティの新しい様相を上げます;
手コード化によりそのようなシステムを輸送することは完全に可能です。
努力はそうです、高々1、1つの、fe人数か月、記号(だけ)会議コード
あるいはフォートランが利用可能なところで、コンピューター用にさえ。
The Pascal-S system is described as a compiler that translates
Pascal-S programs into code for a hypothetical stack computer
especially designed for this purpose. This computer is itself
defined as an algorithm, called the interpreter of the compiled
code. Both compiler and interpreter are described in a largely
machine-independent way by using the high-level language Pascal
exclusively. In fact, these two parts form a single Pascal
program. It is listed in Chapter 6.
The advantages of a description using a high-level language are
particularly apparent during the development of a system, but
are equally significant, if it has to be transported and adapted
to a different computer. In fact, Pascal-S can be implemented
immediately on all machines where a full Pascal compiler is
available. Of course, the success of such an automatically
generated system crucially depeneds on the quality of the tool
compiler. The Pascal 6000 - 3.4 compiler used at ETH on the CDC
6400 computer generates high-quality code, and recompiles the
entire Pascal-S system in 20 sec.
The disadvantage of interpretive system is its relatively
large overhead during program execution. Experience has shown,
however, that for small programs the expense for central
processor utilization for interpretation is anyway quite small.
Some actual figures are given for a few sample programs in
Chapter 7. Exercises requiring less than 4 seconds of computer
times (costing less than SFr. 2.-) are predominant. Of course,
exercises will have to be carefully chosen, particularly in
numerical mathematics.