Difference between revisions of "Computing"
From Jtkwiki
Jump to navigationJump to search(2 intermediate revisions by the same user not shown) | |||
Line 4: | Line 4: | ||
* Keep code and data strictly separate. | * Keep code and data strictly separate. | ||
** Be aware of whether your programming creates executable content. | ** Be aware of whether your programming creates executable content. | ||
− | |||
− | |||
− | |||
* Computers are deterministic machines. All bugs can be reproduced. | * 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 === | === Object Oriented Programming === | ||
Line 17: | 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. | ||
Line 30: | Line 38: | ||
* the [http://www.cmp.uea.ac.uk/~jtk/transsys/ transsys] simulator for regulatory gene networks (which I've written myself) | * 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
Contents
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.
- Symbol based interfaces support reproduction of computing much better than graphical user interfaces. The manuscript 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 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)