Sei sulla pagina 1di 17

EVOLUTION OF PROGRAMMING LANGUAGES

Before starting with the evolution of programming languages, I will discuss meaning of programming languages and its importance.

What is Programming language


A programming language is a language designed to communicate instructions to a machine , particularly a computer. Programming languages are used to create programs that control the behavior of a machine or to express algorithms precisely. A programming language is a notation for writing programs, which are specifications of a computation or algorithm. Some, but not all, authors restrict the term "programming language" to those languages that can express all possible algorithms.

Importance
The role of language in programming has been downgraded in favor of software methodology and tools; not just downgraded, but totally repudiated when it is claimed that a well-designed system can be implemented equally well in any language. But programming languages are not just a tool; they furnish the raw material of software, the thing we look at on our screens most of the day. I believe that the programming language is one of the most important, not one of the least important, factors that influence the ultimate quality of a software system. Programming languages exist only for the purpose of bridging the gap in the level of abstraction between the hardware and the real world. There is an inevitable tension between higher levels of abstraction that are easier to understand and safer to use, and lower levels of abstraction that are more flexible and can often be implemented more efficiently. To design or choose a programming language is to select an appropriate level of abstraction, and it is not surprising that different programmers prefer different levels, or that one language may be appropriate for one project and not for another. Within a specific language, a programmer should understand in depth the safety and efficiency implications of each construct in the language.

EVOLUTION BEFORE 1940:


The first programming languages predate the modern computer. At first, the languages were codes. The Jacquard loom, invented in 1801, used holes in punched cards to represent sewing loom arm movements in order to generate decorative patterns automatically. During a nine-month period in 1842-1843, Ada Lovelace translated the memoir of Italian mathematician Luigi Menabrea about Charles Babbage's newest proposed machine, the Analytical Engine. With the article, she appended a set of notes which specified in complete detail a method for calculating Bernoulli numbers with the Engine, recognized by some historians as the world's first computer program. Herman Hollerith realized 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. Hollerith then encoded the 1890 census data on punch cards. Assembly:-Assemblers exist since the beginning of computers. They associate a symbolic name to the machine-language code for example add bx, 4 cmp [adr], 3 jmp address Assembly programming is no longer frequently practiced, even to build fast routines...

1950S AND 1960S:


In the 1950s, the first three modern programming languages whose descendants are still in widespread use today were designed:

FORTRAN (1955), the "FORmula TRANslator", invented by John Backus et al.; LISP [1958], the "LISt Processor", invented by John McCarthy et al.; COBOL, the COmmon Business Oriented Language, created by the Short Range Committee, heavily
influenced by Grace Hopper.

IPL - 1956 - Information Processing Language


Newell, H. Simon, J.C. Shaw. Low-level list processing language. Implements the RECURSIVITY. The language
includes features intended to support programs that could perform general problem solving, including lists, associations, schemas (frames), dynamic memory allocation, data types, recursion, associative retrieval, functions as arguments, generators (streams), and cooperative

multitasking. IPL pioneered the concept of list processing, albeit in an assembly-language style.

Fortran - 1954-1958 - FORMULA TRANSLATOR system


John Backus and other researchers at IBM. Language dedicated to mathematical calculations. Fortran II (1958) introduced SUB-ROUTINES, FUNCTIONS, LOOPS, a primitive FOR control structure. Identifiers were limited to six characters. Often referred to as a scientific language, FORTRAN was the first high-level language, using the first compiler ever developed. It was designed to allow easy translation of math formulas into code.

Lisp - 1958-1960 LIST Processing


Mac Carthy. Functional language for list processing. It is purely recursive, and not iterative. There is no difference between code and data. Lisp is the second-oldest high-level programming language in widespread use today. Lisp was originally created as a practical mathematical notation for computer programs. It quickly became the favoured programming language for artificial intelligence (AI) research. As one of the earliest programming languages, Lisp pioneered many ideas in computer science, including tree data structures, automatic storage management, dynamic typing, and the self-hosting compiler

Algol - 68 - ALGORITHMIC Language


ALGOL was the first second-generation programming language and its characteristics are typical of the entire generation. First consider the data structures, which are very close to first generation structures. In ALGOL 60 the block structure was introduced: the ability to create blocks of statements for the scope of variables and the extent of influence of control statements. Along with that, two different means of passing parameters to subprograms; call by value and call by name. Structured control statements: if - then - else and the use of a general condition for iteration control were also features, as was the concept of recursion: the ability of a procedure to call itself.

APL - 1964 - A Programming Language


