Favorite Integrated Development Environment (IDE)?
This sounds almost masochistic, in my opinion. A modern IDE offers so much more over a text editor like vi, vim, emacs, pico, or nano; and many of the keyboard shortcuts for text editing from these editors can be replicated in a modern IDE. The IDE simply integrates other features: compiling and linking, debugger, profiler (in some cases), source control, and other useful features.
Vim on its own is much more useable than most IDEs (and can easily build your project, commit it to source control, or launch a debugger), but for work (I write ASP.NET) I use Visual Studio 2010 + ViEmu + Resharper. That's a really productive combo, but it requires a pretty powerful development machine.
I have used Dev Bloodshed++ & something called Codeblocks that our university forced us to use. I found this to have too many bugs, and I had to resort to using the terminal/makefile/text editor combo.
For making applications and documentation on the internet, I really love Notepad++. It is sort of like an IDE but looks like a mix with a simple text editor.
The only IDE I use is TI's Code Composer Studio (which is based on Eclipse). I can't say it's great, but it's quicker and offers a few nice features for what it's intended to do over the alternatives. I don't know if MATLAB counts as an IDE, so I won't list it - although I use it quite regularly. The rest of the time I just use vim with gcc/g++. I'm quite glad I took the time to learn and configure vim, it's very nice. Sometimes I use nano though if I'm on a machine that doesn't have vim (I invoke nano with -c so I get line numbers etc).
This sounds almost masochistic, in my opinion. A modern IDE offers so much more over a text editor like vi, vim, emacs, pico, or nano; and many of the keyboard shortcuts for text editing from these editors can be replicated in a modern IDE. The IDE simply integrates other features: compiling and linking, debugger, profiler (in some cases), source control, and other useful features.
IDEs kind of seem masochistic im my opinion! I realize most people love GUIs but for me they tend to just frustrate me to no end. The whole idea of windows, buttons, widgets, etc just isn't really how I think about using my computer I guess... I don't really like the way menus categorize things and try to hide options/complexity from you. When I click load/save/quit/etc it just really bothers me that my computer then asks me "Are you sure you want to load/save/quit/etc"......... yes, I clicked the button I'm sure!! When using a terminal you just type in what you want the computer to do and it just does it... no questions asked. Plus the amount of options you have for terminal commands, scripting, makes it easier to get the computer to do exactly what you wanted the first time.
_________________
((12+144+20+3*(4^(1/2)))/7)+5*11 = (9^2) + 0
Titangeek
Veteran
Joined: 22 Aug 2010
Age: 30
Gender: Male
Posts: 7,696
Location: somewhere in the vicinity of betelgeuse
Emacs.
I'm with FearOfMusic on IDE's seeming masochistic. I was forced to use Eclipse for a couple of programming classes, and it kept doing obnoxious things like underlining incorrect syntax (of course it's wrong, I'm in the middle of typing that line you stupid program!), and trying to pull up suggestion menus when I didn't want or need them. Often, it would try to do something-or-other that I didn't even want in the first place in the background, and soak up enough CPU that it would freeze for several seconds while I was typing.
I'm sure those obnoxious things could be turned off somehow, but with Emacs I don't have to worry about that sort of thing to begin with.
_________________
"A dead thing can go with the stream, but only a living thing can go against it." --G. K. Chesterton
This sounds almost masochistic, in my opinion.
It is definitely more productive to use a text editor combined with a decent code repository and stable development tools. Integrated IDEs can lead to lazy and detached programming. It is worth looking at software that you use and admire, and determining the methods used to develop and maintain it, and then comparing that to software that you find fault with. ("Maintain" is the keyword here, because most modern software is written without the intention to maintain it).
Eclipse, for example, defaults to asking if you want to exit the workspace when you close it, but this option can be changed. Eclipse in particular is an endlessly customizable IDE (I think there are plug-ins to emulate both vim and emacs too). Keyboard shortcuts can be mapped for many things—providing an alternative path to menus and buttons. Code completion, syntax and error highlighting, code templates, automated refactoring tools, etc. definitely speed up programming. I can easily navigate between classes and methods with a mere click; source outlines present fields, methods, etc. for the class I'm currently looking at. I do not necessarily have to manually edit ant/maven/make build scripts to build my application.
Most IDEs have a bit of a learning curve to learn all the little features that can boost productivity, but at least it's more straightforward to get a basic project going. Editors like vim and emacs require memorizing esoteric keyboard commands just to save and open files!
I totally agree with the syntax error underlining being annoying! That was one of the 'features' that just drove me i-n-s-a-n-e in eclipse! Also I once had an error dialog popup after I hit backspace saying the operation failed!
Vim can do most of these, not code refactoring but almost everything else you describe can be done with vim. The thing is that most of these features are turned off by default in vim. You have to specifically enable them and configure them to your liking to use them.
I absolutely agree with you on this one... vim and emacs don't get any points in my book for being intuitive.... they just aren't. The vim/emacs learning curve can seem like Mt. Everest and even after using vim for years I still don't know half the stuff it can do, but that's okay because I have learned my own way of using it (I think everyone has their own vim-fu). IDEs are much more intuitive, and I think intuitive software is great... if I am using it once.
I think there are a few things that play into just IDE vs text-editor+terminal. I think IDEs force you to use a certain workflow, which never really matches my workflow. If you sit down at another programmer's computer using terminals their workflow will different from your own and you will probably think "thats terrible!"... but that is the power of the terminal, it lets you decide exactly how to do things.
_________________
((12+144+20+3*(4^(1/2)))/7)+5*11 = (9^2) + 0
Emacs has something fairly similar, but probably different in detail.
Syntax highlighting is just basic, and everything has it, so it really isn't an advantage one way or another.
Error highlighting I still see as a minus. You're going to get compiler errors and warnings when you build anyway, and in the meantime the annoying red squigglies show up on the line you haven't finished writing yet.
Ugh, that sounds awful. If you have a repetitive programming task, why not write code that does that task, instead of automating the cut-and-paste process?
I've heard this as a plus for IDE's before, and while there is some stuff like this for emacs, IDE's are probably ahead here.
Well, you don't have to edit makefiles every time you build; you'd only have to change them when you change which files get built. Most edits for a makefile would be adding a filename somewhere, and probably you'd have to do something similar (probably a file selection dialog) for the IDE anyway.
Well, emacs and vi both have learning curves, too. There's nothing wrong with a learning curve, as long as it gets you somewhere.
They really aren't that esoteric. At least for emacs, the commands can be switched to different keystrokes if you want, and there are GUI-based menu options, too.
_________________
"A dead thing can go with the stream, but only a living thing can go against it." --G. K. Chesterton
I'm sure it can be turned off if found to be too annoying (it is supposed to provide an impetus to fix code). If you're typing a line of code, I don't think Eclipse tries to compile it in-line until you've paused typing for a second or two. Also, Eclipse can suggest ways to fix the errors if you space+click on the error icon or squiggled code. Sometimes this can be its own form of auto-complete; for example, in Java, if an interface is implemented or a class with abstract methods extended, Eclipse can generate stubbed-out implementations of these methods with TODO comments (Eclipse highlights these). I've never found this to be overly distracting, but I can see how it's subjective.
I just tried the Community Edition of JetBrains' IntelliJ IDEA over the weekend (briefly), and I did find its extensive auto-complete hinting somewhat distracting. No keyboard shortcut is used to get an auto-complete hint; IntelliJ IDEA is pretty much constantly showing hints hovering around the keyboard cursor whenever you type: hints for language keywords, classes to reference, methods, etc.! I might find it nice if I got used to it, but I find Eclipse's approach of hitting Ctrl+Space is sufficient for me.
I'm not sure how vim could have auto-complete for Java at least without running a Java compiler or virtual machine somewhere (or perhaps some complicated static analysis). Java IDEs rely on the Java platform's reflection functionality to discover methods, fields, etc. of a class. I see on Wikipedia's article on vim that some basic code completion or navigation pop-up for C is demonstrated, but it seems to use some relatively simple static analysis of source files.
The thing about these advanced features is that they are sufficiently out of reach that a new user may just give up and try something else instead of memorizing so many commands and keyboard shortcuts to get anything done. I myself briefly tried vim but was put off at the relative difficulty of just opening and saving files. Only more persistent users will find out about these configurations and extensions to enable them.
Exactly, you have more control at the expense of doing so much more yourself. I'm more than happy to let IDEs manage some of the more mundane aspects of programming for me if it speeds up my workflow.
Ugh, that sounds awful. If you have a repetitive programming task, why not write code that does that task, instead of automating the cut-and-paste process?
Eclipse has numerous templates built-in, and you can add your own. These are generally for things you would not be able to put in their own methods. For example, iterating over a Collection before Java 5, was a pain:
Collection col = new ArrayList();
for (Iterator iter = col.iterator(); iter.hasNext();) {
SomeClass o = (SomeClass) iter.next();
}
Java 5 introduced a less cumbersome syntax: the for-each loop. Eclipse, though, provided a template that, after you typed for and chit Ctrl+Space, would pop up some options (for (iterate over array), for (iterate over Collection), etc.). Depending on your choice, Eclipse would then auto-populate the code above from a template, defaulting to the nearest Collection in scope. The generated code would then have "parameters" that you could tab between. One would be the type of the local variable; I tab to it and rename it to the type I want, and Eclipse would rename the type in both the declaration and the cast from the iterator.
Another template is "syso", which expands out to "System.out".
Well, you don't have to edit makefiles every time you build; you'd only have to change them when you change which files get built. Most edits for a makefile would be adding a filename somewhere, and probably you'd have to do something similar (probably a file selection dialog) for the IDE anyway.
Not really.
Eclipse works through the concept of workspaces, each containing zero or more projects. For a Java project, Eclipse generates source and output directories and puts the JRE on the classpath; or it can import a whole source tree as a new Eclipse project. Eclipse automatically compiles a Java source file as you type, so the bytecode is already there. I can easily run any class with a main() method by choosing the Run... option, and its standard input and output will appear in a console pane. The only complexity is managing external dependencies: either other projects in the workspace or things like JARs. Eclipse does provide dialog boxes for dropping JARs onto the build path. If you add a new Java source file to your project, though, it's automatically part of the build. Java relies extensively on the classpath, so things like resources need only be on the classpath to be easily usable (e.g., *.properties files).
Of course you can do things like write ant (Java's XML-based equivalent to make) scripts if you have a more complicated build and deployment process.
One thing is Eclipse and most other modern IDEs are very resource intensive! Eclipse and NetBeans, for example, both run on top of a Java virtual machine. In addition, Eclipse, being Java's answer to emacs, takes extensibility to an extreme. The Eclipse platform (yes, platform) is updated with yearly coordinated releases. Eclipse is really a framework, and everything that makes it useful are just features and plug-ins that can be installed through Eclipse repositories (it's a lot like a Linux distribution in this regard). You download an Eclipse package that contains a suitable set of features and plug-ins by default as your starting point. This of course can create problems reminiscent of Windows' "DLL hell."
Perhaps a productive workflow is partially what we're familiar with (and thus can use more quickly), and some of it is that customizability. I think, though, IDEs may be able to give you productivity gains you may not have considered, once you get comfortable with one as much as you have vim. Or maybe your learning style just works better with memorized commands and keyboard shortcuts than a visual GUI.
They really aren't that esoteric. At least for emacs, the commands can be switched to different keystrokes if you want, and there are GUI-based menu options, too.
They're pretty esoteric if you use point-and-click for most of your computer activities. I do use some keyboard shortcuts in Eclipse, but Eclipse presents these through the GUI too (albeit sometimes buried under numerous submenus). I find a combination of graphical and keyboard works best for me.
Similar Topics | |
---|---|
Favorite place to nap? |
18 Mar 2024, 3:37 pm |
Favorite plane? |
27 Mar 2024, 3:26 am |
Favorite food |
26 Mar 2024, 4:34 am |
Favorite Flower |
19 Mar 2024, 8:44 pm |