You are on page 1of 14

programming language generations

- In the computer industry, these abbreviations are widely used to represent major steps or "generations" in the evolution of programming languages. 1GL or first-generation language was (and still is) machine language or the level of instructions and data that the processor is actually given to work on (which in conventional computers is a string of s and !s). 2GL or second-generation language is assembler (sometimes called "assembly") language. " typical #$% instruction looks like this&
ADD 12,8

"n assembler converts the assembler language statements into machine language. 3GL or third-generation language is a "high-level" programming language, such as '%(I, ), or *ava. *ava language statements look like this&
public boolean handleEvent (Event evt) { switch (evt.id) { case Event.ACTI !"E#E!T$ { i% (&T'( )e& .e*uald(evt.a'+)) {

" compiler converts the statements of a specific high-level programming language into machine language. (In the case of *ava, the output is called bytecode, which is converted into appropriate machine language by a *ava virtual machine that runs as part of an operating system platform.) " +$% language re,uires a considerable amount of programming knowledge. 4GL or fourth-generation language is designed to be closer to natural language than a +$% language. %anguages for accessing databases are often described as -$%s. " -$% language statement might look like this&
51666 E,T-ACT A.. C/0T 1E-0 23E-E &4-E#I /0 4/-C3A0E0& T TA. 1 -E T3A!

5GL or fifth-generation language is programming that uses a visual or graphical development interface to create source language that is usually compiled with a +$% or -$% language compiler. .icrosoft, /orland, I/., and other companies make 0$% visual programming products for developing applications in *ava, for e1ample. 2isual programming allows you to easily envision object-oriented programming class hierarchies and drag icons to assemble program components. )3456I/75368& /rian 9enry %"85 7':"5;:& + "pr # <

Do you have something to add to this definition? Let us know. 8end your comments to techterms=whatis.com

object-oriented programming
& 3bject-oriented programming (33') is a programming language model organi>ed around "objects" rather than "actions" and data rather than logic. 9istorically, a program has been viewed as a logical procedure that takes input data, processes it, and produces output data. 5he programming challenge was seen as how to write the logic, not how to define the data. 3bject-oriented programming takes the view that what we really care about are the objects we want to manipulate rather than the logic re,uired to manipulate them. ;1amples of objects range from human beings (described by name, address, and so forth) to buildings and floors (whose properties can be described and managed) down to the little widgets on your computer desktop (such as buttons and scroll bars). 5he concepts and rules used in object-oriented programming provide these important benefits&

5he concept of a data class makes it possible to define subclasses of data objects that share some or all of the main class characteristics. )alled inheritance, this property of 33' forces a more thorough data analysis, reduces development time, and ensures more accurate coding. 8ince a class defines only the data it needs to be concerned with, when an instance of that class (an object) is run, the code will not be able to accidentally access other program data. 5his characteristic of data hiding provides greater system security and avoids unintended data corruption. 5he definition of a class is reuseable not only by the program for which it is initially created but also by other object-oriented programs (and, for this reason, can be more easily distributed for use in networks). 5he concept of data classes allows a programmer to create any new data type that is not already defined in the language itself.

8imula was the first object-oriented programming language. *ava, 'ython, )??, 2isual /asic .4;5 and 6uby are the most popular 33' languages today. 5he *ava programming language is designed especially for use in distributed applications on corporate networks and the Internet. 6uby is used in many @eb applications. )url, 8malltalk, :elphi and ;iffel are also e1amples of object-oriented programming languages.
programming language

Introduction
)omputer science has made huge strides since it became recogni>ed as a distinct academic discipline in the !AB s. 3ne of the fundamental problems it has addressed is how to translate the problems that people need solved into a format that computers can process. " variety of powerful and ingenious solutions have been applied to this problem. 'rogramming languages are human-engineered languages developed to convey instructions to machinesC they are based on rules of synta1 and semantics. 5housands of different programming languages have been developed, used, and discarded. 5he struggle for survival among programming languages is ruthless. %anguages arise, are found wanting, and are soon replaced by more clever or more fle1ible offspring. Initially, the evolution of programming languages was driven by a ,uest for efficient translation of human language to machine code. 5his produced languages with high levels of abstraction, which hid the hardware and used representations that are convenient and comfortable to human programmers. "t some point, another critical aspect of language design became managing the comple1ity of programs. "s programs became larger and more sophisticated, developers reali>ed that some language types were easier to support in large systems. 5his has lead to greater use of objected-oriented and eventdriven programming languages.

