Monday, June 16, 2014

Text Editors

When I began coding in earnest as an undergraduate student, we had a few servers which had to be accessed using non-graphical "dumb" terminals. The only thing they could handle was text; even web-browsing was powered a non-graphical program called "lynx".

Boy, what fun it was!

Those times seem as old as dinosaurs.

Of course, in the technology world obsolescence always lurks around the bend; even the original iPhone looks somewhat clunky today.

During those good old days, the text-editor of choice for most programmers was either pico/nano or vi/vim. Since there were no "mice", one had to perform gymnastics with ones fingers on the keyboard to invoke commands. There are many key-bindings that are still deeply etched into residual muscle memory.

While these editors are still capable and retain large fan-bases (vim was the most popular editor among Linux Journal readers in 2006), after I moved to graduate school, I jumped over to the Emacs camp.

Emacs was awesome and I loved it.

It opened up whole new ways of doing standard tasks. It was very extensible, configurable, and greatly facilitated code development. Syntax highlighting, auto-indentation, regex search and replace - you name it! You could open multiple files in the same window, and have access to the command-line from within the program.

There were many instances in which entire days were spent in the confines of a single Emacs window.

I've used Emacs for almost a decade now. I've resisted the urge to "upgrade" to a full-scale IDE like Eclipse, because a subset of the primary languages in which I program (C++, Fortran 90 and GNU Octave)  tend to be poorly supported. Yes, there is a lot of support for C++ because of its use in traditional software development (as opposed to Scientific Computing where Fortran's influence is very persistent), but would like to develop all my code using the same editor.

Earlier this year, I decided to give Geany a try. It supports C++ and Fortran quite competently, and inherits most of the advantages of Emacs. Unlike Emacs, many of the keyboard shortcuts are more mainstream (Ctrl-C, Ctrl-V), which given my increasing propensity to forget things is convenient.

It makes moving around code a lot easier, auto-completes variable names, and allows code to be "folded", which I never imagined would be so useful. It also has a lot of plugins, and despite it capabilities does not feel "heavy" like Eclipse.

Overall, I find that my coding productivity has clearly gone up.

No comments: