Code Editors

I recently spent some time looking around for an upgrade to my toolbox: code editor. I tried various ones and put together some thoughts on each. I should note that to software engineers/programmers, the editor is the gateway between brain and computer, and thus a very personal item. Attempting to 'standardize' on one editor is *never* economical.

Source Navigator

This has been my tried and true editor for a long time. It is a bit feature limited (e.g no symbol completion, refactoring etc.) but it does what I initially wanted very well: provide a tool to reason about the code without remembering which file its defined/implemented in, and where it is used. Setup is simple, but requires a 'project' setup (vs. quick editing a single file). It can generate class hierarchy and has a very handy search utility. Its parser is well done, and can even work/navigate python and Java (not tried the Java portion).

Problem is, it is unsupported for years now, and is showing its age. It is written in (an older version of) tcl. Its C++ parser is at best of the 1998 vintage, so C++ 11/14/17 are unknown to it.

CodeBlocks

This actually looks very promising. A free software item. On Ubuntu it works flawlessly. On Redhat is crashes every 5 minutes due to some wxWidget problem. (Redhat has very 'old' versions of lots of packages, and as such support is almost impossible to find.) Computing of course does not support/configure stuff like this for us, so fixing this is time not working on telescope software. Codeblocks is written in native C++, and is one of the fastest editors. I'd rank this one as #2 after CLion.

Vi + ???

I am a native vi wired person, and still use this for quick edits and always will. But for a large code project, I have yet to find a good set of addons for the features I want. FWIW, I've used vi or vim from the start of my career in *nix based systems.

Emacs

Sorry, I know there are alot of addons for emacs, but my brain is just not wired that way.

Eclipse/C++

I tried this a number of times over the past few years. I should admit, I don't like eclipse especially the version on Redhat. Getting the C++ add-on to work is a lengthy process, and I get the feeling it has a fairly small user base. (Remember I'm talking about eclipse with the C++ plugin, not native eclipse/java.) I don't know if the plugin is even supported. I'd rather use vim than eclipse, so this one is dead last on my list.

NetBeans

I think this a good contender, and it has lots of the features I like, but alas it falls down in a couple of areas. First and foremost is that the symbol completion seems to work for awhile, but then 'breaks' and becomes useless. I suspect its due to the way it handles the project. It requires autotools, which we based out project on. However, my immediate project is Xenomai based, and thus requires code to be built on a xenomai capable host (which my workstation is not). So configuring a project just doesn't seem to work well. It does appear to get enough info to work at least initially.

The second item is that once a project is configured, importing a new file is impossible. A new file can be generated with the tool, but importing an existing one requires a complete new project. Although it is feature rich, due to the issues listed it drops to at least #3 on the list.

CLion

This is a professional level tool, and is not free, but is relatively inexpensive (~200/yr for the entire site). It has a more polished interface and doesn't 'break'/fail the configuration step. It uses cmake under the hood, which is easily reconfigured if new files or imported files are necessary. It handles refactoring in a very reasonable way, and understands namespaces. It can handle the latest C++ syntax, and understands the STL.

(I've been paying monthly out of my own pocket for 3 months now, which should give some indication as to my preference.)

-- JoeBrandt - 2016-01-11
Topic revision: r2 - 2016-01-13, JoeBrandt
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding NRAO Public Wiki? Send feedback