APL is an interactive array-oriented language and integrated development environment which is available from a number of commercial and non-commercial vendors and for most computer platforms. It is based on a mathematical notation developed by Kenneth E. Iverson and associates which features special attributes for the design and specifications of digital computing systems, both hardware and software.APL has a combination of unique and relatively uncommon features that appeal to programmers and make it a productive programming language.

Basic - 1964 - Beginners All-purpose Symbolic Instruction Code John Kemeny, Thomas Kurtz Has been designed in 1963, to be easy to learn and has been implemented in 1964. The first version was compiled, then it becomes interactive and interpreted. Each line has a number to allow GOTOs statements to jump to the line! Bill Gate and Paul Allen have win an international contest by designing and implementing a fast and compact Basic, firstly for the Altair (in 4 kb memory!) and then on other micro-computers.Micro-computers were delivered with Basic in ROM until late 80.In 1977, the Apple II was sold with an integer Basic. Then the Applesoft Basic of Microsoft with floating-point.Applesoft was using two-letter identifiers!

Logo - 1966 Fuerzeig, Seymour Papert, and others Aimed to teach programming to children, near Lisp, and based on moving a "turtle" on the screen. Snobol 4 - 1967 - StroNg Oriented symBOlic Language D. J. Farber, R. E. Griswold, F. P. Polensky at Bells Labs Snobol appeared in 1962.Snobol 4 is the first stable distributed version of Snobol, available in 1967. This is a processor of strings, founded on the principle of pattern-matching, concatenation and alternation. It was the first language to implement associative arrays, indexed by any type of keys. It allows to run code stored inside strings. Data types are: string, integer, real, array, table, pattern and user-defined types. CPL - Combined Programming Language Cambridge and London Universities .This was a combination of Algol 60 and functional language aimed at proof of theorems. It was using polymorphic testing structures. It was heavily influenced by ALGOL 60 but, instead of being extremely small, elegant and simple, CPL was intended for a wider application area than scientific calculations and was therefore much more complex and not as elegant as ALGOL 60. CPL was a big language for its time. CPL attempted to go beyond ALGOL to include industrial process control and business data processing, among other things. CPL was also intended to allow low-level programming and high level abstractions using the same language.However, CPL was only implemented very slowly. Properly working compilers were probably written by about 1970, but the language never gained much popularity and seems to have disappeared without trace sometime in the 1970s.A later language based on CPL, called BCPL (for Basic CPL, although originally Bootstrap CPL) was a much simpler

language intended primarily as a systems programming language, particularly for writing compilers. PL/1 - 1965? - Programming Language number One - Originally NPL (New Programming Language):The language was designed to be general-purpose and modular.Keywords are reserved only in the context where they are used as keywords. It is more hardware independent than predecessors. These types are recognized: fixed, real, complex, character, bit, bin, pointer, picture, file, etc.... Data have default attributes (as precision for example), that depends upon the context.These compound types are built-in: array, structures, unions, and combinations of them. IF THEN and SELECT .. WHEN .. OTHERWISE are conditional structures, and variations on the DO structure allows various conditional loops.Storage classes are introduced: automatic, static (life of the program), controlled, based. Exceptions are implemented.

1967-1978:
The period from the late 1960s to the late 1970s brought a major flowering of programming languages. Most of the major language paradigms now in use were invented in this period. The 1960s and 1970s also saw considerable debate over the merits of "structured programming", which essentially meant programming without the use of Goto. This debate was closely related to language design: some languages did not include GOTO, which forced structured programming on the programmer. Although the debate raged hotly at the time, nearly all programmers now agree that, even in languages that provide GOTO, it is bad programming style to use it except in rare circumstances. As a result, later generations of language designers have found the structured programming debate tedious and even bewildering

Simula 67 - 1962-67 Simula is a name for two programming languages, Simula I and Simula 67, developed in the 1960s at the Norwegian Computing Center . Simula 67 introduced objects, classes, subclasses, virtual methods, coroutines, discrete event simulation, and features garbage collection. Simula is considered the first object-oriented programming language. As its name implies, Simula was designed for doing simulations, and the needs of that domain provided the framework for many of the features of object-oriented languages today. Simula has been used in a wide range of applications such as simulating VLSI designs, process modeling, protocols ,algorithms, and other applications such as typesetting, computer graphics, and education.

