The IDE As a Bad Programming Language Enabler 586
theodp writes "When it comes to monolithic IDEs, Wille Faler has lost that loving feeling. In IDEs Are a Language Smell, Faler blogs about a Eureka! moment he had after years of using Eclipse for Java development. 'If the language is good enough,' Faler argues, 'an IDE is strictly not needed as long as you have good support for syntax highlighting and parens matching in the case of Clojure, or indentation in the case of Haskell.' So why do Java coders turn to Eclipse? 'Because [of] a combination of shortcomings in the Java compiler and Java's OO nature,' explains Faler, 'we end up with lots and lots of small files for every interface and class in our system. On any less than trivial Java system, development quickly turns into a game of code- and file-system navigation rather than programming and code editing. This nature of Java development requires IDEs to become navigation tools above all.' Yes, only an IDE could love AbstractSingletonProxyFactoryBean!"
I code in C#, (Score:3, Informative)
... and Visual Studio 2010 with ReSharper, and it's the most amazing thing ever... at least until the company decides to upgrade to 2012, which is ugly but it has a lot of new and really useful features.
I'm not going to rant since I know a lot of you would rather forget proprietary software exists, but the rest of the IDEs I have tried to use can't compare, and sometimes even get in your way.
Re:Not sure I agree with the conclusion... (Score:4, Informative)
I remember reading somewhere about a system that does away with the concept of "files" entirely, and the whole coding process is based around smart navigation - what's on your screen could be pulled from many different locations at once without you having to know where from - shame I can't recall where I read that exactly.
Smalltalk?
IDEs are very useful,and it's not language's fault (Score:5, Informative)
And IDE helps you see the reference for these libraries much easier, using autocomplete and automated documentation lookup. On top of that, navigating your own code is much much easier. Add debuggers and profilers, granted, somewhat less useful in server-side environment but still useful. Semi-automated refactoring though is great, and eclipse does that quite well.
I've done my share of development using nothing more than a text editor. But I prefer to use IDE when I can- they make me much more productive. Of course I still make sure code can be built & deployed using plain command line tools- for Java Maven is great.
--Coder
Re:Word (Score:2, Informative)
If you're writing it (and the language is supported) do it in Vim.
If you've got a clue about programming, it doesn't matter if the language is supported or not. All you need is a text editor. But not vim, not unless you're doing a quick fix of something. I use vim heaps, but not for programming. I use geany for that. Gui text editors are so much more convenient than vim for anything other than editing config files.
Re:Did he already heard about integrated debugger (Score:3, Informative)
Re:What is he on.. (Score:3, Informative)
The author of the blog post is actually running a software company that sells solutions in Scala, Closure and Haskell (just check the web page www.recursivity.com).
Yes, there are very few real world projects in such languages but that's confusing common practices with best practices.
Re:But eclipse is terrible at navigation (Score:2, Informative)
Why Eclipse and NetBeans and all that crap? Because refactoring and autocomplete.
Re:Word (Score:4, Informative)
Re:Word (Score:4, Informative)
I've been programming since I was 8, which makes 28 years of programming (probably more than half of that time professionally). I've only started using IDEs in the past few years, and only because they're pretty much not optional for a lot of platforms these days.
I think I was better off before IDEs. I don't write less bugs now, and I don't feel like my programming is qualitatively better because of the IDEs. I find my work environment is now far more cluttered, and I spend more time navigating my tools rather than navigating my code.
Perhaps you're mistaking "tab completion" for IDE? You don't need an IDE for tab completion. I've had that for over a decade in vim.
Re:Did he already heard about integrated debugger (Score:4, Informative)
The place where something finally called a method on a null is not necessary place where the bug is. The question is why that variable has a null value at that moment. You will not find it in the stack trace.
If your logic is so complicated that you can't tell where a variable should have been assigned, your code is already an unmanageable mess. Add preconditions on the arguments to your methods and enforce them by throwing an informative exception if they are not satisfied; that helps hugely. If it doesn't, it's time to also do postconditions and invariants. If you don't understand what those preconditions and postconditions should be, that's a much more important problem than where your code is throwing a NullPointerException...
Re:Word (Score:4, Informative)
Or, from a different perspective, they reintroduced a concept (coroutines) that BCPL had but C dropped, forcing people to use obscure hacks [greenend.org.uk]. What that has to do with properties, I don't know.
Re:But eclipse is terrible at navigation (Score:4, Informative)
Curious. My Eclipse project is the Linux Kernel. Works fine.
I hope, none of your code is included and enabled on any of my systems.
Commas, will be misplaced.
Re:IDE pros & cons (Score:4, Informative)
This whole discussion is fucking bizarre. It turns out that there are many people out there who think that if you are not running a 1435 TB monstrosity of an IDE, your only alternative is ed. Just use an editor from this century, FFS. Emacs, vim, Kate, Notepad+, anything modern and targeted at programmers.
Personally, I use vim:
Code completion? Check
Syntax highlighting? Check
Brace matching? Check
Search and replace w/ regexp? Check
Language-specific auto indentation, retabbing, reindent, etc. Check
Multiple files open in tabs, with easy switching? Check
Language-specific auto commenting? Check
Filesystem navigation? Check
Code folding? Check
Scriptable? Check
I do understand that full-blown IDEs offer some additional functionality: integrated build system, CVS integration, debugger integration, stepping through errors, etc. I don't find these useful personally, but I understand that other people do, and that's OK. Vim and Emacs can also do most of those, but if you are so dependent on all this, then a large IDE is probably something you'll be more comfortable with, and that's OK.
On the other hand, vim has its own advantages -- it doesn't tie you to itself (you use standard tools like CMake and Mercurial/git), it's lightweight (somebody in here suggested increasing the memory available to the VM to 2 GB so Eclipse runs faster WTF?!?!?!?!?), it's fast, and it is unbeatable at keyboard shortcuts. Yes, many IDEs offer configurable keyboard navigation, but it's an afterthought, none of it is as efficient with keyboard as vim. I don't like using mouse for editing.
So in the end, it's up to you to decide. Personally, I'm an editor+shell guy, and I honestly don't feel that I'm missing out on anything. Each to his own.
McCarthy (Score:2, Informative)
That stern looking old fart is John McCarthy. He probably did more for computing that all of us put together.
Re:Did he already heard about integrated debugger (Score:4, Informative)
In most languages you don't need a debugger for stuff like null pointers; perfectly fine exceptions are thrown and reported telling you exactly what you did wrong. When is the last time you ever used a debugger to track down such a bug? You use debuggers to analyse why some algorithm isn't worked as it's supposed to; for finding flaws in human thinking.
I'm thinking you've never worked on a multi-threaded application with millions of lines of code. With a debugger, set an exception breakpoint and you can usually see exactly why something bad happened with almost no time wasted on "analysis". If I can reproduce a problem in a debugger I can usually fic it about 10x faster and more reliably than if all I have is a stack trace.