Tools for Programming
Creating excellent content requires good tools and equipment. This applies equally well to programming. There are some great utilities and resources to become aware of as soon as possible, if you have not already, to make the coding process just that much more convenient. These are the essential tools for programming every programmer should use, or at the very least be familiar with:
1. Your Integrated Development Environment (IDE)
This piece of software is the all-in-one tool for creating your code. It has tools to help you go from code-writing to executing application, all in one package. While you could certainly get away with using a plain text editor like gedit, along with a baked-in debugger like gcc on Linux, or practice such equivalence on Windows with Notepad++ and Cygwin, there’s really no beating an IDE. This software has all the bells and whistles to make development efficient. Most IDEs support a bevy of languages, have code completion, a built-in debugger, plus you can step through your code, watch variables, set breakpoints to run your code to, and manage extra libraries, header files, and code dependencies. All of this can reside in one project or solution file which the IDE will helpfully keep in order for you. They’re also very extensible so you can add plugins and add-ons as you see fit.
Some of the better choices:
- Microsoft Visual Studio (full-featured and very powerful. Also free in Community guise, paid versions free for students via DreamSpark programme)
- NetBeans (full-featured, Java only)
- Code::Blocks (Swiss-army knife of IDEs, also free, cross-platform & open-source)
- Eclipse (for Java, versions for C/C++ and PHP, FOSS, and cross-platform)
- Sublime Text (Cross-platform, cross-language, evaluation versions available)
The Visual Studio 2015 IDE (Telerik)
2. The Terminal
Unix-like operating systems (including Linux distros) have always had excellent terminals. The terminal is the application which allows you to interface with the operating system in a text-based way, and is often seen as the “blank box with the white text” to which you apply text-based commands to get responses from the system. You can learn how to get started with the Unix terminal in our tutorial series here.
As noted before, in the context of programming, the terminal does compiler duty, and your favourite text editor does, well, text-editing duties. Vi and emacs are the terminal text-editors in this space. You’d write your code in the editor, then save the file and run a terminal command to compile it. Of course, unlike IDEs, it’s mostly up to you to figure out where your code is going awry if it fails to compile, and there are no extra debugging tools natively. The best part about terminals’ use in Linux is the man pages, which offer excellent explanations and syntax help for pretty much any command the terminal supports natively. There are a huge variety of terminals in existence, based on the particular distro or windowing manager in use.
The selection:
- terminals themselves: xterm (for X11), konsole (for KDE), lxterm (for LXDE), gnome-terminal (for GNOME), xfce-term (for XFCE)
- terminal editors nano, vi, emacs (Ranking this list would be a dangerous endeavour)
- Distro graphical text editors like Kate (KDE), gedit (GNOME), scite (GTK+)
The Unix Terminal (arcadix.biz)
3. Version Control
This one is almost mandatory. The StackOverflow developer survey pointed out that 10% of devs still don’t use version control (VC), but why you wouldn’t is mind-boggling. Version control software allows for software development in collaboration with others in your organisation, and keeps everything organised. The version control framework backs up your code to a safe place online, but importantly tracks every single change you make to the code you sync online.
Every time you’ve done a ‘chunk’ of work, you commit that with a note saying what you’ve done, and that makes a ‘snapshot’ of your code and everything you choose. This lets you go back if you end up messing up something, saving time not having to debug what you’ve broken. Stronger still, the code collaboration between development teams allows for working on different ‘branches’ to develop new features without breaking the existing codebase. Check out our detailed Git article for a primer on all this jargon, aimed specifically at Git VC. It’s also pretty difficult to get away from using some kind of version control software these days, since most IDEs offer some sort of VC integration.
What the industry uses:
- (recommended) Git (sites like GitHub, BitBucket etc.)
- Mercurial (Atlassian’s SourceTree client)
- SVN (TortoiseSVN)
The GitHub web UI (GitHub.com)
4. StackOverflow
This isn’t so much a software utility as it is an incredibly useful resource. The Stack Overflow network is a fantastic Q&A site where anyone can actually ask questions on anything, but the coding part of it is absolutely enormous. SO themselves reckon they have around 4.7 million programmers all helping each other: you can see where the benefit is. If a particular problem is flummoxing you, a quick post on Stack Overflow or a search for the issue (someone usually has experienced what you’ve had) often yields great answers. Further still, you can give back to the community by helping fellow programmers with your expertise. There’s no paid account sign-up business, email and username is all, and you can get started. “Rep” on the site is an important thing and denotes how valued either your questions or answers are. Increase rep and become a respected community member.
An example of a StackOverflow page.
5. Documentation Tools
The bane of a programmer’s existence often comes if they’re tasked to take over another’s code. This is due to the fact that everyone documents code differently. More often than not, however, code documentation is lacking, which makes understanding the code logic a difficult task for everyone excepting the original programmer. Documentation tool plug-ins make an excellent way of going some way to fixing this. While it still requires that the developer comments their code intelligibly, documentation tools take inline comments from code and convert them to user-facing documentation that looks pretty and reads well. It’s an invaluable tool for big open-source projects, where many contributors need to understand what the code is doing. By far the most popular documentation generator is Doxygen, but there are more than 40 other options, some proprietary, some free, some supported, and some not.
How Doxygen generated documentation looks – autogenerated from internal code comments
Those are the 5 essential tools we’d consider first when programming. Are there any we’ve missed? Comment with your additional choices in the comments section below, and follow Hyperion Hub developments in the future if you’d like to see more articles like these for the South African market.
Author: Matthew de Neef
Date originally published: 23/12/15