Article 2

What makes a programming language popular ?

Contents

Introduction

In nowadays , the computer world has changed very dramatically - speed , size , capacity ...etc. The development of the computer world has changed from the first generation to the fifth , or even the sixth generation . From a very low level language such as assembly to the high level languages such as Java , Access ......etc . For more details about the generation trend of the programming languages , please refer to my partner's article2. Although we have nearly more than 100 programming languages now , such as C++ , Cobol , Fortan , PL/SQL ...etc , we can still classify them into three main catagories :

  1. Database Languages - SQL & PL
  2. Procedural Progamming Languages - Java , Ada , Modula 2 & Pascal
  3. Non-Procedural Programming Languages ( Object-Oriented Programming , Functional Programming & others ) - C++ , LISP , Miranda & Cobol

But what are the main reasons for languages such as C++ or LISP being popular ? It is better to discuss some of the existing programming languages by their characteristics and features to find out the reasons for popularity . We will discuss C/C++ , LISP , Pascal and Oberon by listing out the pros and cons of using that language .

C/C++

Descriptions

"C" is a low level , weakly typed , static , non-modular , non-generic , non-reflective language .
"C" was designed in the late 70's as a portable assembler for the PDP-11 series , and it is still the state of the art in that area , although , as a system programming language , it is more adapted to the PDP-11 than to modern architectures.
In the late 80's , the small and elegant 'K&R' C has become the prey of an ANSI standards commitee ; it has now become ANSI Standard C. In the 80's, C has become the language of choice for general-purpose programming. In an attempt to add the features of general-purpose Object-Oriented Languages to C , Bjorne Stroustrup created C++ .

Pros

  1. Many people know this language , and we don't have to readapt another language syntax , as it is the one ( now ANSI C ) standard in system programming .
  2. We may compile test programs immediately , without having to wait for the kernal and compiler to be done .
  3. Others

Cons

  1. C/C++ is a static language like Pascal , it is not possible to program while running.
  2. C/C++ knows only early binding ( i.e., it only compiles directly executable code ) , hardly knows about dynamic library linking . C/C++ considers a program to be complete , finished , and run in the absolute without interaction with other programs , but through the operating system .
  3. As it's a low-level language, and weakly typed , it is easy for novice programmers to make errors, such as adding characters to pointers, which may not only crash programs, but cause OS general protection faults as well.
  4. C++ is not actually a superset of C. Minor incompatibilities can cause errors if they are treated as consistent.

LISP

Descriptions

LISP is a self-extending , higher-order , dynamically typed strict , non-pure functional language with lazy data structures . It is the second oldest Programming language ( being completed 1962 ) , but also one with the nicest semantics . It's a good experimental platform for just any kind of computing; it has got very good support , including free portable development environments , integrated structured editors , and efficient "optimizing " compilers . Unfortunately , LISP syntax uses a very clean but unusual notation called 'Cambridge Polish' which makes it quite unpopular with many programmers.
Common LISP is a huge monolithic language , with hundreds of built-in constructs for a megabyte worth of run-time system . However , the advantages of programming in Common LISP cannot be overestimated : everything a programmer usually needs is in the library , the object system is well integrated with the type system and condition system . Common LISP is now an ANSI Standard .

Pros

  1. It's a widely known and standard language , with implementation on just any computer architecture , including very portable ones.
  2. Both interpreters and compilers of good quality are available , and new ones are easy to design , making development easy , and portability quite good .
  3. It is fully reflective
  4. It is strongly-typed , that is , type-safe for a non-trivial type system .

Cons

  1. The type-system is not safely extensible in a high-level way.
  2. It doesn't allow any static typing
  3. It allows too many side-effects
  4. Its standard has got too many features nobody uses .
  5. Its module system offers no security at all.

Pascal

Descriptions

Pascal was invented by Niklaus Wirth in the early 70s and became very popular, not only as a teaching language but also for systems prorgamming and certain appliactions . It is safe , reliable , featuring strong data-typing and syntax with encourages top-down design and structured programming . It was standardized by BSI and ISO in the early 80s .

Pros

  1. Pascal has a relatively strong type system , partly due to the fact that it was originally intended to be a language for instruction , and type checking can help to catch a lot of the errors of beginning programmers.
  2. Pascal allows recursion, an improvement over many earlier programming languages .
  3. Pascal provides some run-time type checking , the most notable of which is bounds checking on array references .

Cons

  1. Pascal's treatment of arrays is cumbersome in other ways, especially the fact that array size is part of the type of the declared array. This makes it impossible to define utility functions and procedures that operate on arrays of any length, which is a severe limitation , particularly in string handling.
  2. Although this is not a type concern, arrays are passed by value by default . This requires the programmer to treat value and variable parameters both as signifying if a parameter is updated inside a procedure and whether it is efficient to create a local copy of a parameter.

Oberon

Descriptions

Oberon , the successor of Modula-2 , is both a programming language and a novel programming environment of designed by Niklaus Wirth and J.Gutknecht at ETH Zurich . It is a general-purpose programming language that evolved from Modula-2. It's principal new feature is the concept of type extension . It permits the construction of new data types on the basis of existing ones and provides relations between them .

Pros

  1. Strong type checking
  2. Modules with type checked interfaces and separate compilation
  3. Type extension , which provides for object-oriented programming
  4. Support for run-time type tests

Cons

Due to the fact that Oberon is a relatively new language, not many people are yet familar with this language , so there is less support for programs written in it at present. Actually Oberon is not popular yet !

Conclusions

After discussing the above languages , we see the followings are the typical features for popular/standrad languages

Conclusions for designing new high-level programming languages

Pros

  1. We can design the syntax to fit our needs and ideas , so that it's much easier to use. Moreover , even C isn't our natural language , and whatever language we use , there will have been adaptating time to use it.
  2. We can correct the lacks of any existing language we could have used.
  3. Portability : both the system and the language can be made easy to port.
  4. The language is perfectly well adapted to the system . No need of bizarre and slow language which leads to system call translation .

    Being efficient as an interpreted language , it may serve as a shell language as well as a programming language ; being powerful , and easy to specialize through standard libraries, it also replaces samll utility languages (awk , perl ...etc). Finally , being high-level and knowing of relations between objects , it is easily adaptated to an AI language . So there is no more need to learn a different language for every application . The same language is used for everything , no need to learn new syntaxes each time.

Cons

  1. We have to relearn a new language syntax . But as we may choose whatever syntax pleases us , there is no big deal .
  2. No existing compiler can be used directly . There is no big deal either: Compiler user interfaces are easy to write , and no existing back and can fit an interesting new OS's object format , calling conventions , and security requirements , so new back ends have to be written anyway . Moreover , our OS may have a brand new conception , so even with a traditional language , we'll have to learn restrictions about our way of programming .
  3. We have to debug the language specifications as we use it . But this can prove useful to refine the language and the system specs .

References

Programming Language Choice Practice and Experience by Mark Woodman

Programming Language Critiques: Pascal , C ,C++ ,and C-Linda by Jim Baseny May 1995

The Programming Language Oberon - Make it as simple as possible , but not simpler by A.Einstein

Press Release 15th October ,1992 Fourth Generation Programming Language for Engineers and Scientists by fsi_info@fdgroup.co.uk

Smalltalk, C++ , and OO Cobol : The Good , the Bad and the Ugly by 1995 Jeff Sutherland and Object Magzine

My partner's Johan article2

My first article - An Introduction to an Industry Standard Programming Language - C++

Click here back to Homepage