Introduction to Caltha
Features
Caltha Language Specification
FAQ
Background
|
"Programs must be written for people to read, and only incidentally for machines to execute."
- Abelson and Sussman
While this advice was intended for all programmers, it is especially important for scientists. A scientist's main purpose is not to develop new software, after all, but rather to extend human knowledge. Inventing a new algorithm will only extend human knowledge if other people understand it.
Unfortunately, scientists tend to write programs primarily for computation, and rarely as a means of communication. When the time comes to explain their algorithms in research papers, they generally turn to traditional mathematical notation. There are two problems with this. First, it is inefficient. Scientists would save a lot of time if the same programs executed by their computers were published in their papers. The other problem is that bugs in unpublished code are far less likely to be discovered and corrected.
But if publishing code would really save time and reduce bugs, why don't more scientists do it? One reason is that the most popular programming languages were designed specifically for the development of computer software. Having adopted these languages, scientists end up with programs unfit for presentation. Consider the difficulty, for example, of explaining a root-finding algorithm using the following function written in C.
| |