Fortran

Steven D'Aprano steve+comp.lang.python at pearwood.info
Sun May 11 19:51:11 EDT 2014


On Mon, 12 May 2014 04:08:15 +1000, Chris Angelico wrote:

> On Mon, May 12, 2014 at 3:51 AM, Roy Smith <roy at panix.com> wrote:
>> It is fine.  Computers are tools.  The sign of a good tool is that you
>> can pick it up and use it without having to read the instruction
>> manual. I can jump into pretty much any car, start the engine, and
>> drive it, without any learning curve.  There's a lot of complicated
>> organic chemistry and thermodynamics going on inside the engine's
>> combustion chambers, but I don't need to know any of that to make use
>> of the tool.
> 
> Err, I don't know that the analogy is really fair. Either you know how
> to drive a car, or you don't; if you do, what you really mean is that
> cars are sufficiently standardized that, even though you trained on an
> X, you can drive a Y without reading its instruction manual

Correct. It's a terrible analogy. Cars are relatively simple things, they 
basically have three functions: speed up, turn, slow down. And yet look 
at how many people manage to kill themselves, and others, by doing it 
wrong. In the US, more people die *each year* due to faulty driving than 
American soldiers died in the entire Vietnam war. (The one exception was 
1968.)

Programming languages, on the other hand, have effectively an infinite 
number of functions: most languages come built-in with dozens or 
hundreds, and the programmer then extends them with whatever functions 
they need.

Cars are standardized -- there are basically two types, manuals and 
automatics. Programming languages are not, and thank goodness, because 
they whole point of having multiple programming languages is that they 
have different semantic models and different syntax so as to specialise 
on different tasks. I'm a critic of C the language, but only for 
application development -- it makes a grand high-level assembly language 
for low-level programming by experts where fine control and efficiency is 
more important than simplicity and programmer efficiency. Fortran is 
excellent for long-lasting numeric work, and Inform-7 is excellent for 
writing interactive fiction. I wouldn't write an 3D shooter game in bash, 
and I wouldn't write a throw-away admin script in Java.


> - but if you
> don't, then you're basically at the dangerous level of "hey look, I can
> type these commands and stuff happens", without knowing the rather
> important safety implications of what you're doing. Can you use a hammer
> without an instruction manual? Sure! Can you use a circular saw without
> reading the instructions? Quite probably, but will you know how to do it
> safely?

Circular saws have only a few functions: start spinning, and stop 
spinning. There's a few "gotchas" to learn, related to physical 
properties (momentum, energy transfer, the relative hardness and 
sharpness of the blade versus the softness of your fingers...) and maybe 
a couple of bells and whistles (e.g. can you cut on angles?). It's not 
within an order of magnitude of the complexity of a programming language. 
A better comparison would be with one of these:

http://www.wisegeek.org/what-are-cnc-machines.htm

And no surprise, to operate a CNC machine, the operator typically has to 
program it using a programming language (G-code).



-- 
Steven D'Aprano
http://import-that.dreamwidth.org/



More information about the Python-list mailing list