Difference between revisions of "Computing"

From Jtkwiki
Jump to navigationJump to search
(New page: == Programming Principles == === Object Oriented Programming == * An instance in a computing process must represent exactly one instance in the modelling domain. === Databases === * Id...)
 
 
(7 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
== Programming Principles ==
 
== Programming Principles ==
  
=== Object Oriented Programming ==
+
=== General ===
 +
* Keep code and data strictly separate.
 +
** Be aware of whether your programming creates executable content.
 +
* Computers are deterministic machines. All bugs can be reproduced.
 +
** When using random number generators, seed them explicitly to keep your results reproducible.
 +
** See [http://elm.eeng.dcu.ie/~alife/bmcm-ecal97/ "Rediscovering Computational Autopoiesis"] by Barry McMullin & Francisco Varela for a very instructive example of possible consequences of complex computing that was not fully reproducible.
 +
 
 +
=== Object Oriented Programming ===
 
* An instance in a computing process must represent exactly one instance in the modelling domain.
 
* An instance in a computing process must represent exactly one instance in the modelling domain.
 
+
* Use random number generator objects where possible.
  
 
=== Databases ===
 
=== Databases ===
Line 9: Line 16:
 
* Identification and description must be kept separate.
 
* Identification and description must be kept separate.
 
** Primary keys should be generated where reasonably possible.
 
** Primary keys should be generated where reasonably possible.
 +
 +
=== User Interface Design ===
 +
 +
* Computers are symbol processing machines. Hence, symbol based user interfaces are most general and powerful.
 +
** Symbol based interfaces support reproduction of computing much better than graphical user interfaces. The manuscript [http://www.econ.uiuc.edu/~roger/research/repro/ Reproducible Econometric Research] by Roger Koenker and Achim Zeileis discusses some aspects of this.
 +
** The article "Semiotics and GUI Design" (a.k.a. "Excessive Realism in GUI Design: Helpful or Harmful?") by Gene Callahan does not seem to be available online anymore (two links that are currently stale are http://www.stgtech.com/staff/gcallah/tech_articles/semiotics.html and http://gwa.municipia.at/files/semiotics.html)
 +
* The claim that graphical user interfaces are easier or more intuitively to use than symbolic interfaces is problematic.
 +
** It is difficult to state the objective meaning of "intuition". In a reasonable approximation, intuition can be defined as a summarised background of experience that is unconscious or semi-conscious.
 +
** See [http://www.osnews.com/story/6282 The Command Line - The Best Newbie Interface?] by Richard Wareham.
 +
 +
 +
== Software ==
 +
 +
An incomplete list of software that I use.
 +
 +
* The [http://www.r-project.org/ R] statistical computing language and system
 +
* [http://www.python.org/ Python], a scripting language with a very decent level of support for object oriented programming
 +
* The editors [http://www.gnu.org/software/emacs/ emacs] for larger edits, and vi for smaller edits (yes, I use both)
 +
* [http://java.sun.com/ Java]
 +
* [http://www.postgresql.org/ PostgreSQL], a free SQL database management system
 +
* the [http://www.cmp.uea.ac.uk/~jtk/transsys/ transsys] simulator for regulatory gene networks (which I've written myself)
 +
 +
[[Category:Computing]]

Latest revision as of 14:45, 18 February 2010

Programming Principles

General

  • Keep code and data strictly separate.
    • Be aware of whether your programming creates executable content.
  • Computers are deterministic machines. All bugs can be reproduced.
    • When using random number generators, seed them explicitly to keep your results reproducible.
    • See "Rediscovering Computational Autopoiesis" by Barry McMullin & Francisco Varela for a very instructive example of possible consequences of complex computing that was not fully reproducible.

Object Oriented Programming

  • An instance in a computing process must represent exactly one instance in the modelling domain.
  • Use random number generator objects where possible.

Databases

  • Identification and description must be kept separate.
    • Primary keys should be generated where reasonably possible.

User Interface Design

  • Computers are symbol processing machines. Hence, symbol based user interfaces are most general and powerful.
  • The claim that graphical user interfaces are easier or more intuitively to use than symbolic interfaces is problematic.
    • It is difficult to state the objective meaning of "intuition". In a reasonable approximation, intuition can be defined as a summarised background of experience that is unconscious or semi-conscious.
    • See The Command Line - The Best Newbie Interface? by Richard Wareham.


Software

An incomplete list of software that I use.

  • The R statistical computing language and system
  • Python, a scripting language with a very decent level of support for object oriented programming
  • The editors emacs for larger edits, and vi for smaller edits (yes, I use both)
  • Java
  • PostgreSQL, a free SQL database management system
  • the transsys simulator for regulatory gene networks (which I've written myself)