| «« iBook Repair Update | iBook Woes »» |
|
About
I'm Ryan Lowe, a Software Engineering graduate living in Ottawa, Canada. I like agile software development and Ruby on Rails.
I write this blog in Canadian English and don't use a spell checker. Typos happen.
Projects
» Full-time Ruby on Rails freelancer
» Full-time with Rails since May 2005 » Former committer for RadRails (now Aptana) » I also have a few Rails side-projects in development: 1. wheretogoinTO.com Toronto nightlife 2. Hey Heads Up! TODO list and sharing 3. Layered Genealogy family history research 4. foos for foosball scoring 5. fanconcert for music fans (on hold) Hiring Rails developers? I can telecommute by the hour from Ottawa, Canada »» Email: rails AT ryanlowe DOT ca
BulletBlog
Now hosted on Hey! Heads Up -- check it out!
Syndication
Pings
Recent
blog@ryanlowe.ca no more
Forging Email Headers: Good, Bad or Ugly? Sarcastic Dictionary (Part 1 of Many) Tags Hierarchies Twisting Rails is Risky Business Risky Business? My Take on Early Alphas Whoa, it's August 2007 Closing Comments A Postscript to "Growth at the grassroots" An Abuse Trifecta »» All Blog Posts
Linkage
del.icio.us/ryanlowe
technorati/ryanlowe.ca/blog Aurora Roy Jim Andrew Trasker Travis Kibbee Karen Dr. Unk Ayana Van Bloggers Joel Spolsky Robert Scoble Tim Bray Dave Winer Raymond Chen James Robertson Ruby/Rails Bloggers rubyonrails.org weblog David Heinemeier Hansson Dave Thomas James Duncan Davidson Mike Clark Jamis Buck Signal vs. Noise Tobias Luetke Amy Hoy: (24)slash7 Jeremy Voorhis Eclipse Bloggers Planet Eclipse EclipseZone Luis de la Rosa Eclipse Foundation Kim Horne Billy Biggs Ian Skerrett Mike Milinkovich Bjorn Freeman-Benson Denis Roy
Archives
|
Visual Studio .NET vs. Eclipse
Being mainly a Java/Eclipse developer I'm finding it quite hard to move to .NET/C#. You see, Eclipse has spoiled me and given me all of these wonderful features that I can't get in Visual Studio .NET. I'm wondering why I ever wasted my time hand-editing my code all of these years. Here's the run-down on my issues: 1. C# is Java. There, I said it. It's Java with different words and some extra stuff like Properties. Everything is the same but named differently. How convenient. It's a lot like the difference between C# and VB.NET but a little more so. The upside is that I get to say I know two languages for the price of one and a half. 2. Refactoring. Holy crap, I'm screwed. I can't use an IDE without refactoring any more -- I get completely frustrated. "What do you mean I have to change the name of this function myself in all of these files??" Global search and replace? Ick. 3. Code Indenting. The Eclipse indenting isn't perfect either but at least it doesn't trip over itself when you go one line too far down and go back up. Oops. 4. Code Completion. Right in there with indenting. Give me the end bracket/brace, damnit! I don't want to type it. 5. Code compiling. Compile my code as I write it so I can see mistakes, please. I hate recompiling my project every single time I want to check for errors. I'm not typo-free (or else I'd be a secretary). 6. Unit testing tool integration. For the love of Pete help those poor NUnit saps put unit testing right in Visual Studio. Why do I have to switch back and forth between apps and find the compiled executable I want to test. Integration integration integration. It's all about saving small increments of time (remember time motion studies?) ... if I have to switch 200 times a day between apps and that takes 5 seconds, there's 4000 seconds! Six and a half minutes and a hundred times more frustration. 7. CVS integration. How can a modern IDE survive without code repository integration? ... and I'm not talking about Visual Source Safe here, CVS is the minimum. Eclipse's CVS integration is beautiful. Copy it. Please. That's it for now ... believe me, there will be more. I'm kind of exaggerating my exasperation for comedic (maybe?) effect but only a little bit. It's a seriously sad situation here. If you know how to solve any of these problems, let me know! I'm using the original version of VS.NET (2001, I guess). Posted at October 27, 2003 at 02:18 AM ESTLast updated October 27, 2003 at 02:18 AM EST Comments
So here's the deal. First off, Im in love with Eclipse. It's awesome. Eclipse is open source software, and it's also free. The deal with studio, is that like eclipse.. it's plugin based, and most, if not all of the stuff you're talking about here is availiable as a third party plug in. The only catch is that you need to pay for it. However..... "Based on the TortoiseCVS code, a plugin for Microsoft's SCC API (allowing access to CVS from within Visual Studio and other IDEs) is being developed. Read more here: http://sourceforge.net/projects/cvssccplugin/" » Posted by: Kris at October 27, 2003 10:15 AMhehe. I'm gonna go through these 1 by one just for fun... 1. Yes, C# is an M$ implementation, but there are a few key differences. C# is easy and straigh forward. You can sit down and spew out something fairly complicated in half an hour as opposed to having to plan things out with java and end up spending the a good portion of your time refactoring the code so everything works together... (take the example of your and Karen's Security lab development time vs ours (which was done in about two hours, not counting that Big-Integer thing..) ). 2. There are refactoring tools available for VS.Net. Nothing free (yet), but they're in development. The promising seems to be C# Refactory (http://www.xtreme-simplicity.net/CSharpRefactory.html).. I've been watching this for a few months now..) 3. hmm. I haven't noticed any problems with the indenting.. could be I'm more used to it though since I prefer VS.Net over Eclipse. 4. See 3. :) If I could be bothered, I'd turn this off in Eclipse since I'm more used to doing it myself anyways. 5. I agree with you completely. This my major pet-peeve as far as VS.Net goes. 6. http://sourceforge.net/projects/nunitaddin/ 7. It's a Microsoft product, did you honestly expect them to pay developers to get it their star dev-app to work with a FREE alternative to SourceSafe? ugh. Guess I oughta start using the Preview button eh? » Posted by: peter at October 27, 2003 06:30 PMThanks for the comments -- I'll try that stuff out. » Posted by: Ryan at October 27, 2003 08:31 PMYeah, the NUnit-Addin really makes it alot easier to unit-test with VS.Net. Plus it works with NUnitASP too which is really good. There's also the CSUnit Framework that you can look at, which integrates itself into VS.Net too. CSUnit seems to be under more rapid development than NUnit, but I just prefer NUnit (mostly because of NUnitASP, which you can't get for CSUnit). » Posted by: peter at October 27, 2003 09:06 PMYeah, I'm trying to get out of the "web applications" area ... so no ASP for me. » Posted by: Ryan at October 28, 2003 09:07 AMyou should see the really powerful refactoring tools we have in smalltalk: http://www.refactory.com/RefactoringBrowser/Rewrite.html » Posted by: anthony at November 9, 2003 11:50 PMIf you have to switch between apps and it takes 5 seconds, you DEFINITELY need a faster machine. Realizing that 5 seconds as proof that Java is not suitable for desktop apps (Eclipse) would be nice too. » Posted by: Assen at November 30, 2003 05:15 PMThat "5 seconds", which referred to switching there and back and also includes the time it takes your brain to context switch from one app to another. It doesn't really have anything to do with the computer's speed. » Posted by: Ryan at November 30, 2003 06:52 PMI disagree. Java is definitely suitable for desktop applications and Eclipse is proof. Don't be surprised if more Java/SWT/JFace applications are made in the next year. » Posted by: Ryan at November 30, 2003 07:00 PMI wont be surprised if more Java/SWT/JFace applications are made in the next year. I will be surprised if any of them are finished next year. Eclipse is flakey as hell on linux, and slow as hell on windows. » Posted by: Chris at December 4, 2003 09:17 PMEclipse isn't any slower than another other Windows application I run. Of course I have a half gig of RAM. A development machine should have a certain about of horsepower and memory -- we can't hold onto our old machines forever. » Posted by: Ryan at December 4, 2003 09:25 PMThis is a very interesting topic, and I would like to see it continue. I have worked extensively with both Visual Studio .Net and Eclipse on many different projects. The differences I have found with with these two platforms flows all the way back to the differing philosphies I have found with Java developers and .Net developers. From my point of view here is how I see the two platforms: Eclipse: A very powerful, and extensible platform geared towards software engineers. I use the term software engineer as someone who understands to art of creating software, software process models, software frameworks, architectures, practices, etc. This tool is second to none in terms of software engineering features, such as refactoring, unit testing, build/deployment. I have found that the people who regularly use this environment have a very good understanding of software development/engineering. They are more concerned about having tools that make their life easier while producing higher quality code, than having a tool that builds applications for them.
A very structured rapid application development environment geared towards software developers concerned with creating business applications. I define a software developer as someone who develops software applications. While many .Net developers I have worked with talk about and understand software engineering concepts and theories, they very rarely use them while building applications. In my opinion Microsoft has geared this platform more towards a general developer more concerned with business logic and data flow. Visual Studio .Net makes things too simple in my opinion. They also do not include any of the advanced and useful software engineering features found in eclipse. The danger in making things too simple, rapid, and for the general public is that many developers who could be excellent software engineers choose to be lazy due to the environments seemingly encouragement to do things quickly without much thought and engineering.
I'm getting this impression too, Justin. I think we are reaching a tipping point of complexity though. Software is getting too complex to "RAD" or hack together. Tools are going to rule software engineering in the future -- tools that make it easy to develop and modify your code without compromizing quality too much. Quality will effect development times enough that people will pay more attention to it, and they'll demand tools. Developers spend far too much time fixing bugs and regressions. I agree with your assessment of the Eclipse vs. VS.NET mindset. I think the software engineers will win in the long run -- and they'll use the best tools for the job. Right now, Eclipse is winning IMO. » Posted by: Ryan Lowe at December 16, 2003 12:31 PMSome excellent points Justin. I think this is absolutely the state of play with regards to the mindset of the average professional working with the two platforms, currently. However, VS.NET and its previous versions have always been hugely productive in my opinion - more so than any IDE I have used so far (although IntelliJ Idea is nice). This doesnt necessarily mean that the quality of software produced decreases though - as long as the engineer/developer(!) is competent. Your suggestion is almost that if VS did less, and was less accessible, then its users would be forced to work harder; and this in turn would somehow produce higher quality software? I found it a huge shock using Eclipse for the first time after several years using VS. The features are mostly all there in Eclipse, but the entire code-compile-run cycle is way way way slower for a start. I guess I'm a little stuck in my ways, but really dont see a more productive platform to develop on than .NET using VS right now. Chris » Posted by: chris at January 6, 2004 09:06 PMTo me the primary benefit of Eclipse is that there is no compile step. All code is compiled as you type, and when you save a file, one of the docked panes is filled with the syntax errors throughout your project. (So, it compiles the current file in the background, and compiles all the other files in your project when you save. ) Given a suitable development machine, all of this happens relatively instantly, and the IDE feels just as fast as VS.NET 2003 on my machine. Eclipse also has Refactoring support, better code completion, and better unit test integration, although that's a little buggy. (The JUnit pane often wants to pop up even though there are no errors.) NUnit GUI is too intrusive, but I haven't tried CSUnit. However, to be fair, C# is not the best coding tool in VS2003. As an experiment, I recently ported a relatively small Java application to VS2003, and gave up using C# due to the poor IDE. Instead I ported everything using VB.NET, which is a much better tool. It does syntax checking on the fly, much like Eclipse/Java, but not quite as powerful. It also supports much better code completion, and in a lot of ways is even better than Eclipse/Java. For example, it automatically handles indenting correctly in many cases, even when cutting/pasting code. I found several bugs in this area, but in general it's pretty even with Eclipse/Java. In my mind the IDE and Language must be evaluated together when discussed in the context of modern software engineering. Those of us who have used modern tools do not want to go back to the dark ages. Here's how I rank the Java-like language combinations I've used, on a scale of 1-10 Still, objectively there were quite a few things I liked better about using VB.NET than Java/Eclipse, and overall I prefer Java/Eclipse over Java/IntelliJ, despite the latters better feature set. And none of the Java tools have the true equivalent of Visual Studios Macros/Addins. I do have hopes that Whidbey will address the problems with the VS tools. Due to their track record, I have the best hopes for the VB team. It also sounds like both .net languages will be greatly improved, although I feel they both already improve on Java. » Posted by: David M at January 10, 2004 12:39 PMI think eclipse is designed for people who is developing huge applications for enterprises. It is extremely complicated for normal use. I think one may prefer eclipse over vs.net if he is developing a very huge program and needs to use features that exist only on the eclipse. Also idiots who pretend to be smart by thinking that they should be smart because they use a complicated developer tool can also prefer eclipse over vs.net, but because eclipse will make you less productive, for most of the developers I recommend vs.net. Visual studio is natural and easy to understand. You don't need to learn a whole new set of concepts and you don't need to read a whole book just to understand how the editor works. If you are an idiot and want to learn a complicated tool, I recommend emacs, instead of eclipse. Just call everything else stupid and show your inherent stupidity in you. Some idiots also use vi and claim that vi is the best development IDE out there. If you are stupid there are various tools out there for you, but if you are smart you choice is easy. :)) » Posted by: Jin at December 15, 2004 09:44 PMJin needs to be more tolerant of others. The idea that Eclipse is for 'software engineers' while VS is for 'developers' is apt. In my 47 yr old opinion, this accurately reflects the long standing difference in focus between the Unix and Windows worlds. My question is how long can MS hold out against free software? Eclipse will surely evolve to provide the kinds of business software tooling at the center of VB and VS. And then what? It's not just us grunts who will be looking long and hard at the cost of VS. Consider General Electric which (I am told) recently handed down a policy that all business software developed for Windows was to be replaced ASAP for cost reasons. » Posted by: tom at December 17, 2004 09:00 PMWhat is that cost reason? Visual C# costs 109$, a 1 day salary in USA. I would understand that in Romania, where that is a salary for 1 month, but not in the USA. In USA in 1 year of use if the productivity gain is even 1% it worths the price. In Romania the variants like Delphi with its 2500$ and Idea with 500$ are there from start excluded. To buy a Delphi you have to give all your salary for 2 years, in wich a new version will appear. » Posted by: aaa at January 5, 2005 10:38 AMI agree, the cost issue is minor. » Posted by: Ryan at January 5, 2005 10:41 AMThat $109 figure is unrealistic, IMO. MS is great at getting you in cheap and then upgrading you to an expensive suite of software, like the 'architect' version ($2500?). Plus, their tools 'work best' with a whole bunch of other very expensive products like SQLServer. But that's beside the point. A 1% or even a 10% gain in productivity is not enough when 10 years from now your code all has to be rewritten into another language so it can run on an open platform that the industry has standardized on (open meaning vendors provide competing impls). MS knows this. They do everything they can to fragment the market and prevent standardization (like offer 4 programming languages that all do the same thing and require complicated proprietary tools like VS). So long as developers look only at their current project, and split hairs over minor and fleeting productivity gains, the strategy works. But eventually, the advantage of MS's tools gets so small (compared to something like Eclipse), that corporate America wises up and we reach a 'tipping point'. The GE decision suggests to me that we're getting close. » Posted by: tom at January 9, 2005 03:30 PMSo here it is, January 2005, and you know what? VS has the SAME problems that it did when this thread was started in 2003. Meanwhile, Eclipse has gone through a number of releases and its performance has improved (so those earlier comments about performance probably no longer hold true). Recently, I had to take over some code that was written in C#. As a language, I think that C# is pretty cool, so I was excited to take on the project. However, once I started to work on the code base, I realized how irritating VS is compated to Eclipse, basically for the EXACT reasons that Ryan listed two years ago. So you know what I did? I got Eclipse 3.1m4 (since it's the only release that is Java 1.5 compatible at the moment) and copied all of the C# code in there and just started translating C# to Java. This may sound a little ridiculous, but it has worked beautifully! With Java 1.5, you have generics, autoboxing, varargs, enums, etc., so it really is the same as C# and translation is not that difficult. More importantly, I was able to reduce the size of the codebase because the C# developers had to write a new class "FooCollection : CollectionBase" for every Foo for which they needed a typesafe collection whereas I could just write "Collection<Foo>" in Java 1.5 and avoid creating a new class explicitly. Honestly, I really tried to use VS before deciding to do the translation. I installed NUnit, but it's not as clear when your tests pass or fail and you can't click on the stack trace to jump to your error to correct it. (I installed the NUnit-addin: http://www.mutantdesign.co.uk/nunit-addin/ because I didn't want to leave the window to run my tests, but it wasn't close to Eclipse's JUnit integration.) I also tried installing TortoiseCVS, TortoiseSVN, and igloo. I couldn't get igloo to work at all, and the Tortoise brothers require you to leave the VS window to make changes to the repository, so this was another bust. I eventually went with this thing called Ankh which provides SVN integration right in VS, but it's nowhere NEAR the CVS support you get in Eclipse because you can't move files around and have the version-control tool handle all of the communication with the repository like it should. The only snag in moving from VS to Eclipse was that VS had seamless support for web services -- you would add the WSDL to VS as a web service and somehow you could magically start referencing the classes in your project. In Java, I had to get Apache Axis http://ws.apache.org/axis/ and run WSDL2Java to generate all the Java class files and paste them into my new Eclipse project. Not such a big deal, but certainly not very obvious if you didn't know about Apache Axis (which few do, unfortunately). Like Ryan mentioned earlier in this thread, you lose your whole train of thought when you switch windows (for either the NUnit GUI or TortoiseCVS). What's even worse is having to run a full build to find out that you forgot a semicolon -- like switching windows, running a build in VS is really distracting because all that text goes running by and you can't ignore it even though most of the text there is worthless -- my eyes just can't ignore the movement, I swear! I sincerely hope that VS 2005 addresses many of these issues, but my project is due in a few weeks, so I can't wait that long. So please, as someone who really tried installing the VS plugins, let's be clear -- it's not as good as Eclipse. Translating all of your code to Java is pretty extreme, I admit, but with 1.5, it's really not so hard. Use Apache Axis to get support for web services and SWT to talk to ActiveX objects (like the Microsoft Office applications) and you're pretty much on the same playing field. Now you just have the right tools. » Posted by: Bolinfest at January 27, 2005 09:47 AMThis is great and reflects my experiences precisely. Here's a blog about the Visual Studio presention given by Microsoft at Eclipse Con 2005: http://benjaminbooth.typepad.com/tableorbooth/2005/03/eclipse_con_200_1.html » Posted by: Ben at March 4, 2005 01:02 PM |