6 ms·
Why not just use an IDE if you want IDE features?
- burgerbrain 15y agoI think a proper response to any question of this form is "why use an X if you can get what you want without an X?"
- vilya 15y agoWhy use a car for your 100 mile journey when you can get there by bicycle? :-)
- burgerbrain 15y agoWell if "what you want", doesn't include "in a timely manner", I would personally always chose the bike ;)
- derleth 15y agoTry carrying a nontrivial amount of baggage on a bike. (No, the correct answer to this is not "Don't carry luggage." You can't solve a problem by chopping its legs off so it fits in your problem-solving grid.)
- div 15y agoSo extending your analogy, you prefer travelling by truck over travelling by car ?
- burgerbrain 15y agoDefine your problem, and then make your decision. For this particular example, you can apply this sequence of logic (with thanks to wccrawford): if(Baggage) use a car. else if(In a hurry?) use a car. else if(Need to be rested?) use a car. else if(Need to go 150 miles^ or more?) use a car. else use a bike. ^ You'll need to set this value yourself ;)
- JonnieCache 15y agoAn interesting point which is perhaps germaine, perhaps not - the bicycle is by far the most energy efficient form of human transportation. This is because it makes best use of the highly efficient biological engine we all already posses. http://en.wikipedia.org/wiki/Bicycle_performance#Energy_efficiency http://en.wikipedia.org/wiki/Bicycle_performance#Energy_effi...
- wccrawford 15y agoIt's a shame you got downvoted. It's clear you thought this through further than the people who downvoted you. For anyone who didn't get it: You have to actually spell out what you want before you can say if it fits this answer or not. The car vs bike thing only makes sense if you didn't care how fast you got there, how tired you were when you arrived, or how much pain it was to haul the luggage there. The answer to original question is easy in that light: Because IDEs aren't the only solution to the problem. Just because IDEs have a certain feature is no reason that other things can't have that feature as well.
- danieldk 15y agoIt's a trade-off. An IDE will often provide more and better integration, but is usually focused on a small subset of programming languages and is less flexible. Most editors less integration, but are far more flexible. Take Sublime or Vim, you can customize every bit of the experience with scripts without too much effort. Also, I think some languages tend to need an IDE more than others. E.g. Java's relatively small feature set increases its verbosity. An IDE is almost required to avoid too much typing and memorizing. Haskell, on the other hand, is very expressive, making it less fit for smart autocompletion.
- hello_moto 15y agoErr, I doubt it takes less effort to customize Vim. OTOH, I like to use an IDE like NetBeans to navigate Ruby code (go to method implementation, go to class implementation, etc). I'd say it depends on what kind of project you're working on. If you're writing a small one-off script in Haskell, you probably don't need to use an IDE. The same goes for Java. Once you integrated 3rd-party libraries (like not just one, but say, 5 of them), you either have to memorize those libraries or be grateful that IDE can help you.
- mdasen 15y agoI think part of it is that a lot of IDEs don't "feel" good. For example, Eclipse doesn't feel like a Mac app. Dragging tabs around works, but is ugly compared to Chrome or similar; the icons used are more utilitarian rather than something someone put thought and care into; often times the advantages it provides for the Java language just aren't as good with scripting languages (less mature support for Python and Ruby, less of a need for an IDE for those languages, and less ability to provide good features since they aren't statically typed). Sometimes you want every feature. Other times, you want something that might have fewer features, but might feel better. When the iPhone came out, it didn't have a keyboard, it didn't have 3G, etc. Yet, it just felt better - the size, the icons, the way you interacted with it. I think that editors like Sublime Text and TextMate really go for that feel. Users seem to see Sublime Text or TextMate as just missing a feature or two while looking at Eclipse and finding that it has the features, but lacks the basic joy of interaction. They also feel that it would be easier to extend something like Sublime Text than to fix the feel of Eclipse. Personally, I'm starting to warm to Eclipse as I use it and I appreciate the features it brings to the table, but I don't ever think I'll see Eclipse as "feeling good" in the way that TextMate feels right.
- drivebyacct2 15y agoFunctionality vs appearance? I don't think it's fair to boil it down to such primitive comparisons, but in the end, I know which is more important to me on a day-to-day basis. (I say this as an extremely heavy user of both Eclipse (java, antlr, etc) and (G)Vim (python, scripts, go, etc). I can't believe this is a controversial or downvotable post, especially given the context of this article. The feel of tabs is relevant given the dozens of other niceties that Eclipse provides over TextMate? Really? Again, if you're seeking the features provided by an Eclipse/equivalent?
- deleted 15y ago[deleted]
- wladimir 15y agoUsers seem to see Sublime Text or TextMate as just missing a feature or two while looking at Eclipse and finding that it has the features, but lacks the basic joy of interaction I somehow have this problem with Eclipse too. I really love its features, especially for Java/Android development, but it sometimes handles like you're driving a truck. Even on a fast PC. So its not that much 'fun' to use for me. Qt Creator is one of the fow IDEs I positively like working with. It is fast, featureful and somehow doesn't get in my way like Eclipse does. The only drawback is that it's very Qt and C++-focused, so outside that area usefulness quickly dwindles. For the rest I like Sublime Text. ST somehow helps you stay focused on the text. It is very fast and feels smooth. Like other "simple" editors it opens very quickly so can be used for editing independent scripts and configuration as well as source code, and does not impose any kind of framework or project structure.
- rjurney 15y agoIDEs are slow, and bloated to all hell. I want an editor that is aware of the language I'm using, syntax highlighting, remote execution, etc. and any other piecemeal features I add. But I want the editor to be simple. Hello Textmate.
- Flow 15y agoThat's exactly why I threw away any hopes about Espresso, Coda and perhaps even TextMate, to have more than basic non-semantic features and syntax highlighting. Sure they are pretty and Mac native but I want functionality, not eye candy. Maybe I'm too used to VS+Resharper and IntelliJ and don't want to waste my time reformatting code by hand. With those two editors I can reformat HTML inter-mixed with Javascript and CSS and even get colored curly waves below spelling errors and calls to functions that do not exist. They are damn good tools for a pedant. :) Being a Lisp fan for many years(programmed quite a lot in CL, owns every cool book about it), I've come to the conclusion that I think I prefer statically typed languages, especially those with keywords like "var", "val", "def" etc so I don't have to type out something twice. Limitations can be good, it stops me from being too clever "in the small". Some languages, especially those from Microsoft, are designed to be written in an IDE. That is not a bad thing IMHO. The amount of insight something like Resharper gives you is sometimes totally awesome. On several occasions Resharper has claimed parts of an condition is always true/false, and it's often not obvious but I've never seen Resharper being wrong on those. I'm now more pedantic than ever with details. That said, it's very handy to have TextMate in the Dock and in the command line path. I've used vim and emacs a lot in the past and like them too.
- laurencer 15y agoI distinguish project-oriented IDEs such as Eclipse and IntelliJ from casual IDEs such as Sublime Text. If I'm looking at something downloaded from GitHub, I use Sublime Text because the focus is on browsing the source quickly. I don't want to have to create or import a project. Whereas, if I'm actually developing something, I'll use IntelliJ because then I need all the additional build tools. I think it's a matter of using the right tool for the right job. Opening something in IntelliJ seems like a lot of effort because of the extra step of creating a project, and hence I choose the easier option: Sublime Text.
- usaar333 15y agoI have to say I feel like I'm an oddball here for happily using Eclipse. With an SSD, it's incredibly fast and features like its static analysis (code completion and error checking), debugger, and even 'open resource' improve productivity. That said for quick scripts I'll just use something like kate or vi, but for a large project, the IDE greatly simplifies things.
- hello_moto 15y agoYou're not an oddball. I use Eclipse heavily with a few plugins: m2eclipse, subclipse, EclEmma (code coverage), FindBugs (static analysis), and CheckStyle (code rule enforcer). Being able to navigate the codebase blazingly quick (go to method implementation, class definition, etc) and get a better overall picture of the class (Outline provides the list of all methods, constructors, member variables complete with access modifier) is definitely more productive than anything else.
- Swizec 15y agoThe same reason I don't use a Space Shuttle to travel to my granny that lives a 100km away. I don't have to. But it's got a lot to do with the fact that while IDE's are good for something like Java or C++ programming, they tend to become really crappy once you get into web development and have to regularly work with 5+ different languages at a time. With most IDE's that would mean I'd have to have 5 of them open to work comfortably with every language.
- hello_moto 15y agoThat's because most IDEs don't have good support for web development. (I wonder what would happen if they are good for web development, would people's opinion change?) I used Vim to modify CSS and JS but I struggled to navigate JS code because I cannot jump to the method implementation with some sort of magical shortcut key easily. This is pretty tough if I want to know why I don't get my intended result out of calling the method. To add injury to that, I found out that I have to redo the implementation and call the method something else to describe the intent in full. I can't refactor that easily without going to the path of hell: grep, regex, sed.
- gabebw 15y agoRe: jumping to method definitions, have you tried running ctags on your project directory, then pressing Ctrl-] (go to tag) on the method name? It should work.
- derleth 15y agoDoes anyone here consider Emacs an IDE? Because that's my reason: I can give Emacs all the specific 'IDE features' (whatever those are... probably 'enterprisey' things) I want and it's still Emacs.
- albertzeyer 15y agoSure. As soon as you have all development features integrated in your development editor environment.
- slowpoke 15y agoYou're arguing definitions while the grandparent argues features. I do believe that emacs can be considered on par with an IDE in terms of possible features. I personally prefer vim, but that's a completely different story.
- astrobe_ 15y agoWhy not just use an IDE if you want IDE features? Because Emacs is more general purpose and more flexible.
- weixiyen 15y agoUsed to be a TextMate lover, bought the license at least 3 times. Then I met http://www.jetbrains.com/webstorm/ http://www.jetbrains.com/webstorm/ - never touched TextMate again, and don't ever plan to. Just thought I'd share for those who have not tried a JetBrains IDE before. No other IDE I've tried has lasted more than a week.
- jinushaun 15y agoAlways wondered who used those things. JetBrains has a good reputation, but text editors and IDEs are a crowded market. Web development needs an IDE.
- skrebbel 15y agoThe advantages of IDEs over text editors isn't look or feel. It's code quality. Especially with statically typed languages, good IDEs make developers significantly more productive. Programmers spend most time reading code, navigating code, understanding code. Much more than writing code. Unless you've only done greenfield solo projects in your life, you know this is true. IDEs have code navigation features and tooltips over types and methods. Features like this help a developer understand code significantly faster. Additionally, code occasionally needs refactoring. Most common are the real simple refactorings: A method might grow too hairy and need a split up, maybe a method's name does not correctly convey its meaning anymore, arguments would have to be reordered for consistency, and so on. In a text editor, you have to manually update all references to the changed method. All you can do is compile (or unit test, in case of dynamically typed languages) until all the errors are gone. This is cumbersome, error-prone and time consuming. Search&replace often creates more errors than it fixes. IDEs have direct support for simple operations like these. Larger refactorings are mostly compositions of smaller, simpler ones like I described above. Being able to trust the tool to have made the change correctly is invaluable in this process; it avoids a full unit test suite run after each step, and significantly speeds up major refactoring work. The end result is that a team that uses IDEs and understands its navigation and refactoring features find it very easy to increase code quality. A room full of vi users, not so much. A text editor user would prefer to keep things as they are and add new features instead. The cost of minor refactorings, such as method renames, does not weigh up to the gain. This gain is small in the short run, because the developer is actively working with that part of the code. In the long run, repeatedly skipping these improvements makes code ununderstandable. Also, let's not forget the "not invented here" syndrom. IDEs make it easy to figure out how to use 3rd party libraries and colleague's code with ease. Type the name of the class/object, press "dot" and you get a nice overview of the class's capabilities, including tooltip documentation. A text editor user has to task switch to the browser for docs all the time. If there are docs. Or read the source code that is being used. This means that for relatively simple operations (say, a Point class, a string operation, etcetera), a text editor user will often find it easier to just write the damn thing right now. Its easier and more fun that scouring the code base for something that looks like it. The result is low code reuse. In conclusion, correct usage of a decent IDE increases code quality, makes maintenance a blaze and keeps developers happy. Except the first week, when they're not yet used to the slightly odd UI. But if that holds you back, you're not a professional, you're a whiner. I admit that IDEs have most value for statically typed languages (which, for me, is the strongest case for statically typed languages out there). Dynamically typed languages basically have the problem that they can't get decent IDE support, ever. <sad rant>Which is why the web crowd keeps using TextMate and vi, keeps using Ruby and Python, and keeps writing increasingly unmaintainable code.</sad rant>
- parbo 15y agoI use emacs because then I can learn one thing really well that will work everywhere. Eclipse is a viable option, except it doesn't work in terminals. P.S. Vim is ok too. D.S.
- swinkels 15y agoAs an avid Emacs user, because I like tinkering my development environment. It may not always be productive, but it sure can be fun! Please do not underestimate the long term benefits of tinkering and discovering new things in the process. For me personally, I noticed that those kind of activities might not seem productive in a short term, but tend to give me important insights (and productivity gains) in other areas of my professional life later on.
- smortaz 15y agoAt Microsoft we have all types: IDE diehards and those that are happy staying with vim/emacs. There's also a group that uses a text editor 90% of the time and fires up the IDE only for the debugger and perhaps GUI builder. Which of the 3 buckets you fall into seems to be one of those nature/nurture questions. Re IDE's being slow/bloated - Our group does a Python IDE (free/oss plug-in) and the performance is pretty decent. If you have SSD's, VS can feel pretty snappy. Here's a video to give you an idea: http://www.youtube.com/watch?v=7CoGsSlrxKk http://www.youtube.com/watch?v=7CoGsSlrxKk . For 1.1 we're working toward becoming more Editor+ like, ie, less Project System overhead - just open a file & go.
- MrScruff 15y agoI've actually just begun the process of switching from an Eclipse + CDT workflow to Vim in an attempt to understand what attracts people to it. I'm working nearly exclusively in C++ with some python, developing on Linux. Some of the features that I'm not sure I can put up with losing are: - Reliable code completion. I have to deal with many different third party libraries and APIs, many of which have their own implementation of basic maths classes. It's just not possible to remember them all. I've tried clang complete and it's ok but nowhere near as nice as CDT in Eclipse. - Inline popup of definitions on mouseover. - Reliable jump to definition or header. - Proper refactoring. - Local file versioning on save with diffs. Incredibly useful once in a while. On the other hand, I'm appreciating having a responsive editor I can run everywhere and I like having text based configuration and plugins. I agree with the article that if you want an editor that really understands your code (and you're working in a statically typed language) then you need an IDE, not a text editor with plugins.
- ekidd 15y agoIf you're using a programmer's text editor (SimpleText, vim, Emacs), you should be able to touch type your way through committing code. This is a basic operation. Here's my workflow using Emacs and magit: 1) Right Alt-G to bring up the magit git interface. 2) Down arrow and tab, repeatedly, to review diffs, with "s" to selectively stage part of a change. 3) "c", a commit message, and Control-C, Control-C to commit. Then I'm working on the next feature. This whole process is in muscle memory. Obviously, the workflow in SimpleText or vim would be different, but there's no reason it shouldn't be just as fast. Fast commits are not just for IDEs.
- mhd 15y agoIs there really a clear distinction between IDEs and (some) editors? Eclipse has some language modules that aren't really that great, so would it count as an IDE for those? And Emacs is most definitely an Elisp IDE, nearly a CL IDE with slime and quite close with a few other languages, given enough customization… And while I haven't looked, I bet you can get enough integration with vim, at least on the level of Visual Studio 5… Meanwhile, Smalltalkers know where to draw the line and tell us that we never used an IDE at all (or an object-oriented language)…
- phatbyte 15y agoWhat about code debugging ? How do you guys debug code on vim or ST ? prints, echo, var_dumps?...are you kidding me ? The main reason I'm still using IDE is mostly because of code debugging and code browsing. If I could debug code on vim or ST and do code browsing I would switch in no time.
- colomon 15y agoYou have heard of debuggers, right? Just because every IDE includes one doesn't mean they don't exist outside of IDEs. (For that matter, when I used to develop on Windows, I pulled up Microsoft IDE for debugging only.) Honestly, though, probably 80-90% of the time I do prefer printfs for debugging. A debugger is great if you can easily get to the problem area. If you're just trying to figure out what is going wrong with complex code, dumping a lot of information in a format you can easily look over with a text editor is generally a superior approach.
- Symmetry 15y agoI've always found that print statements are usually best for code I wrote myself, whereas a debugger is most useful for other people's code.
- burgerbrain 15y agoA combination of the two can be quite nice ;)
- gte910h 15y agoI've found those times people can't figure out why code doesn't work at all is almost always related to over reliance and trust of what the debugger is claiming to be truth. It can be faster, but output (printf or more complicated state outputs) seems to always be more reliable.
- udp 15y agogdb? ddd? I don't compile my code inside vim, so why should I expect to be able to debug it there? Learning that the tools don't have to be integrated with each other to be useful was a major eye-opener for me, after using MSVC for many years.
- programminggeek 15y agoI'm not a huge fan of IDE's in general, but Eclipse w/emacs+ keybindings is actually a pretty good compromise on larger projects. It gives you the nicer feel of navigating the code emacs-style, but you still get all the advanced features like code completion and refactoring that Eclipse provides. Also, for Java projects Eclipse w/emacs+ is way nicer than vanilla emacs(at least for me)
- nirai 15y agoKomodo Edit is a really good Open Source editor I recently stumbled into. It gets all the basic editing functionality right (and I am saying this as a VIM user). For any thing else, I believe the OS is the IDE. An OS is in particular an integrated development environment. It contains all your favorite tools to get the job done. To insist having all the functionality you need stuffed into a single unified plugin-ed application is like insisting to get the entire web into Facebook - it sucks. That said, I recently had a surprisingly pleasant experience developing a C# project with VS 2010.
- actf 15y agoA couple of observations and questions: I find it interesting that a lot of folks in this discussion seem to accept that an IDE is advantageous for cases involving a large code base or a statically typed language. Why is an IDE any less appropriate to use with dynamically typed languages? A lot of the niceties provided by a good IDE for statically typed languages are still available for dynamically typed languages. For me, the case in favor of using an IDE is the same regardless of the language. The "killer features" an IDE provides are: autocompletion (i.e. intellisense style) and code analysis as you type. I see no reason an IDE cannot provide these features in a dynamically typed language. Serious question, to those of you who believe an IDE is not useful for dynamically typed languages: Without intellisense like capabilities, how do you remember everything in the language's standard library and for that matter any non-standard libraries you use? Looking up a method or property in the documentation everytime you want to use it seems horribly inefficient. That's the type of job that is perfectly suited for a computer. It seems incredibly ironic to me that computer programmers are manually performing steps that a computer could easily be performing for them. As Albert Einstein said: "Why should I remember anything if I can just look it up?" As some background I think Vim is a great editor - I use a Vim plugin in Visual Studio all the time, and I often use Vim for editing simple files. I think the addition of omnifunc in version 7 brings Vim a lot closer towards becoming an IDE. Unfortunately Vim's omnifunc capabilities are limited. Contrary to what you'd be led to believe by a lot of well meaning folks - Vim's omnifunc capabilities w.r.t python are nowhere near as capable as the same functionality found in Visual Studio or Eclipse. I tried an experiment, wondering if I really was more productive in an IDE, and timed myself coding the solution to a couple of simple problems, using python in Visual Studio - I waited two weeks, so the solution was no longer fresh in my mind, and then coded a solution to the same problem again using Vim (note that I even gave Vim the benefit of the doubt here by using it second). For every one of the problems I tested I was significantly more productive in an IDE - sometimes by a factor as high as 2 or 3 times. Anecdotally I think the two features that make me so much faster are intellisense, and code inspection. Having errors appear automatically without the need to run my code is a huge time saver. I think in the end it's not really about an IDE - it's about the availability of good intellisense like features, automatic code inspection, good refactoring tools, and a good debugger (integrated or not). If those features are available to me when I'm coding then I'll be happy and productive. If they're not then the tools I'm using are inadequate. As much as I would like to use Vim exclusively - unfortunately those features are not available (or do not work well) for the languages I predominately use (C# and python).