Choosing the Right IDE 443
Nerval's Lobster writes: Modern software development often requires working with multiple tools in a variety of languages. The complexity can give even the most skilled developer a nasty headache, which is why many try to rely on Integrated Development Environments (IDEs) to accomplish most of the work; in addition to source-code editors and automation, some even feature intelligent code completion. With so much choice out there, it's hard to settle on an IDE, so we interviewed several developers, who collectively offered up a list of useful questions to ask when evaluating a particular IDE for use. But do developers even need an IDE at all? When you go to smaller, newer developer shops, you're seeing a lot more standalone editors and command-line tools; depending on what you do, you might just need a good editor, and to master the command-line tools for the languages you use.
What IDE do you prefer, if any, and why?
There can be only one. (Score:5, Funny)
Re: (Score:3)
Comment removed (Score:5, Funny)
Re: (Score:2)
:x is quicker and does the same thing.
Re:There can be only one. (Score:5, Informative)
Actually, it doesn't do exactly the same thing.
:x writes only if the file has been modified (only the file's access time is updated).
:wq writes unconditionnally (creates an empty file if it didn't exist, updates the file's modification time).
Re: (Score:3)
Did you sudo that? You could be about to lose your changes!!
Re:There can be only one. (Score:5, Insightful)
Longer answer: IDE? No thanks. At least, I've used Eclipse variants and various Visual Studios, but they map onto how I think about writing and managing software. I want a blank screen with lots of keyboard shortcuts, some basic autocompletion, perfect syntax highlighting, maybe some Git support, etc. I don't want code generation or any refactor-all-the-things functions; I won't be using them.
I used Emacs for years and years, only eventually switching to Sublime Text. ST was beautiful and fast but didn't have nearly the ecosystem of Emacs, plus its non-Freeness started showing when it went many months without an update. Life's too short for a proprietary editor, which is where I spent approximately 60% of my work life. I dependent on it more than any other tool and the prospect of my chosen tool dying on the vine wasn't appealing. I tried Atom for about a week, but it was slower than ST2, lacked a broad ecosystem, and, well... JavaScript.
So one day I decided to revisit Emacs. Hey! It grew a package manager! Since that afternoon, I've had zero desire to look back. Emacs will outlive me and my children, will support every new language and tool that comes along, and will always be Free. There's nothing out there good enough to make me consider switching.
PS, in concession: I could make the same cases for Vim and its grandchildren. Once you've learned them, if they do what you need then there's very little compelling reason to change.
Re:There can be only one. (Score:5, Insightful)
I want a blank screen with lots of keyboard shortcuts, some basic autocompletion, perfect syntax highlighting, maybe some Git support, etc.
Sooooo... An IDE. Granted a lightweight one - but that's not "just an editor" anymore.
Re:There can be only one. (Score:5, Insightful)
Re:There can be only one. (Score:5, Insightful)
Re: (Score:3)
I used emacs for years, and I invested weeks configuring it to work exactly the way I wanted. My .emacs was beautiful and people often copied it for themselves.
Then I tried eclipse, and realized it already worked the way I wanted out of the box. Never looked back.
It is not about how configurable the editor is. It is about writing code. If your editor helps you do that: great, if not, just try something else, don't get religious on it.
Re: There can be only one. (Score:2, Informative)
Refactoring tools are very handy, if you know how to use them. For things more complicated than global-search-and-replace, there is really no substitute.
I encourage you to go back to an IDE -- /any/ IDE -- and deliberately check-out the refactoring tools. You might be surprised at how effective they are, how much time they can save you, and how much it reduces otherwise error-prone hand-work.
Re: There can be only one. (Score:4, Interesting)
Re: There can be only one. (Score:5, Interesting)
C++ is one of the toughest languages for tools to handle - it's crazy complicated even just to parse right. And in case of rename refactoring in particular (and anything else that might implicitly include that), it might not even be possible to do it right. Consider something like this:
Now suppose you're asking the editor to rename foo::x to foo::y. Should it also update t.x in baz, since it's referencing foo::x in one of the instantiations? But if it does so, then the other instantiation, the one that takes bar, will stop working. Should it rename bar::x as well? But it's not really related to foo::x in any meaningful way, they just happen to be referenced by the same template.
Re: (Score:3, Interesting)
Sound reasoning and pragmatism. Very nice. I use vim and joke about the vim vs. emacs debate all the time, but in truth I don't care which you are proficient with so long as it is with at least one of the two. If you can't use vim or emacs proficiently, I immediately start to question your competence. I'm not saying everyo
Re: (Score:2)
If emacs is an IDE, then Linux is a robot.
I choose the tools that are great at one thing and not at all things. I want tools that are not jack of all trades, master of none... as the saying goes. That because nowadays standard communication interfaces and formats are everywhere (we've reached parity).
Re: (Score:2)
Re: (Score:3)
Indeed. I just wish it had a half-way decent editor.
Re: (Score:3)
Great IDE. All it needs is a good programmer's editor.
Can I turn features off? (Score:5, Interesting)
One question I always ask when evaluating a new whizz-bang high sparkle product is: can I turn the features off?
If you use more than one application in your development, you're always bumping into interface inconsistencies. Having to stop and look at the result of what you typed is annoying, time consuming and distracting.
I can type <tab> really, *really* fast, so it makes absolutely no sense to try to overcomplicate things by having the editor try to do some sort of indentation for me - it only means that I have to stop and look every time, and I can't get used to the feature because no other application does it the same way.
For emacs in particular, all the various "electric $LANG" modes have different ideas of which characters are electric, what their behaviour is, and what coding style I should be using. Selecting a coding style to use is about 2 hours of internet search, editing the profile, restarting, and testing. (And that's if you're using one of the approved styles, otherwise you're either stuck or forced to learn lisp. *shudder*)
(And for the record, turning off electric-mode in emacs is wildly difficult to actually do. One pitfall example: having "save state" turned on will override the profile file, leaving you wondering why the profile command from the online tutorial didn't work.)
You can't get used to it, you can't develop muscle memory or take your eyes off the screen because the minute you switch to something else (the browser, E-mail client, putty terminal, LibreOffice or anything else), muscle memory results in errors.
Lots of applications have these inconsistencies. Clicking in a text editor will place the cursor where the mouse is, while clicking on the address bar in the browser *selects* the line and places the cursor at the end. It takes 1 click to insert text normally, it takes 3 clicks to insert into the address bar. Muscles don't remember that.
People spend an inordinate amount of time fumbling the interface without actually thinking about it. Your "rich, user experience" isn't warranted and reduces efficiency.
Just give me a simple, direct interface.
Re: (Score:3)
And for the record, turning off electric-mode in emacs is wildly difficult to actually do.
Can you follow along?
- click on the "C" menu
- mouse over the "Toggle" item
- click on the "Electric Mode" item
Is this really so wildly difficult?
Re: (Score:2)
vi is my editor. I shall not font.
Re: (Score:2)
/Oblg. "The Emacs operating system needs a better editor." :-)
I prefer Vim myself as I feel it is like an extension of my mind; it was written by a programmer for programmers.
Either way, you can't go wrong with Vim or Emacs.
Note: Only immature ob developers get into stupid flame wars over which editor is better. (Hint: They ALL suck; some just suck more.)
Re: (Score:2)
No, it was edlin.
Re: (Score:3)
Saying emacs is by far the beat option available is stupid. It would be equally stupid to say the same about vim. Both vim and emacs are similar, and you would never get "laughed off this forum" for using vim rather than emacs. While we always joke about which is better, you'd have to be a moron to believe that emacs is far better than vim, or vice versa.
Re: (Score:3)
As vi/vim usually comes with the base OS by default (especially Unix - i.e. non-Linux - systems), knowing both editors (as I do) is preferable. For most programming work or complicated file edits, I generally use emacs though - since the late 1980s - my current .emacs config file is from 1990 - and, yes, I'm old.
That's exactly why I switched to vi (not vim at that time) in 1995 after using Emacs exclusively since the 80s: I knew it would be available everywhere. I still use Emacs occasionally. I'm 50, that's not old.
emacs (Score:2, Insightful)
C-x-C-c
Do most of the work? (Score:5, Insightful)
IDE's don't do any of the work- they take care of the things aren't actually programming.
Re:Do most of the work? (Score:5, Insightful)
Exactly. If you've never renamed a function in your life - then go ahead and code with an 'editor' alone. Otherwise pick a good IDE and enjoy the time you're not spending doing a search and replace.
Re: (Score:2)
Exactly. If you've never renamed a function in your life - then go ahead and code with an 'editor' alone. Otherwise pick a good IDE and enjoy the time you're not spending doing a search and replace.
I don't remember globally renaming a function in recent years. I often split or merge functions - two functions into one more general one, or one function into two more specific ones. This tends to require examining each case. So the search/replace activity isn't a large part of the whole.
Re: (Score:2)
People using simple editors rarely do. The work and the risk that you'll introduce a bug often isn't considered worth reconsidering the name of a function or identifier. Especially with OO code.
But if you're using an IDE with refactoring support, there's next to no risk, and it's fast. So there's no reason not to rename if clarification is needed, or the code was originally written by someone who's not good at naming things.
I do it quite often.
Re: (Score:2)
I think I don't do it often because I usually set out with a naming scheme and architecture before I start coding. A name is used because it's the right name under the naming scheme.
It's nothing to do with the editor.
Then again, I'm not often incorporating my code with other people's code. I'm usually creating original code to implement some crypto protocol or algorithm I'm developing, or to analyze data. If I was bringing in multiple name spaces from other places, I can see why I might want to prefix them
Re: (Score:2)
To be fair the trend in IDE's these days have been to get in the way of programming, they are starting to get more obnoxious than clippy.
The way I look at it, if your codebase can't be understood without a particular IDE, then you're doing it wrong.
Other than that, use whatever you want. In the past year, I've used Visual Studio, Eclipse, IntelliJ, VI, and Emacs. The hard part of programming is thinking, and if you can't do that, no IDE will help you.
Re: Do most of the work? (Score:3)
Renaming a field or method of a class is more tricky with an editor, though, since other classes may have a field or method with the same name and you may not want to rename those.
It's also nice not to have to remember or look up APIs, constant names, etc.
As a teenager, I used Borland IDEs (mainly Turbo C). Then I spent over a decade mainly using commandline tools (C and assembly). But then since starting Android development some years ago, I've gotten to appreciate IDEs enough that now sometimes I even wri
Re: Do most of the work? (Score:5, Insightful)
Functions are named in human readable ways, and are designed to reflect the function they perform. If that functionality changes, then it makes sense that the function name has to change as well. Leaving a function name alone when it's functionality change is terrible programming practice, because the name is now actively misleading anyone who uses the function or reads code that uses it. There may be other considerations as well, such as the name simply doesn't match the style of naming conventions elsewhere in the project. People make mistakes, and code often has to be reworked or refactored.
True, it's not something that happens often enough (at least to me) that it would affect my productivity if I didn't have automatic renaming tools, but it's not like this is some new-fangled fad. I'm pretty sure you can find some advice on good naming conventions in "Code Complete", published a few decades ago.
Re: Do most of the work? (Score:4, Insightful)
Re: (Score:3)
To name it correctly.
Re: (Score:3)
Syntax highlighting and keeping track of start end end parenthesis is nice and all, but if you need it that is a good sign that your code isn't readable.
But I program in Lisp, you insensitive clod!
Re: (Score:3)
You sound like the guy next door to me in the nursing home. Let's stop posting and go so we can still grab the best seats for Murder She Wrote.
Re: (Score:2)
So you don't use syntax highlighting/validation?
You can also redirect all the compiler errors to /dev/null, because you should just be able to spot them by looking at the code.
Hell you don't even need a compiler. It should be obvious what machine code should be generated from a high level language. Just transcribe the machine code directly.
That's *real* programming.
Re: (Score:2)
Of course I do. I don't consider memorizing the methods of a unfamiliar library to be programming.
Re: (Score:2)
Re: (Score:2)
My work (ie what I get paid to do) is to program things, anything else is a loss. If people were paid based on your definition of work, then ditch diggers would be millionaires.
Re: (Score:2)
Re: (Score:2)
Does your job pay you to be productive or expend effort? I understand the physical definition of 'work', but when you go to work every day what are you paid for.
Re: (Score:2)
IDE's don't do any of the work- they take care of the things aren't actually programming.
If an IDE takes care of things that I would otherwise have to do (programming or not), then it is doing work. It is freeing me to do other things. It is increasing my productivity.
The nice part about tools, is that despite the work they do, you don't have to pay them, so you should be using every tool that increases productivity.
Re: (Score:2)
http://dictionary.reference.co... [reference.com]
Clearly the way I interpreted the articles usage is valid. You refer to a composers work as the concrete result, not the effort. I guess maybe I have an inflated idea of what I do.
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
You appear to include a lot of things in the term "programming" that are not actually generating code, though they certainly make it faster/easier to generate code. GP apparently doesn't. Is that really such a big deal?
Re: (Score:2)
I didn't include anything in the term programming. I think it is ridiculous to label anything that isn't "programming" as "doing none of the work". Either programming is narrow, and the job of a programmer includes lots of things that are not programming, and anything that helps with those no programming tasks is doing work (even if it is not programming), and is therefore useful. Or programming is broad and an IDE is clearly helping to do the work of programming.
My post was meant to illustrate that ther
Re: (Score:3)
How long have you been coding? 7 Days you say? When did you start the project? 7 Days ago? Seriously?
Yes, alas, there are a lot of people who think that development starts with writing code. It doesn't. If y
Fuck you dice (Score:5, Insightful)
This is a fucking microsoft ad.
Re: (Score:2)
mod parent +1
Re: (Score:2)
Didn't work very well, the first half the thread is discussing emacs.
Re: (Score:3)
Naturally.
Re: (Score:2)
Re: (Score:2)
how can you write an article about visual studio WITHOUT doing that? Truth hurts!
Re: (Score:3)
Says someone who hasn't used Visual Studio since the late 90s
Or someone who's discovered the recent 'innovation' of Nuget. That thing is a monstrosity.
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Are you sure? I thought this was a pretty lame attempt at getting traffic to hit dice.com (from a writer who's non-technical).
It's not like C# developers on Windows don't know which IDE to use already.
Just be productive.. (Score:5, Insightful)
Test.. test
Re: (Score:2)
Testing ...testing...tests
I love you ....
"Nerval's Lobster writes: " (Score:5, Insightful)
"Nerval's Lobster writes: "
I'll bet it is a Dice article.
Still use the most productive IDE (Score:2, Insightful)
Delphi. There is still nothing better.
Re:Still use the most productive IDE (Score:4, Informative)
I would agree with you as I prefer Delphi for my personal work or for prototyping a solution. Others here couldn't give a rats ass about a tool they consider obsolete.
As for IDE vs CLI? I prefer IDE. Others a text editor with, maybe, syntax highlighting. More power to them.
A good IDE brings everything together, such a code, device views, active debugging, compiler, UML design tools, etc., into a single environment. Managing things such as refactoring, unit testing, code analysis, documentation and other tasks is a big help.
I will not argue with those who prefer CLIs as some people are simply more efficient with the CLI over an IDE. Personally, I would give those in my shop the option to use alternative tools provided the code is properly written, bug free and able to be used, with ease, with the selected IDE.
I do require a lot of screen real estate regardless. One can never have too much screen real estate when debugging when using a text editor or IDE.
My favorite IDEs?
Java - IntelliJ (from JetBrains)
PHP - PHPStorm (derived from IntelliJ)
Android - Android Studio (derived from IntelliJ)
iOS/Mac - XCode, RemObject Silver (debate is out) and AppCode (derived from IntelliJ).
For cross platform, prototyping and personal work, I prefer Delphi / RADStudio with VisualParadigm for real UML work.
Re: (Score:3)
+1
I also use cLion (based on Intelij) for c/c++,
Re: (Score:2)
For desktop application development, that's true, there has never been anything better than Delphi. Unfortunately, desktop application development appears to be dying off.
Re: (Score:2)
Compared to a full SmallTalk environment, Delphi always seemed like the little brother who wants to do everything his big brother does, except can't because his arms and legs are too short.
Nothing to see here. Move along. (Score:3)
As long as you consider one... (Score:5, Insightful)
Moving past a text editor is a big help. Sure, it's good to understand the command line and all that, but having a tool that understands code and allows you to manipulate it is really useful. Refactoring support matters. A lot, actually. Safe delete, rename, extract method/parameter/etc. are all basic tools that can make a code base better. Code completion (intellsense, etc) support matters too. What does this thing do. Does it do what I think it should? Why or why not. Add in things like smart templates, etc. and even the most code aware text editors just look like nothing more than keyword colorers.
Personally, I can't recommend Visual Studio/Resharper or the IntelliJ product line enough. Worth every single penny and then some. JetBrains has a laser like focus on just getting things done. High DPI support was a problem for their IDEs, so instead of waiting on Java 8/2D to catch up, they forked it just to get it work, and they admitted it was not a great solution, but a workaround.
Re:As long as you consider one... (Score:5, Insightful)
Code completion (intellsense, etc) support matters too. What does this thing do. Does it do what I think it should? Why or why not.
Any code base that can't be understood without Intellisense is broken. If you need auto-complete to answer those questions, then you are programming wrong (as an antidote I suggest getting rid of your IDE until you learn to do it right).
Oh, get off your high horse and stop being so arrogant. I don't think he said he needed it to understand the code. It matters to some people simply because they find it faster to use, not necessarily because they aren't capable without it. I, personally, think code completion is annoying, but I fully recognize that for some people it's great. If somebody likes it, then they should look at IDE's that have it. If somebody doesn't like it, then it's not a factor - they can use a tool without it, and I think pretty much any tool with it has an option to disable it.
Re: (Score:2)
Oh, get off your high horse and stop being so arrogant. I don't think he said he needed it to understand the code.
IF you stop insulting me for a minute, and read what I actually wrote, I think you'll find you agree with me.
Wrong question (Score:5, Interesting)
The question is: "What language are you writing this project in?"
The language dictates the best IDE for the job.
Re:Wrong question (Score:4, Insightful)
Visual Studio + Resharper (Score:2, Interesting)
for .NET dev.
I like the IntelliJ family for other stuff.
Depends on the Language (Score:5, Interesting)
If the langugage is Java (or even Python to a lesser degree), then I haven't come across anything that even comes close to IntelliJ. It's code completion and introspection are so good, that I find I don't need to test as often. And I rarely find any issues when I do.
I also use Eclipse and Netbeans, and everything seems to take an extra step or two and that really adds up, over time. Netbeans is good for C++ though, so I muddle through with it.
Syntax hilighting (Score:5, Insightful)
Is that really true? I've never met someone who hated syntax hilighting.
Re: (Score:3)
This is slashdot, there will always be someone who'll declare they prefer something primitive rather than something more modern and useful.
Re:Syntax hilighting (Score:5, Interesting)
Those of us who are colorblind often struggle with the default colors used in syntax highlighting. If you can (or bother to) adjust those, it can work, but colorized syntax highlighting on a white background can often be near invisible to me. It doesn't highlight at all, it HIDES the code.
Necron69
ps. Colorized 'ls' - red on black? Are you out of your f*cking mind!?
If I use an IDE, does it mean I'm a bad programmer (Score:5, Insightful)
Re:If I use an IDE, does it mean I'm a bad program (Score:5, Insightful)
No, using an IDE means you are a productive programmer. I swear most of these vi/emacs hipsters are still students or are unemployed.
Re: (Score:3)
Go on then. Demonstrate it.
A Computer (Score:4, Funny)
My favorite IDE is a computer. When I wrote programs without a computer it was much harder. (I wish I was joking)
Anyone use Joe anymore? (Score:4, Informative)
Obviously.. (Score:5, Funny)
When I log into my Xenix system with my 110 baud teletype, both vi *and* Emacs are just too damn slow. They print useless messages like, 'C-h for help' and '"foo" File is read only'. So I use the editor that doesn't waste my VALUABLE time.
Ed, man! !man ed
ED(1) UNIX Programmer's Manual ED(1)
NAME
ed - text editor
SYNOPSIS
ed [ - ] [ -x ] [ name ]
DESCRIPTION
Ed is the standard text editor.
---
Computer Scientists love ed, not just because it comes first alphabetically, but because it's the standard. Everyone else loves ed because it's ED!
"Ed is the standard text editor."
And ed doesn't waste space on my Timex Sinclair. Just look:
-rwxr-xr-x 1 root 24 Oct 29 1929 /bin/ed /usr/ucb/vi /usr/bin/emacs
-rwxr-xr-t 4 root 1310720 Jan 1 1970
-rwxr-xr-x 1 root 5.89824e37 Oct 22 1990
Of course, on the system *I* administrate, vi is symlinked to ed. Emacs has been replaced by a shell script which 1) Generates a syslog message at level LOG_EMERG; 2) reduces the user's disk quota by 100K; and 3) RUNS ED!!!!!!
"Ed is the standard text editor."
Let's look at a typical novice's session with the mighty ed:
golem> ed
?
help
?
?
?
quit
?
exit
?
bye
?
hello?
?
eat flaming death
?
^C
?
^C
?
^D
?
---
Note the consistent user interface and error reportage. Ed is generous enough to flag errors, yet prudent enough not to overwhelm the novice with verbosity.
"Ed is the standard text editor."
Ed, the greatest WYGIWYG editor of all.
ED IS THE TRUE PATH TO NIRVANA! ED HAS BEEN THE CHOICE OF EDUCATED AND IGNORANT ALIKE FOR CENTURIES! ED WILL NOT CORRUPT YOUR PRECIOUS BODILY FLUIDS!! ED IS THE STANDARD TEXT EDITOR! ED MAKES THE SUN SHINE AND THE BIRDS SING AND THE GRASS GREEN!!
When I use an editor, I don't want eight extra KILOBYTES of worthless help screens and cursor positioning code! I just want an EDitor!! Not a "viitor". Not a "emacsitor". Those aren't even WORDS!!!! ED! ED! ED IS THE STANDARD!!!
TEXT EDITOR.
When IBM, in its ever-present omnipotence, needed to base their "edlin" on a UNIX standard, did they mimic vi? No. Emacs? Surely you jest. They chose the most karmic editor of all. The standard.
Ed is for those who can *remember* what they are working on. If you are an idiot, you should use Emacs. If you are an Emacs, you should not be vi. If you use ED, you are on THE PATH TO REDEMPTION. THE SO-CALLED "VISUAL" EDITORS HAVE BEEN PLACED HERE BY ED TO TEMPT THE FAITHLESS. DO NOT GIVE IN!!! THE MIGHTY ED HAS SPOKEN!!!
Re: (Score:2)
I'm not a "coder", so.... (Score:2)
IDE slows me down (Score:2)
Personally, I find Vi to be a fast and efficient text editor. The ones built in to an IDE are inevitably inefficient for me.
Some languages have so much boiler plate that it makes sense to start in an IDE (I'm looking at YOU Java), but I generally prefer languages that don't need that. Vim handles syntax highlighting just fine. It doesn't help that so many IDEs seemingly want 12 terabytes of ram.
Eclipse (Score:3, Insightful)
So far I used Eclipse for Android development, but that's coming to an end. Google forces me to use Android Studio, which is terrible. Which makes me think: how can so many developers prefer AS over Eclipse? What does that say about developers? About me?
Re: (Score:3)
Android Studio beats Eclipse for Android development like an unloved child in a trailer park.
Seriously. Night-and-day improvement. No more times when you have to cut something into the clipboard, save the empty file, and paste it back to make Eclipse realize that it's imagining all the errors it thinks were in it. No more "type a semicolon, then have the cursor inexplicably move back so that the carriage return a moment later pushes the semicolon to the next line and breaks the code." No more situations wh
de gustibus non est disputandem (Score:5, Insightful)
you can argue all day about whether chocolate ice cream is better than vanilla and there is really no possible way that anything interesting will result from the conversation
Re:Only one and it's vi not emacs. sorry (Score:4, Informative)
Re: (Score:3)
Re: (Score:2)
Re: (Score:2)
Hey! Then guess what?! You are completely off topic and in the wrong story thread! If we ever need the opinion of a layperson with almost no skills on the subject and limited and outdated experience we will be sure to contact you immediately!
Re: (Score:2)
Re: (Score:2)