Another Language for ASP.NET
November 17th, 2006I just read about the new IronPython for ASP.NET. That is great for the reasons that it adds a dynamic language to ASP.NET and allows existing Python developers to more easily get into ASP.NET. But I am concerned that it will encourage more languages to come on board which will expand our available options unnecessarily.
As I work as a consultant I go from VB.NET to C# from client to client. I have learned both sufficiently so that I can do the work efficiently, but if each new client chooses a different language, my productivity will go down and the language specific issues will increase. In the past few years I have occasionally encouraged teams to lean toward C# when deciding on a language, but I honestly do not have a problem with going back and forth between the two languages. The syntax really is extremely similar and I am working with the same objects in all of the namespaces, so it really is not much of a chore to adjust. Generally the only difference is the missing semicolon in VB.NET which is something you become comfortable with after a few days.
But if you look at the syntax for Python, it is dramatically different. For starters, the language uses whitespace instead of brackets to separate blocks of code. With C# you have the opening and close brackets while VB.NET has the Begin and End statements. And when I want to format the code to be more readable in Visual Studio I simply hit Ctrl-A and Ctrl-K Ctrl-F and my code is formatted. I cannot imagine how that can be done with Python.
My concern is not really just with Python. If Ruby, Perl, PHP and every other scripting languages becomes a .NET language it will start to raise the same concerns I have had for Java. With Java, I could never know what the next client might be using for their web platform. Despite using the language, the next project could be using Struts, JSF, Tapestry, Shale or any number of other web frameworks and it is nearly impossible to keep up with all of these rapidly evolving frameworks. What I have liked about ASP.NET is the fact that at least I can learn it very well and will be well prepared for the next client.
Already when you work in this field there already are plenty of challenges you need to overcome which are just in the business processes domain. There is no need to introduce more options and complexity when it comes to the syntax of the code. I would rather spend my time assembling an application which the business can use instead of spending most of that time learning the scripting language that client decided to use. After all, our value as developers is not due to the fact that we can read code as much as the fact that we can make the code to fill a business need. I hope we do not lose sight of that fact.
And realistically, if you do have a team which already has a large base of existing software in one language it is reasonable to move to a service oriented architecture (SOA) and just expose web service endpoints on that base of code and build your web layer with ASP.NET with C# or VB.NET. Gradually you can produce new software with C# or VB.NET and slowly transition the code base and the expertise of the team to the newly adopted technologies. There is no need to abandon your existing systems just because you want to start taking advantage of ASP.NET tomorrow.
