On Apr 3, 11:42 pm, Nathan Rice <nathan.alexander.r...@gmail.com> wrote: > Lets start with some analogies. In cooking, chefs use recipes to > produce a meal; the recipe is not a tool. In architecture, a builder > uses a blueprint to produce a building; the blueprint is not a tool. > In manufacturing, expensive machines use plans to produce physical > goods; the plans are not the tool. > > You could say the compiler is a tool, or a development environment is > a tool. The programming language is a mechanism for communication.
Long personal note ahead. tl;dr version: Computers are such a large shift for human civilization that generally we dont get what that shift is about or towards. ------ Longer version My mother often tells me (with some awe): You are so clever! You know how to use computers! (!?!?) I try to tell her that a computer is not a machine like a car is (she is better with things like cars than most of her generation). Its physical analogy to a typewriter is surprisingly accurate. In fact its more like a pen than other machines and its civilizational significance is larger than Gutenbergs press and is on par with the 'invention' (or should I say discovery?) of language as a fundamental fact of what it means to be human. [At this point or thereabouts my communication attempt breaks down because I am trying to tell her of the huge significance of programming...] A pen can be used to write love-letter or a death-sentence, a text- book of anatomy or a symphony. An yet it would be a bizarre superman who could do all these. Likewise (I vainly try to communicate with my mother!) that I cant design machines (with autocad) or paint (with photoshop) or ... probably 99% of the things that people use computers for. And so saying that I 'know computers' is on par with saying that because I know (how to use a pen to) fill up income tax forms, I should also know how to (use a pen to) write Shakespearean sonnets. There is a sense in which a pen is a 'universal device.' To some extent the layman can get this. There is a larger sense in which the computer is a universal device (aka universal turing machine). In my experience, not just 'my mother's' but even PhDs in computer science dont get what this signifies. This sense can (somewhat?) be appreciated if we see that the pen is entirely a declarative tool The computer is declarative+imperative. The person who writes the love-letter needs the postman to deliver it. The judge may write the death-sentence. A hangman is needed to execute it. When it comes to computers, the same device can write the love-letter/ death-sentence as the one which mails/controls the electric chair. Let me end with a quote from Dijkstra: http://www.smaldone.com.ar/documentos/ewd/EWD1036_pretty.html In the long run I expect computing science to transcend its parent disciplines, mathematics and logic, by effectively realizing a significant part of Leibniz's Dream of providing symbolic calculation as an alternative to human reasoning. (Please note the difference between "mimicking" and "providing an alternative to": alternatives are allowed to be better.) Needless to say, this vision of what computing science is about is not universally applauded. On the contrary, it has met widespread --and sometimes even violent-- opposition from all sorts of directions. I mention as examples (0) the mathematical guild, which would rather continue to believe that the Dream of Leibniz is an unrealistic illusion (1) the business community, which, having been sold to the idea that computers would make life easier, is mentally unprepared to accept that they only solve the easier problems at the price of creating much harder one (2) the subculture of the compulsive programmer, whose ethics prescribe that one silly idea and a month of frantic coding should suffice to make him a life-long millionaire (3) computer engineering, which would rather continue to act as if it is all only a matter of higher bit rates and more flops per second (4) the military, who are now totally absorbed in the business of using computers to mutate billion-dollar budgets into the illusion of automatic safety (5) all soft sciences for which computing now acts as some sort of interdisciplinary haven (6) the educational business that feels that, if it has to teach formal mathematics to CS students, it may as well close its schools. -- http://mail.python.org/mailman/listinfo/python-list