History
3ne problem in discussing the history of computer science is where to start. *ac,uard looms used early versions of punch cards, but they are not computing devices in any modern sense. 'rogramming languages as understood today became possible when the

work of "lan 5uring and "lon>o )hurch in the !A+ s and - s provided formal mathematical means to e1press computational procedures. 5he first efforts in this direction consisted of painstakingly crafting instructions as strings of ones and >eros (or machine code). 9umans do not e1cel at this type of logic, and these first generation languages were ,uickly replaced by a second generation of assembly languages. "ssembly languages use low-level mnemonics to model the underlying hardware and specify computations. In this sense, they are different than the other languages discussed here, because assembler code is a first level abstraction of the hardware. Dor e1ample, a typical statement in assembler to command the processor to move the he1adecimal number 1E (decimal !#E) into processor register r# might be& mov r#, E h "lthough programming in assembly language is not as difficult and error prone as stringing together ones and >eros, it is slow and cumbersome. /y the !A0 s, modern general purpose programming languages had arrived to address this difficulty, including D3656"4, %I8', and )3/3%. 5hese were known as third-generation languages.

Overview of Types
"s might be e1pected in a dynamic and evolving field, there is no single standard for classifying programming languages. In fact, do>ens of categories e1ist. 3ne of the most fundamental ways programming languages are characteri>ed is by programming paradigm. " programming paradigm provides the programmerFs view of code e1ecution. 5he most influential paradigms are e1amined in the ne1t three sections, in appro1imate chronological order. ;ach of these paradigms represents a mature worldview, with enormous amounts of research and effort e1pended in their development. " given language is not limited to use of a single paradigm. *ava, for e1ample, supports elements of both procedural and object-oriented programming, and it can be used in a concurrent, event-driven way. 'rogramming paradigms continue to grow and evolve, as new generations of hardware and software present new opportunities and challenges for software developers.

Procedura Programming Languages


'rocedural programming specifies a list of operations that the program must complete to reach the desired state. 5his one of the simpler programming paradigms, where a program is represented much like a cookbook recipe. ;ach program has a starting state, a list of operations to complete, and an ending point. 5his approach is also known as imperative programming. Integral to the idea of procedural programming is the concept of a procedure call. 'rocedures, also known as functions, subroutines, or methods, are small sections of code that perform a particular function. " procedure is effectively a list of computations to be

carried out. 'rocedural programming can be compared to unstructured programming, where all of the code resides in a single large block. /y splitting the programmatic tasks into small pieces, procedural programming allows a section of code to be re-used in the program without making multiple copies. It also makes it easier for programmers to understand and maintain program structure. 5wo of the most popular procedural programming languages are D3656"4 and /"8I).

!tructured Programming Languages


8tructured programming is a special type of procedural programming. It provides additional tools to manage the problems that larger programs were creating. 8tructured programming re,uires that programmers break program structure into small pieces of code that are easily understood. It also frowns upon the use of global variables and instead uses variables local to each subroutine. 3ne of the well known features of structural programming is that it does not allow the use of the $353 statement. It is often associated with a "top-down" approach to design. 5he top-down approach begins with an initial overview of the system that contains minimal details about the different parts. 8ubse,uent design iterations then add increasing detail to the components until the design is complete. 5he most popular structured programming languages include ), "da, and 'ascal.

"#$ect%"riented Programming Languages


