When
I was in graduate school in the early 1990s, DEC and SGI Unix
workstations were the hottest things around. We programmed in Fortran 77 mostly, and occasionally in Matlab® and Macsyma. As I recall, the
different machines had up to a few 100 megabytes of RAM
and processor speeds up to a few hundred MHz. I had grown up
programming some of the first personal computers, which were very modest by comparison, and using these computers made me feel as if almost anything could be achieved computationally. Such machines cost well over $10K and the operating systems were proprietary, licensed, and
expensive -- as were most of the useful applications.
Today, fast, high capacity, multi-core Linux machines are cheap. They can run Fortran and other traditional languages such as C, which are now available for free, as well as new open source packages like R and the Python language. Many of these packages are highly developed and are continuously under expansion and refinement. Libraries exist for nearly any conceivable computational problem. There are even open source analogues of Matlab® (Octave) and Macsyma (Maxima).
Today, fast, high capacity, multi-core Linux machines are cheap. They can run Fortran and other traditional languages such as C, which are now available for free, as well as new open source packages like R and the Python language. Many of these packages are highly developed and are continuously under expansion and refinement. Libraries exist for nearly any conceivable computational problem. There are even open source analogues of Matlab® (Octave) and Macsyma (Maxima).
Very
advanced methods of computation are now widely available for low cost. A major reason this has happened has been the open source software movement, the ideas of which extend now to making data and research
codes used in published studies available for others to use. 25 years
ago, when beginning research on a new problem, one commonly had to write new
code from scratch. Today, one can turn to blogs or GitHub to look for
codes that can be adapted for the problem at hand, radically shortening
the code development, testing, and validation cycle. Recent work
emphasizing the reproducibility and transparency of computational science promises to extend such progress farther still.
Such developments allow applications and methods to be
shared and applied very broadly and across research fields. It's not
uncommon for methods and codes developed for engineering, physics, and
finance, for example, to be applied to problems in biology, medicine, and public
health. Instead of writing code to translate abstract or unfamiliar
equations into a local implementation, one often only has to install a library or find and
download code (e.g., from GitHub or an online open source journal), possibly revise, and then apply to data. More time can be
spent on thinking and communicating science, instead of coding and
computing.
With
these advances come dangers as well, but these dangers are manageable.
For example, undetected bugs in codes can quickly threaten the
integrity of results across multiple fields -- a frightening proposition.
Similarly, it is also possible to use methods and codes in ways that are
theoretically incorrect or unjustified if one doesn't understand the
basis and limitations of those methods and codes. Such dangers are
nothing new in science, and highlight the importance of working with others who are expert in new methods.
Current trends will only increase the computational capabilities available. It's an exciting time to work in mathematical and computational methods in biomedical science.
(image source: Wikipedia)
(image source: Wikipedia)
No comments:
Post a Comment