An Introduction to Programming Languages
FORTRAN 66, 1966
The original was designed by a team lead by Backus at IBM, in the late 50’s. The language quickly established itself as the language of first choice for numeric programming
Pascal, 1975, ANSI & BSI 1982, ISO 1983, Extended Pascal 1991?
Pascal is the most widely taught programming language in computer science departments, as the introductory programming language. It precedes Fortran and C languages. The following table summarizes the survey done by Dick Reid taken from a number of editions:–
Language | 20th | 18th | 15th | 13th |
Pascal | 140 | 144 | 151 | 157 |
C++ | 101 | 100 | 87 | 34 |
Ada | 82 | 82 | 74 | 73 |
C | 58 | 56 | 51 | 39 |
Scheme | 50 | 49 | 51 | 50 |
Modula | 32 | 32 | 32 | 35 |
Java | 15 | - | - | - |
Modula-2 | 14 | 15 | 15 | 13 |
Fortran | 9 | 9 | 9 | 8 |
SML | 8 | 7 | 6 | 6 |
Turing | 4 | 4 | 5 | 6 |
Miranda | 4 | 4 | 4 | 3 |
Smalltalk | 4 | 4 | 4 | 1 |
Eiffel | 3 | 3 | 3 | 3 |
Oberon | 3 | 3 | 2 | 2 |
ISETL | 2 | 2 | 2 | 2 |
ML | 2 | 2 | 2 | 1 |
Modula-3 | 2 | 2 | 2 | 2 |
ObjPascal | 2 | 2 | 2 | 1 |
Ada95 | 2 | - | - | - |
Haskel | 2 | 1 | 1 | 1 |
Beta | 1 | 1 | 1 | 1 |
Oberon-2 | 1 | 1 | 1 | - |
Orwell | 1 | 1 | 1 | 1 |
Prolog | 1 | 1 | 1 | 1 |
Simula | 1 | 1 | 1 | 1 |
Blue | 1 | - | - | - |
FORTRAN 77
FORTRAN was developed by IBM in 1950’s. It became a powerful language for scientists and researchers coming very handy for numerical and scientific calculations. Also, this is widely used programming language in super computers.
C language
C language was developed by Kernighan and Ritchie at Bell Labs. It was originally written for a PDP 11 under UNIX. It is based on the cpl, bcpl, b family of languages. Most of the UNIX tools are written in C. Of its many uses, it is the best supported language to develop device drivers and operating systems.
Modula 2
Modula 2 was developed by Mr. Wirth’s. In prior to this he has developed languages Algol W and Pascal. This was developed to meet the requirements of the operating system and application software for the personal workstation Lilith-a workstation. Numeric work in Modula 2 isn’t very attractive as explicit type casting is required in mathematical expressions.
Ada, ISO 8652: 1987
Ada was developed by the American Department of Defense. It is a high-level object-oriented programming language. It is mainly targets embedded and real time systems.
Features of Ada include strong typing, modularity mechanisms (packages), run-time checking, parallel processing, exception handling, dynamic programming and generics.
C++, 1986, Standard November 1997
C++ was developed by Stroustrup. C++ is an object oriented version of C. It scope to interact with the machine instructions much more effectively. This has come out very handy for the applications that requires the ability of C language and object oriented concepts.
Oberon 2
This is very clean and simple OOP language. This name arises from the voyager probe taking pictures of Uranus Oberon is the largest moon. Oberon was simpler than Modula 2. First operational system was developed in the late 1980s, where Oberon replaced Modula 2 in 1989 for teaching purposes at ETH ported to Apple MAC, SUN, DEC, IBM RS6000 and MS/DOS by 1991.
Eiffel
Eiffel is an attempt to produce an industrial strength OOP language.
Java
Java was developed by James Goslings. Java is a relatively simple object oriented language which drives its inspiration from C++. For it this is portability at the object code level. Its major futures include:
- It is interpreted and the intermediate byte code will run on any machine that has a Java virtual machine.
- It has built in garbage collection – no dispose!
- It has no pointers – everything is passed by reference!
- It is multithreaded, which makes it a delight for many applications
- It has an extensive windows toolkit, the so called AWT.
Visual Basic
Visual Basic is a Microsoft product aimed for free flow programming and development of visual user interfaces.
Language Comparison
The following symbols are used:–
- Y: Supported with qualification, e g may be achieved using a different mechanism
- ‘-‘: not supported
- ‘?’: Unable to verify adequately at the time of writing
Simple Program Language Feature Comparison | |||||||||||
Fortran | Pascal | C | C++ | Ada | Java | ||||||
66 | 77 | 90 | Modula 2 | ||||||||
Oberon 2 | |||||||||||
P | M2 | O2 | C | C++ | |||||||
Year | 66 | 78 | 91 | 75 | 82 | 78 | 86 | 87 | 95 | 199? | |
82 | 96? | 89 | 97 | ||||||||
Feature | |||||||||||
Independent | Y | Y | Y | - | - | - | Y | Y | - | - | - |
compilation | |||||||||||
Separate | - | - | Y | - | Y | Y | - | Y | Y | Y | Y |
compilation | |||||||||||
Concrete | - | - | Y | Y | Y | Y | Y | Y | Y | Y | 1 |
data types | |||||||||||
Abstract | - | - | Y | - | Y | Y | - | Y | Y | Y | Y |
data types | |||||||||||
Dynamic | - | - | Y | - | - | - | Y | Y | Y | Y | Y |
arrays | |||||||||||
Modules | - | - | Y | - | Y | Y | - | y | y | y | y |
See below | |||||||||||
Numeric | - | - | Y | - | ? | Y | - | y | y | y | - |
Polymorphism | |||||||||||
See below | |||||||||||
General | - | - | Y | - | ? | Y | - | Y | Y | Y | Y |
Polymorphism | |||||||||||
Pointers | - | - | Y | Y | Y | Y | Y | Y | Y | Y | 2 |
Procedure | - | - | - | Y | Y | Y | Y | Y | ? | ? | ? |
variables | |||||||||||
Inheritance | - | - | - | - | - | S | - | M | - | S | S |
single/multi | |||||||||||
Dynamic | - | - | - | - | - | Y | - | Y | - | Y | Y |
binding | |||||||||||
Operator | - | - | Y | Y | Y | Y | - | ||||
overloading | |||||||||||
Threads | - | - | - | - | Y | ? | - | - | ? | Y | Y |
Tasking | |||||||||||
Exception | - | - | - | ? | ? | - | Y | ? | Y | Y | |
Handling |
Programming Language Features
Independent Compilation: It refers to the ability to break a problem down into parts and work on one part at a time to check whether the program follows all the rules of the programming language or not.
Separate Compilation: As above with checking across compilation units, major step forward in the construction of more complex programs Lint helps out with C. Concrete Data Types: These provide flexibility for the user defined data types of his choice which will be mapped directly onto their problem.
Abstract Data Types (ADT): Data processing is the key purpose of the programming language, in this process protection to data becomes very is also very important. This ADT comes out with concept of data types and procedures that manipulated the data hiding the internals from the calling routine.
Dynamic arrays: Arrays that are allocated dynamically at run time
Modules
These modules intend to group the functions and procedures related to a particular decomposed set of overall problem. This helps you to break the complete problem in to small units called modules and write code accordingly. These normally have a well controlled mechanism for making visible what the external, calling routine needs to have access to. Classes and packages are two terms also used
Pointers and References
Pointers allow you to access the memory location, thereby facilitating changes in quick time. Pointers in a programming language extend the range of problems that can be solved considerably. Multi-dimensional structures are easily programmed using pointers, e g: linked lists, queues, trees, quad-trees, oct-trees, etc. The danger that pops in is data security, as the data memory location can be accessed directly and destroyed.
Whereas in Java, pointer do not exist instead all objects are accessed via an object reference. When you see an object variable in a Java program you actually see a reference to an object.
Inheritance
This is an object oriented paradigm, which under controlled way extends permission of data access and procedures one class to be used by another class.
Dynamic Binding
The second of the two major features of OO programming, provided in a limited sense via procedure variables in older languages
Operator Overloading
This is very useful with numeric problems. Given that C++ has 47 operators it poses problems of readability and comprehensibility with most other areas. This can be solved by operator overloading. This is mostly implemented like functions or procedures.
Threads/Multitasking
Multitasking and/or threads are needed in a programming language when solving problems in the areas of real-time systems, equipment interfacing, embedded systems and parallel programming
Exception Handling
Exception handling is needed in a programming language when solving problems in the areas of real-time systems, equipment interfacing, embedded systems, parallel programming and robust systems
Structured Programming
Structured programming concerns itself with the development of programs using a small but sufficient set of statements and in particular control statements. It has had a great effect on program language design and most languages now support a minimal set of control structures. In a broader sense, it subsumes other objectives including simplicity, comprehensibility, verifiability, modifiability and maintenance of programs.
Object Oriented Programming Terminology
The following provides a link between conventional programming language terminology and that used in object oriented programming.
Class: Extensible abstract data type
Object: Instance of a class
Message: Procedure call, dynamically bound
Method: Procedure of a class
Software Components
As the problems that we attempt to solve become more complex and the interfaces we provide become more sophisticated we need better tools to help with program development. One major step forward is in reusable software components. This can be seen as an extension to the object oriented approach to programming.
COM, OLE, ActiveX
First let us define each of the above in turn:–
COM – Component Object Model
OLE – Object Linking and Embedding
ActiveX – Now called Active Technologies Let is look briefly at each in turn
ActiveX is a set of technologies that enables software components to interact with one an-other in a networked environment, regardless of the language in which they were created ActiveX is built on the Component Object Model.
OLE or OLE makes one application to manipulate objects implemented in another application. A simple example of this would be embedding a spreadsheet of graph from Excel in a Word document. Double clicking on the spreadsheets drops you into Excel. There are some problems with this when working with a document on a number of computer systems with different versions of the applications concerned.
The Component Object Model (COM) is a platform independent, distributed object oriented system for creating binary software documents that can interact. COM is the foundation technology for OLE and ActiveX.