Slashdot Mirror


The IDE As a Bad Programming Language Enabler

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!"

25 of 586 comments (clear)

  1. Word by genocism · · Score: 5, Insightful

    I prefer writing in a word processor why should software development in an IDE be any different. Refactoring, code, memory, and performance analysis... All good things. Ohh and that little thing called debugging.

    1. Re:Word by equex · · Score: 5, Funny

      i code with a battery, a resistor and hit the cpu pins with it

      --
      Can I light a sig ?
    2. Re:Word by gmhowell · · Score: 5, Funny

      i code with a battery, a resistor and hit the cpu pins with it

      Still haven't mastered butterflies, n00bz?

      --
      Jesus was all right but his disciples were thick and ordinary. -John Lennon
    3. Re:Word by daem0n1x · · Score: 5, Insightful

      Quite often I get the task of being the mentor of interns or newbies, many of them completely clueless. I also have given basic programming training for college students, usually C/C++ and Java.

      I always tell them to code using a text editor with syntax highlighting and then compile using the command line (in Windows, but preferably Linux).

      That way they can start building up knowledge about how the whole thing works from the ground up. If people start with a nice and cozy IDE they tend to think it's all magic going on. And then, when they need to solve any problem, they have no idea where the files are, their formats, their contents, etc.

      After getting acquainted with the bloody guts of the whole thing, they can start using tools to make it easier and faster. Using a good IDE has nothing wrong about it, if you really know what's going on under the hood. Magical thinking is an enemy of good engineering.

    4. Re:Word by RobinH · · Score: 5, Insightful

      There was an interview in the latest issue of Make Magazine with one of the creators of the Arduino. He said he's been trying to teach fundamentals of electronics to students (ohm's law, etc.) and they just weren't getting it, and he realized that wasn't how he learned it. He'd just started building stuff with the tools available, and when something didn't work, he was motivated to dig deeper and figure out why. He helped create the Arduino to be an easy way to get a light blinking without really having to know everything about how it worked, and then as you wanted to do more, you had to figure it out. The Arduino seems to be very successful with this strategy. That seems to fly completely in the face of your theory.

      --
      "I have never let my schooling interfere with my education." - Mark Twain
    5. Re:Word by Anonymous Coward · · Score: 5, Funny

      i code with a battery, a resistor and hit the cpu pins with it

      Still haven't mastered butterflies, n00bz?

      What did you think where Sandy came from?

    6. Re:Word by SerpentMage · · Score: 5, Insightful

      Oh this is fucking bullshit, there I said it! I have been coding since I have been 13 years old, which means I have been writing code for 30 years, and 20 years professionally. The idea that you don't need an IDE is a hair brained idea. How on earth are you supposed to keep track of the several thousand files? When I work on projects I like to keep the entire architecture and structure in my head. I use the intellisense system to find for me the proper class. I am not talking about documentation as that goes without saying. I am talking about using a naming convention so that you can easily find functionality. I personally hate code where I cannot understand what the functionality represents due to a bad naming convention.

      If I have to keep track of every method name, and its parameters then I am definitely wasting time on stuff that does not need thinking about. I would be wasting time trying to get the right word, or type, or some little buttwipe problem. If you say, "oh but wait you should be able to keep track of the methods." I reply, "yeah please write some professional code!" Let's put it this way. How come JetBrains makes money from providing IDE's that do exactly what the article author is bad?

      BTW as one other commentator said, "you could apply a google principle" and that I don't discount. That could be interesting.

      --

      "You can't make a race horse of a pig"
      "No," said Samuel, "but you can make very fast pig"
    7. Re:Word by Anonymous Coward · · Score: 5, Funny

      The point is that Java could be a better language.

      That is not really something we question. The thing that is up for debate is if Java could be a worse language.

    8. Re:Word by YttriumOxide · · Score: 5, Insightful

      When did I exactly said I had a problem?

      Personally, I'd say here:

      Quite often I get the task of being the mentor of interns or newbies, many of them completely clueless.

      And here:

      If people start with a nice and cozy IDE they tend to think it's all magic going on. And then, when they need to solve any problem, they have no idea where the files are, their formats, their contents, etc.

      In my opinion, if your students end up being like this due to usage of an IDE, the problem lies with you as a teacher, not the IDE.

      Software Development is a rather "odd" thing in many ways. It's highly technical; painfully unforgiving in the rigidity of language syntax; and generally visually extremely unattractive (the code itself). However it's also something where you are creating something, from nothing, with your own unique style and way of doing things. That is almost the very definition of art.

      When teaching, you need to remember both sides; otherwise you're - as I stated - churning out code monkeys and not software developers.

      --
      My book about LSD and Self-Discovery
      Also on facebook as: DroppingAcidDaleBewan
    9. Re:Word by crazyjj · · Score: 5, Funny

      When I was in college there was a poster that hung in one of the professor's offices. It was a picture of a stern looking old fart glaring at the camera, with the caption "Programming: You're doing it all wrong." Every time one of these discussions comes up on /. I think about that poster. Everyone chimes in with why you have to use X language, why assembly is the ONLY way to program, why all IDE's are evil and you're a terrible programmer unless you use a text editor/VI/punch cards. Blah, blah, blah.

      I am a nerd. But sometimes my fellow nerds REALLY get on my fucking nerves. Thank god I don't have to hang out with you lot at parties.

      --
      What political party do you join when you don't like Bible-thumpers *or* hippies?
  2. Did he already heard about integrated debugger ? by Anonymous Coward · · Score: 5, Insightful

    He says that IDE usage is " 'Because of a combination of shortcomings in the Java compiler and Java's OO nature..."

    I use an IDE because it has an visual debugger as I tend to develop aloways in debugging mode (see Hotspot dynamic class update and other JRebel features)...

    But the guy must be a great fan of gdb, coredump, vi and edlin ;-)

    We are not in 1970 anymore IMHO ...

    Rgs,
    TM

  3. Re:But eclipse is terrible at navigation by santax · · Score: 5, Funny

    I wanted to ask you about non-trivial tasks that need 100+ projects, but then I noticed your signature. Congrats btw, being head developer of Apple Maps must earn really good!

  4. Eclipse is better if you are a beginner by bhaak1 · · Score: 5, Insightful

    Syntax highlighting and parens matching doesn't really help the beginners. Instant feedback for programming errors is great, you immediately learn about the syntax on the go. Then the debugger is also a great tool (even though I think you should first think, then code, then think again and only as a last resort start the debugger).

    These are not Eclipse-unique features, you can get such features with many setups but an easy to install IDE that satisfies your needs and is easily extendable with plugins that integrate seamlessly with your IDE (for example Findbugs).

    It's almost like Emacs done right for Java. Well, as right as an IDE can be done.

    I don't buy the argument that 1 class means 1 file is a problem (btw, this only applies to public classes anyway). If your project is large enough, you still get navigational problems even if you'd crammed 10000 lines into files (please, don't do this).

  5. IDE pros & cons by Anonymous Coward · · Score: 5, Insightful

    Pros:

    * Syntax highlighting
    * Brace matching
    * Symbol autocomplete
    * Error highlighting (XCode FTW)
    * Go to Definition/Declaration
    * Debug with all the above features in place

    Cons:

    * Some guy says they have a smell, but actually he doesn't like Java (so don't use Java)

    I could write code without an IDE, but I wouldn't want to maintain someone else's code without one, and I regularly port (alone) MLOC codebases.

  6. Attention seeker by Anonymous Coward · · Score: 5, Insightful

    What we have here is another attention seeker trying to appear enlightened by saying something "counter-intuitive" or "against the grain". It's a bit like those people that go out of their way to let you know that they don't think Dark Side of the Moon was the best Pink Floyd album, because their opinions are so diverse and more informed than all the "sheeple".

    IDEs are a smell? What? No mate, you smell. IDEs drastically improve productivity. Yes, part of that is code navigation - mature libraries and frameworks such as the STL, Java, and .NET are HUGE - not because they are poorly designed (though that may also be true; correlation != causation), but because the sheer number of features makes library and framework searching essential. No human could possibly use these libraries as efficiently without code completion or prompting, except for the parts they use most frequently. IDEs make the libraries and frameworks discoverable.

    That's not even to mention all the OTHER benefits IDEs bring - integrated debugging, refactoring, static analysis, test coverage analysis, code style management, build chain management, source control integration....

    Yeah, yeah, I bet this guy is 1337, uses ONLY notepad / ed, hand writes his make files, and is the most badass coder on the entire planet. The problem is - nobody cares. Everyone else is more concerned with getting the job done efficiently. IDEs are simply essential in the large code bases I work with every day, and that would be true whether I were dealing with a million lines of Java or a million lines of Haskell / Python / Whatever this guy thinks a "good language" is.

  7. IDEs are very useful,and it's not language's fault by coder111 · · Score: 5, Informative

    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.

    --Coder

  8. A text editor that does the job IS an IDE by Alkonaut · · Score: 5, Insightful

    Most bizarre conclusion I have ever seen. Of course you can have highlighting and other editing tricks (autocomplete, etc.) in a text editor. But once you add things like unit test integration, deployment, and most importantly an interactive debugger where you can step through your code, you have a proper development environment. Running tests can be done at a shell prompt, but debugging not so much. And if your text editor ticks all these boxes, including interactive debugging (I'm sure emacs can for example), then your text editor IS A FREAKING IDE ALREADY. I'd like to make the inverse conclusion of TFA: since we have proper IDE:s we can now allow the code in modern languages to be structured an way we want. A good IDE should never have you worrying about files, just code.

  9. Re:But eclipse is terrible at navigation by Anonymous Coward · · Score: 5, Interesting

    Eclipse failed because projects have to be small.

    Curious. My Eclipse project is the Linux Kernel. Works fine.

    Tip for young players: Eclipse runs on the JVM, the important bit is the last two letters "VM" - "Virtual Machine". The out of the box configuration gives Eclipse ~128MB of memory.... how many VMs do you run with that much memory? Change the default values to something sane (ie 2GB) and suddenly Eclipse is fast, responsive and useful. Remember VM = Virtual Machine.

  10. Re:I like Eclipse except for one flaw by slim · · Score: 5, Insightful

    Now some people say you shouldn't have a single file with over 100k lines of code, but some of us like using old school procedural with just a sprinkling of OO.

    Please don't put 100k lines of code in one file, even if you're writing non-OO C.

  11. What is he on.. by Rexdude · · Score: 5, Insightful

    TL;DR - Let's all ditch IDEs and go back to Notepad/vi/emacs/edlin.

    Code generation in Eclipse is a breeze, it easily creates framework classes where you can plug in your code. Directly jump to classes, view javadoc when you mouseover any element, jump between occurrences of text within a file, seamlessly integrate with the version control system of your choice - it has everything to properly work with a modern software project that can have hundreds or thousands of classes and files.
    And the same goes for Netbeans or Visual Studio or any other IDE of choice.

    Finally, tell me how many real world projects use Haskell, Clojure or Scala as compared to ones using Java/C/C++/Python/Ruby/PHP/Perl. I don't exactly see dozens of job openings for the former on various job boards. You work with what you've got, unless you're an ivory tower academic who's only concerned with the design of a language as opposed to its real world usage.

    --
    "..One hosts to look them up, one DNS to find them, and in the darkness BIND them."
  12. Re:But eclipse is terrible at navigation by hcs_$reboot · · Score: 5, Funny

    being head developer of Apple Maps must earn really good!

    Well, he's just been fired. So now he has enough time to spend on slashdot, lucky him. And welcome!

    --
    Slashdot, fix the reply notifications... You won't get away with it...
  13. Re:Who the fuck is Willie? by 91degrees · · Score: 5, Funny

    Almost.

    Just needs a good editor.

  14. Agreed! by zmooc · · Score: 5, Interesting

    I (professional Java coder since 1998) absolutely agree. Java is hardly human-writable, even if it were only for the import statements. Without the existence of some very good IDEs Java might very well not have been as popular as it is today. But it is.

    Is this a problem? Apparently not in practice. Would I rather have a more dense, less IDE-dependent language? Yes. Are such alternatives available and do they come with an enormous ecosystem of supporting libraries? Nope...

    --
    0x or or snor perron?!
  15. Re:But eclipse is terrible at navigation by kiddygrinder · · Score: 5, Funny

    i hope none of your decisions matter to anyone

    --
    This is a joke. I am joking. Joke joke joke.
  16. Re:100% by mean+revision · · Score: 5, Interesting

    Echo that emotion.

    I worked on a web-app that was done in Groovy and Grails. First release was fast and fun, we got lots of functionality out quickly and it was a delight to work with. Fast forward a year to when we had to maintain the code. Every little thing took a lot more work than it should have. Reading code to discover interfaces, scanning backwards to see what types we were working with, dozens of open source files which we'd always have to check because Intellisense wouldn't help with simple function/variable naming. It was a nightmare.

    In the end we scrapped it all and rewrote it in Scala. It's not quite as fun at first but it's quite nice and maintenance is a delight. That one experience totally soured me on dynamic languages for any serious applications.