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:
  • Visual Basic
  • VBScript
  • C/C++
  • Java
  • .Net (C# principally, but could also be VB.Net)
The outsiders are:
  • REALbasic
  • Python
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.

Visual Basic

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
Yes, via VBUnit
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.

VBScript

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
Yes via ScriptUnit.
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.

C / C++

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.

Java

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
Yes via JUnit.
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.

.Net, C#, VB.Net

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
Yes via Nunit.
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.

REALBasic

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:
  • Strong typed language.
  • Simple if verbose syntax.
  • Multi-platform.
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.

Python

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.

Valid CSS

Valid XHTML 1.0

Valid Atom 1.0