Tools
From Complex Systems
I use a large number of tools in my daily work, such as computer algebra systems, programming and scripting languages, revision control and collaboration systems. Some of them are indispensable; all of them have idiosyncrasies and take a while to get used to.
For future reference, and for the benefit of my colleagues, I have added this page to the wiki to ensure that:
- there is a checklist of useful and essential tools;
- the primary sources of information for each tool are referenced;
- links to the relevant manuals and tutorials are provided.
Contents |
[edit]
Computer algebra systems
- Mathematica is a computer algebra system originally conceived by Stephen Wolfram. Mathematica is also a high-level programming language emulating multiple paradigms on top of term-rewriting. Due to Stephen Wolfram's interest in the subject, Mathematica offers numerous tools for complexity research.
- MATLAB is a commercial high-level technical computing language and interactive environment for algorithm development, data visualisation, data analysis, and numeric computation.
- Octave is a free, open source high-level technical computing language, mostly compatible with MATLAB by design.
- Maple is a commercial system for solving complex mathematical problems. You can also create professional quality documents, presentations, and custom interactive computational tools in the Maple environment. Maple is particularly good at symbolic algebra.
- S-Plus is a software environment for statistical computing and graphics.
- R (a.k.a. GNU S) is a free, open source software environment for statistical computing and graphics, mostly compatible with S-Plus by design.
[edit]
Programming languages
- C++ us a general-puspose, high-level programming language with low-level facilities. It is a statically typed free-form multi-paradigm language supporting procedural programming, data abstraction, object-oriented programming, generic programming and RTTI. One of the most popular commercial programming languages since the 1990s.
- GCC is the GNU compiler collection. It includes a free, open source C++ compiler, g++, which I use.
- Java is an object-oriented programming language language developed by Sun Microsystems in the early 1990s. Java applications are, in the official documentation, compiled to bytecode, which is compiled to native machine code at runtime. Sun Microsystems provides a GNU General Public License implementation of a Java compiler and Java virtual machine, in compliance with the specifications of the Java Community Process.
- Java SE 6 is the current major release of the Java SE platform. The JDK can be downloaded from here.
- The JDK 6 Documentation is online, including the API Specification (probably the most useful link).
- JavaRanch, the Big Moose Saloon, a "friendly place for Java greenhorns" (and experienced programmers).
[edit]
Scripting languages
- UNIX/Linux shell.
- A very useful list of shell commands for common operations.
- Perl, a dynamic programming language created by Larry Wall. Perl *can* be used as a programming language, but its lack of (coherent) support for object-oriented development, and its excellent string processing tools, render it more suitable for scripting as systems "glue".
- Perl Monks is a convergence point for the Perl community. It contains tutorials, discussion forums, Perl poetry, obfuscated code, and a large code repository.
[edit]
Programming utilities
[edit]
Building
- make is a utility for automatically building large applications. Files specifying instructions for make are called Makefiles. make is most commonly used in C/C++ projects, but in principle it can be used with almost any compiled language.
- Makefiles by Example - a simple tutorial on using Make with g++.
- Apache Ant is a Java-based build tool. According to Apache, "it is kind of like Make, but without Make's wrinkles".
- Tutorial: Hello World with Ant by Apache. It will help you create your very first build file.
[edit]
Revision control
Revision control, also known as version control, source control or (source) code management (SCM), is the management of multiple revisions of the same unit of information. I use it for more than just code, so I call it revision control. For example, my PhD theris is under revision control.
- Concurrent Versions System (CVS) is a version control system, an important component of Source Configuration Management (CSM). It is used to record the history of sources files, and documents.
- Version Management with CVS by Per Cederqvist et al is the "official" manual for CVS. Commonly known as "the Cederqvist", the manual covers repositories, branches, and file maintenance, and includes reference material for both CVS users and CVS repository administrators.
- CVS Cheat-sheet by the ESD Software Engineering Group, Stanford Linear Accelerator Center.
- WinCvs, a Windows front-end for CVS written in C++ and distributed as free software under the GNU General Public License (GPL).
[edit]
Document preparation
- LaTeX is a high-quality typesetting system; it includes features designed for the production of technical and scientific documentation. LaTeX is a de facto standard for the communication and publication of scientific documents.
[edit]
Collaboration
- MediaWiki is a free software wiki package originally written for Wikipedia. This page, as well as the entire PhD website, is generated by MediaWiki.
- Mambo is a business-oriented open source Content Management System (CMS) which was originally developed by Miro International. Miro founded the Mambo Foundation and transferred the ownership of the Mambo code and trademarks to the foundation. Mambo can be hosted on any server as long as it runs PHP and MySQL. Bilokon.co.uk is powered by Mambo.
[edit]
Reference
- Wikipedia is the biggest multilingual free-content encyclopaedia on the Internet.
- Wolfram MathWorld is the web's most extensive mathematical resource, provided as a free service to the world's mathematics and internet communities by Wolfram Research. It has been assembled over more than a decade by Eric W. Weisstein with assistance from thousands of contributors. This is an actively developed and maintained encyclopaedia of mathematics.
- FOLDOC, the free online dictionary of computing supported by the Department of Computing at Imperial College.
