Sunday, October 31, 2004

A Programmer and His Language(s)

If you are a developer today, your life is not easy. Today's projects often require that a you know many languages:
  • HTML
  • Java
  • SQL
  • Javascript
  • C#
  • VB
  • C
  • C++
  • XML
  • UML

Of course, this doesn't include any of the non-language things you may need to know:

  • Domain knowledge
  • Architecture
  • Class design
  • Relational database design
  • Development tools (Ant, Visual Studio, Eclipse, etc.)
  • Agile methodologies (Xtreme Programming, Scrum, TDD, etc.)
  • Traditional methodoliges (RUP, waterfall, staged delivery, etc.)

Does this seem like enough? Don't forget that many of these language and non-language items are continuously changing. Feeling overwhelmed yet? I know I feel about as overwhelmed as a new parent with triplets during feeding time; I need all the help that I can get.

Pick One Language: VB.Net or C#
In Code Complete 2nd Edition, author Steve McConnell sites several studies that your familiarity with a programming language significantly improves your productivity. One study that he sited showed that programmers who had extensive experience with a programming language were three times more productive than programmers with minimal experience. How many programming languages can you have "extensive experience" with? Be honest. 2? 3? 4?

You used to choose a programming language for its fit with the problem that needed to be solved. For instance, older versions of VB were very good for rapid prototyping and fast development of small applications. C++ was used for more low-level control and power. SQL is for manipulating data in relational databases.

Microsoft latest language incarnations are VB.Net and C#. The differences between VB.Net and C# are basically syntactical; they both rely on the same .Net framework. I guess Microsoft tried to strike a balance between the ease-of-use of the old VB and the power of C++ with VB.Net and C#. I'll let you decide whether Microsoft succeeded in striking the right balance.

Since there is no practical difference between VB.Net and C#, why would you choose one language over the other? Well, there is really no reason other than what language you were familiar with when Microsoft released .Net. VB programmers migrated to VB.Net and C++ programmers migrated to C#. Unfortunately, this migration has lead to a situation where many projects contain a combination of VB.Net and C# code, even though there is no practical difference between the languages.

Given your current brain overload, do you really want to learn VB.Net if you are a C# programmer and vice versa? Probably not. You usually are more dominant and productive in one language and therefore weaker and less productive in the other. Every time you try to write VB.Net code (if you are a C# programmer), you have to slow down and think about the VB.Net syntax. You go through a slow (relative to a computer), manual translation in your head.

Computers are really good at programming language translation in general and at translation between VB.Net and C# specifically. The reason that we developed our tool was to at least solve one-half of this translation problem. We tried to do our small bit at reducing your information overload and make a little money (gotta feed those triplets!) at the same time.




1 Comments:

At 2:22 PM, Anonymous said...

>Since there is no practical difference between VB.Net and C#...

there is: C# supports unsafe code and pointers, VB does not. If your project requires these things for compatibility or efficiency, VB is the wrong choice.

From this angle, C# is the logical choice, if you must choose only one.

After using both for the past 3+ years, I have come to the following conclusions:
1. VB.NET is - finally - a real OOP language
2. C# is vastly superior in terms of control, syntax, and organization.

IMHO, of course

 

Post a Comment

<< Home