B Bass and T Nixon, Environment Canada, Toronto, ON, Canada © 2008 Elsevier B.V. All rights reserved.
The Computational Platform: Hardware, Operating Compiled and Interpreted Languages
Systems, and Libraries Imperative and Declarative Languages
Low- and High-Level Languages Other Language Types
Procedural Languages Choosing a Language
Knowledge of a computer language or multiple languages is normally not considered to be an essential component of ecological education or of an ecologist's toolbox. This is most likely due to the range of other courses and methods required for research, the strong emphasis on field work and the availability of a an ever-increasing amount of off-the-shelf software. Thus, for many ecologists the study of computer languages and programming may not be warranted, but it is essential for developing customized simulations, analyses, and presentations of information. Although the complexity of ecosystems is difficult to represent in computer code, which in turn is usually based on a first abstraction to mathematics, a good simulation model provides an efficient method for testing scenarios. Simulation models are particularly useful when field work or experimentation is too expensive to repeat in multiple locations or over multiple time periods and the basic processes are understood well enough to be represented mathematically and hence in a computer language.
The simulation of ecological processes is becoming increasingly important to other fields, such as climatology and adaptation science. Modelers are realizing that increasingly more sophisticated representations of the land surface are critical in developing future climate change scenarios, studying biophysical sensitivities and adaptations to climate change. The green roof community is also developing sophisticated simulation models for heat and moisture fluxes, as green roof field sites are very expensive to set up. Although most of the traditional statistical methods that are required for ecological research do not require any knowledge of programming, new methods or nonstatistical analyses may require customized software whether it is for methods such as Q-analysis, which is based on abstract algebra, eigenvector analysis of customized simulations, or for classification methods based on neural nets. Knowledge of computer languages is also useful for developing interfaces so that other researchers can access a range of experimental results or a database.
Since the emergence of the first computer systems, new programming languages have emerged fairly consistently in order to deal with a wide array of computational tasks and challenges. The development of new languages has been driven mainly by the need to bridge the semantic gap between human and machine. A computer system is driven entirely by sequences of binary coded instructions, whereas humans tend to organize their work around tasks and objectives. Programming languages are all attempts at some form of median language that can be both easily comprehended and articulated by a programmer, and unambiguously translated into the requisite binary sequences for a computer. Computer scientists have engaged numerous different paradigms for organizing conceptual semantic human thinking into machine-comprehensible formats.
There are a number of distinctions which computer scientists use to categorize the many different programming languages and the different programming philosophies which they represent. Table 1 outlines
Table 1 Computer programming languages grouped by category
Low-level and high-level languages
Low-level Assembly, BASIC, FORTRAN
Procedural and object-oriented
Procedural BASIC, FORTRAN, Pascal, C
Object-oriented C + +, Java, Python
Compiled and interpreted languages
Compiled Assembly, BASIC, C/C++, FORTRAN
Interpreted Perl, MATLAB
Hybrid Java, Python, .Net
Imperative and declarative languages Imperative BASIC, C/C + +, Java, FORTRAN
Functional LISP, Scheme, ML, OCaml, Haskell
Logical Prolog some of the most important categories used to classify different computer languages. These categories are by no means exhaustive, neither are they mutually exclusive.
The languages in Table 1 are included as they represent the most commonly used computer languages for simulation and other applications that might be required in ecology or typify a particular approach to programming that may merit further exploration in the future.
Four example programs are included in subsequent sections. They each generate a sequence of the first 20 values of the common population-growth model
P (t) = Poert for one or two sets of parameters. This model relates the size of a population at a particular time P(t) to the initial size of the population P0, as an exponential growth over a period of time t, with a growth factor of r.
Was this article helpful?