* * * * *
Just to make sure, I did my “once-a-decade” check of an IDE. Yup, I still
hate 'em.
My first exposure to an IDE (Integrated Development Environment) was in the
mid-80s with Turbo Pascal 3 [1], and I hated it. Not the language per se but
the editor. By then, I was used to IBM's PE [2] (version 1.0—never found a
bug but there were a few limitations, mostly due to it being able to run
under MS-DOS 1.0 [3]) with it's true block copy, the ability to move anywhere
on the screen and type (and have it insert spaces, if required) and fairly
pneumonic keybindings, so I had some issues with how Borland [4] thought an
editor should work.
I found it a nightmare.
And then when Turbo Pascal 4 came out, with an entirely new interface where
they tried (and in my opinion, failed) to do “windows” in a text mode and
well … it took a bit over a decade for me look at another IDE.
By now it's the late 90s, and I'm working on Brainstorm [5]. One of the first
Java IDEs came out (and I have no idea what program it was or even what
became of it). I thought I'd give it a try as I was curious if it would
handle an existing project.
It didn't.
My code killed it. I suspect the programmers of that IDE never thought that
anyone would bother with writing their own layout manager, and I recall the
dialog went something like:
IDE: What … is your language?
Sean: Java.
IDE: What … is your quest?
Sean: To compile this Java code I wrote.
IDE: What layout manager are you using?
Sean: Really? I wrote my own.
IDE: Huh? I don't know that [falls over the Bridge of Death into the Gorge of
Eternal Peril] Auuuuuuuuuuuuuuuuuuuuuuuugh!
Scratch another IDE off my list. And a bit over a decade passes.
We're doing a lot of Java [6] programming at The Ft. Lauderdale Office of The
Corporation and most of the programmers are using this IDE called Eclipse [7]
(we doing both backend stuff and Android [8] development). I've heard of it.
Nearly all Java programmers swear by it. I figure I'd give it a go, if only
as an source code/object viewer. I suck down the 300+ megabyte package that
Ubuntu [9] offers overnight and give it a go.
And … yeah. I have no idea what I'm doing. Why does it want a “workspace?”
How do I load an existing project into the darned thing? Why is the Android
Eclipse extension [10] failing? Oh, the “stable” version that Ubuntu coughed
up is more than twenty minutes old, and therefore, an ancient and decrepid
piece of XXXX. I should know better by now.
So off I go to the Eclipse site, and I'm faced with a dozen different options
for Eclipse [11]. Wait? There are three different versions for Java, one for
C/C++? One for Javascript? Wait? I thought Eclipse could work with a bunch of
different languages. Shouldn't these all be modules or extentions or
something? You mean I have to download a separate version for each language I
want? And what's with the three Java versions?
Auuuuuuuuuuuuuuugh!
And off I go the Bridge of Death into the Gorge of Eternal Peril.
Okay, so I pick one, download it, figure out I can just run the darned thing
and don't have to install it. Okay, the Android extension (another umptillion
bytes) installs fine, and I figure out that I can use the existing project,
but only if I build it from the command line first (um … isn't that kind of
defeating the purpose of an IDE?) and neither I nor J (office mate) can
figure out why I'm getting these two errors about overriding an interface
(which is the point of an interface—you override it). If I do the so called
“quick fix” that Eclipse suggests, it fails on the same line with a different
error.
Sigh.
The Android Emulator runs the code just fine … I guess … since I'm supposed
to test this code. But i can launch the compiled application (compiled via
command line) on the emulator, so the code works (and no errors from the
command line compiler there). It's just that Eclipse doesn't like the code.
Par for course. Of course.
I can still use it to browse the code, and follow the relationships of all
the objects. And indeed, one of the warnings that Eclipsed barfed up did
indeed turn out to be a real bug (an unused variable that turned out should
have been used). So that's good. But all the other warnings are bogus, as
“fixing” them causes other errors. So I have to pretty much ignore all that,
and just use Eclipse as a glorified version of more, only one that
automagically cross references everything.
Oh, and it gets hopelessly confused when I checkout new versions from the
source repository and have to manually tell Eclipse to reload the changed
files, instead of having it just figure it out on its own.
It's comical, I tell you.
If that wasn't fun enough, I figured I try out the “C/C++ version” of
Eclipse, if only as a code browser (since we do have some C++ code, and the
call depth does make it rather difficult to follow using a more traditional,
but less flaky, text editor). So I download that version. I'm still not quite
sure what the “workspace” is, since when I point the “workspace” to the top
level directory of our existing C/C++ codebase, it does nothing. No, I have
to select a “new project” which is an “existing project,” none of which
exactly matches what we have, but I select the one that most closely, but not
exactly, matches what we have only to have Eclipse immediately wet its pants
and dump core, all over the place.
Now, I thought Eclipse was written in Java, a managed language that produces
not real machine code, but virtual code that is then emulated by a runtime
engine—the whole “write once, [DELETED-debug-DELETED] run everywhere”
schtick. How does that dump core? What's wrong Eclipse? You can't deal with
2,100 source code files?
Okay, what about something smaller? How about SPCDNS [12]? It's C. There are
only eight source files [13], only two of which, one code [14] and one header
file [15] are absolutely required for the project. How about that?
Oh, I see you're still horribly confused from the previous 2,100 file
codebase. Okay, I delete everything you touched, re-extract from the
downloaded tarball and try again. Feel better? Should I lay out some
newspaper in case you barf again? No? Okay.
Hmm. I still don't fully understand this business with “workspaces” but
whatever. Here's the top level directory for SPCDNS. Oh, you can't find
anything. Start over. Here's the source directory for SPCDNS. Ah, you like
that. But you can't build, because the Makefile is missing.
Seriously. Eclipse. You can't deal with a Makefile one level up? Oh for
crying out loud …
Start over. New project. Entirely new project. Oh look, one of the options is
for autoconf [16]. I've never bothered with that, but maybe Eclipse can show
me a thing or two about … oh never mind, that's right. My Ubuntu install is
now fourty minutes old and the installed autoconf might as well be in
Sumarian for all you care, Eclipse.
Start over. New project. Makefile. GCC. New file. dns.h. Load it up in
another text editor, select all, copy. Paste into Eclipse. Seriously,
Eclipse? 600 errors? It's a XXXXXXX header file! You don't have to compile
that! Okay, let me continue with the C code. Load codec.c into a text editor.
Select all, copy, paste into a new file in Eclipse. Oh, now it's 1,234
errors? Oh, you don't like the restrict keyword … what? You don't understand
C99? Don't worry, Mark doesn't care for C99 either, so you're in good company
there, but … really?
Start over. New project. Pure C. Makefile. GCC. Check the options, ah, find
where I can specify C99 on the command line. Select, copy, paste dns.h into
Eclipse. 600 errors. Okay, okay, I'll include the XXXXXXX headers you want.
Happy? Okay, on to codec.c. Two warnings this time, about two unused
functions.
Really? Those are unused? Okay, I'll remove one of then, and the prototype
and—
Eclipse?
Eclipse?
Where did you go?
You puke and dump core again?
You're written in XXXXXXX Java! You shouldn't be able to crash!
Bah!
I still hate IDEs.
[1]
http://edn.embarcadero.com/article/20792
[2]
http://en.wikipedia.org/wiki/User:Dozen/E_(text_editor_family)#Early_History
[3]
http://en.wikipedia.org/wiki/MS-DOS#Versions
[4]
http://en.wikipedia.org/wiki/Borland
[5]
http://www.conman.org/people/spc/refs/search/search.hp1.html
[6]
http://en.wikipedia.org/wiki/Java_(programming_language)
[7]
http://www.eclipse.org/
[8]
http://www.android.com/
[9]
http://www.ubuntu.com/
[10]
http://developer.android.com/sdk/eclipse-adt.html
[11]
http://www.eclipse.org/downloads/
[12]
https://github.com/spc476/SPCDNS
[13]
https://github.com/spc476/SPCDNS/tree/master/src
[14]
https://github.com/spc476/SPCDNS/blob/master/src/codec.c
[15]
https://github.com/spc476/SPCDNS/blob/master/src/dns.h
[16]
http://en.wikipedia.org/wiki/Autoconf
Email author at
[email protected]