3bject-oriented programming is one the newest and most powerful paradigms. In objectoriented programs, the designer specifies both the data structures and the types of operations that can be applied to those data structures. 5his pairing of a piece of data with the operations that can be performed on it is known as an object. " program thus becomes a collection of cooperating objects, rather than a list of instructions. 3bjects can store state information and interact with other objects, but generally each object has a distinct, limited role. 5here are several key concepts in object-oriented programming (33'). " class is a template or prototype from which objects are created, so it describes a collection of variables and methods (which is what functions are called in 33'). 5hese methods can be accessible to all other classes (public methods) or can have restricted access (private methods). 4ew classes can be derived from a parent class. 5hese derived classes inherit the attributes and behavior of the parent (inheritance), but they can also be e1tended with new data structures and methods. 5he list of available methods of an object represents all the possible interactions it can have with e1ternal objects, which means that it is a concise specification of what the object does. 5his makes 33' a fle1ible system, because an object can be modified or e1tended with no changes to its e1ternal interface. 4ew classes can be added to a system that uses the interfaces of the e1isting classes. 3bjects typically communicate with each

other by message passing. " message can send data to an object or re,uest that it invoke a method. 5he objects can both send and receive messages. "nother key characteristic of 33' is encapsulation, which refers to how the implementation details of a particular class are hidden from all objects outside of the class. 'rogrammers specify what information in an object can be shared with other objects. " final attribute of object oriented programming languages is polymorphism. 'olymorphism means that objects of different types can receive the same message and respond in different ways. 5he different objects need to have only the same interface (that is, method definition). 5he calling object (the client) does not need to know e1actly what type of object it is calling, only that is has a method of a specific name with defined arguments. 'olymorphism is often applied to derived classes, which replace the methods of the parent class with different behaviors. 'olymorphism and inheritance together make 33' fle1ible and easy to e1tend. 3bject-oriented programming proponents claim several large advantages. 5hey maintain that 33' emphasi>es modular code that is simple to develop and maintain. 33' is popular in larger software projects, because objects or groups of objects can be divided among teams and developed in parallel. It encourages careful up-front design, which facilitates a disciplined development process. 3bject-oriented programming seems to provide a more manageable foundation for larger software projects. 5he most popular object-oriented programming languages include *ava, 2isual /asic, )G, )??, and 'ython.

"ther Paradigms
)oncurrent programming provides for multiple computations running at once. 5his often means support for multiple threads of program e1ecution. Dor e1ample, one thread might monitor the mouse and keyboard for user input, although another thread performs database accesses. 'opular concurrent languages include "da and *ava. Dunctional programming languages define subroutines and programs as mathematical functions. 5hese languages are most fre,uently used in various types of mathematical problem solving. 'opular functional languages include %I8' and .athematica. ;vent-driven programming is a paradigm where the program flow is determined by user actions. 5his is in contrast to batch programming, where flow is determined when the program is written. ;vent-driven programming is used for interactive programs, such as word processors and spreadsheets. 5he program usually has an event loop, which repeatedly checks for interesting events, such as a keypress or mouse movement. ;vents cause the e1ecution of trigger functions, which process the events.

5wo final paradigms to discuss are compiled languages and interpreted languages. )ompiled languages use a program called a compiler to translate source code into machine instructions, usually saved to a separate e1ecutable file. Interpreted languages, in contrast, are programs that can be e1ecuted from directly from source code by a special program called an interpreter. 5his distinction refers to the implementation, rather than the language design itself. .ost software is compiled, and in theory, any language can be compiled. %I8' a well known interpreted language. 8ome popular implementations, such as *ava and )G, use just-in-time compilation. 8ource programs are compiled into bytecode, which is an e1ecutable for an abstract virtual machine. "t run time, the bytecode is compiled into native machine code.

Summary
'rogramming languages are artificial languages designed to control computers and many man hours have been spent to develop new and improved languages. 5here are thousands of different programming languages, but most conform to a few basic paradigms. 'rocedural programming languages divide a programFs source code into smaller modules. 8tructured programming languages impose more constraints on program organi>ation and flow, including a ban on $353 statements. 3bject-oriented programs organi>e data structures and code into objects, so that a program becomes a group of cooperating objects. Hey features of the object-oriented paradigm are classes, inheritance, data encapsulation, and polymorphism.

References

