|

Alternative Programming Languages
This section discusses current mainstream programming language benefits, and compares them with a few outsiders.
The aim is not to define a unique 'best' programming language, but to highlight the strengths and weaknesses of these languages for any given task.
The mainstream languages are:
The outsiders are:
Caveat Emptor
This document was written in September 2005, as consultancy for a software house in Germany. I have published it here, both for nostalgic reasons, and because it still has relevance. It may be updated at some time in the future. Some of the hyperlinks may no longer be available.
Probably one of the most popular programming languages ever developed. Controlled by Microsoft. Now semi retired, since Microsoft is putting all it's efforts into the .Net platform.
|
Property
|
Evaluation
|
|
Procedural
|
Yes.
|
|
Object Oriented
|
No. Well, let's say 50% of the way. No inheritance of any kind.
|
|
Rapid development
|
Yes, exclusively via Visual Studio.
|
|
Client applications
|
Yes. Windows and dialogs are 'pixel' painted. (No flow on resizing).
|
|
Server applications
|
Yes.
|
|
Web applications
|
No.
|
|
Extensible
|
Yes, via COM and it's heirs.
|
|
Code Documenting
|
Yes, via VBDOX or similar.
|
|
Version control
|
Yes, via SourceSafe or a Visual Studio plugin
|
|
Unit testing
|
|
|
Batch builds
|
Yes
|
|
Unicode aware
|
Yes
|
|
Exception handling
|
No
|
|
Multi-platform
|
No. Microsoft Windows only.
|
|
Interactive debugging
|
Yes. Can also change the code and continue running.
|
|
Builds binary libraries
|
Yes
|
|
Builds binary executables
|
Yes
|
|
Builds stand-alone executables
|
Yes
|
|
Runtime library size
|
About 5 MB.
|
|
Library support
|
Extensive. Mostly commercial ActiveX or COM objects.
|
Conclusion
Pros:
-
Strong typed language.
-
Simple if verbose syntax.
-
Easy to learn, well known, large programmer following.
Cons:
-
Lots of “gotchas” (mostly workarounds to bugs) for the inexperienced.
-
Single platform programming language.
-
Closed source compiler and IDE.
-
Destined to be replaced by .Net eventually. Still maintains popularity due to the steep learning curve of .Net, and the low penetration of the .Net runtime on Windows systems.
Probably one of the most popular scripting languages ever developed. Controlled by Microsoft. Now semi retired, since Microsoft is putting all it's efforts into the .Net platform.
|
Property
|
Evaluation
|
|
Procedural
|
Yes.
|
|
Object Oriented
|
No. Well, let's say 50% of the way. No inheritance of any kind.
|
|
Rapid development
|
Yes, exclusively via Visual Studio.
|
|
Client applications
|
Yes, mostly for batch scripting.
|
|
Server applications
|
No.
|
|
Web applications
|
Yes. IIS/ASP plugin.
|
|
Extensible
|
Yes, via COM and it's heirs.
|
|
Code Documenting
|
Yes, via VBDOX or similar.
|
|
Version control
|
Yes, via SourceSafe or a Visual Studio plugin
|
|
Unit testing
|
|
|
Batch builds
|
Yes
|
|
Unicode aware
|
Yes
|
|
Exception handling
|
No
|
|
Multi-platform
|
No. Microsoft Windows only.
|
|
Interactive debugging
|
Yes
|
|
Builds binary libraries
|
No, interpreted language.
|
|
Builds binary executables
|
Yes, automatic script launch.
|
|
Builds stand-alone executables
|
Yes, automatic script launch.
|
|
Runtime library size
|
Built-in ActiveX scripting engine for Windows.
|
|
Library support
|
Extensive. Mostly commercial ActiveX or COM objects.
|
Conclusion
Pros:
-
Weak typed language.
-
Simple if verbose syntax.
-
Easy to learn, well known, large programmer following.
Cons:
-
Lots of “gotchas” (mostly workarounds to bugs) for the inexperienced.
-
Subtle differences from Visual Basic.
-
Single platform programming language.
-
Closed source compiler and IDE.
-
Destined to be replaced by .Net eventually. Still maintains popularity due to the steep learning curve of .Net, and the low penetration of the .Net runtime on Windows systems.
Very popular programming languages. Controlled by ANSI committee.
|
Property
|
Evaluation
|
|
Procedural
|
Yes.
|
|
Object Oriented
|
Yes (C++). No (C).
|
|
Rapid development
|
No. Complicated syntax. Specifically designed for computer intensive operations.
|
|
Client applications
|
Yes. Numerous multi-platform GUI libraries.
|
|
Server applications
|
Yes.
|
|
Web applications
|
Yes, via CGI or FastCGI.
|
|
Extensible
|
Yes, via COM and it's heirs, or static or shared libraries.
|
|
Code Documenting
|
Yes, via Doxygen or similar.
|
|
Version control
|
Yes. Any text based version control system.
|
|
Unit testing
|
Yes, via numerous testing harnesses.
|
|
Batch builds
|
Yes
|
|
Unicode aware
|
Yes
|
|
Exception handling
|
Yes (C++). No (C).
|
|
Multi-platform
|
Yes. Almost all operating systems are covered.
|
|
Interactive debugging
|
Yes, depending on the IDE.
|
|
Builds binary libraries
|
Yes
|
|
Builds binary executables
|
Yes
|
|
Builds stand-alone executables
|
Yes
|
|
Runtime library size
|
From 50K to 10 MB.
|
|
Library support
|
Extensive. Mostly open source.
|
Conclusion
Pros:
-
Strong typed language.
-
Complex, ambiguous but terse syntax.
-
Well known, large programmer following.
-
Multi-platform language.
-
Open source compilers and IDE's.
-
Probably the best solution for fast, compact, efficient run-time binaries.
Cons:
-
Lots of syntax “gotchas” for the inexperienced.
-
Slow to develop, difficult to debug.
-
Slow to standardise. 5 years to become ANSI, 10 for STL, etc.
Popular programming language. Controlled by Sun Microsystems, evangelised by IBM.
|
Property
|
Evaluation
|
|
Procedural
|
No.
|
|
Object Oriented
|
Yes.
|
|
Rapid development
|
No. Complicated syntax, large libraries, complex standards.
|
|
Client applications
|
Yes, just. The Eclipse RCP provides (at a cost of about 5MB) a cross platform GUI library.
|
|
Server applications
|
Yes.
|
|
Web applications
|
Yes, using Java web application server.
|
|
Extensible
|
Yes, via JNI. Difficult to do though.
|
|
Code Documenting
|
Yes, built-in.
|
|
Version control
|
Yes. Any text based version control system.
|
|
Unit testing
|
|
|
Batch builds
|
Yes
|
|
Unicode aware
|
Yes
|
|
Exception handling
|
Yes
|
|
Multi-platform
|
Yes. Microsoft Windows, Mac OS X, Linux, some Unix platforms.
|
|
Interactive debugging
|
Yes, depending on the IDE.
|
|
Builds binary libraries
|
Yes, but Java VM only.
|
|
Builds binary executables
|
Yes.
|
|
Builds stand-alone executables
|
No, requires the Java VM.
|
|
Runtime library size
|
About 100 MB.
|
|
Library support
|
Extensive. Mostly open source.
|
Conclusion
Pros:
-
Strong typed language.
-
Complex, terse syntax.
-
Well known, large programmer following.
-
Multi-platform language.
-
Open source compilers and IDE's.
-
Considered the best solution for and by Big Companies.
Cons:
-
Excessive quantities of code required for simple operations.
-
Enormous number of complex Big Company standards.
-
Closed source language.
-
Poor client side application framework.
-
Complicated web application framework.
-
Enormous run time.
Popular programming languages (C# and VB.Net). Controlled by Microsoft.
|
Property
|
Evaluation
|
|
Procedural
|
No.
|
|
Object Oriented
|
Yes.
|
|
Rapid development
|
No. Complicated syntax, large libraries, complex standards.
|
|
Client applications
|
Yes.
|
|
Server applications
|
Yes.
|
|
Web applications
|
Yes. IIS/ASP.Net extension.
|
|
Extensible
|
Yes, via COM and it's heirs.
|
|
Code Documenting
|
Yes, built-in.
|
|
Version control
|
Yes, via SourceSafe or a Visual Studio.Net plugin
|
|
Unit testing
|
|
|
Batch builds
|
Yes
|
|
Unicode aware
|
Yes
|
|
Exception handling
|
Yes
|
|
Multi-platform
|
No. Microsoft Windows only. Yes if you develop for Mono (Linux), which is usually a version number behind Microsoft.
|
|
Interactive debugging
|
Yes
|
|
Builds binary libraries
|
Yes
|
|
Builds binary executables
|
Yes
|
|
Builds stand-alone executables
|
No, needs the .Net VM.
|
|
Runtime library size
|
About 150 MB.
|
|
Library support
|
Extensive. Mostly commercial ActiveX or COM objects.
|
Conclusion
Pros:
-
Strong typed language.
-
Complex, terse (C#), or simple, verbose (VB.Net) syntax.
-
Well known, large programmer following.
-
Considered the best solution for Big Companies.
Cons:
-
Excessive quantities of code required for simple operations.
-
Enormous number of complex Big Company standards.
-
Single platform programming language, unless you downgrade to Mono.
-
Closed source compiler and IDE.
-
Enormous run time.
Fringe programming language. Controlled by REAL Software.
|
Property
|
Evaluation
|
|
Procedural
|
Yes.
|
|
Object Oriented
|
Yes. Well, let's say 90% of the way. Problems with method overloading.
|
|
Rapid development
|
Yes, exclusively via REALbasic IDE.
|
|
Client applications
|
Yes. Windows and dialogs are 'pixel' painted. (No flow on resizing).
|
|
Server applications
|
Yes.
|
|
Web applications
|
No.
|
|
Extensible
|
Yes, just. Complicated and badly documented C API.
|
|
Code Documenting
|
No.
|
|
Version control
|
Not really. Proprietary binary format excludes diff, merge and patch.
|
|
Unit testing
|
No
|
|
Batch builds
|
No
|
|
Unicode aware
|
Yes
|
|
Exception handling
|
Yes
|
|
Multi-platform
|
Yes. Microsoft Windows, Mac, Mac OS X, and Linux.
|
|
Interactive debugging
|
Yes
|
|
Builds binary libraries
|
No
|
|
Builds binary executables
|
Yes
|
|
Builds stand-alone executables
|
Yes
|
|
Runtime library size
|
About 3 MB.
|
|
Library support
|
Limited. Mostly commercial plugins.
|
Conclusion
Pros:
Cons:
-
Excessive quantities of code required for simple operations.
-
Closed source compiler and IDE.
-
Proprietary binary source code format.
-
Limited library support.
-
Bug ridden object orientated engine.
-
Difficult to extend.
Popular untyped open source programming language.
|
Property
|
Evaluation
|
|
Procedural
|
Yes.
|
|
Object Oriented
|
Yes.
|
|
Rapid development
|
Yes.
|
|
Client applications
|
Yes. Numerous multi-platform GUI libraries.
|
|
Server applications
|
Yes.
|
|
Web applications
|
Yes. Apache or IIS/ASP plugins, or via CGI or FastCGI.
|
|
Extensible
|
Yes, via COM and it's heirs, or static or shared libraries.
|
|
Code Documenting
|
Yes, via Doxygen or similar.
|
|
Version control
|
Yes. Any text based version control system.
|
|
Unit testing
|
Yes, via PyUnit or similar.
|
|
Batch builds
|
Yes
|
|
Unicode aware
|
Yes
|
|
Exception handling
|
Yes
|
|
Multi-platform
|
Yes. Many operating systems are covered.
|
|
Interactive debugging
|
Yes, depending on the IDE.
|
|
Builds binary libraries
|
Yes, but python VM only.
|
|
Builds binary executables
|
Yes
|
|
Builds stand-alone executables
|
Yes
|
|
Runtime library size
|
About 4 MB.
|
|
Library support
|
Extensive. Mostly open source.
|
Conclusion
Pros:
-
Weak typed language.
-
Simple terse syntax.
-
Easy to learn, well known.
-
Multi-platform.
-
Easily embedded in other programming languages.
-
Easily extended with external libraries via a variety of methods.
-
Large open source following.
-
Extremely rapid development and prototyping times.
-
Extremely flexible language operators.
-
Can be used in ASP pages.
-
Microsoft is releasing (currently version 0.9 alpha) a .Net version. Seems to work on the Mono platform too. Can be used in ASP.Net pages.
Cons:
-
Modest programmer following.
-
Slow. This is a byte code interpreted language, but in the order of ten times slower than Java or .Net.
Document history
|
Release
|
Date
|
Description
|
|
1.0.0
|
26 September 2005
|
Initial release
|
This document was written by John Leach, Chief Technical Officer for Syger.
Tagged by:
|

|