On May 26, 2009, at 12:56 AM, Adam Gardner wrote:

> So, I've been programming in Ruby for a good while now. Not an expert,
> not by a long shot, by I know my way around.
>
[edited for brevity]

> I should note that I'm on OS X, and my primary concern is learning,  
> not
> necessarily making something meaningful (the exception being C, which
> really has more of a grit-my-teeth-and-learn-it-because-it's-useful
> position on the list).  I'm also somewhat time-limited, so the less  
> time
> I have to spend compiling and installing things, the more time I  
> have to
> play with code.
>
If you are "learning for yourself" then learning about the problems  
for which languages were developed can be useful. So, learning C seems  
important to me. Among other things, C is the answer to the question  
"How do I write programs that are small, fast, and well-structured?"  
Write the program to fit multiple word sizes across multiple  
architectures with different OSes and you will appreciate the lure of  
the Java Promise: write once, yada yada yada.

For the same reasons I would seriously consider both FOTRAN and  
(gulp!) COBOL. The science communities are intimately acquainted with   
FORTRAN, perhaps, more so than C. "How do I write a program that is  
almost immediately graspable by a physicist?" FORTRAN is one answer to  
that question.

There are still many, many lines of code written and running in COBOL.  
"How do I write a program that can be read by and parsed by  
Accountants?"

Of course, nowadays, no one cares that Accountants don't read computer  
programs of any kind. Dan Bricklin almost single handedly ended  
COBOL's reign, and not with another computer language. Too, processor  
speed increases have made C's "small and fast" less attractive because  
the "well structured" part can be deucedly hard in C. FORTRAN is a  
trip, pure and simple; and once you learn it (it takes all of a few  
hours) you will be amazed that the science communities have stuck with  
it.

Cheers--

Charles
---
Charles Johnson
Advanced Computing Center for Research and Education
Vanderbilt University