Products

Solutions

Resources

Partners

Community

Blog

About

QA

Ideas Test

New Community Website

Ordinarily, you'd be at the right spot, but we've recently launched a brand new community website... For the community, by the community.

Yay... Take Me to the Community!

Welcome to the DNN Community Forums, your preferred source of online community support for all things related to DNN.
In order to participate you must be a registered DNNizen

HomeHomeOur CommunityOur CommunityGeneral Discuss...General Discuss...From DotNetNuke Connections: VB vs. C# SurveyFrom DotNetNuke Connections: VB vs. C# Survey
Previous
 
Next
New Post
11/6/2010 9:50 PM
 
Will Strohl wrote:
Just a bit of advice...  I would much rather us say something like "for a senior developer" or "a more experienced developer".  When you say something like "a real developer" it automatically causes some people to get defensive and take an emotional stance on topics like this one, rather than a logical stance.  

That being said,.....

 Will

I know Sergey very well, I am 110% sure he was not trying to be offensive. This is where knowing a knowing a language perfectly can cause you lots of problems. His first language is not ENGLISH.

The order for his language preferences goes something like this

Mother tongue Ukranian
Second Language C#
Third Language JAVA
Fourth Language VB
Recently English
 
:)

Salar

 
New Post
11/7/2010 12:12 AM
 
Just so people understand where this post/poll originated... at the closing panel for DotNetNuke Connections in Las Vegas, a conference attendee asked the rather "loaded" question of whether we would ever consider changing the primary development language for the core framework from VB to C#.

I answered the question by first explaining the background for the C# source code package which we posted earlier this year ( ie. the fact it was created by a volunteer community member from China; that it had been posted on Codeplex initially as a C# fork - which we had to shut down due to trademark issues; that we had been working with the community member to post a new version to coincide with each new core release since; and that the C# version has not been part of our standard QA process to date ).

I went on to say that changing the primary development language for the core framework had come up a number of times in the past, but we would never make such a decision unless there was significant evidence that there were obvious business benefits to be obtained ( after nearly 20 years in software engineering I have learned it is NEVER a good idea to change technology unless there is a compelling business case to do so - a business case which is good not only for one stakeholder but for the vast majority ).

The .NET language debate has raged on for nearly a decade now - the problem with these discussions is that they tend to get very subjective and emotional and usually miss the entire point of why one would consider using one language versus another. In the panel I tried to outline a few objective reasons of why the C# question is even relavent at all for us, but unfortunately I think some of my points were taken out of context. So it is probably a good idea to document some of the more important items to consider...

First Class Citizen

The most fundamental argument in the language debate centers around citizenship. When .NET was launched way back in 2000 there was a lot of hype around the fact that it was "language agnostic". Since .NET is based on MSIL from a run-time perspective, the premise was that programming language was essentially irrelavant. In these early stages it really felt like C# and VB were first class citizens in the .NET world. However, in the years since it has become very apparent that there is much more to consider than just the run-time perspective. The fact that Microsoft itself develops the majority of its products in C# results in a far greater emphasis on the C# language in terms of innovation, tooling, examples, etc... So although Microsoft tries hard to provide decent support for VB, it generally feels like an afterthought - almost as if it is a required burden which they are forced to accept because of the size of the VB community. As a result, whether it is accurate or not, the general perception is that C# is a first class citizen and VB is a second class citizen - and this citizenship dilemma manifests itself in a variety of ways.

Availability of Source Code Examples

In the early stages of .NET, there was a commitment by Microsoft as well as other media organizations to always provide source code examples in both C# and VB. This emphasized the first class citizenship of both languages and provided incredible value to developers, regardless of their language preference. However, there is no doubt there was significant time, effort, and cost associated to this practice so it is not surprising in recent years that the commitment has changed. In fact, I was recently on a conference call with a leading .NET publication and they said that they made a decision to only provide code listings in C# over a year ago. A quick search on Amazon reveals 1028 books on "C# NET" whereas only 744 books exist for "VB NET". Less code samples in VB means less useful education and reference for VB developers which reduces the effectiveness of utilizing the VB langage.

Availability of Developers

After nearly a decade the number of developers using C# is far greater than those using VB. A quick search on a popular job site shows 858 job opportunities for "C# NET" in the past 7 days as opposed to only 371 job opportunities for "VB NET". If we want the size of the DotNetNuke ecosystem to grow dramatically in the coming years, it means that we will need to recruit new developer talent. And I am not just talking about DNN Corp; every systems integrator, module developer, etc... will need to recruit software developers and the availability of C# developers is much higher than VB.

Developer Attitude

