An IDE is a good idea. If you as much as having the need to organize a couple of text files that you often write and change, you need one.
An Integrated Development Environment (IDE) is basically a multi-document text editor that assist you in managing a project.
Assist me how? you might ask.
Beyond reliably allowing you to edit your text files — be it your collection of barbecue recipes, love-letters, or your latest Cake PHP project — a good IDE should have the following features:
- File-type recognition. The IDE should be somewhat aware of what type of file you are editing. The most popular file formats are a must, in my book, such as .html, .php, .java, .c, .py, .xml, .css, et cetera.
- Syntax highlighting. As part of the above feature, an IDE should highlight the common components of the said file type. This is helpful especially when you are dealing with more than one type of files (typical if you are a software developer/web designer).
- Auto-completion. Another form of file-type recognition is to provide suggestions when we write a couple of letters. For example, if I type “clearT”, the IDE should do a lookup for functions visible from the current code context and present it to me. In this case, “clearThroat()” and “clearTupperware()” should be selectable.
- Pair matching. Pairs of what? Well, brackets, braces, HTML tags, multi-line comments, you name it. Along with folding, this feature really makes figuring out your colleague’s code much easier. Or your own code written six-months ago, for that matter. Some IDEs out there go as far as auto-completing your brackets. I find this annoying fifty-percent of the time, though.
- Refined indentation control. Try highlighting a few lines of code in a basic text editor like Gedit or Notepad and then hit the ‘Tab’ key. If you are a developer, unconsciously you’d expect the highlighted lines to be indented. Instead, you are rewarded with a blank space. A good IDE also allows you to select between tabs and spaces. I like spaces, four of them per indentation level. No, not Fortran, Python.
- Multiple-file Text Search. For you UNIX users, think of a built-in ‘grep’ command within the IDE.
- Terminal/Console facility. At the very least, a good IDE should have a way to execute compilers or other command-line tools that you may need to run your text file through. At the most, an IDE can act as a GUI for your favorite application/web server.
- Shortcut-keystrokes. Preferably intuitive ones. As far as developer goes, I am an old-school, hands on keyboard, only reach for the mouse when needed -kinda guy. I love shortcuts using key combinations. They make tedious coding sessions a breeze.
- Scriptable Macro Engine. If you know even what this means, you have been coding long enough. One of the “badges” of an veteran programmer is to be able to brag about how they wire their text editors to jump through hoops and play dead at their whim. Yeah, nerdy; but in a good way.
Also, some features that are “nice-to-haves” like built-in graphical debugger, version control integration, or library-dependency manager.
In short, if an IDE does not do enough to relieve you from the most mundane editing tasks, then it’s useless. On the other hand, if the IDE is so complicated to use that you’re losing hair trying to figure it out, it’s worse than useless.
A good IDE should be intuitive. If I issued an Open file command from an active document, then I should be presented with the contents of that same directory. Some editors I use always show me what’s on my home directory.
A Few Good IDEs
Now let’s take a look at some good IDEs out there.
This lightweight IDE runs on Linux and Windows. OS X and BSD users should be able to compile and run, in fact, I’d be surprised if there are not port install for it.
The lightweight-ness of this particular IDE cannot be stressed enough. I am running it remotely inside Xming (an X-windows server for Windows) and I never noticed any performance hit at all.
Two things impressed me right of the bat:
1) it recognizes any file types I’ve thrown at it so far, and when I need to map a new file extension to an existing file format, I went to Tools > Configurations > filetype_extensions.conf.
It opened up the configuration file (formatted intuitively), add the new file extension, save and close, then Tools > Reload Configuration. Done!
2) configurable shortcut-keystroke system, with defaults that make sense. For instance, I can use Ctrl-PgDn to go to the next document on the right, Ctrl-PgUp to the left. Just like how I navigate the tabs on Firefox. Very intuitive.
Most of the information that separates an IDE from an ordinary text editor is displayed on the lower panels. Geany does not skimp on the features. As you can see below, the lower part of the IDE sports application status messages, compiler outputs, search outputs, a scribbling space, and a full blown terminal (or ‘console’ for you modern UNIX users):
A few features that I am missing: 1) a file browser/manager, 2) integration with souce-code version control systems such as SVN, 3) a scriptable macro engine.
Which, brings me to the last feature that I want to highlight. Although billing itself as a lightweight IDE, the Geany developers are forward-thinking enough to embed a plugin infrastructure. Perfect for implementing the ‘missing’ features I mentioned above.
It is my hope that as this IDE gets more popular, people would start writing plugins for it to make it even more powerful. For now, I’m going to enjoy using it.