logo

 

     
 
Home
Site Map
Search
 
:: Bitwise Courses ::
 
Bitwise Dusty Archives
 
 
 

rss

 
 

ruby in steel

learn aikido in north devon

Learn Aikido in North Devon

 


Section :: Features
- Format For Printing...
Back To The Future

Stone-Age Programming and the Death Of The IDE

Who needs an IDE anyway?
Wednesday 28 February 2007.
 

IDEs are bloated, they ‘get in the way’, they take the fun out of programming. Real programmers use a text editor and a command prompt. Go into programming forums and newsgroups scattered the length and breath of the Internet and you’ll regularly read these and similar views. It is the new orthodoxy. Just as some people would have you believe that Microsoft Windows is a passing blip on the radar, so too they would have you believe that IDEs are a momentary aberration in programming history.

The bizarre thing is that what is now being championed as though it were a bold ‘new way’ of programming is precisely the way I used to write programs over twenty years ago. Back in those days, my intimate relationship with the command prompt didn’t grow out of a deep sense of affection. I didn’t have any choice in the matter. It was all there was.

This is how it went. First you wrote a program in a text editor (if you were lucky) or in a ‘line editor’ (if you weren’t), then you’d save it to disk, compile it, link it, make a cup of tea, try to make sense of the error messages (the more user-friendly of which might say something like: ‘Error 26456’), load it up into the editor again, fix the errors, save it, compile it, link it, take the dog for a walk, fix the errors, wash the cat, and so on and on and on. It is rumoured that some programmers got married, had kids, got divorced and ran away with the milkman by the time they’d managed to get “Hello world” to work.

Then along came Turbo Pascal. That was a revelation to me. It had a built-in editor, it compiled in the blink of an eye and when it found a syntax error it put the cursor onto the line containing the problem right there in the editor. A couple of keystrokes later my program was fixed, compiled and running. This, I felt, must be the face of the future. No programmer ever again would be forced to do battle with the blasted command prompt.


The cutting-edge IDE, ’80s-style. Turbo Pascal combined an editor, compiler, file manager and syntax-error locator – and all packaged up in a 39K executable! At the time, I couldn’t think of anything more anyone could ever want in an IDE…
And then along came Delphi… The Windows-based successor to Turbo Pascal had syntax colouring, a graphical debugger, drag-and-drop widgets and a host of other good stuff. See TurboExplorer

Command And Conquer?

It never for one moment crossed my mind that, one day, people would actively choose the command prompt over an integrated programming environment! But here we are, some way into the 21st Century, and a generation of coders (or ‘hackers’ as some like to call themselves, which is OK I suppose, as long as they don’t call me that too!) embrace the command prompt as though it was the finest labour-saving device yet invented. Not that they have to go through the tedious edit-compile-link-and-run process as we did in the olden days. Oh, no. That’s all been replaced with the far more exciting script-edit-load-and-test process.

Testing is part of the new programming religion. Never mind boring old prosaic stuff like documenting, commenting and debugging. These days, the very modern programmer doesn’t debug as he or she goes along; that’s old hat; the very modern programmer writes tests to try to find the bugs after they’ve already taken over the house and eaten all the cheese. These tests are supposed to check that the program does what it’s supposed to do. If it doesn’t you can either rewrite your program or you can rewrite your tests. I am told that the latter option is often the simpler.

Don’t get me wrong, I have nothing against testing. Far from it. Though, I have yet to be convinced that a running nice, neat ‘test suite’ is any real substitute for letting real live, nasty, messy people loose on your code. You can tell a test suite what to do. People tend to be less cooperative…

Then again, testing – whether it’s done by software or by your Uncle Bert, Aunty Mabel and The Kids - is no substitute for debugging. And in order to do debugging – real, meaningful, easy-to-understand debugging with breakpoints and ‘drill down’ watch variables and step-into and step-over and all the rest, you need an IDE. Oh, sure, debugging at a command prompt can be done – just about. People used to do it that back in the ‘70s and ‘80s. But we grew out of it. It was a horrible phase we were going through and, just like acne, flared trousers and Donny Osmond records, some of us never want to go through it again…