Pascal - 1970 - Named from the french mathematician Blaise Pascal Niklaus Wirth Language aimed to ease the building of compilers, and to lead teaching by forcing to a structured programming.UCSD Pascal, written by a group of programmers leaded away by Kenneth Bowles is the first version for micro-computers. It compiles programs in P-code, that is portable and interpreted (as Java later). It included a complete development environment, a principle used successfully further by Turbo Pascal.In 1981, a role playing game written in Pascal, Wizardry, has had a big success on Apple II.When Turbo Pascal (by Anders hejlsberg) appeared in 1983 , fast and having a complete IDE, the language gained success and is still widely used.Control structures are near C ones. Forth - 1971 - Fourth reduced to Forth by the constraint of 5 letters of the IBM 1130 Charles H. Moore Defined during 60+, seems to have been implemented in 1971. Language for astronomical instruments using a stack to replace variables.Its goal was to be the fourth generation language. Smalltalk - 1972 Alan Kay and the Software Concept Group
Smalltalk is

an object-oriented, dynamically typed, reflective programming language. Smalltalk

was created as the language to underpin the "new world" of computing exemplified by "human computer symbiosis." It was designed and created in part for educational use, more so for constructionist learning

C LANGUAGE - 1973 - C is the successor of B, which is the successor of BCPL


Dennis Ritchie It was firstly destinated to program the UNIX operating system, but has become quickly universal thanks to its portability and speed. Allows incremental compiling. In 1965, ATT programmers were using Bcpl to work on implementing Unix. Displeased with this language, they made it evolve to a new version named B, then to a new language named C. This was the evolving of the hardware that instigate to create C. Bcpl and B was using integer for pointers, but this was not working on the new computers. Bcpl has no type (as Php or other modern scripting languages!). The declarations int i, char b were created in C. Other types will appear later. The Union C language cast simplified come from the Algol writting 68.++ with was the already { in and the } B symbols, language.

and

The keyword "include" comes from PL/I. The preprocessor was implemented in 1973, and C has been used from this date to write Unix, but Ritchie worked on it since 1969. The language has evolved until 1980. . Prolog - 1970+ Colmerauer, D. Roussel Has been developped both in France at Aix-en-Provence and at Edimburg.

Has introduced LOGIC PROGRAMMING. A program is made of Horn clauses. Prolog is declarative, its system of logic inference is an engine of resolution. Sql - 1970+ - Standard Query Language IBM Language of query for relational databases. Successor of the Square language. ML - 1973 - Meta Language

R. Milner Functional language inspired by Iswim.Its goal was to proof theorem at the Edimburg University.Functions are replaced by pattern models.Implemented in Lisp. ML built a polymorphic
type system on top of Lisp, pioneering statically typed functional programming languages.

THE 1980S:
The 1980s were years of relative consolidation in imperative languages. Rather than inventing new paradigms, all of these movements elaborated upon the ideas invented in the previous decade. C++ combined object-oriented and systems programming. 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 organizational units of code. The 1980s also brought advances in programming language implementation. The RISC movement in computer architecture postulated that hardware should be designed for compilers rather than for human assembly programmers. Aided by processor speed improvements that enabled increasingly aggressive compilation techniques, the RISC movement sparked greater interest in compilation technology for high-level languages Modula 2 - 1979 - MODUlar LAnguage Niklaus Wirth Modula 1 would be defined in 1977. Implemented on the Lilith workstation at first. The idea is to reduce the risk of error with coercive programming rules. However, it adds to Pascal some features of the C language. A call of function without argument is written f() as in C rather than f as in Pascal. A program is splitted in modules with local scope, and interfaces for other modules. Use coroutines. Allows access to the hardware. Was only used in Universities, because these new features has been added also to Pascal by the makers of compilers (the units of Turbo Pascal mainly). Ada - 1980 - Nickname of Ada Byron de Lovelace, first woman to program

Designed by a committee leaded by Jean Ichbiah, for the U.S. Department Of Defense Ada is a structured, statically typed, imperative, wide-spectrum, and object-oriented highlevel computer programming language, extended from Pascal and other languages. It has strong built-in language support for explicit concurrency, offering tasks, synchronous message passing (via guarded task entries), protected objects (a monitor-like construct with additional guards as in conditional critical regions) and nondeterminism.

C++ - 1981-1986
Bjarne Stroustrup
C++ (pronounced "see plus plus") is a statically typed, free-form,multi-paradigm, compiled, generalpurpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne

Stroustrup starting in 1979 at Bell Labs as an enhancement to the C language. Originally named C with Classes, the language was later renamed C++ in 1983.

