sulfonyl

Pascal

Here is my summarization of "Byte Magazine Vol 3 Number 8 : Pascal".

TLDR : There are several competing computer architecture. A program that coded into one specific architecture cannot be executed in other architecture, causing quite a headache and confusions. There is a quick solution to fix this interoperability problem : BASIC. But there are several problems associated with BASIC : inconsistent BASIC implementations, interpreted language (like BASIC) is slow, BASIC's language structure is quite a hodge podge of several experimental language feature, and there is no "machine independent version of the compiled form of a program". Enter Pascal, with its elegant structured programming approach to language design, combined with the "P-code" intermediate language representations that ensures the interoperability of the program against several different architecture.


History of Computing : A Quick Glimpse

Originally, computers were employed to work on mathematical tasks such as solving ballistics problems, or generating tables of logarithms Later it became economically feasible to use computers for data processing or working with voluminous amounts of data such as census data or bank statements.

"Programming" originally entailed the translation of simple algorithms into machine code and bit by bit loading of the computer's memory via the front panel. Later, assembly languages were used, followed by equation or formula translators such as FORTRAN. When it was dis- covered that computing involved mostly computing decisions and repetition, the language ALGOL (ALGOrithmic Language) was designed to express algorithms more clearly and conveniently. The need for a language to structure and represent all of the data and files in business data processing applications was filled by COBOL.

Architectures

At present (1978) we find the 8080, Z-80, 6502 and 6800 dominate personal computer architectures. Over the next two to three years we will find added to this list the 9900, 8086, Z-8000 and 6809. If the user of a personal computer sees a neat application system which only comes represented in 8080 code when he has a 6800, that user is effectively unable to run it without a recoding effort.

BASIC

Turning to high level languages, the machine independence of software becomes much greater. But current practices in the personal computing industry are far from machine independent. There is a de facto standard BASIC interpreter in existence, available on most 6502 and 8080 or Z-80 systems. This standard high level language is that defined by the Microsoft company.

But Microsoft BASIC is not the only interpreter in existence. A very prominent BASIC in terms of the number of users employing is the North Star BASIC interpreter. This interpreter is widely used on 8080 and Z-80 systems because of the wide availability of the small floppy disk systems manufactured by that firm. Buying a North Star disk peripheral for an S-100 bus system gets the user a limited operating system and the North Star BASIC.

The widely used BASIC interpreters could be used for a perfectly functional representation for the code of many programs. But such interpreters suffer from many inherent disadvantages.

The North Star BASIC interpreter and the Microsoft interpreter are inconsistent in a number of fundamental ways in areas of string handling and array dimensions. And these are but the two most prominent interpreters as seen from my point of view.

The slowness of execution is inherent in this type of interpreter. Many applications and systems programs cannot tolerate the lack of speed inherent in such interpreters.

More important, BASIC as presently implemented reflects an earlier state in the evolution of computer languages, circa the early 1960s, with innumerable ad hoc patches and fixups to add "features." Through the 1960s and early 1970s advances were made in the concept of what a computer language should be in order to be convenient to use and conducive to error free thinking and programming.

Finally, BASIC as implemented in most cases suffers from the lack of a compact externally available machine independent version of the compiled form of a program.

For the reasons just summarized, BASIC is not the ultimate form in which programs are best published.

Enter Pascal

A Pascal compiler was available and easily transferable to new machines through the use of the technique of "P-code" intermediate language representations. The task of making the compiler run on a totally new machine architecture was reduced to a relatively simple task of writing an emulator for the hypothetical "P-machine" which executes "P-code" as its machine language.

The UCSD Pascal project has created a nearly machine independent low cost operating system which includes Pascal as the principal high level language. The hardware dependent core has already been implemented and is readily available for LSI-11, 8080, Z-80 and 8085 processors. At this writing, in the small computer arena, three systems are available which come with UCSD Pascal as a key feature: an LSI-11 system packaged by Terak Corp and heavily used at UCSD, an 8085 processor with dual floppy drives manufactured by Northwest Microcomputer Systems, and a compact Z-80 system with dual floppy disks manufactured by Altos Computer Systems. Individual users who have 8080 floppy disk systems with the CP/M operating system and enough main memory get a floppy disk to bootstrap UCSD Pascal.

The nature of the implementation of Pascal compilers, and the UCSD Pascal in particular, leads to an important byproduct: by simply using the UCSD Pascal compiler as the mode of expression of applications programs to be published, it is possible to provide a compact, machine independent representation of programs which greatly simplifies the N-representation problem for the independent software distribution house.