On Mon, 12 May 2014 04:08:15 +1000, Chris Angelico wrote: > On Mon, May 12, 2014 at 3:51 AM, Roy Smith <r...@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/ -- https://mail.python.org/mailman/listinfo/python-list