Key Takeaways
- The author’s selection process for a programming editor involved two rounds of testing. The first round focused on auto-completion and syntax highlighting features, while the second round evaluated a broader range of features including code snippets/templates, code folding, bookmarks, automatic code-formatting, integrated debugging support, macro support, and more.
- The author’s top two choices were Geany and NetBeans. Geany was appreciated for its lightweight nature and expandability, while NetBeans was valued for its power and extensive features, despite a steeper learning curve.
- The author emphasizes that the best programming editor is highly subjective and depends on individual needs and preferences. The process outlined in the text is intended to help others devise their own strategy for finding the most suitable programming editor for their requirements.
Round One – Auto-Completion and Syntax Highlighting
My usage of HTML/CSS/PHP/JavaScript development require an editor that is capable of making intelligent suggestions and keeping components visually separated by type. Suggestions can be made through auto-completion, parameter hints, and auto-closing. Auto-completion is the program’s attempt to guess and offer to complete HTML tags, CSS properties, and PHP and JavaScript class, function, and variable names. Parameter hinting is the ability to inform the developer of possible HTML properties and their values, CSS property values, and PHP and JavaScript function arguments. Auto-closing is the ability to add closing HTML tags, parenthesis, braces, and the like. Component separation is the coloring of the different types of elements, like tags, functions and variables, on the editor’s screen, often referred to as syntax highlighting. Also helpful is the ability to locate a matching delimiter – parentheses, brackets, and braces – by selecting the opening one or vice-versa. My first test was to check which of the editors in the original list offer these features out-of-the-box or, at least, with a simple to install module. I immediately dropped three packages from further investigation: Emacs which required additional files that were difficult to install; OpenBEXI which looks like an interesting concept for web page development but isn’t really a scripting tool; and WebDev which didn’t seem to have a free trial version. I wish I could have tested a very good Mac IDE, Espresso. Their team sent me a lot of useful information and I’d encourage any Mac user to try it out. For each remaining package I checked their hinting and auto-completion abilities for HTML4/5 tags, CSS properties, PHP and JavaScript functions and variables, and syntax highlighting. The following code, saved as a PHP file, was typical of the tests:<html>
<head>
<style>
dir {
display: none;
}
</style>
<script type="text/javascript">
var aaa = 12;
aaa = Math.abs(12);
</script>
</head>
<body>
<div style="display: none"></div>
<?php
$aaa = strtotime();
if (true) {
$aaa = strftime("%a");
}
?>
</body>
</html>
Identifying the distinct features specifically (PHP function auto-complete, PHP variable auto-complete, JavaScript function auto-complete, etc.) I had 13 requested features. I computed the scores for both packages and features; it was a YES/NO check, and each YES was worthy of one point added the editor’s total score.
The most prevalent features were syntax highlighting and delimiter localization, and the auto-closing of HTML tags. The least seen ones were auto-completion and argument hinting of JavaScript functions and auto-completion of JavaScript variables. The average score was 4.8 absolute or 38% relative, meaning that the average package had not quite 5 of the 13 features requested. 13 of the 29 packages were above the average.
For further evaluation, I selected the top 25%. That is, the following 8 ranked best with my criteria (listed alphabetically): Dreamweaver, Geany, Komodo Edit, Netbeans, Nusphere PHPEd, PHPStorm, Programmer’s Notepad, and WebMatrix. It’s interesting to note that four of those are free (as in free scotch) and four are paid software, and that four are Windows-only while the other four are cross-platform.
This selection does not imply that these packages are better than the others. It just means that they had more of the requested features than others. If, for instance, code refactoring were a priority for me, the results would have been quite different.
Round Two – Everything Else but the Kitchen Sink
The second battery of tests looked at the following list of features: code snippets/templates, code folding, bookmarks, automatic code-formatting, integrated debugging support, macro support, availability of refactoring tools, project management support, version control support, built-in FTP support, integrated command-line console, plug-in support, support for frameworks, editor customizations, whether the start-up time was acceptable, availability and completeness of documentation, and a few others. Again the focus was on out-of-the-box or click-to-install plug-ins, and it was a YES/NO test with each YES scoring one point. Here’s how it turned out:- Dreamweaver – Scored 70%. Possibly the best known web development IDE, it’s a very powerful tool for the website designer though I find its interface a bit cluttered. It had some sort of code folding, but not what I’d expect.
- Geany – Scored 62%. It’s modular and highly expandable. It has a very light interface, but lacks proper FTP support.
- Komodo Edit – Scored 54%. A kind of open-source version of Komodo IDE, it was very clean and usable. I found it similar to Geany.
- Netbeans – Scored 75%. It was very impressive with lots of features but a clean interface. It takes about 13 seconds to start on my box (Dual Core 2GHz Intel, 2G RAM and Oneric Oncelot with Unity) which I gather is somewhat reasonable for such a complex application.
- Nusphere PHPEd – Scored 67%. A great tool, but with a very cluttered interface. Also, they seem not to like plug-ins very much. I read a forum post where someone asked how to create one and the answer was just “send us your ideas.” This was another NO.
- PhpStorm – Scored 75%, like NetBeans. In fact, it’s rather what NetBeans would probably look like if it were dedicated to PHP development. It seems to tax the processor a bit more, though.
- Programmer’s Notepad – Scored 46%. But then again, it’s supposed to be a simple, lean, well performing tool. It lives to its promise. It’s a pity that it’s Windows-only, though.
- WebMatrix – For sure, as a free website development tool, Web Matrix looks quite impressive. I did not rate it though as it seemed to be concept different from my idea of programmer’s IDE.
My Personal Choice
Although all the ones above are powerful programs for working with PHP code, I was the happiest with Geany and NetBeans. Geany is lighter with less features but is expandable with a growing list of community-maintained plug-ins. NetBeans is powerful but has a steeper learning curve and, though free and open source, is privately maintained. Possibly I’ll be using one or the other depending on the task at hand and after a bit of time settle on using just one. Anyway, in about three years time I’m sure new IDEs will have come up and some of these here will have ceased development. It’ll be time for another review.What I Learned Here
This article was painful to write. Checking every program in the list was a tiresome, sometimes infuriating, but nevertheless refreshing experience. It took a lot of research, downloading (including a 800MB wrong one!), and time for checking features. I revisited some packages I worked with years ago and discovered others I had never heard of. And it afforded me an interesting comparison between Linux’s repository system and Window’s installer concept as well as between the sizes and setup complexity that separates free from paid software. My desktop is cluttered with downloaded files and there’s a lot of deletions to do now that it’s all over. But I had the chance to do a planned search for an item I needed, something that I had never done before this way. I take from this experience that a search for a product or service should begin with checking simple but essential qualities in a large set and then looking for refinements in those that pass the first test. I also learned to leave my prejudices aside. I never guessed I’d end up putting NetBeans on my final list. I never planned to tell anybody what’s the best IDE around. Really it’s a matter of what works best for you. But I hope to have helped some of you to devise a strategy for finding which currently is the one most suited to your needs. Update Jan 17, 2012I’d like to thank all readers kind enough to leave a comment here. It’s really rewarding to see that one’s writing is of interest and use to others. I’d also like to stress that the goal of the article was much more to describe a research-and-decide method than to point out one best IDE, inasmuch as “best” in this case is a highly personal concept which reflects the user’s particular needs and tastes. Furthermore, the absence of any particular IDE from the study should NOT be construed as to mean a negative opinion of it. It simply means that I was not aware of its existence — mea culpa mea maxima culpa! — or that it did not seem to be in active development. Anyway, readers interested in choosing his or her best IDE should by all means include the packages listed in the article PLUS those the most enthusiastic readers mentioned. With millions of developers all over the world, I’m happy to see that all IDEs and editors have a public of their own. Some religions believe that things have souls. I believe that software, in a way, has one too and it gets great comfort when its users display they care about it. Happy and productive 2012 to all. Image via Zurijeta / Shutterstock
Armando Jeronymo has a B.Sc. in Electronics Engineering from Rio de Janeiro's Ursuline University and a US Associate degree in Risk Management. He started coding in a TI-59 calculator in the early 80's. He then learned and forgot Sinclair Basic, Fortran, Algol and MS Basic. For ten years he did not write code but worked with insurance and reinsurance in his native Brazil and London. Then he went back to programming to find out everything was different. He began by getting to know HTML to create some material on aviation instruction. He then learned Delphi's Pascal in order to create some financial applications. He began experimenting with server-side languages about the turn of the Century, first with ASP but soon moving to PHP. He wrote his first MySQL web application in about 2004. He switched to Linux in 2005 (Ubuntu 5.10 to be more exact) and has been developing LAMP systems since then. He is a Private Pilot and, whenever possible, a FlightGear flyer. He loves classical music and jazz (including Bossa Nova) and old movies. Besides computing he is professionally interested in business management and a follower of Peter Drucker's teaching. Married and father of a girl he is also an active member of his Rotary Club.