Chapter 4 computer Programs and Languages
Developing a computer program • Programs are a set (series) of instructions • Programmers determine • The instructions to be performed. • The order in which those instructions are to be performed. • The data required to perform those instructions.
Algorithms • The most basic tools that are used to develop the problem-solving logic • steps are unambiguous • a finite number of steps • that repeat (iterate) • require decisions (logic and comparison) until the task is completed • Different algorithms may accomplish the same task, with a different set of instructions, in more or less the same time, space, and efforts.
Flowcharts • A pictorial representation of an algorithm • steps in the form of different shapes of boxes • logical flow (sequence) by interconnecting arrows • help the programmer in understanding the logic of the program • Flowcharts outline the general procedure • Comparable to blueprint of a building • draws a flowchart prior to writing a program • standard flowchart symbols prescribed by the American National Standard Institute (ANSI).
2 x 200 • 200 • 200
Computer languages • Natural languages are ambiguous, vaguely structured (vs. well defined), and has very large and ever changing (vs. well defined and a stable set) vocabularies • Machine language (Low level ) • Difficult to understand • Assembly language (Low level ) • Symbolic instructions of executable machine codes • High level language • Some rules similar to spoken
Evolution • Programming languages have evolved tremendously • hundreds of different languages • user-friendly and more powerful • five generations • First Generation: Machine/Native Language • Binary- every instruction and data using 0/1 • Instruction consists of two parts • Operation & Operand- where to find or store the data (operation) • Fast and efficient, executed directly on the CPU • Difficult for humans to read, write, and debug
Evolution … • Second generation- Assembly Language • programs can be written symbolically, using English words (also known as mnemonics) Assembler?
Evolution … • Third Generation • High level, general-purpose • FORTRAN, LISP, COBOL, ALGOL • Ada, Basic, C, C++, Java, Pascal, Smalltalk • Easier for humans to read, write, debug • Compiler translates into machine code before running • Interpreter translates into machine code at runtime
Evolution … • Fourth Generation • Specification languages, query languages, report generators, application generators • Maple, Mathematica, Postscript, SPSS, SQL • Fifth Generation • Solve problems using constraints rather than algorithms, used in Artificial Intelligence • Prolog
Assignments IOA, IA, GA, Case !@#$
A family tree of languages Fortran LISP Cobol Algol 60 BASIC PL/1 Simula ML Algol 68 C Scheme Pascal Smalltalk Dylan Ada Prolog Perl C++ Modula 3 Java Python Ruby C#
BASIC (1964) • Developed at Dartmouth in 1960’s by Tom Kurtz, John Kemeny, and a succession of undergraduates; first ran in 1964. • Beginner’s All-purpose Symbolic Instructional Code • Intended to introduce students in non-scientific disciplines to computing. • Influenced by FORTRAN and ALGOL. • Major goal to simplify user interface: • Simplicity chosen over efficiency • Time sharing over punched cards • Distinctions such as intvs real eliminated • Automatic defaults for declarations, values, arrays, output format, etc. • Clear error messages • Students had access to computers at all times • No universal BASIC standard: • ANSI (American National Standards Institute) is a minimal standard. • True Basic – Kemeny’s company