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