C++ is one of the most popular programming languages with application domains including systems software (such as Microsoft Windows), application software, device drivers, embedded software, high-performance server and client applications, and entertainment software such as video games. The language began as enhancements to C, first adding classes, then virtual functions, operator overloading, multiple inheritance, templates, and exception handling among other features Objective C -1983 By Brad Cox , is another object oriented version of C, inspired by smalltalk. Objective-C is
a reflective, object-oriented programming language that adds Smalltalk-style messaging to the C

programming language. No operator overloading. Used to write Next Step, the operating system of the

Next computer. Eiffel - 1985 Bertrand Meyer

Eiffel is an ISO-standardized, object-oriented programming language. The design of the language is closely connected with the Eiffel programming method. Both are based on a set of principles, including design by contract, command-query separation, the uniform-access principle, the single-choice principle, the open-closed principle, and option-operand separation.Procedural language fully object oriented , implementing persistency and programming per contract (using precondition and post condition on functions). Was designed for security of software.Compiled in C. May be interfaced with other languages. Has features of functional languages, generic classes, garbage collector. GAP - 1986 - Groups, Algorithms and Programming Johannes Meier, Werner Nickel, Alice Niemeyer, Martin Schnert and others Miranda - 1989 - From the name of a Shakespeare's heroin (Miranda, means for admirable in latin) D.Turner Inspired by Sasl and ML. Lazy evaluation: arguments of functions are evaluated only when they are used. Embedded pattern-matching, modules. Perl - 1987 - Practical Extracting and Report Langage Larry Wall Destinated to replace the command line language of Unix, Sh, Sed and Awk, it kept the same ugly syntax. Used mainly for system administration, CGI scripts.Includes lists and associatives arrays. The FOREACH control structure allows to scan lists. Oberon - 1988 Niklaus Wirth Successor of Modula 2 (and Pascal).Several commonly used constructs are suppressed to reduce the risk or error! A garbage collector is added to.

THE 1990S:
The 1990s saw no fundamental novelty in imperative languages, but much recombination and maturation of old ideas. This era began the spread of functional languages. A big driving philosophy was programmer productivity. Many "rapid application development" (RAD) languages emerged, which usually came with an IDE, garbage collection, and were descendants of older languages. All such languages were object-oriented. These included Object Pascal, Visual Basic, and Java. Java in particular received much attention. Haskell - 1990 - Nickname of a logician, Haskell Curry Purely functional language. Inspired by Miranda and Sasl.Functional arrays, pattern matching. ABC 1980-90 - ABC (equivalent to EZ in english) Python - 1991 - From the english TV movie "Monty Python Flying Circus" Guido Van Rossum Scripting language with dynamic types. This is a replacement to Perl.Inspired by ABC, but is extensible with C libraries, and object oriented.As ABC, used evolved types: tuple, list, dictionary.The slicing operator [a : b] allows to extract a sub-list from a list.There is a version that compiles in Java bytecode, jython and ports for .NET. Pov-Ray - 1991 - Persistence Of Vision (title of a mediocre science-fiction book). D. & A. Collins, and contributors Pov-Ray is a language for describing 3D images. DisCo - 1992 - Distributed Co-operation Reino Kurki-Suonio

Disco is a specification language for reactive systems with Pascal-like syntax. Constructs of the language are objects, event-driven functions (named here actions), and relations. A function is activated when a state of the system occurs and may be overwritten, this is named "refinement" in the language. Disco focuses on collective behavior. Layers are modules of the language. It is an system oriented language with objects and behavior (not action oriented as it is said in the presentation). Ruby - 1994 - As the jewel, analogy with Perl Yukihiro Matsumoto Ruby has been designed as successor to Perl and alternative to Python, to be clearer than the first one, and more object oriented than the second one. The syntax comes from these two languages, it want to be without surprise and natural but may be complex.There is no new control structure as in Scriptol, but a lot of minor innovations to make the code smaller.It is an interpreted language easy to extend. Statements are terminated by end of line. Blocks of statement and loop are delimited by "end". Most Python's features are present: associative arrays, iterators... The originality is the dynamic object feature (adding methods to instances) and scope of variables denoted by a prefix. Java - 1994 - Java (coffee) James Gosling and other programmers at Sun Conceived at the beginning, in 1991, as an interactive language named Oak, was unsuccessful. But in 1994 has been rewritten for Internet and renamed Java. In 1995 navigators can run applets. In january 1996, Javasoft distributes JDK 1.0, the Java Developpement Kit. Java is a classical procedural language, near C++. It compiles in bytecode, interpreted on any computer. ..It is simpler than C++: one class by file, automatic memory management, no pointers. No multiple inheritance nor operator overloading, but integrated multi-tasking. Unlike C and C++, has only dynamic arrays.

