Visual Studio vs. Eclipse: a Programmer's Comparison
Nerval's Lobster writes "Developer and editor Jeff Cogswell is back with a comparison of Eclipse and Visual Studio, picking through some common complaints about both platforms and comparing their respective features. 'First, let's talk about usability,' he writes, 'and let's be frank: Neither Eclipse nor Visual Studio is a model for sound usability.' That being said, as an open-source project, Eclipse wins some points for its customizability and compatibility with languages; it's more difficult to modify Visual Studio to meet some programmer needs, which has led to any number of abandoned projects over the years. Microsoft choosing to eliminate macros in recent versions of Visual Studio has also led to some programmer frustrations (and a need for external tools)."
I believe so, or do you suggest that they are equal?
Eclipse struggled a bit with the Eclipse 4 release but the new version Kepler is fantastic.
Visual Studio is great if you're developing for Microsoft platforms.
Fortunately, Microsoft platforms are growing less relevant by the day.
Mod me down, my New Earth Global Warmingist friends!
Out of the box, VS wins hands-down.
A developer with sufficient skills can be productive in ....
A developer with sufficient skills can be productive in anything.
vi.
gedit.
emacs/xemacs
Pencil and paper.
And on very VERY rare occasions, I've seen developers who did everything their head and just typed in any old text editor.
And I *freeze*refu*freeze*se to h*freeze*ave anyo*freeze*ne tell me di*freeze*fferently. *freeze*.
This is not a good sign. A developer with sufficient skills can be productive using vi as her IDE...
Eclipse IS slow, period. I work with him for over six years and has ALWAYS been slow compared with a similar IDE that is not based on Java. And not only slow, but terribly buggy. TFA sounds more like an article made by an eclipse fanboy than a developer trying to make a truly honest comparison.
Religion: The greatest weapon of mass destruction of all time
It isn't nearly as popular (and I don't know why), but Netbeans kicks Eclipses ass. True, they are both memory hogs. But Netbeans doesn't drag and freeze as much. Its commands and interface are a lot more intuitive. Netbeans is also a much better IDE for the web. It handles JavaScript way better than Eclipse and even allows you to debug your JavaScript through a Chrome extension.
Democracy Now! - your daily, uncensored, corporate-free
"Studio also requires a working set of about 250 megabytes of memory, while Eclipse requires about 3 megabytes of memory..."
Erm, working set on a newly launched eclipse (no project) takes 13x,xxxK.
Plus working set is actually a GOOD thing - in theory. Imagine two programs which each take 700 megabytes running on a machine with only 1000 (and 24). Imagine them sharing some ... libraries, we could call them, of 500 megs each. So the working set would only be 900! Yay! Disk thrash averted :)
Oh, DLL hell? Ah.
Yes.
Eclipse's gcc code parser integration is better than IntelliSense. It actually understand OO code. VS struggles badly with understanding OO code. for example, if every class re-implements one virtual function, VS cannot figure out usage of one particular implementation; even if there are object declared with that class.
Thus VS is good for debugging, for everything else in C++... not much so.
For all of those that love Visual Studio for C++ programming, and having used eclipse for some time, I believe Qt Creator is by far a much better alternative, as it has around the same level of functionality of VS+expensive commercial plugins.
Even letting the Qt integration out, It has excellent code completion, shows warnings and errors as you type, provides great refactoring tools, It's extremely lightweight, works with any compiler and any build system, in any platform, integrates with a wide array of debuggers and profilers, has a high degree of customization, and some unique features like the best search/replace I've ever used and the locator (ctrl-k).
The only reason it's not more popular is that most people believes it's only useful for writing Qt applications, which couldn't be further away from the truth. It's simply awesome. If I worked for Digia, I'd try to change the name and promote it to something unrelated to Qt, that way it would be really easy to bring new developers to their platform.
As far as I am concerned, IDEs are largely similar in their view of software development. They are like bloated bureaucracies that one has to deal with to do anything constructive. If you dare have a project format that VS, Eclipse, or what have you, doesn't understand, and you have to set up the environment to do everything manually. I know I sound like I am saying "Get off my lawn," but I am really saying we need to understand the development process better. IDEs obscure it too much. Tools like VIM and Emacs expose 100% of it. (In full disclosure I use VIM, ctags, make, etc.)
We need to come up with the programmer's equivalent of the SAE and define basic tools of the trade. It will never happen, of course, but that's *really* what we are fighting about.
Eclipse however just feels generally clunky. I pause for 20+ seconds just to get code completion prompting to come up in python or java, and half the time its in the wrong context. the perspectives is also really annoying. everytime I go to debug, it halts everything to tell me it wants to switch, and then gives me a 2inch high window for viewing the code, anchoring is weak, and it always seems like I never get back the space I should when I dock a sub-window. Personally I really don't care how extensible my IDE is. any given ide is not going to be able to support all langagues and technologies, so why try to shoehorn it in?
So the conclusion is "both work; each has some flakiness".
That's a long-winded way of saying "meh".
vi or emacs debates anyone?
Is it important that a tree is equal to a fork? I know it's an exaggeration, but both are useful in completely unrelated ways that doesn't require comparison.
You're comparing an expensive IDE to a free one. I'd be more interested how it compares to a curated Eclipse experience like MyEclipse or a closed source IDE like IntelliJ. All that being said, Eclipse is mostly used by folks using Java or languages that run in the JVM. Visual Studio is going to be used by those on a Microsoft stack.
MSVS needs to get refactoring. This is huge for maintaining large software projects.
In debates about Christianity, there are two groups: those looking for answers, and those looking to just ask questions.
C++ developers are rare? In what world do you live in that most of your computing doesn't depend on C/C++ code?
Just because you play with a few scripts for your website doesn't mean the rest of your software is written in some crappy scripting language.
Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
"One full-time Java programmer told me that he hasn’t had to manually type in any setters and getters in years, and he has a template from which all his objects are typed in automatically, thanks to the code snippet tools in his favorite editor (which isn’t Eclipse—he uses IntelliJ). Clearly, methods of automated typing seem to be a favorite among a lot of programmers. So why did Visual Studio remove a feature that facilitated this? Who knows."
Let's not mention the fact that in C# you don't need to manually type in all the getter/setter junk, just public int MyField {get; set;}
Yes I use IDEs for coding, and I want to be confortable using syntax highlight, shortcuts and fancy tools. But the most important feature I want is to have a professional and versatile debug interface.
This article sounds like the propouse of an IDE is to be super fancy text editor.
From my point of view, the capabilities of Visual Studio for debugging are far better developed than the ones in Eclipse.
- My two cents.
There was a time that VS was just the best C++ IDE around. The best library docs, the best source debugger, and pretty decent at being an extensible editor with auto-complete for names. The peak was probably ~10 years ago, and Eclipse back then, well, it had a long way to go.
Apparently "developers, developers, developers" didn't end well for developers using VS. It became less customizable each release, the focus shifted away from C++ (that part I can understand), and it kept getting more heavyweight. WTF? VS2010 at last seemed to be a step in the right direction, finally, but then the ribbon happened.
Socialism: a lie told by totalitarians and believed by fools.
The biggest problem with Visual Studio, for me, at least, is that it only runs on Windows. I use a lot of different operating systems, but Windows isn't among them.
Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
The bulk of new development is Java/C# these days. It's for the best really - have you seen the sort of C++ a "Java programmer" will write?
Socialism: a lie told by totalitarians and believed by fools.
Yes, totally less relevant. Apart from large businesses, medium sized businesses, small businesses, government and home users, absolutely nobody needs to develop software for Windows.
Different people prefer different tools.
I set up Eclipse, personally. It's free. It detects and plugs into Cygwin, MinGW, gcc and I can add a cross-compiler by entering a gcc build prefix into a box (just set up a new Eclipse in a VM with the intention of cross-compiling code to ARM, GP2X (a particular ARM device), Linux (32- and 64-), Windows (32- and 64-). It took about 20 minutes to install, and the rest was faffing about getting libraries to compile the same in all architectures (but now it's just a drop-down box and click - and it cross compiles).
It works. It does what I need. It compiles. I can do it on Linux or Windows and it works the same.
It's also fast. God knows what you people are doing but with C99 code, I haven't managed to crash Eclipse or make it churn and I don't sit around waiting for it to do anything (from Helios through to Kepler, on Windows and Ubuntu). Maybe if you're running it on some old sloth of a machine, but if you're programming why don't you have an 8-core, 8Gb machine at minimum nowadays? Hell, my laptop beats that and it cost next to nothing in terms of good laptop prices (sub-£500). The Linux VM I set up for Eclipse has 2Gb RAM and 2 cores running under VMWare on the machine and I'm never really waiting for it to compile unless I do a clean build (and I don't see that compile time should ever really be a huge factor - if you're that worried and have that large a project, stop faffing about with "consumer" programming tools and distcc it or something).
Eclipse has little quirks of setup, like anything, but it's just the same as any other program of a similar complexity. Don't apt-get it. Just install it into a sub-folder in your home (an ultra-powerful feature in itself - keep Helious, Indigo, Juno and Kepler in separate folders and copy/paste/upgrade your whole IDE and workspace when a new version comes out).
Debugging is marvellous. Probably it doesn't do some things that the MS software does but, you know what, it's infinitely better value for money and a darn sight better than struggling with gdb directly.
I don't get it - maybe it USED to be a load of crap, I can't know that. But from Helios onwards, which was my first real exposure to it, it's become my IDE of choice. And you know what? If I want, I can give someone a copy of my VM that has my complete development environment and OS installed on it. 50% of handing off a compile is in the associated libraries, tools, setup and build config rather than what's in the source, and with an open-source environment and an OS IDE, you can just hand them your complete setup.
If I was writing a programming book, I'd bundle an Eclipse VM setup. Most of my first exposure to any language is pissing about for weeks getting the toolchain set up. The most off-putting thing when I was learning programming was all the hoops you have to jump through to get a compiler that knows what it's compiling, from where, and what to do with it.
I don't understand the gripes. Sure, I don't have a billion lines of code in there, but I have large multi-arch ports of gaming frameworks that tie into all sorts of bits. I have 20-30+ libraries inside a single program. I have 100,000 lines of my own C code in just one project. I know people might be doing a LOT more than me. But, fact is, Eclipse is damn-near perfect for that, especially for the amateur / beginner programmer, and you REALLY have to go some to outgrow it. I remember struggling along with some of the early Sun Java IDE's - it was actually easier to just not bother and code on the command-line for my university courses (especially as I'd already started on Java a few years before that on my own).
You can say "it's not for me", sure, but all this "it crashes" and "it's dog slow" crap - I'm not sure I buy it. If it's that easy - reproduce the crash and submit it.
To be honest, I'd be prepared to suffer quite a lot of performance problems when compiling just for the IDE-and-workspace-as-folders concept, the multiple platform availability, and the debugger interface to GDB itself. But I don't - because they aren't there for me at all.
That's a completely different issue. He never claimed that that there is a user group with *zero* Windows relevance, merely that it's getting smaller.
Ezekiel 23:20
This is typical of Microsoft products: obscure "yes it can" capabilities that you can't rely upon for continuity from version to version. Macros? Poof.
Come on reviewers, picking out chopsticks does not count as "playing the piano". Microsoft products in particular needs to auditioned savagely before giving credence to any self-assigned tick marks, or awarding gold stars for limbo dancing under the bar instead of over the bar on standards compliance. Simon says "That's four noes." Especially in the late nineties, the vast majority of Microsoft product reviews were channelling Paula Abdul. Eventually I burned "yes it can" in a Salem bonfire.
I've used Eclipse fairly heavily for C++ and R and I don't find it sluggish. Yes, it's far from perfect. Docking operations on the newest release went a bit insane on my 22" monitor in portrait mode. Hopefully that's just teething pains early in the release cycle.
Gee whiz grandpa, I don't think any of the IDEs support punch cards.
What you fail to understand is that all Emacs users are in fact travelers from the 25th century, trying as best they could with primitive technology to create an editing environment as elegant and direct as what they were used to back in their own time-stream.
So while you cackle about punch-cards we Emacs users are rolling our eyes and figuring out which gene of your grandmothers to re-sequence to give you embarrassing flatulence in your thirties.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
Yes, totally less relevant. Apart from large businesses, medium sized businesses, small businesses, government and home users, absolutely nobody needs to develop software for Windows.
I'm not so sure about that. Most of the newer applications that I use at work seem to be web based these days.
In the old days, these would have been implemented as a bunch of mostly mediocre Win32 applications. Now, they run in a browser on any OS.
If you go that route, you can start with Borland C++, certainly better than VS. Or CodeWarrior.... VS wasn't terrible in its early years, for Windows coding. But it certainly wasn't the "best". And MS documentation has been at best mediocre.
The cesspool just got a check and balance.
I was under the impression that for a editor to be considered a "programmers editor" it had to have some kind of programming/macro language built in. Because, sometimes you find yourself repeating some action over and over and over. Dropping to $shellutiilty to perform the same task is basically just admitting your editor sucks.
Bonus points if your editor lets you assign arbitrary keys to the given macro.
Frankly, I sort of gave up on visual studio after version 6 when they decided to rebind all the keys, and started rewriting parts of it in .net. Before that, it was a pretty good C++ environment, after that the C++ functionality took a back seat to the C# functionality that appeared to be trying to replicate visual basic/delphi, and frankly doing a pretty crummy job of it.
Actually, having worked with a couple of ex-microsoft guys in the OS division, my understanding from them is that huge swaths of Microsoft actually use slickedit (IIRC) rather than visual studio. Basically anyone not programming in a .net environment. Maybe that has changed as Microsoft has tried to add support for driver development in VS, but it was definitely frowned on for a while.
Some pointers to get you started:
* Really understand pointers.
* Use short names. FortyCharacterJavaNamesAreTheMarkOfTheBeast.
* Efficiency matters (even non-algorithmic efficiency). Veteran C/C++ programmers will find your code confusing if you do something in a needlessly inefficient way, because that suggests something really tricky is going on that made you avoid the "obvious way".
* The right lifetime for an object is usually the scope of the block in which it is introduced. Use RAII (C++ style) or paired "init at the top, cleanup at the bottom" (C style).
* Understand shared_ptr, but don't overuse it. It's not a reason to avoid properly thinking through which block should own an object.
* Use structs too, not just classes. One common rule of thumb: either have a struct with no members private (and no promise of constant validity) or a class with all members private (and promise constant validity). The simplicity of struct is valuable - it's often better to have a struct (possibly with an IsValid() member) than a clutter of accessor functions, despite the possibility of inconsistency.
Socialism: a lie told by totalitarians and believed by fools.
VS was the best debugger in the business, and if you're stuck with a legacy code base that's arguably the most important part of an IDE. And back when MSDN was installed with VS (instead of being a web site) it was amazing for its time, because you could select any library function name and with a keystroke get really well written docs for that library function fast. I used to have half my screen for code and half for the doc pane. Once it became wait-a-few-seconds-for-the web-page, that advantage was lost.
Socialism: a lie told by totalitarians and believed by fools.
Somewhere about 5-8 years ago there was a distinct and obvious transition between MSDN docs written by good tech writers, and MSDN docs clearly written by devs - unsurprisingly this was about the time auto-generating docs from docstring comments became the thing to do.
The docs for the old win32 stuff are still good though. Look at the docs for the famously-silly CreateFile() function. Everything is explained, including all the corner cases, but critically there's also the vital "but you probably just want to do X" hints that are so needed when the docs get this long.
Contrast that with File.Create() which only hints at what the various options do (but at least has proper grammar, unlike some of the seldom-used stuff).
Socialism: a lie told by totalitarians and believed by fools.
C++ is the stick-shift of programming languages, no doubt about it. (And C is the same without a clutch - no problem, you'll always shift perfectly, right?)
Not to go all Paul Graham, but LINQ really is "Lisp invented poorly". I love it for being even that, but c'mon just name the functions "map" and "reduce" instead of making shit up!
Socialism: a lie told by totalitarians and believed by fools.