&ooks
:avid $elernter, 8uresh *agannathan& Programming Linguistics, 5he .I5 'ress !AA . 8hriram Hrishnamurthi& Programming Languages: Application and Interpretation. "vailable online at& http&((www.cs.brown.edu(Isk('ublications(/ooks('rog%angs(

'e#sites
)omputer %anguages 9istory graphical chart http&((www.levene>.com(lang(history.html 9istory of )omputer %anguages http&((hopl.murdoch.edu.au( "n Introduction to 'rogramming %anguages http&((www.acooke.org(andrew(writing(lang.html

(istory of )rogramming anguages

Drom @ikipedia, the free encyclopedia

Before 1940
5he first programming languages predate the modern computer. "t first, the languages were codes. 5he *ac,uard loom, invented in !E !, used holes in punched cards to represent sewing loom arm movements in order to generate decorative patterns automatically. :uring a nine-month period in !E-#-!E-+, "da %ovelace translated the memoir of Italian mathematician %uigi .enabrea about )harles /abbageFs newest proposed machine, the "nalytical ;ngine. @ith the article, she appended a set of notes which specified in complete detail a method for calculating /ernoulli numbers with the ;ngine, recogni>ed by some historians as the worldFs first computer program.J!K 9erman 9ollerith reali>ed that he could encode information on punch cards when he observed that train conductors encode the appearance of the ticket holders on the train tickets using the position of punched holes on the tickets. 9ollerith then encoded the !EA census data on punch cards. 5he first computer codes were speciali>ed for their applications. In the first decades of the # th century, numerical calculations were based on decimal numbers. ;ventually it was reali>ed that logic could be represented with numbers, not only with words. Dor e1ample, "lon>o )hurch was able to e1press the lambda calculus in a formulaic way. 5he 5uring machine was an abstraction of the operation of a tape-marking machine, for e1ample, in use at the telephone companies. 5uring machines set the basis for storage of programs as data in the von 4eumann architecture of computers by representing a machine through a finite number. 9owever, unlike the lambda calculus, 5uringFs code does not serve well as a basis for higher-level languagesLits principal use is in rigorous analyses of algorithmic comple1ity. %ike many "firsts" in history, the first modern programming language is hard to identify. Drom the start, the restrictions of the hardware defined the language. 'unch cards allowed E columns, but some of the columns had to be used for a sorting number on each card. D3656"4 included some keywords which were the same as ;nglish words, such as "ID", "$353" (go to) and ")345I47;". 5he use of a magnetic drum for memory meant that computer programs also had to be interleaved with the rotations of the drum. 5hus the programs were more hardware-dependent. 5o some people, what was the first modern programming language depends on how much power and human-readability is re,uired before the status of "programming language" is granted. *ac,uard looms and )harles /abbageFs :ifference ;ngine both had simple, e1tremely limited languages for describing the actions that these machines should perform. 3ne can even regard the punch holes on a player piano scroll as a limited domain-specific language, albeit not designed for human consumption.

[edit] T e 1940s
In the !A- s, the first recogni>ably modern, electrically powered computers were created. 5he limited speed and memory capacity forced programmers to write hand tuned assembly language programs. It was soon discovered that programming in assembly language re,uired a great deal of intellectual effort and was error-prone. In !A-E, Honrad Muse published a paper about his programming language 'lankalkNl.J!K 9owever, it was not implemented in his lifetime and his original contributions were isolated from other developments. 8ome important languages that were developed in this period include&

!A-+ - 'lankalkNl (Honrad Muse) !A-+ - ;4I") coding system !A-A - )-!

[edit] T e 19!0s and 19"0s


In the !A0 s, the first three modern programming languages whose descendants are still in widespread use today were designed&

D3656"4 (!A00), the "*"+mula ,+-.slator", invented by *ohn /ackus et al.C %I8' J!A0EK, the "L/!t Processor", invented by *ohn .c)arthy et al.C )3/3%, the 0"mmon &usiness "riented Language, created by the 8hort 6ange )ommittee, heavily influenced by $race 9opper.

"nother milestone in the late !A0 s was the publication, by a committee of "merican and ;uropean computer scientists, of "a new language for algorithms"C the ALGOL 60 Report (the "-LG"rithmic Language"). 5his report consolidated many ideas circulating at the time and featured two key language innovations&

nested block structure& code se,uences and associated declarations could be grouped into blocks without having to be turned into separate, e1plicitly named proceduresC le1ical scoping& a block could have its own private variables, procedures and functions, invisible to code outside that block, i.e. information hiding.

"nother innovation, related to this, was in how the language was described&

a mathematically e1act notation, /ackus-4aur Dorm (/4D), was used to describe the languageFs synta1. 4early all subse,uent programming languages have used a variant of /4D to describe the conte1t-free portion of their synta1.

"lgol B was particularly influential in the design of later languages, some of which soon became more popular. 5he /urroughs large systems were designed to be programmed in an e1tended subset of "lgol. "lgolFs key ideas were continued, producing "%$3% BE&

synta1 and semantics became even more orthogonal, with anonymous routines, a recursive typing system with higher-order functions, etc.C not only the conte1t-free part, but the full language synta1 and semantics were defined formally, in terms of 2an @ijngaarden grammar, a formalism designed specifically for this purpose.

"lgol BEFs many little-used language features (e.g. concurrent and parallel blocks) and its comple1 system of syntactic shortcuts and automatic type coercions made it unpopular with implementers and gained it a reputation of being difficult. 4iklaus @irth actually walked out of the design committee to create the simpler 'ascal language. 8ome important languages that were developed in this period include&

!A0! - 6egional "ssembly %anguage !A0# - "utocode !A0- - D3656"4 !A0- - I'% (forerunner to %I8') !A00 - D%3@-."5I) (forerunner to )3/3%) !A0< - )3.56"4 (forerunner to )3/3%) !A0E - %I8' !A0E - "%$3% 0E !A0A - D")5 (forerunner to )3/3%) !A0A - )3/3% !AB# - "'% !AB# - 8imula !AB# - 843/3% !AB+ - )'% (forerunner to )) !AB- - /"8I) !AB- - '%(I !AB< - /)'% (forerunner to ))

[edit] 19"#$19#%& esta'(is in) fundamenta( paradi)ms


5he period from the late !AB s to the late !A< s brought a major flowering of programming languages. .ost of the major language paradigms now in use were invented in this period&

!imu a, invented in the late !AB s by 4ygaard and :ahl as a superset of "lgol B , was the first language designed to support object-oriented programming.

0, an early systems programming language, was developed by :ennis 6itchie and Hen 5hompson at /ell %abs between !ABA and !A<+. !ma ta k (mid !A< s) provided a complete ground-up design of an objectoriented language. Pro og, designed in !A<# by )olmerauer, 6oussel, and Howalski, was the first logic programming language. 1L built a polymorphic type system (invented by 6obin .ilner in !A<+) on top of %isp, pioneering statically typed functional programming languages.

;ach of these languages spawned an entire family of descendants, and most modern languages count at least one of them in their ancestry. 5he !AB s and !A< s also saw considerable debate over the merits of "structured programming", which essentially meant programming without the use of $oto. 5his debate was closely related to language design& some languages did not include $353, which forced structured programming on the programmer. "lthough the debate raged hotly at the time, nearly all programmers now agree that, even in languages that provide $353, it is bad programming style to use it e1cept in rare circumstances. "s a result, later generations of language designers have found the structured programming debate tedious and even bewildering. 8ome important languages that were developed in this period include&

!ABE - %ogo !A< - 'ascal !A< - Dorth !A<# - ) !A<# - 8malltalk !A<# - 'rolog !A<+ - .% !A<0 - 8cheme !A<E - 8O% (initially only a ,uery language, later e1tended with programming constructs)

[edit] T e 19%0s& conso(idation* modu(es* performance


5he !AE s were years of relative consolidation. )?? combined object-oriented and systems programming. 5he 7nited 8tates government standardi>ed "da, a systems programming language intended for use by defense contractors. In *apan and elsewhere, vast sums were spent investigating so-called fifth-generation programming languages that incorporated logic programming constructs. 5he functional languages community moved to standardi>e .% and %isp. 6ather than inventing new paradigms, all of these movements elaborated upon the ideas invented in the previous decade. 9owever, one important new trend in language design was an increased focus on programming for large-scale systems through the use of modules, or large-scale

organi>ational units of code. .odula, "da, and .% all developed notable module systems in the !AE s. .odule systems were often wedded to generic programming constructs---generics being, in essence, parameteri>ed modules (see also polymorphism in object-oriented programming). "lthough major new paradigms for programming languages did not appear, many researchers e1panded on the ideas of prior languages and adapted them to new conte1ts. Dor e1ample, the languages of the "rgus and ;merald systems adapted object-oriented programming to distributed systems. 5he !AE s also brought advances in programming language implementation. 5he 6I8) movement in computer architecture postulated that hardware should be designed for compilers rather than for human assembly programmers. "ided by processor speed improvements that enabled increasingly aggressive compilation techni,ues, the 6I8) movement sparked greater interest in compilation technology for high-level languages. %anguage technology continued along these lines well into the !AA s. 8ome important languages that were developed in this period include&

!AE - )?? (as ) with classes) !AE+ - "da !AE- - )ommon %isp !AE0 - ;iffel !AEB - ;rlang !AE< - 'erl !AEE - 5cl !AEA - D% (/ackus)

