Programming Language Categories

There are literally thousands of programming languages in the world and each has its own strengths and weakness. Many are simply for teaching or language research. These languages do not interest or concern me. They are frequently limited and almost useless. There is a certain set of programming fields/categories that I believe are currently distinct enough to have an independent programming language to represent them. Each is however, narrow enough that there is no need for more than one language.

Language RoleBest Candidate
Scripting 
Programmer's scriptingBetter Scheme (+OO)
Application Development 
Low-levelC/C++
Pure Functional 
Complete Core 

Scripting

The most basic need of for scripting languages is one which is simple to use because it will be used by those with a minimum of programming knowledge or in situations where cranking out code which does the job is all the matters. An example of where this language might be used by people with more of a programming background is in web scripting. Examples of languages that might fall into this category are PHP, JavaScript, Perl, and Python. VB could also be considered in this family but it is too frequently used for application development today.

There is currently no outstanding candidate language for this category. When one is chosen I believe it should bare resemblance to the Application development language but with more bells and whistles to let one crank things out and make it easier.

Programmer's scripting

Real programmers also often have a need for scripting capabilities. However, they need a language which is simple and complete. It must never stand in there way as is all to often the case with standard scripting languages. It must be able to easily integrate into other languages.

Better Scheme is an excellent language for use in Programmer's Scripting. It is simple, complete, powerful and concise. In addition many programmers are exposed to Scheme or Lisp during their education and so are already familiar with it. One thing which will most likely be needed is a good extension to Better Scheme which provides solid support for object oriented programming because Better Scheme scripts will frequently need to interact with objects created in other languages.

Application Development

To develop applications a language is needed which is complete and powerful but very safe. The complexity of large application mandates a compile time safe language. It should also be fairly high level and object oriented. The only languages which I believe comes close to this today are Eiffel and Java.

There is currently no outstanding candidate language for this category.

Low-level

For the purpose of operating systems and other low level code we need a language that operates fast and just above the machine level. Of course there will always be occasion to slip into assembly but that is by its nature machine specific and so not considered here.

Both C and C++ can be used for this. They provide the low level power needed while giving a reasonable level of safety and abstraction.

Pure Functional

Certain tasks can best be done working in a purely function environment. And these languages while not as widely used today are in many ways so distinct from others that it is important to keep there legacy alive in the hopes that they may positively influence more common languages. The only real example of this today is Haskell since languages like ML are not purely functional.

There is currently no outstanding candidate language for this category.

Complete Core

This language may never be used for real programming but I still think it would be important to have in mind. It would be a core language which the application, scripting and pure functional languages could build on and modify. It would have everything truly necessary and little more. One might think that the lambda calculus would be a minimal example of this. However, it makes no provision for mutability which is clearly a key concept to many languages. In addition the lambda calculus has no concept of types, another important feature of modern languages. The are no examples of a complete core language today.

There is currently no outstanding candidate language for this category.



jwalker@cs.oberlin.edu