There are some general themes that permeate the debates about the relative merits of different programming languages. If <A> and <B> are any arbitrary languages, then most arguments take the following form:
- language <A> is faster than language <B>
- language <A> runs on more platforms than language <B>
- language <A> has better programming tools than language <B>
- language <A> has more extensive libraries than language <B>
- language <A> is more popular than language <B>
With more languages being ported to .Net and the DLR, the next few years may finally provide a “level playing field” where several programming languages can be compared in applications development.
- I expect that all dynamic languages running on the DLR will be similar in speed. Language implementations not using the DLR will probably show more variation depending upon details of each compiler.
- Platform portability will be exactly the same for all languages for any specific version of the .Net runtime.
- Visual Studio is being widely used across languages for Windows desktop development. Silverlight/DLR based IDE’s will become available for multi-language scripting development in non-Windows environments.
- Libraries in any language are available to any other language sharing the platform. For example, Ruby can access Python libraries (and vice versa) and both can access C# libraries.
- Developers can choose whatever language they are already comfortable with.
So the “language wars” are likely to become a thing of the past, at least for applications running on the .Net/Mono platforms.
It will be interesting to see how Smalltalk and Lisp are used in implementing the next generation of applications. Smalltalk’s has the virtue of interactivity and simplicity of learning (children, occasional users) while Lisp is unique in its ability to transmute data into code and code into data.
They both may contribute unique solutions to new challenges.