Developer Tools
< Program Debugging | Programming | Tips and Tricks >
On this page... (hide)
1. Source Code Text Editors
- ed - is the standard text editor ;-)
- vi - the standard visual editor in Unix. Not easy to use, but very powerful, fast, and available on each and every Unix/Linux.
An Introduction to Display Editing with Vi - Emacs is the GNU editor.
Emacs can do almost everything an IDE can do, and still is much faster that fullly graphical IDEs.- http://www.bloomington.in.us/~brutt/emacs-c-dev.html
- http://borkware.com/quickies/one?topic=emacs
- http://steve.yegge.googlepages.com/effective-emacs
- type ALT-X speedbar to get a side panel with a tree view of directories and files
- XEmacs
XEmacs is a version of Emacs with a better interface (tabs to switch between files, more logic and standard organization of menus, etc)- available for Scientific Linux, part of default install
- Attach:XEmacs-refcard.pdf Quick reference card
- (tricks for Emacs mostly apply to XEmacs too)
- JED - a lightweight Emacs clone
- Kate - standard editor for KDE
- Kate configuration including indent
- GEdit - standard editor in Gnome
- see Os X Notes
2. IDEs - Integrated Development Environments
- LSP: Language Server Protocol - connects editors (Vim, Emacs, VSCode, etc.) to a specific language server (C++, Python, Go, etc) that supplies code completion, referencing, analysis etc.
- Clangd - LLVM based C++ language server
- Rust-Analyzer - New implementation of Rust language server
- Eclipse - Java-based, cross platform, supports C++, Java, Fortran and more
Sponsored primarily by IBM- CDT Project C++ plugin
- Photran Fortan plugin
- aStyleClipse plugin for automatic source formatting
still not as good as (X)Emacs at formatting... - Subclipse plugin for Subversion revision control system
- Subversive new "official" plugin for Subversion revision control system
- Directory of Eclipse plugins
- KDeveloper - for KDE
- Anjuta - for GNOME
- NetBeans - Java based, supports Java and limited C++. Sponsored by SUN
- XCode - Mac OS X only
- Microsoft Visual Studio - Windows only
- Microsoft VSCode - cross platform (Electron-based) editor
3. Debugging and Profiling
see Program Debugging
4. Revision Control Systems
Revision control is the art of managing changes to information. It has long been a critical tool for programmers, who typically spend their time making small changes to software and then undoing those changes the next day. But the usefulness of version control software extends far beyond the bounds of the software development world. Anywhere you can find people using computers to manage information that changes often, there is room for version control. (From Subversion book introduction)
- Git
- Subversion
- Version Control with Subversion Reference book online
- Introduction
- eSvn standalone Subversion GUI for Linux
yum install esvn
- svnX graphical interface for OsX
- SCPlugin for Finder integration in OsX
and install instructions
- CVS
- http://www.nongnu.org/cvs/
- http://cvsbook.red-bean.com/ Reference book online
- http://www.wincvs.org/ GUI interfaces for Win, Mac, Linux
4.1 Subversion quick hints
- Create a new SVN repository
svnadmin create --fs-type fsfs /SVN/myrepo
- Do a checkout (give yourself a new working copy)
svn checkout svn+ssh://physics.uj.ac.za/SVN/myrepo
if you are logged in under a different name to the name of your account on the serversvn checkout svn+ssh://myname@physics.uj.ac.za/SVN/myrepo
- Do an update (update yourself to the current server status (always do before making changes)
svn update [folder]
optionally add a folder ... to update just one folder ... be in the svn directory of you work area - Look at the status of your local copy
svn st
Print the status of working copy files and directories.
With no args, print only locally modified items (no network access).
With -q, print only summary information about locally modified items.
With -u, add working revision and server out-of-date information.
With -v, print full revision information on every item. - Add a folder to the repository
svn add [folder]
after this you must transfer the added folder to the server by a commitsvn commit
With option -m "Add a descriptive comment" - Move a file:
svn mv oldname.cc newname.cc
- ignore a file, using the Attach:svnignore shell script:
svnignore myprogram.exe output.log
- commit your changes:
svn commit myfile.cc another.hh
orsvn commit -m "message about the commit"
- periodically dump the repository as a backup
svnadmin dump /SVN/myrepo > SVNfile
- Useful to do a subversion difference .... between your latest additions and the most recent update, on your machine
svn diff <filename>
to see the difference between to revisions ...svn diff -r N:M <filename>
where N and M are revision numbers. - Moving a repository (EXPERTS ONLY)
- dump the original repository
- create the new repository
- load the dump file in the new repository
- Use svn switch to readjust a working copy after moving the repository, like
svn switch --relocate file:///SVN/collect/ svn+ssh://physics.uj.ac.za/SVN/collect
be careful because if the first URL is wrong you will not get any error message, so check byfind . -name "entries" -exec grep url= {} \;
- delete old repository
- Use Subversion http through an authenticated proxy:
change~/.subversion/servers
[global] http-proxy-host = proxy.my closed network company.com http-proxy-port = 80 http-proxy-username = ********* http-proxy-password = ***** #http-timeout = 60
5. Libraries
- Boost is collection of peer-reviewed C++ (source code) libraries, of very high quality, and is easily available on Linux, as part of the distribution.
- NAG - Numerical Algorithms Group