Become a fan of Slashdot on Facebook


Forgot your password?

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!"
This discussion has been archived. No new comments can be posted.

The IDE As a Bad Programming Language Enabler

Comments Filter:
  • I code in C#, (Score:3, Informative)

    by gigaherz ( 2653757 ) on Tuesday October 30, 2012 @05:33AM (#41815497)

    ... 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.

  • by bickerdyke ( 670000 ) on Tuesday October 30, 2012 @05:42AM (#41815545)

    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.


  • by coder111 ( 912060 ) <> on Tuesday October 30, 2012 @05:53AM (#41815597)
    Well that's bullshit. The biggest problem with development these days is not the language itself, but the 100s of 3rd party mostly-open-source libraries that you have to use. Or else go reinventing the wheel which is worse.

    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.

  • Re:Word (Score:2, Informative)

    by WillKemp ( 1338605 ) on Tuesday October 30, 2012 @06:59AM (#41815857) Homepage

    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.

  • by darkat ( 697582 ) on Tuesday October 30, 2012 @07:08AM (#41815921)
    In general, if you need a debugger while developing your code then you may not know what you are doing. Maybe you are developing very special stuff, otherwise the intensive use of a debugger means either lack of experience and/or skill..
  • Re:What is he on.. (Score:3, Informative)

    by Anonymous Coward on Tuesday October 30, 2012 @07:31AM (#41816079)

    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
    Yes, there are very few real world projects in such languages but that's confusing common practices with best practices.

  • by Anonymous Coward on Tuesday October 30, 2012 @07:55AM (#41816203)

    Why Eclipse and NetBeans and all that crap? Because refactoring and autocomplete.

  • Re:Word (Score:4, Informative)

    by lattyware ( 934246 ) <> on Tuesday October 30, 2012 @07:58AM (#41816221) Homepage Journal
    That is an issue that is solved by documentation and naming properties well, as far as I see it. As to yield being anything to do with this, I don't see it, a quick google seems to show that yield does a similar thing in C# to Python, which is generators - lazy computation of iterables - which is an awesome language feature I love.
  • Re:Word (Score:4, Informative)

    by elbobo ( 28495 ) on Tuesday October 30, 2012 @08:42AM (#41816509)

    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.

  • 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)

    by pjt33 ( 739471 ) on Tuesday October 30, 2012 @09:40AM (#41817047)

    ... they had introduce the strange "yield" keyword to help alleviate the issues caused by this feature.

    Or, from a different perspective, they reintroduced a concept (coroutines) that BCPL had but C dropped, forcing people to use obscure hacks []. What that has to do with properties, I don't know.

  • by nitehawk214 ( 222219 ) on Tuesday October 30, 2012 @10:28AM (#41817703)

    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)

    by cozziewozzie ( 344246 ) on Tuesday October 30, 2012 @10:29AM (#41817713)

    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)

    by Anonymous Coward on Tuesday October 30, 2012 @11:18AM (#41818319)

    That stern looking old fart is John McCarthy. He probably did more for computing that all of us put together.

  • by H0p313ss ( 811249 ) on Tuesday October 30, 2012 @12:16PM (#41818997)

    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.

The relative importance of files depends on their cost in terms of the human effort needed to regenerate them. -- T.A. Dolotta