[edit] T e 1990s& t e Internet a)e


5he !AA s saw no fundamental novelty, but much recombination as well as maturation of old ideas. " big driving philosophy was programmer productivity. .any "rapid application development" (6":) languages emerged, which usually came with an I:;, garbage collection, and were descendants of older languages. "ll such languages were object-oriented. 5hese included 3bject 'ascal, 2isual /asic, and *ava. *ava in particular received much attention. .ore radical and innovative than the 6": languages were the new scripting languages. 5hese did not directly descend from other languages and featured new synta1es and more liberal incorporation of features. .any consider these scripting languages to be more productive than even the 6": languages, but often because of choices that make small programs simpler but large programs more difficult to write and maintain.Jcitation neededK 4evertheless, scripting languages came to be the most prominent ones used in connection with the @eb. 8ome important languages that were developed in this period include&

!AA - 9askell !AA! - 'ython !AA+ - 6uby !AA+ - %ua !AA- - )%38 (part of "48I )ommon %isp) !AA0 - *ava !AA0 - :elphi (3bject 'ascal) !AA0 - *ava8cript !AA0 - '9' !AA< - 6ebol !AAE - 2isual /asic !AAA - :

[edit] +urrent trends


'rogramming language evolution continues, in both industry and research. 8ome of the current trends include&

