The Evolution of Programming Languages
First Generation
The first generation of Programming languages is machine language, which required the use of binary symbols (0s and 1s). Because this is the language of the CPU, text file that are translated into binary sets can be read by almost every computer system platform.
Second Generation
Developers of programming languages attempted to overcome some of the difficulties inherent in machine language by replacing the binary digits with symbols that programmers could more easily understand. These second-generation languages use codes like A for add, MCV for move, and so on. Another term for these languages in assembly language, which comes from the programs(called assemblers) used to translate it into machine code. Systems software programs such as OSs and utility programs are often written in an assembly languages.
Third Generation
With third-generation and higher-level programming languages, each statement in the languages translates into several instruction in machine language. A special software program called a compiler converts the programmers' s source code into the machine-languages instructions consisting of binary digits. A compiler creates a two-stage process for program execution. First, it translates the program into a machine language; second, the CPU executes that program. Another approach is to use an interpreter, which is a language translator that converts each statement in a programming language into machine language and executes the statement, one at a time. An interpreter does not produce a complete machine-language program. After the statement executes, the machine-language statement is discarded, the process continues for the next statement, and so on.
Fourth Generation
Fourth-generation programming languages emphasize what output results are desired rather than how programming statements are to be written. As a result ,many managers and executives with little or no training in computers and programming are using fourth-generation languages(4GLs). Languages for accessing information in a database are often fourth-generation languages. Prime examples include PowerBuilder, Delphi, Essbase, Forte, Focus, Powerhouse, SAS, and many other. Natural is a 4GL that can be used with Windows, UNIX, or Linux. Another popular fourth-generation languages is called Structured Query Language(SQL), which is often used to perform database queries and manipulations.
Overview of Programming Pardigms
Imperative Programming Language
The hardware implementation of almost all computers is imperative; nearly all computer hardware is designed to execute machine code, which is native to the computer, written in the imperative style. From this low-level perspective, the program state is defined by the contents of memory, and the statements are instructions in the native machine language of the computer. Higher-level imperative languages use variables and more complex statements, but still follow the same paradigm. Recipes and process checklists, while not computer programs, are also familiar concepts that are similar in style to imperative programming; each step is an instruction, and the physical world holds the state. Since the basic ideas of imperative programming are both conceptually familiar and directly embodied in the hardware, most computer languages are in the imperative style.
Assignment statements, in general, perform an operation on information located in memory and store the results in memory for later use. High-level imperative languages, in addition, permit the evaluation of complex expressions, which may consist of a combination of arithmetic operations and function evaluations, and the assignment of the resulting value to memory. Looping statements allow a sequence of statements to be executed multiple times. Loops can either execute the statements they contain a predefined number of times, or they can execute them repeatedly until some condition changes. Conditional branching statements allow a block of statements to be executed only if some condition is met. Otherwise, the statements are skipped and the execution sequence continues from the statement following the block. Unconditional branching statements allow the execution sequence to be transferred to some other part of the program. These include the jump, called "goto" in many languages, and the subprogram, or procedure, call.
Functional Programming Language
Functional programming is very different from imperative programming. The most significant differences stem from the fact that functional programming avoids side effects, which are used in imperative programming to implement state and I/O. Pure functional programming disallows side effects completely. Disallowing side effects provides for referential transparency, which makes it easier to verify, optimize, and parallelize programs, and easier to write automated tools to perform those tasks.
Higher order functions are rarely used in older imperative programming. Where a traditional imperative program might use a loop to traverse a list, a functional style would often use a higher-order function, map, that takes as arguments a function and a list, applies the function to each element of the list, and returns a list of the results.
Logic Programming
The programmer is responsible, not only for ensuring the truth of programs, but also for ensuring their efficiency. In many cases, to achieve efficiency, the programmer needs to be aware of and to exploit the problem-solving behavior of the theorem-prover. In this respect, logic programming is like conventional imperative programming, using programs to control the behaviour of a program executor. However, unlike imperative programs, which have only a procedural interpretation, logic programs also have a declarative, logical interpretation, which helps to ensure their correctness. Moreover, such programs, being declarative, are at a higher conceptual level than purely imperative programs; and their program executers, being theorem-provers, operate at a higher conceptual level than conventional compilers and interpreters.
OOP
Object-oriented programming (OOP) is a programming paradigm that uses "objects" and their interactions to design applications and computer programs. It is based on several techniques, including inheritance, modularity, polymorphism, and encapsulation. It was not commonly used in mainstream software application development until the early 1990s. Many modern programming languages now support OOP.
Concurrent
Concurrent computing is the concurrent (simultaneous) execution of multiple interacting computational tasks. These tasks may be implemented as separate programs, or as a set of processes or threads created by a single program. The tasks may also be executing on a single processor, several processors in close proximity, or distributed across a network. Concurrent computing is related to parallel computing, but focuses more on the interactions between tasks. Correct sequencing of the interactions or communications between different tasks, and the coordination of access to resources that are shared between tasks, are key concerns during the design of concurrent computing systems.
Wednesday, August 29, 2007
Comp. Sci.
Posted by
Slowpoke
at
4:51 PM
Subscribe to:
Post Comments (Atom)

No comments:
Post a Comment