The great granddaddy of IDEs as we know them is Smalltalk. Years before Turbo Pascal, it had a graphical interface, popup mouse menus, bitmapped fonts and multi-window browsers. To say it was ahead of its time would be an understatement. Here is a picture of one of the current-day implementations, Dolphin Smalltalk. In spite of a large number of additions, modern versions of Smalltalk are still building upon solid foundations that were in place over quarter of a century ago…

By now, I’m guessing you should have decided on whether my style of programming is your style of programming. If you’re still not sure, we can sort this out easily. Just answer this simple question: what is your style of programming called, anyhow?

If you came up with a name for it without a moment’s hesitation, I guess you and I can shake hands, agree to differ, and go our separate ways. If you went, “Hmm, well, er, what do you mean exactly by ‘my style of programming’?” then I think you and I can probably be lifelong pals and go to retire in a rose-covered cottage by the sea.

You see, my style of programming doesn’t have any special name. It’s not ‘agile’ or ‘extreme’ or ‘green with blue dots in’. Most of the time it’s just competent. If I’m lucky, every once in the while it might even be the teensiest bit pretty darn’ good. Maybe that sounds dull. Believe me, it isn’t. What’s dull is writing programs that don’t work, delivering them after they are needed and trying to fix bugs that are obscure, ambiguous and undocumented.

In order to write programs that work, get them finished on time and make them maintainable, you don’t have to subscribe to a methodology, buy the right books, use the right buzzwords and wear the right tee-shirts. All you have to do is to work with care and skill. Programming is a craft (you can call it an ‘art’ or a ‘science’ if you insist, though personally I think ‘craft’ is a more accurate description); and any craftsman worth his salt surely wants to use the very best tools available.

Why then, do some people spurn IDEs?

As far as I can see there are two possibilities:

1. Nostalgia
2. Ignorance

I suspect that nostalgia for the good old days of the command prompt is usually felt by those people too young to recall its horrors – the programming equivalent of nostalgia for string vests or carbolic soap. So can an antipathy to an IDE can be explained by ignorance, then? Is it conceivable that the people who most hate IDEs on principle have never tried them in reality? This has to be considered as a possibility. In truth, I find it exceptionally hard to believe that anyone who has developed a C# application in Visual Studio or a Pascal application in Delphi would seriously choose to use a text editor and command line compiler as an alternative. But maybe some of those people who have only ever programmed in so-called ‘scripting’ languages such as Python, Ruby and PHP really haven’t any experience of a good IDE and therefore just don’t know any better?

I suppose I ought to consider a third possibility – though this, I confess, is a contingency so remote that I feel rather foolish giving it any degree of credence. Possibly, just possibly, programmers using ‘lightweight’ editors really are more productive – more ‘agile’ – than those of us who insist on our lumbering behemoth IDEs?

Pah! No, I’m afraid that I really can’t take that proposition seriously. It would be like arguing that a better greenhouse grows worse tomatoes or a better cooker bakes inferior cakes. I’ll agree that good tools are not the sole requirement for good tomatoes, cakes or programs. But, by heck, they certainly help!


Huw Collingbourne is one of the developers of Ruby In Steel – SapphireSteel Software’s Ruby and Rails programming IDE for Visual Studio 2005. As such, he confesses to a strong preference for lots of pretty icons, menus, windows and things that pop up all over the place when you click a mouse button. He does not miss Edlin…

AddThis Social Bookmark Button