This item is somewhat subjective, but it generally feels like C# developers are less flexible and more opinionated when it comes to evaluating solutions ( as compared to their VB contemporaries ). There may be a variety of reasons for this attitude but at the end of the day if C# developers have a poor first reaction to the fact the core is written in VB, it limits the growth potential of the project and ecosystem. This is a very difficult item to measure, as you typically never get the opportunity to hear the reasons why someone does NOT choose a particular technology - they have already moved on to an alternative. Whether we can measure the first impression that the VB core has on C# developers or not, we already know that there are certain members of the .NET community which will never choose DotNetNuke, regardless of core language. The so called "cool kids" are wary of any solution which they do not write themselves from scratch; and really represent the exact opposite of the type of developer which we want to serve. DotNetNuke is a productivity framework and is best utilized in environments where time and cost are critical factors for success.

Perceived Performance Benefit

I have yet to see any performance metrics which validate that C# runs faster than VB ( and I would have a hard time even understanding in theory how this is possible because both languages produce comparable MSIL ). But regardless, there is a perception in the .NET world that C# runs faster than VB and the popular saying is that "after a while, perception is reality".

Enterprise Acceptance

In the enterprise world there are really only two technology platforms which are widely accepted as "enterprise capable". There are J2EE and .NET. And when it comes to .NET, C# is the dominant language by far. This may actually be related to the fact that C# closely resembles Java and there has been some migration of enterprise developers from one platform to the other over the past 10 years. Most enterprise organizations are savvy enough to understand that a VB core framework is not a platform weakness from a technical perspective, but when they evaluate it from a business perspective and look at the availability of source code from a risk mitigation or escrow scenario, they would much prefer if it was written in the language which their developers prefer.

Competitive Landscape

When we evaluate the other .NET CMS systems available - open source or proprietary - we notice that ALL of them are developed in C#. Since CMS systems generally require some level of development to customize them to the needs of a business, it makes the technology platform more important than it is with most applications. So in the cases where a user considers switching from a competing .NET CMS to DotNetNuke, one of the items they need to consider is how to migrate their custom developed assets. If a user makes an invalid assumption that they can only use VB in DotNetNuke, it could be a factor in them ruling us out because the effort to convert their C# code is too high. In addition, because DotNetNuke is written in VB, there may also be incorrect assumptions that integrating DotNetNuke with other .NET C# solutions will be difficult ( which we all know is not the case ).

Language Leadership

Anyone who has been in the .NET world for any length of time should be familiar with Anders Hejlsberg. Hejlsberg is a Technical Fellow at Microsoft responsible for advancing the capabilities of the C# language. There is no contemporary to Anders in the VB world which again emphasizes the fact that VB is essentially a "little brother" to C#.

Strategic Direction

Currently Microsoft is interested in improving the engagement with the "breadth" or "productivity" developer community. Part of the strategy involves the new WebMatrix IDE and Razor scripting syntax. Interestingly, in a recent issue of Code Magazine, a community member raised the question as to why C# is the default language in these new tools as opposed to VB ( which has always been perceived as a better "beginner" language ). Well, the answer from Microsoft was that they purposely wanted to reduce the choices which a beginner needs to make and therefore needed to give one language more weight than another. They said beginners often have experience with "C-like" languages like JavaScript so they chose C#. In addition, if a beginner learns C#, they can more easily graduate to more sophisticated development models. This is yet another indicator that Microsoft is trying to influence developers to choose C# over VB.

Language Conversion

Because the C# language is based on ECMA Standard 334, it is much easier to convert code from C# to VB than vice versa. In fact, the automated code conversion tools have much higher levels of accuracy for C# to VB than VB to C#. In addition, since Mono is developed based on the ECMA standard and its C# compiler is far more advanced than the VB compiler, it offers other opportunities.

Compatibility

Because both C# and VB share common characteristics, they are highly compatible with one another. This means that if the core framework was converted from VB to C#, the DotNetNuke API should be able to preserve compatibility - which is obviously a highly important benefit in terms of serving the needs of our ecosystem.

Regardless of the reasons outlined above, I think it is important to note that our public stance has always been "it should not matter what language the core is written in... as extensions can be written in whatever language you prefer". Some people perceived this statement to be directed only at third party developers and essentially mean "don't be ignorant and discard DotNetNuke just because the core is written in VB". However, this statement was not only directed at third party developers - it was aimed at ourselves as well. If we are truly objective and want to choose the optimal technology for the product and ecosystem then we can not be ignorant either - we need to set aside personal preferences and make the best overall choices for the longevity of the project. And like all technology choices, it must be an exercise in compromise because there are always trade-offs to consider.

