Developer Tools

< Program Debugging | Programming | Tips and Tricks >

1.  Source Code Text Editors

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.
  • Eclipse - Java-based, cross platform, supports C++, Java, Fortran and more
    Sponsored primarily by IBM
  • 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)

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 server
    svn 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 commit
    svn 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
    or
    svn 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 by
      find . -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

< Program Debugging | Programming | Tips and Tricks >