Forum

  • Stone-Age Programming and the Death Of The IDE
    17 March 2008, by Chris the Oldie

    Wimps !! You’re all wimps - the only way to program is with punched cards. That is as long as you don’t drop them. Then you need that wonderful machine that sorts them back into order and weighs about half a ton. FORTRAN on punched cards is the way to go ... but not for me. I gave up hair shirts some time ago as well - along with the cards. I wish I hadn’t thrown them away though.

    However I prefer Delphi 2007 - its just a tad easier and quicker than sending yours cards to the computing center. Ahh the old days. Especially when they were dropped in the rain.......

  • Stone-Age Programming and the Death Of The IDE
    20 March 2007

    Reason’s for not using an IDE, Power!!! As soon as the IDE’s start offering something more then simply notepad editing capabilities with color I’ll consider them. In the mean time emacs is perfect for all of my Java and scripting needs.

    Languages that grew up around an IDE are a different matter. I can’t imagine coding smalltalk without the smalltalk environment. Maybe that’s the difference. IDE’s are a tool that require you to exit them to do system related chores. An environment gives you every thing

  • Stone-Age Programming and the Death Of The IDE
    19 March 2007

    Here are the reasons: Freedom of choice. Power. Independence. Here is what makes this possible that was not available in the "dark ages": Good Text Editors. Good Command Shells. Another way to think about this is that the OS itself is your IDE. This just was not the case in the past. A modern OS is what all those Smalltalk environments were aspiring to, we are there now, we do not need Squeak :)

  • Stone-Age Programming and the Death Of The IDE
    7 March 2007, by Peter Wilson

    Personally I use a combination of IDE and text editor: VS 2005 for development and TextPad to fix up the code when it screws up.

    e.g.

    1. "Scan and replace in files" corrupts source files. Replacing X by Y can mangle surrounding text. So I use the text editor to perform the same task.

    2. Accidentally leaving an application open when using form design in the IDE silently drops any user defined controls from the source (presumably their dll’s are locked) - the text editor is great for putting them back.

    In the old days you needed to know everything about how your code was constructed. Now you only need to know this level of detail when your IDE screws up. I am not finding much of an advance here!

    • Stone-Age Programming and the Death Of The IDE
      19 November 2009, by SovCN

      Sounds to me like you are using a pretty shitty IDE...

  • Stone-Age Programming and the Death Of The IDE
    7 March 2007, by Franck

    I think that the web environment is responsible for the death of the IDE. I learned to program with Turbo Pascal and then worked with a client-server apps generator that let me design Windows screen in a WYSIWYG manner and automatically trace program execution. We used to think that compilation was the right thing, that there will be a 5GL after 4GL, that your databased should be modelled before being generated, but the new generation has learned to build interpreted web applications (java, php, ruby) with simple text editors... and forget the past. According to a current poll, this is now the majority of new developments. I was astonished of the succes of Ruby on Rails. I see it as a powerful concept... but such a powerless tool. I think that the balance will get back to the tools and I have already seen some Ajax labelled tools that are more than simple code library.

    • Stone-Age Programming and the Death Of The IDE
      8 March 2007, by Dave

      Those who don’t learn from the past are doomed to repeat it. Maybe just call the IDE something cool like IJEX, X’s always sell better, and present it as an amazing new technology.

  • Stone-Age Programming and the Death Of The IDE
    5 March 2007, by dave

    Maybe it depends on the IDE. Some IDE’s just work, Delphi is an example of this, Eclipse for example is one at the other end of the spectrum.

    I had the experience of trying to get Eclipse to build Java and JSF code, and publish it to the web server. The number of incantations required was amazing, and all the youngsters were wondering why on earth I was even trying to get an IDE going, crazy old guy you could see them thinking, doesn’t he know how to type. State of the art was Programmers Editor, a fine product, but no IDE. Fortunately that is behind me and I’m writing Delphi again and I can write applications in a tenth of the time and look on in amazement at the J2EE world. I don’t know what they’re teaching them these days.

    Like yourself I thought Turbo Pascal was the best thing ever, even had it running on CP/M (I bought a copy from half way around the world to run on my Amstrad). I’ve tried to figure out why the antipathy to IDE’s amongst the web developer world and I think it’s a combination of

    - what’s being taught at uni.
    - the IDE’s aren’t very good in the Web world, and require a lot of incantations to make it work.
    - ignorance
    - it’s what everyone else does
    - and a big factor is human ego. After all if you’ve got an IDE that you drag and drop stuff on, well, hey anyone can do that.

    my 2c

  • Stone-Age Programming and the Death Of The IDE
    2 March 2007

    Your description suggests that things were too simple to be productive in the "old days". I would argue that the pendulum has swung too far in the other direction and that is what is responsible for the backlash. The screenshots you show are very very busy; the code seems to be hiding behind all the different dialogs. It’s all about control and ease of control for me. I like Makefiles because I can see what’s going on (in most cases). I dislike solution files because in order to edit them you need to go through 2->15 menus and dialogs and if you don’t know where in the IDE to look you are out of luck because chances are you don’t know what the option happens to be called in that IDE. With a script you can read it like a program and any keywords you don’t get are right there.

    • Stone-Age Programming and the Death Of The IDE
      25 March 2007

      You’re taking for granted that you actually know the *syntax* of a makefile. There is essentially no syntax to learn. Hence, I do not have to know that /Gm enables minimal rebuild or /Yu enables precompiled headers. I simply read what is displayed in the IDE. The alternative is to download or otherwise find some documentation that lists all my options, etc.

  • Stone-Age Programming and the Death Of The IDE
    1 March 2007

    Like Huw I am old enough to remember the dark days of coding using MS DOS and edit or korn shell & Vi to write source files and the command prompt for compiling/debugging.

    This was a time consuming process to say the least and I welcomed the IDE on it’s arrival. Having everything within one convenient click or Key press improved productivity several folds.

    With today’s modern IDE such as Visual Studio, coding is less of a chore and helps eliminate tedious tasks like retyping variable names repetitively in a class thanks to intellisense, and automatic code formatting to make the code easier to read, rather than doing this manually after a mammoth coding session looking at the spiders web and trying to make it look remotely readable.

    How many times have you written code in a function, decided that it would be better in its own function copied and pasted and then forgotten to add the function call in the original function, this is where the refactor at a click of a right mouse button is great!

    You would have to drag me kicking and screaming to get me back the the dark old ways of coding.

  • Stone-Age Programming and the Death Of The IDE
    1 March 2007, by Michael Muhammed Saab Turbo

    I’m with you, brother! My first professional programming environment was Turbo-C (the company also had Turbo-Pascal for the Pascal guys), wow — what a difference it made to be able to understand what was happening so clearly! Conditional breakpoints, watch statements...

    C stopped being a mystery, and even became fun...

    These days, I spend my time fairly evenly distributed between Apple’s Xcode (Objective-C) and Wing-IDE (Python). Sure, I use Unit tests for both Objective-C and Python now — but while actually working on code — I’m using the IDE!

    At my last straight job, I was amazed to learn that the PHP developers had a pretty nice IDE available to them but were not using its debug server (so really they were just using it as a syntax highlighting editor...). None of them had ever used an IDE! Same thing for the perl folks there — I couldn’t even get my boss to foot the bill for a perl capable IDE... sheesh!

  • Stone-Age Programming and the Death Of The IDE
    1 March 2007

    There is a third reason: computer power. To be able to use the modern IDEs you always need a high end PC or your IDE will sometimes freeze for several seconds. With the modern Text Editors with Syntax highlighting and the possibility to integrate a commanf line compiler you need a less powerfull PC. Thus for the so called "Hobby" league the editor approach is the better one.

    Regards from Germany

    Franz-Leo

  • Stone-Age Programming and the Death Of The IDE
    1 March 2007, by Dennis

    I’m with you! However there is one rationale for unit tests that makes sense to me: you can hit a button and run all the tests again in seconds. Humans aren’t so convenient.

    Also, although I love my Visual Studio, I gotta admit to some Emacs envy....well, a lot of Emacs envy...learn it well and code flies from your fingertips. If I had all the power of Emacs, combined with Intellisense, on-the-fly error underlining, and all the other sweet VS features....ah well.

    Anyway, as it happens I downloaded Dolphin Smalltalk just yesterday and started going through the tutorials...pretty sweet.

  • Stone-Age Programming and the Death Of The IDE
    1 March 2007, by mihael robost

    1. I think this experiments with "pre-IDE tools" is a straight way to make them better. It’s a kind of minimalism. For a "new generation of programmers", always hard to learn such a complex things like an IDE, hard to get familiarize with it. There are so many things that means nothing at first, and only means something if you’ve got the whole picture. Otherwise that complexity is very disturbing.

    2. Ignorance is strength.


Home