With all that being said, let me be crystal clear by saying that our primary development language for the core framewok is currently VB.NET. No decision has been made to switch to C# at this juncture. However, we are looking for objective feedback from the community and ecosystem to help us determine whether or not we are adequately serving its needs by continuing on our current path. Will Strohl's TwtPoll ( http://twtpoll.com/eui8j1 ) is good way to gauge initial reaction to this issue but please understand that we can not make decisions based on polls alone, as polls fail to recognize many of the more complex contraints and considerations and they only reflect the opinions of those individuals who participate in the poll - which generally does not include all relevant stakeholders.


My comments are my own and are offered WITHOUT PREJUDICE

Shaun Walker
http://www.siliqon.com
 
New Post
11/7/2010 1:47 AM
 
Hi Shaun

Thank you very much for this great info! Only one comment about this one:

Shaun Walker wrote:

Developer Attitude

This item is somewhat subjective, but it generally feels like C# developers are less flexible and more opinionated when it comes to evaluating solutions ( as compared to their VB contemporaries ). There may be a variety of reasons for this attitude but at the end of the day if C# developers have a poor first reaction to the fact the core is written in VB, it limits the growth potential of the project and ecosystem. This is a very difficult item to measure, as you typically never get the opportunity to hear the reasons why someone does NOT choose a particular technology - they have already moved on to an alternative. Whether we can measure the first impression that the VB core has on C# developers or not, we already know that there are certain members of the .NET community which will never choose DotNetNuke, regardless of core language. The so called "cool kids" are wary of any solution which they do not write themselves from scratch; and really represent the exact opposite of the type of developer which we want to serve. DotNetNuke is a productivity framework and is best utilized in environments where time and cost are critical factors for success.

Can't belive its true. Never met so biased C# developer, whose bad mood just because code is written in VB. I hope you've seen the unique exception, and it's really "only exception from rule".

BTW: Can't belive this holywar between C# and VB still exists.

Sergey

 
New Post
11/7/2010 5:35 AM
 
Hi Sergey,

I think Shaun, is right.  I think your judging other C# only programmers by your own standards, and even though your preference is C#...your still on the VB developer side of Shauns comments!.   I have worked in a C# only environment with what I would term as "senior" devlopers and when I first showed them DNN, back in the days of DNN3, the comment was "The fact it's in VB puts me off using it!"......Yep!!..I had exatly the same thought your having now!!...I can't believe he's just said that!!..(That was in England, where they do believe only 1 langauge exists!!..English!)

Anyway right or wrong, that is an attitude many C# only programmers have.  that's not to say they can;t use VB or even program well in it.  But the fact that their is a first reaction "oh..VB!!" does mean VB and therefore DNN has a hill to climb, even before it's been tested.

@Jan, if you were talking about productivity between Java and C# (simular in syntax, but not function!) then I would agree with you and be fighting the battle on your side...but VB and C# are so much the same switching should not take more the 1 or 2 months at most.  However  if you are constantly switching between the 2 lanagues in a single development project I can see a point to your argument.....but 20% less productivity for 1 year to switch,I think, is way too much!

Anyway a small geeky part of me does hope DNN goes to C#, even though I prefer VB now!

Dave.

** The above is simply my point of view, so please don't feel I trying to argue one way or the other!!
 
New Post
11/7/2010 6:28 AM
 
Hi Shaun,

This is a great post. As usual is showing an outstanding ability of throwing light and dissecting a very difficult subject. I personally think this discussion is very healthy for the platform. It shows we are able to adapt and embrace whatever is good for DNN and set personal predispositions aside. This will improve perception from organizations that may consider VB second class.

 Salar
 
Previous
 
Next
HomeHomeOur CommunityOur CommunityGeneral Discuss...General Discuss...From DotNetNuke Connections: VB vs. C# SurveyFrom DotNetNuke Connections: VB vs. C# Survey


These Forums are dedicated to discussion of DNN Platform and Evoq Solutions.

For the benefit of the community and to protect the integrity of the ecosystem, please observe the following posting guidelines:

  1. No Advertising. This includes promotion of commercial and non-commercial products or services which are not directly related to DNN.
  2. No vendor trolling / poaching. If someone posts about a vendor issue, allow the vendor or other customers to respond. Any post that looks like trolling / poaching will be removed.
  3. Discussion or promotion of DNN Platform product releases under a different brand name are strictly prohibited.
  4. No Flaming or Trolling.
  5. No Profanity, Racism, or Prejudice.
  6. Site Moderators have the final word on approving / removing a thread or post or comment.
  7. English language posting only, please.
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out