.echanisms for adding security and reliability verification to the language& e1tended static checking, information flow control, static thread safety. "lternative mechanisms for modularity& mi1ins, delegates, aspects. )omponent-oriented software development. .etaprogramming, reflection or access to the abstract synta1 tree Increased emphasis on distribution and mobility. Integration with databases, including P.% and relational databases. 8upport for 7nicode so that source code (program te1t) is not restricted to those characters contained in the "8)II character setC allowing, for e1ample, use of non-%atin-based scripts or e1tended punctuation. P.% for graphical interface (P7%, P".%).

8ome important languages developed during this period include&


# # # # # # # # #

! - )G ! - 2isual /asic .4;5 # - DG + - 8cala + - Dactor B - @indows 'ower 8hell < - )lojure < - $roovy A - $o

References
2 *. Duegi and *. Drancis (3ctober-:ecember # +), "%ovelace Q /abbage and the creation of the !E-+ FnotesF.", Annals of the History of Computing 25 (-),

,-terna( (in.s

5he 9istory of 'rogramming %anguages by :iarmuid 'igott 9istory and evolution of programming languages. $raph of programming language history 5opics in history and comparing programming languages by :ennie 2an 5assel.

6etrieved from "http&((en.wikipedia.org(wiki(9istoryRofRprogrammingRlanguages" )ategories& %ists of programming languages S 9istory of software 9idden categories& "ll articles with unsourced statements S "rticles with unsourced statements from *une # A

'hat )ro# em gave #irth to )rogramming anguages?


/efore high level programming languages e1isted, computers were programmed one instruction at a time using binary or he1. 5his was a tedious job and there were a lot of errors. 'rograms were difficult to read, and modification was e1tremely difficult because all programs had to be written using absolute addressing. 3bviously, this job did not attract many people, so there was a shortage of programmers. ;1pensive computers sat idle for long periods of time while software was being developed. 8oftware often cost two to four times as much as the computer. 5his led to the development of assemblers and assembly languages. 'rogramming became somewhat easier, but many users still wanted floating point numbers and array inde1ing. 8ince these capabilities were not supported in hardware, high level languages had to be developed to support them. 8ources& ")oncepts of 'rogramming %anguages" by 6obert @. 8ebesta, 5he /enjamin()ummings 'ublishing )ompany, Inc, !AA+T 2ideo, "5he .achine that )hanged the @orld", '/8

You might also like