PHP - 1995 - Personal Home Pages Hypertext Processor Rasmus Lerdorf Multi-platforms scripting language, embedded inside HTML. Near C but not typed. Variables are prefixed by the $ symbol as the shell of Unix or as Perl. The interpreter parses a html page that embeds php code and delivers a pure html page. An extended library of functions allows webmasters to build dynamic pages.Microsoft uses an equivalent language under Windows, ASP, near Basic. JavaScript - 1995 (Has been firstly named LiveScript) Brendan Eich at Netscape Scripting language to embedd procedural code into web pages.May be used to other applications, XML based languages for example.Share the syntax of C or Java, but with untyped variables. The element of the web page (window, table, etc...) are accessed through the Document Object Model. UML - 1996 - Unified Modeling Language Standard by Object Management Group- Grady Booch, Jim Rumbaugh, and Ivar Jacobson UML is the union of three modeling languages designed by the three authors above. The language uses a graphical notation to design software projects. A source is a diagram expressing objects and their interactions. A model is made of views and the combination of them describes a complete system. The model is abstract and domain-independent. ECMAScript - 1997 Standard by the european standardization organisation E.C.M.A. Standard to the langage invented by Netscape, to let dynamic HTML pages client-side. Rebol - 1997 (The design is older) - Relative Expression Based Object Language

Carl SassenRath

AFTER 1990S
C# This is the main language of the .NET environment, to program software working thought Internet. As Java, it keeps the C syntax, a 34 years old language, with same improvements: garbage collector, no pointer, interfaces, multi-tasking... C# compiles to intermediate language, the MSIL (MicroSoft Intermediate Language), and uses a multi-languages library, the CLR (Common Language Runtime). The originality of the .NET system is that various language may be compiled to MSIL and share their classes. Scriptol - 2001 - Scriptwriter Oriented Language Denis Sureau The most recent, the most powerful among procedural languages. Scriptol is either compiled in PHP or in C++ or native, giving it a great portability. It is both a language for applications, for scripting and to make dynamic web pages.The language has new control structures: "for in", "while let", "scan by", etc... The "composite if"structure eases to implement rules. Variables and literals are objects. Basic object (number, text, etc...) and compound ones are created by direct assignment of a value or a list of arguments to the name. Scriptol is destinated to evolve and to have, along classes, other high-level structures to allow programs to be nearest human thought. Since October 2003, Scriptol allows to use XML as internal data structure. JavaFX Script - 2005-2007 This language which is built on Java, incorporates and expands its syntax. It is intended to create rich graphical interface for the Web. It is used with NetBeans.The langage was designed en 2005 and named F3 (Form Follows Function), but after the company has been bought by Sun, it was renamed JavaFX Script and open sourced.

The future Some trends:

Scripting languages
Several modern scripting languages offer a simple, natural syntax: NetRexx, Python, Ruby,
Scriptol. Python is the most widely used for now. Ruby is mainly used for the Rail library.

Internet languages
These languages allows to embed code inside HTML page and thus to combine statements and data. PHP, ASP, JavaScript are the most used ones. The .NET platform will allow any language to be embedded into HTML.

Markup languages
A recent trend is to turn XML documents into executables.

- XML is embedded into Scriptol sources as a data structure, that is usable by any statement in the source. This is a next step beyond object oriented programming. - XUL is a Mozilla project that embeds JavaScript into XML to easily produce GUI (the one of
Mozilla for example). On the Web with Firefox or locally with the XULRunner runtime.

- SVG is a format to embed graphics in webpages supported by all modern browsers. It may replaces XUL (Mozilla only) and XAML (.NET required) to design a user interface. A new C++ language
C++0x, will be probably C++09. This new version will include as standard a lot of

external libraries. It will have tuples and garbage collector and an extended standard library with regular expression and threads.

SQL
Thanks to Web applications and dynamic sites of the Web 2.0, SQL trends to be more and more popular, and so is now a part of modern programming.

Conclusion
The .NET or compatible platforms will ease to put code inside data, but XML may be an alternative. C# will be a leader language of such platform at start, but its success is due mainly to that programmers are used with the C++ and Java syntax.

The development of mobile phones with their multiple operating systems foster HTML 5 as a development platform and related technologies: SVG, Canvas, CSS. JavaScript becomes the dominant language for client-side web applications.

Potrebbero piacerti anche