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

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

    2. 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
    3. 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"
    4. 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
  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. 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).

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

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

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

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

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