The History Of Computing: The PASCAL Programming Language
Click Here === https://bltlly.com/2tfcSl
The first computer programming language was created in 1883, when a woman named Ada Lovelace worked with Charles Babbage on his very early mechanical computer, the Analytical Engine. While Babbage was concerned with simply computing numbers, Lovelace saw that the numbers the computer worked with could represent something other than just amounts of things. She wrote an algorithm for the Analytical Engine that was the first of its kind. Because of her contribution, Lovelace is credited with creating the first computer programming language. As different needs have arisen and new devices have been created, many more languages have followed.
1949: Assembly Language: First widely used in the Electronic Delay Storage Automatic Calculator, assembly language is a type of low-level computer programming language that simplifies the language of machine code, the specific instructions needed to tell the computer what to do.
1952: Autocode: Autocode was a generic term for a family of early computer programming languages. The first was developed by Alick Glennie for the Mark 1 computer at the University of Manchester in the U.K. Some consider autocode to be the first compiled computer programming language, meaning that it can be translated directly into machine code using a program called a compiler.
1957: Fortran: A computer programming language created by John Backus for complicated scientific, mathematical, and statistical work, Fortran stands for Formula Translation. It is the one of the oldest computer programming languages still used today.
1972: Smalltalk: Developed by Alan Kay, Adele Goldberg, and Dan Ingalls at Xerox Palo Alto Research Center, Smalltalk allowed computer programmers to modify code on the fly and also introduced other aspects now present in common computer programming languages including Python, Java, and Ruby.
1972: C: Developed by Dennis Ritchie at Bell Labs, C is considered by many to be the first high-level language. A high-level computer programming language is closer to human language and more removed from the machine code. C was created so that an operating system called Unix could be used on many different types of computers. It has influenced many other languages, including Ruby, C#, Go, Java, JavaScript, Perl, PHP, and Python.
1978: MATLAB: Developed by Cleve Moler. MATLAB stands for Matrix Laboratory. It is one of the best computer programming languages for writing mathematical programs and is mainly used in mathematics, research, and education. It can also be used to create two- and three-dimensional graphics.
1987: Perl: Perl was originally developed by Larry Wall in 1987 as a scripting language designed for text editing. Its purpose was to make report processing easier. It is now widely used for many purposes, including Linux system administration, Web development, and network programming.
1990: Haskell: Named after Haskell Brooks Curry, an American logician and mathematician. Haskell is called a purely functional computer programming language, which basically means that it is mostly mathematical. It is used by many industries, especially those that deal with complicated calculations, records, and number-crunching.
1991: Python: Designed by Guido Van Rossum, Python is easier to read and requires fewer lines of code than many other computer programming languages. It was named after the British comedy group Monty Python. Popular sites like Instagram use frameworks that are written in Python.
2003: Scala: Created by Martin Odersky. Scala is a computer programming language that combines functional programming, which is mathematical, with object-oriented programming, which is organized around data that controls access to code. Its compatibility with Java makes it helpful in Android development.
Pascal grew out of ALGOL, a programming language intended for scientific computing. Meeting in Zurich, an international committee designed ALGOL as a platform-independent language. This gave them comparatively free rein in the features they could design into ALGOL, but also made it more difficult to write compilers for it. Those were the days when many computers lacked hardware features that we now take for granted. Because many platforms lacked an ALGOL compiler, and ALGOL itself lacked pointers and many basic data types such as characters, the ALGOL language was never widely accepted. Scientists and engineers flocked to FORTRAN, a programming language which was available on many platforms. ALGOL mostly faded away except as a language for describing algorithms.
At the same time, Apple came out with its Macintosh series of computers. As Pascal was the preeminent structured programming language of the day, Apple chose Pascal as the standard programming language for the Mac. When programmers received the API and example code for Mac programming, it was all in Pascal.
From version 1.0 to 7.0 of Turbo Pascal, Borland continued to expand the language. One of the criticisms of the original version of Pascal was its lack of separate compilation for modules. Dr. Wirth even created a new programming language, Modula-2, to address that problem. Borland added modules to Pascal with its units feature.
However, this was not to be. In the 1970s, Dennis Ritchie and Brian Kernighan of AT&T Bell Laboratories created the C Programming Language. Ritchie then collaborated with Ken Thompson to design the UNIX operating system. At the time, AT&T had a government-sanctioned monopoly on telephone service in the United States. In return for the monopoly, its telephone business was regulated and it was prohibited from entering the computer business. AT&T, seeing no market for a research operating system, gave UNIX away to universities for free, complete with source code. Thus, a whole generation of computer science students learned C in their university courses on languages and operating systems. Slowly but surely, C began to filter into the computer programming world.
Pascal took a heavy hit in the 90s when several large companies focused on other programming languages. Microsoft for example focused on Visual Basic and C, and Apple migrated its APIs from Pascal to C and later to Objective C. Despite the lack of support from operating system producers, Pascal still retained a large following through Delphi and Free Pascal.
Also, Pascal remains preferred at many universities. In addition, Pascal was well-suited for teaching programming, and remains so. There is less overhead and fewer ways for a student to get a program into trouble. For teaching simple procedural programming, Pascal remains a good choice. Pascal has hung on longer in education outside the United States, and remains an official language of the International Informatics Olympiad. A basic programming background is useful in many technical occupations and Pascal is easier to learn than C/C++.
In order to produce programs that are readable, reliable, and can be easilymaintained or modified, one must use modular software design. This meansthat, instead of having a large collection of statements strung togetherin one partition of in-line code, we segment or divide the statements intological groups called modules. Each module performs one or twotasks, then passes control to another module. By breaking up the code into\"bite-sized chunks\", so to speak, we are able to better control the flow of data and control. This is especially true in large software systems. This section is organized as follows: 3.1. Overview of Modular Software Design 3.2. PASCAL Procedural Organization 3.3. Writing modular code in PASCAL. 3.4. Variables and Datatypes In Section 3.1, we discuss the basic justification and concepts associatedwith software modularity, and show how in-line code can be subdivided to support modular structure. Sections 3.2 and 3.3 contain a discussion of the PASCAL PROGRAM and PROCEDURE statements, and how they support software modularity. In Section 3.4, we show how constructscalled variables can be used to pass information to and from procedures.(This transfer of information is similar in concept to passing food in andout of a cafeteria window.)3.1. Overview of Modular Software Design.We begin with several definitions (Hint: These may be useful tolearn for a future exam) in support of a brief discussion of softwaredesign goals. We then progress to examples of code segmentation. Observation. In the early days of computer programming, when people coded programs in machine code (ones and zeroes), it was quite difficult to determine program function and structure from looking at the code. Humans tend to look at problems solved on a computer in a linguistic sort of way, i.e., expect some flow of control or data to be expressed in the programming language. Ones and zeros don't tell us much, and they certainly give little indication of program structure or data/control flow. Definition. Spaghetti code is the term used for a computer program that is not well structured and tends to have highly tangled flows of data and control. Example. Most assembly language code and machine code are good examples of spaghetti code. The following sample of machine code is illustrative: 110101010010001000111001001 010101001000100001011101001 000111001101110001101101010 001111010010010101011001010 001010101111110100101010001 Clearly, there is very little discernable structure in this type of code. Definition. In programming languages, the semantic gap is the difference between the language you use to program the hardware (machine code) and the language you would like to use to program the computer as a system. We call the latter, more abstract language a high-level language or HLL. Observation. Throughout the history of computing, there have been at least hundreds of attempts to make computer programming languages something like English -- easy to read and implicitly easy to understand. PASCAL is the result of one such effort. The co-creator of PASCAL, Nicholas Wirth, wanted to have an HLL that was easy to learn, read, and write. So, he designed PASCAL around the following concepts: PASCAL should close or significantly narrow the semantic gap. Every PASCAL statement should be like a clause in an English-language sentence. The PASCAL program can be thought of as a sentence in English (namely, a concatenation of clauses). Names of procedures, data structures, and variables in PASCAL should be easily recognizable. Remark. PASCAL facilitates modular coding via: Encapsulating code in PROCEDUREs and FUNCTIONs that constitute a PROGRAM; The use of BEGIN and END statements to define a functional block of code; Strict variable typing (i.e., assigning datatypes such as integer, real, or string to variables) in support of parameter passing between procedures; and User-friendly syntax that narrows (but does not close) the semantic gap. In the 1960s and 1970s, software designers were faced with large accumulationsof spaghetti code from preceding years. Programs were becoming more complex,and it was more difficult to keep software running correctly. After trying various strategies for organizing this morass of code, the followingguidelines for software development emerged: Clarity - Code must be easily understandable by humans, and variable/function names should have obvious meaning. Modularity - Programs must be divided into small modules. Concision - Modules must perform a few tasks only, using compact (but not cryptic) notation. Reliability - Programs must run correctly, in a repeatable manner. Ease of Maintenance - Software must be easy to maintain and modify, and must be accompanied by comprehensive documentation. Clearly written software is often an elusive goal, because technical programmers tend to prefer cryptic variable names (e.g., PR2CD$ instead of clear notation such as PRICE). Furthermore, there are many programmers who do not have good writing skills, and definitely don't enjoy writing documentation. Thus, to be a good programmer, must concentrate on improving the quality of your software not only through careful design and programming, but also through careful documentation. Modular code is easy to produce from a design, but often hard to produce from spaghetti code. We discuss this process below, where we show general examples of code modularization. Modern software development tools facilitate the generation of modular code, and often check syntax of programming statements, with some variable type checking possible. Thus, there exists a variety of evolving techniques for software design in modular form. Concisely written code is important to ensuring proper program function. For example, if your code is so tangled that you can't determine what it does, how easy will it be for others to understand your work It is also important not to create excessively complicated procedures, which are difficult to debug and maintain, and thus tend to be unreliable. Software reliability follows from rigorous software design, checking one's work, and carefully debugging and testing the software you write in an incremental fashion. By incremental development, we mean the construction of a software system and testing of that software on a piece-by-piece basis. For example, after you write the lowest-level routines, you should test them all thoroughly before you write the functions or procedures that call those routines. Ease of maintenance follows directly from clarity and concision. For example, if code can be clearly understood, then you or others would have no trouble understanding and modifying its functionality. Additionally, concise code is easier to maintain because (a) there is less code to examine and modify, (b) there is less probability of making mistakes in modifying the code, and (c) debugging is easier due to limited scope of functionality. Now, let's examine some techniques for the conversion of spaghetti code to modular form. Spaghetti code is usually written piecewise, in the sense that a programmermight write Lines 1-50 on Monday, Lines 51-107 on Tuesday, and soforth. Because humans tend to group their thoughts, there is usuallysome locality to the spaghetti code. This means that dataflowand the flow of control (i.e., statement or expression execution) tendto cluster in space (i.e., in the code and in memory) and in time. There exists a classof computer programs (usually, as part of a suite of softwaredevelopment tools), called performance analysis software, dependency checking software, etc. Such programs accept asinput the spaghetti code and produce a calling tree thatillustrates control and data dependencies among modulesin the software system. For example, consider the spaghetti code shown in Figure 3.1a, wherethe tangled lines denote flow of control.By partitioning the code of Figure 3a into variousmodules, each of which execute two or three operations or tasks, itis possible to produce the modular organization depicted in Figure 3b. Figure 3.1. General concept of modularizing spaghetti code: (a)schematic illustration of control transfers (arcs) in spaghetti code;(b) procedure segmentation according to locaity of control transfer.A main program that calls three procedures is produced. 153554b96e