After posting our recent article comparing 4 web apps, a lot of comments around the web led to the conclusion that .NET was a poor choice of language. Since I began programming in C, and then spent 3 years with C#, I’m going to stand in .NET’s corner for the day and go over a few ideas.
The quick conclusion to jump to is to look at the code line counts and notice that RegOnline has the highest number. After speaking with the members of each team, and looking at the actual products, I would argue that this number is so large because of complexity and maturity rather than language choice. Looking at our own product, we could write down a list of features today that would take 3 years to implement. And considering we have added almost 10,000 lines in the 3 months since the stats were gathered, it is reasonable to imagine us at nearly two hundred thousands lines in 3 years. Now, make that 10 years, with 15 programmers, and that number grows faster.
Debates could go on forever about which language is better, but in practice an expert in any language can blow your mind. Watch and work with someone who is amazing at .NET, and you will be impressed. Also, for better or worse, all of my .NET buddies take a much more structure programming approach. Use cases, organized testing and deployment are all frequently practiced. This could just be personal experience, but it is the trend I have noticed.
Even though we’re a PHP shop, we do have a good chunk of .NET keeping us moving. Any admin type scripts that check servers and databases are written in .NET as Windows apps. The reasoning for this is that they run faster than their counterparts in the browser, and (again, possibly due to my background) writing desktop apps in .NET became the quickest approach.
So what’s the moral? Program in a language that you enjoy writing in because you have to sit and look at the screen all day working with it.
I couldn’t agree more. Those “my language is better than your language” arguments are usually pointless and tiresome (although some are insightful and intelligent).
My language isn’t better than your language, but my open source ecosystem IS better than a .NET developer’s closed source ecosystem. It’s simply more pragmatic. I can run as many servers as I like without worrying about license fees, I can swap out an open source component for its equivalent whenever I want to (goodbye Apache, hello nginx), and most importantly I’m safe from some vendor hold me hostage or (even worse) cancelling support for a piece of software I rely on.
If you want proof that building on a closed source platform is short sighted, look no further than the 6 million Visual Basic developers who had the rug pulled out from under them when VB was ditched in favour of the entirely different VB.net.
More than that though, it’s about the freedom to do what you need to do with your software. Want to deploy your new Facebook app to 500 EC2 virtual machines when it proves a hit? Just do it - no need to scrounge around for 500 new software licenses. Development halted by a killer bug somewhere lower down your stack? Ask on IRC or the mailing list, or pay someone directly to fix it - no need to wait weeks for a fix from your vendor (who are the only people with access to the source code).
It never ceases to amaze me when developers opt-in to a closed source ecosystem. You’re choosing http://en.wikipedia.org/wiki/Sharecropping when there are a billion acres of beautiful, fertile free land just begging to be developed.
Just one question in the my language vs. your language..
In terms of actual code syntax… which do you prefer? Java, PHP, .Net, C#, VB etc.
I concur that which language you use doesn’t make a difference, but as a programmer that started with Java and PHP… coding in VB, just about made me explode, in what appears to me, to be a complete lack of strict structure.
If I see:
foo.bar( baz, boz );
I know that I’m calling method bar, on foo, passing baz and boz…
IIRC, in VB, I can do:
foo.bar( baz, boz ); or foo.bar baz boz;
which to me seems so insanely whacky… or maybe it is just me.
I couldn’t agree more with Simon. I’ve worked in environments of each type, and the open source environments are invariably less frustrating and more fun. They’re less frustrating for exactly the same reasons Simon outlined, and they’re more fun because you can try out all kinds of different technologies before settling on the best one. There’s no need to worry about downloading a time- and feature-limited trial version of software you’re evaluating.
Another great advantage to using open source is that you can see the source code and learn from it for your own benefit. Even if you don’t actually use the open source libraries, you can find one that does what you need, learn from the source code, and implement the solution your own way in your application.
As far as the languages are concerned, there’s not much of a difference between Java and C# once you get over the learning curve. The main difference is that the learning curve is steeper for .NET (because there’s not nearly as much source code available to learn from).
It appears that the .NET community is starting to embrace open source, such as with projects like NHibernate, Spring.NET, and NUnit. However, the fact that all three of these were ports from their Java counterparts shows that the .NET community has a long way to go in these respects.
Simon, I’m in agreement with you, which is why do our core work in PHP. But I think that the negatives of a closed environment are seen as positives by other people. For example, the fact that there is a support team to turn to will sell enough people alone.
More importantly, I’m not sure I was explaining my intent well enough. I’m not looking at the languages as an environemnt or business decision, but instead at a code level. Line of code for line of code, you can pretty much accomplish the same effect in PHP as you can with .NET. There is a general concensus that .NET is clunky, poorly written, and only used by crap deveopers. And this in turn leads to large line counts, bugs, and slow web sites. My arguement is that our product could have been written in .NET, Rails, or PHP and on a code level it would function in a similar fashion. The only area I can’t speak for is large scaling, which I guess I’ll learn over time.
Comparing languages is really hard. Not only do the developers skills and experiences vary, but also the frameworks, task, libraries and development methodologies. I want to put in a plug for our current research at the Free University of Berlin, as we’re doing exactly this.
If anyone has experiences they would like to share in the name of research, please take part in the Plat_Forms survey: http://www.plat-forms.org/survey/ .
We will offer to send our results out to anyone that takes part. There is already a report from our first contest held in January, available on the main website.
No one cares which language is better. We all know you won’t ever get laid.
Well done this “political correct” assessment. I really don’t care about the language, some scripting languages beeing an exception to this. Important is the development environment and 100% functional enterprise ready libraries. The key is ready, tested and easy to integrate libs in the middle tier. Today, you need to take quick desing decisions, code quickly and countinousely test and integrate. We code in PHP for small web-apps, Java for enterprise portals and .NET for slick looking and highly usable user front ends. They all do their job very well. Open or closed source and price does not matter really at the end. A developer days cost more than a single server license and making an OS dn transactional in your middle tier costs money too.
Most people who don’t give C#/.NET a chance are just Microsoft haters (a.k.a. open-source nazis). C# is easily one of the most well-designed and documented languages ever created. Combine that with Visual Studio (which I don’t think any other IDE, even Eclipse, comes close to in quality), and you’ve got a pretty great environment. Yes, C# is a rip-off of Java, but hey, if it takes Microsoft to perfect it, so be it.
That said, I usually only use it for desktop applications because I don’t like having a dependency on a Windows server (I usually stick with LAMP). I do often use ASP.NET for commercial work simply for the availability of quality/well-documented third party libraries.
RE: Having problems with the technology. For businesses, sending an email to a mailing list isn’t an answer. The whole reason that businesses pay for commercial technologies like .NET is that when a problem occurs, there is someone who can be held responsible and can be contacted for support.
“Line of code for line of code, you can pretty much accomplish the same effect in PHP as you can with .NET. There is a general concensus that .NET is clunky, poorly written, and only used by crap deveopers.”
Huh? When you get to the corporate world, a good percentage of the apps, both online and off, are written in .NET. To say that all .NET developers are “crap developers” is beyond insulting and completely off base.
I have written in all sorts of languages, from PHP to JSP to ASP.NET and they all have their place. It just seems so odd to compare PHP which is an inline language to ASP.NET which an object oriented languages that separates the code from the presentation. Talk about your apples and oranges.
Does PHP have its place? Absolutely, but in my opinion once you can put a breakpoint in a webpage and step through your code, it is awfully hard to go back to .
If you haven’t tried .NET, then don’t knock it till you have tried it. Visual Studio (even the FREE editions) is miles above any other IDE out there.
David, just to clarify, I am not of that belief. I just get the impression that “Web 2.0” people feel .NET does not have a place.
As for .NET being objected oriented, all of my PHP is objected oriented as well. Code is separated from presentation, and so on. I believe the comparison is valid.
It has been a while since I have done PHP, but isn’t the code inline with the markup? I didn’t think it was event driven and therefore the code could not be placed in a separate file.
With the little research I have done on the subject, the people who are anti-.NET are either hardcore anti-MS people or they haven’t ever tried to code with .NET.
I apologize for singling you out Ryan.
I am always interested in hearing everyones comments on which language to choose. I have been a Microsoft Developer for 8+ years….most recently with .NET. i like the language / platform it has its benefits.
However recently I was determined to get my feet wet with Open Source Development with PHP / MySQL and Ruby and Linux…just to get a taste.
I agree with Simon about some of his points about licensing and community.
I have always thought Open Source were just mean in the way they treated me when I said I was a Microsoft Developer, but recently experienced my first flaming by a team of .NET developers for choosing Open Source for a project.
So I think there are pros and cons to each platform, ignorant people in both camps, and it is ultimately your personal choice that should be based upon your project goals.
I’m a PHP developer currently working in C#.NET and I see very little difference in the development process. Anyone who has spent a significant amount of time working with PHP will almost invariably begin to work in an object oriented fashion. Visual Studio is very good for an IDE, but if you test early and often in PHP then things like breakpoints and debuggers become almost moot.
Whats wrong with “selecting the right tool for the job?” I currently develop and support Ruby on Rails, PHP and .NET. Each has its own place in my toolbox and I choose each according to the requirements of the job. You may say that each could be interchangeable, and in most cases, this is true. However, in the real world, it isn’t. The whole open-source vs MS thing is so overplayed, I don’t even feel like addressing it.
i’m a .net/c# developer focusing primarily in asp.net (vs windows).
I’ve been enjoying using the SubSonic framework (subsonicproject.com) which essentially brings Ruby On Rails -esque development efficiency to the asp.net wold. I will say, it’ has made developing in asp.net fun again.
If you want to read an interview with the creator of Subsonic - check out Juxtaviews.com
You can also check out my blog for some SubSonic tutorials over at scribesonic.com