$$ \renewcommand{\vec}[1]{\mathbf{#1}} $$

Detailed description

To be done.

Design basis

Rule zero: "use a computer to solve a mathematical model"

Rule one (input): "simple inputs ought to need simple outputs".

Rule two (output): "the output should be completely defined by the user"

Rules three--twenty one: Eric Raymond's Rules of UNIX Philosophy:

  • Modularity: Write simple parts connected by clean interfaces.
  • Clarity: Clarity is better than cleverness.
  • Composition: Design programs to be connected to other programs.
  • Separation: Separate policy from mechanism; separate interfaces from engines.
  • Simplicity: Design for simplicity; add complexity only where you must.
  • Parsimony: Write a big program only when it is clear by demonstration that nothing else will do.
  • Transparency: Design for visibility to make inspection and debugging easier.
  • Robustness: Robustness is the child of transparency and simplicity.
  • Representation: Fold knowledge into data so code logic can be stupid and robust.
  • Least Surprise: In interface design, always do the least surprising thing.
  • Silence: When a program has nothing surprising to say, it should say nothing.
  • Repair: When you must fail, fail noisily and as soon as possible.
  • Economy: Programmer time is expensive; conserve it in preference to CPU time.
  • Generation: Avoid hand-hacking; write programs to write programs if possible.
  • Optimization: Prototype before polishing. Get it working before you optimize it.
  • Diversity: Distrust all claims for "one true way".
  • Extensibility: Design for the future, because it will be here sooner than you think.

Execution and installation

workflow depends on the user, recommendation: unix

Interaction with other UNIX tools

qdp, gnuplot, awk, sed

Syntax Highlighting

To be done

The type problems wasora solves