
I posted this to python-list and I was kindly requested to post it here too. I am very interested in the objectives of CP4E. -- Dennis -----Original Message----- From: python-list-admin@python.org [mailto:python-list-admin@python.org]On Behalf Of Dennis E. Hamilton Sent: Wednesday, March 01, 2000 08:07 To: Donn Cave; python-list@python.org Subject: RE: Python for non-programmers I am teaching my 35-year-old son about programming using Python. He is a musician and has learned to do impressive things with the DVD + CD-RW + SB Live! on the Windows system that I set up for him. He does his own web pages, surfs a lot, and can get around pretty well. He wanted to know how to do more and learn how people do multi-media, game animation, and so on. I figured this was a good occasion to get involved with Python for some projects I have and as a learning laboratory for him, rather than getting into C Language, GUI object manipulation, etc. Yesterday, I sat next to him as he used Python and started to go through the tutorial, me making notes on my desktop machine and him trying to figure out things on my laptop next to it. I learned a lot. One thing is that the tutorial is full of things (I called it toolcraft in a different conversation here) that are meaningless for someone in Doug's shoes but leave him thinking that he is supposed to know what is being discussed. This was discouraging for him. It was an eye-opener for me. I have a list of all the terms (from shell to object-oriented) that have no context for non-programmers. I just skip past that stuff when I run into it. It is in the noise for me. He doesn't know that. I told him to treat it all as yack-yack-yack and just look for things that provided examples or gave him some things to do. That helped him get through to section 2.1 but things got tough around section 2.1.1 where there was no way to get through what was being talked about without more grounding. ("Argument," for Pete's sake!) So, I talked him through a "hello world" exercise, after organizing a Python/Projects folder enough so that he can see what corresponds to Python libraries and modules. This is without getting too technical about it. I want him to have enough about library organization just so he can get by for now, with deepening after as he gets some confidence with basic operations. He knows to make __init__.py files but not why. I wanted him to have a basic setup where he could begin self-guided activity and see useful results that can also be grown to bigger projects and organized work. He can see how to get in and out of the interpreter. I showed him the DOS editor and we built a "hello.py". We ran it from the python command line and by importing it in the "interactive mode." I set him up with 4DOS just because it is a little easier to know where you are and explore inside a command shell. (I figure learning about console mode would be an easier way to have useful work in python before dealing with the GUI and the fledgling IDEs available for Python). But mostly we learned things that one could also do using the MS-DOS command.com shell. He doesn't know what either of those are, but he knows how to start a shell and start working with files and the python processor. If we practice more today and tomorrow, while he is visiting me from Portland, I figure he will be able to sustain himself when he is back home next week, especially with me as a telephone and Instant-Messenger and NetMeeting consultant. He saw me use Python like a calculator, and he saw me assign strings and calculation results to variables an reuse them. He was fading fast (I need to make the first steps smaller yet leave him in accomplishment), but he was intrigued and I need to walk him through it again. That was more than enough for a first time out. If there were any good toy applications that did useful things around, I could have him doing engaging things at the console shell and python level that he could learn to analyze and replicate later. (I don't care if it is simply playing Hangman, or tic-tac-toe or How Many Petals Around the Rose, something that is a complete thing which can be used without having anything to do with building software.) He was tired and I was overwhelmed by how much we geeks operate on assumed understanding and an incredible amount of unexplainable lore. I saw that his Windows knowledge is spotty -- there are things that he has missed so far, such as the right-click menus and ability to make new documents and folders. He didn't know about the wheel on the wheel mouse to help with scrolling. Just the same, he has picked up ways to get around in Windows applications and can get by (that's part of Windows usability). He hasn't a very coherent model and doesn't have a confident way to learn more. Yet Doug is the kind of guy who *does* read manuals and he does work through tutorials, but he has, after 8 months with his own computer, mostly developed a personal craft based on things that were discovered to work for him. He watches me and others with more experience and he picks up more craft all of the time. This has really brought me up short about what it takes to introduce something like Python to a non-programmer (or even a programmer with a whole different paradigm of computer use, operation, and programming). I have to shed all of my intuitions, developed over 40 years around these fascinating mechanisms, and learn to see through his eyes. That is daunting! Doug has called the two of us the cybersmiths. He was remarking on how, in the past the blacksmith's kids would learn smithing from their dad by hanging out and watching and developing a trade, absorbing the smithie's toolcraft. He sees himself as an apprentice cybersmith. I like that. Now I am looking at what would make his experience more successful and effective. -- Dennis -----Original Message----- From: python-list-admin@python.org [mailto:python-list-admin@python.org]On Behalf Of Donn Cave Sent: Tuesday, February 29, 2000 21:53 To: python-list@python.org Subject: RE: any non programmers out there? Quoth "Cristian Echeverria" <echeverria@interactiva.cl>: | I think a very good and basic introduction is the Python tutorial: | | http://www.python.org/doc/current/tut/tut.html I started with that document and liked it a lot, too, but it's probably a little hairy for someone who really has no background in this area. I mean this not as criticism of the document, which is perfect for its normal audience, but in case someone out there is thinking ``Man, I must be retarded, that was Greek to me!'' Donn Cave, donn@oz.net -- http://www.python.org/mailman/listinfo/python-list -- http://www.python.org/mailman/listinfo/python-list

At 2000-03-01 12:20 -0800, Dennis E. Hamilton wrote:
I posted this to python-list and I was kindly requested to post it here too. I am very interested in the objectives of CP4E.
This message was f***ing brilliant. Dennis, thanks for sharing this with us. That's the sort of thing that CP4E needs -- trying things out on real human beings (as opposed to programmers and geeks). No matter how much we think we know what "they" need, and no matter how helpful we are determined to be, we can't overcome our own biases unless someone innocently points them out to us. Frank (http://i.am/filologo.disneyano/) http://www.uk.research.att.com/~fms/

I am teaching my 35-year-old son about programming using Python. He is a musician and has learned to do impressive things with the DVD + CD-RW + SB Live! on the Windows system that I set up for him. He does his own web
<<SNIP>> Question: when you talk about the tutorial, I presume you mean the one that's included with Python. I would highly recommend investing in 'Learning Python' in addition. That's really a very good book, and it _doesn't_ get into technical stuff too fast or too quickly.
He knows to make __init__.py files but not why. I wanted him to have a
Yeah, really, why start here? You don't need __init__.py files to learn Python. <<SNIP>>
I set him up with 4DOS just because it is a little easier to know where you are and explore inside a command shell. (I figure learning about console mode would be an easier way to have useful work in python before dealing with the GUI and the fledgling IDEs available for Python).
This seems completely and totally ass-backwards to me. Why on earth would you boot an X-Term window (aka DOS or 4DOS) and learn Python in that clunky, unfriendly environment. Especially when your student is already Windows user, accustomed to that interface, and does DVD + CD-RW. Must seem like a real big step back into the dark ages. I'd say an IDE that color codes program key words as you type them is a _minimum requirement_ for any student getting into programming, in ANY language. IDLE 0.5 is not all that "fledgling" either. Compared to a DOS prompt, it's lightyears ahead and beyond, in terms of ease of use. Your attitude seems to be: "before we use Word to learn word- processing, let me show you how we type on this manual typewriter from the late 1940s (remember, you have to hit the keys _real hard_ -- and the ribbon might jam from time to time)."
But mostly we learned things that one could also do using the MS-DOS command.com shell. He doesn't know what either of those are, but he knows
Ugh! Who cares??? <<SNIP>>
He was tired and I was overwhelmed by how much we geeks operate on assumed understanding and an incredible amount of unexplainable lore. I saw that
Yeah, really.
his Windows knowledge is spotty -- there are things that he has missed so far, such as the right-click menus and ability to make new documents and folders. He didn't know about the wheel on the wheel mouse to help with scrolling. Just the same, he has picked up ways to get around in Windows
No big deal. I threw away my wheel mouse when it proved too glitchy (yeah, a cheapo). Back to the track ball for now.
This has really brought me up short about what it takes to introduce something like Python to a non-programmer (or even a programmer with a whole different paradigm of computer use, operation, and programming). I have to shed all of my intuitions, developed over 40 years around these fascinating mechanisms, and learn to see through his eyes. That is daunting!
Shed the intuition that you need to go to a DOS window, is my advice.
I am looking at what would make his experience more successful and effective.
IDLE. GUI. No DOS (or 4DOS, or CP/M either). Kirby

I don't mean to be contrary, Kirby, but I was actually disappointed with "Learning Python" in the sense that it still does make a lot of assumptions about the background of its readers. There are frequent references to other programming languages throughout (offered as comparison with Python) and I found the text to still be very intimidating for beginners in much the same way that Dennis talks about the on-line docs. There really is no good beginners book using Python yet, but of the existing books the one I like best is "The Quick Python Book" by Kenneth McDonald and Daryl Harms. While it is certainly not perfect, I found this to be the clearest and easiest to read of the books that are out there. jeff elkner On Wed, 01 Mar 2000, Kirby wrote (in reply to Dennis ;-):
I am teaching my 35-year-old son about programming using Python. He is a musician and has learned to do impressive things with the DVD + CD-RW + SB Live! on the Windows system that I set up for him. He does his own web
<<SNIP>>
Question: when you talk about the tutorial, I presume you mean the one that's included with Python. I would highly recommend investing in 'Learning Python' in addition. That's really a very good book, and it _doesn't_ get into technical stuff too fast or too quickly.

At 09:13 PM 03/01/2000 -0500, you wrote:
I don't mean to be contrary, Kirby, but I was actually disappointed with "Learning Python" in the sense that it still does make a lot of assumptions about the background of its readers.
jeff -- I don't dispute your point. I think the market is still wide open for really good Python tutorials -- in many shapes and forms. But I think 'Learning Python' is a step in the right direction -- from the tutorial which comes with Python (more geared towards programmers new to Python, but not programming). I would still recommend it, given it's available, and not over-priced. Kirby

On Wed, 1 Mar 2000, Jeffrey Elkner wrote:
I don't mean to be contrary, Kirby, but I was actually disappointed with "Learning Python" in the sense that it still does make a lot of assumptions about the background of its readers. There are frequent references to other programming languages throughout (offered as comparison with Python) and I found the text to still be very intimidating for beginners in much the same way that Dennis talks about the on-line docs. There really is no good beginners book using Python yet, but of the existing books the one I like best is "The Quick Python Book" by Kenneth McDonald and Daryl Harms. While it is certainly not perfect, I found this to be the clearest and easiest to read of the books that are out there.
I have to agree. I found "Learning Python" to be very inconsistent in its assumptions of its reader. As an expert programmer who had not used Python before, I found the book alternately condescending and baffling. There are sections which are at the right level for a programming novice, but they appear on the same pages as sections for seasoned Python programmers, even in the beginning of the book. Dustin --------------------------------------------------------------------- | Dustin Mitchell )O( | ---------------------------------------------------------------------

1. Yes, I did mean the tutorial that comes with Python. 2. I bought "Learning Python" for both of us. He started looking in it last night and he didn't find it much more helpful at this point. Today I was referred to Magnus Lie Hetland's "Instant Hacking" and "Instant Python" articles and they look like much more what I am looking for, and Doug finds them accessible too. 3. I said why I wanted him to know to put __init__.py in directories from the beginning, as a start towards developing libraries of modules as he begins to organize the work that he does. Knowing the environment of Python for a platform seems important in achieving usability. I am giving him a minimum that he should be able to grow from without getting into paths, environment variables, and such so soon. That's why. We'll see how well it works out. 4. My assessment with Idle and PythonWin so far is that they are both too easy to crash and there is too much that is inscrutable. (I haven't installed Idle 0.5 yet.) More than that, I want Doug to have some short path of connection between what he sees in the material he creates and what happens operationally. I agree that having an IDE environment is an improvement, once you have a sound model of the fundamental process that is not obscured by the tool. 5. I don't expect this will hurt him any, and it will teach him command-line use of the python processor, something that gets talked about in all of the books. He can move to an IDE when he has the basic operational process under his belt. I think he will adjust his own practices to suit himself once he has enough sense of what is happening. I have no charge on whether he continues to run under 4DOS or do something else. I think he'll keep his wheel mouse though. -- Dennis -----Original Message----- From: edu-sig-admin@python.org [mailto:edu-sig-admin@python.org]On Behalf Of Kirby Urner Sent: Wednesday, March 01, 2000 17:26 To: edu-sig@python.org; edu-sig@python.org Subject: Re: [Edu-sig] Python for non-programmers <<1-3> Question: when you talk about the tutorial, I presume you mean the one that's included with Python. I would highly recommend investing in 'Learning Python' in addition. That's really a very good book, and it _doesn't_ get into technical stuff too fast or too quickly.
He knows to make __init__.py files but not why. I wanted him to have a
Yeah, really, why start here? You don't need __init__.py files to learn Python. </1-3>> [ ... ] <<4>
I set him up with 4DOS just because it is a little easier to know where you are and explore inside a command shell. (I figure learning about console mode would be an easier way to have useful work in python before dealing with the GUI and the fledgling IDEs available for Python).
This seems completely and totally ass-backwards to me. Why on earth would you boot an X-Term window (aka DOS or 4DOS) and learn Python in that clunky, unfriendly environment. Especially when your student is already Windows user, accustomed to that interface, and does DVD + CD-RW. Must seem like a real big step back into the dark ages. I'd say an IDE that color codes program key words as you type them is a _minimum requirement_ for any student getting into programming, in ANY language. IDLE 0.5 is not all that "fledgling" either. Compared to a DOS prompt, it's lightyears ahead and beyond, in terms of ease of use. </4>> [ ... ] <<5> Shed the intuition that you need to go to a DOS window, is my advice.
I am looking at what would make his experience more successful and effective.
IDLE. GUI. No DOS (or 4DOS, or CP/M either). </5>> Kirby

3. I said why I wanted him to know to put __init__.py in directories from the beginning, as a start towards developing libraries of modules as he
OK, but it's easy to just save your .py modules in the Python directory and move them later, adding to the search path then. You can do modules first, __init__.py later. That would probably be my approach -- to avoid getting bogged down in environmental nitty gritties.
4. My assessment with Idle and PythonWin so far is that they are both too easy to crash and there is too much that is inscrutable. (I haven't installed Idle 0.5 yet.) More than that, I want Doug to have some short path of connection between what he sees in the material he creates and what happens operationally. I agree that having an IDE environment is an improvement, once you have a sound model of the fundamental process that is not obscured by the tool.
This is where we disagree I guess. I haven't found IDLE especially crash-prone in Windows (I've used PythonWin too, but have decided to just use IDLE 0.5 for now). Sometimes, rarely, I have to ctrl-alt-delete terminate (just the thread, not a reboot) because I've got an infinite loop going (or, more likely, I'm stuck trying to compute primes up to some godawfully humongous number -- what I got into with Pascal's Pyramid the other day). IDLE is not an IDE in the sense of "edit code, then compile/link, then execute" like Visual Cafe for Java or something. It's a true REPL loop, a command line interpreter, exactly like what you get in DOS, except color coded, friendly, in a window. The computer replies in blue.
5. I don't expect this will hurt him any, and it will teach him command-line use of the python processor, something that gets talked about in all of the books. He can move to an IDE when he has the basic
Yes, but IDLE _is_ in interactive command line environment. I agree that an interactive command line should be front and center in the learning process. All my prime teaching language candidates, Logo, Python, DrScheme, Xbase... -- have interactive command lines, where you can type 2+2 and get 4, or 3*"CAT" and get "CATCATCAT". But the command lines I'm talking about are in the context of a GUI. I find that an improvement over opening a DOS or X-term window in Windows or Linux/Unix.
operational process under his belt. I think he will adjust his own practices to suit himself once he has enough sense of what is happening. I have no charge on whether he continues to run under 4DOS or do something else. I think he'll keep his wheel mouse though.
You probably have a good sense of the situation in your particular case. I just want to avoid the paradigm where we think "computer programming for everybody" means indoctrinating everyone into the arcana of some hopelessly geekish world. On the contrary, software engineers have worked very hard to transcend that world, by devising interfaces that seem more humane. I see no reason to turn back the clock. It's an ancient pitfall in the teaching process that some previous generation is more interested in having downliners (future generations) appreciate "what it was like for us in our time" than recognizing and responding to what's ahead: a future that's alien to all of us, but is ours to own and anticipate nevertheless. Kirby

I had so much fun relating my 35-year-old son Doug's initial experiences with Python and me as a tutor, that I owe you a follow-up. There are four things I want to add by way of progress report and memoir: A. What happened in our subsequent attempts at Python. B. What Doug has since done on his own. C. What I have to say about that. D. What I Care About A. CYBERSMITHS AT THE BRINK [The CyberSmiths are what my son Doug has called the two of us, appealing to the notion of a blacksmith's son apprenticing to his father. I am touched by that and not about to quibble with the appropriateness of the term.] As the result of my previous report on our experiences, I received some great leads to tutorials for beginners. I downloaded and printed a couple of the on-line versions and made them available to Doug. He also stumbled in "Learning Python," but he started to get some benefit out of "Introduction to Hacking" and more practice. I got him to try an edit-run process using the MS-DOS edit utility that comes with Win98, and python as a console application under 4DOS. We tried some more extensive examples and the following occurred: 1. He began to see more possibilities with interactive applications (e.g., ask questions, do things based on the answers, etc.) He noticed what was convenient and inconvenient, and appeared ready to discover how to make little programs more useful, by having them repeat rather than have to be rerun each time.. 2. He had a big insight about the difference between writing and filing a program and running/interpreting the program. That is, he began to see the separation between description or creation and then active use. I could tell this was a pretty tenuous thing, but it is of course pretty fundamental to what will come later. 3. Before he tired in our final session he was stopped at an interesting place. It was the use of f(), the notation we are now all so accustomed to that we don't see anything weird about it. Doug has been working himself through college algebra using computer-based training courses of one kind an another -- it is one of the things he has found valuable about computers and about the Internet. But he wasn't ready for f and f(). He stopped at that point. I was excited to think that we might, in a session or two when we next got together, take the difference between mention and use (and the different ways that comes up in using computers) to a level where he would get why this kind of unfamiliar notation and preoccupation is so important in how computers operate. B. ENTER THE SERPENT Well, yesterday I had an on-line messaging session with Doug and learned that he'd obtained a book that introduces programming via QBasic and then branches out from there. You got it, QBasic. I actually have a copy of that software lying around, but not one that is designed for Win32 long file names and Fat32 drives. Talk about a shattering experience! Well, I get to take my own advice about being tolerant and patient. So I checked around on where I might find QBasic and gave him some tips on using it. Actually, it and the MS-DOS text editor are both CUA applications that have pretty nice Help and other information. A nice thing about QBasic is that there is a separate immediate-mode window, at the bottom of the screen, and then an edit window in most of the remaining screen. I mention that only because it may help Doug to distinguishing something about edit-run-save-load approaches versus do-it-and-forget-it mode. I don't know what QBasic does if you launch it with a filename in the command line -- I suspect it does not do what the Python processor does under the same conditions. These are more things for me to observe around how Doug is teaching himself about computing and programming. I even sent him a Zipped package of the program that I had been saving just in case I might ever want to install it again. I think the most telling aspect of this journey is best expressed in Doug's own words, from an E-mail I received this morning: "Thanks for the email on QBASIC. I found it kind of complicated so I looked in the book I have to see where they thought QBASIC is in Windows and it happens that there is a version on the Windows 98 setup disc so I installed it using there instructions. The book I have is written in a very simple way which I prefer cause I'm so new to this and I don't want to give up on programming. In fact I'm getting really excited about it thanks to this book." [Doug and I have the same habit of interchanging words like their and there, two and too and to.] So I will go look at my Windows 98 install disks and see if the QBasic there is more Windows and Fat32-friendly than the version 1.1 I have been holding onto. From this I see I mentioned things in my E-mail that were deeper than his understanding, so he found another way to satisfy his itch. The gratifying part is that he isn't giving up. I actually recommend the old books on basic (how to do tiny interactive games, other little tasks that are self-contained and easily understandable outside of the context of computer programming and software) for people who want something to practice with. I can't wait to see what Doug produces in QBasic. There may then be an opportunity to then learn more about Python by comparative example. It is difficult for me to realize that I speak at a level that requires an understanding the people I am speaking to don't have. For what I have to offer to be accessible to someone else, it is going to take a great more discipline to put myself in the other's shoes and to accept their experience of the matter. So I am going to have to be more generous and patient in having my son train me in what I have long forgotten -- what it was like to not know anything about computers and from there develop mastery of software and computer science. C. THANK YOU LUDWIG I am not distressed about Doug using QBasic, or any other form of Basic, though I think ones closer to the original Dartmouth Basic are the most ideal for this kind of teething. I don't think it will be valuable for him to start using Peek and Poke and In and Out commands for direct input-output, but I think this can be an useful way to deal with some fundamentals. And then it will become time to learn something else. I think learning more than one computer language is an important part of learning what programming languages are about, so I am not fearful that this is an invalid experience for Doug. (I recommend that people develop a mastery level of at least three noticeably-different computer languages. I support and argue for the continued use of a fictitious machine in the Art of Computer Programming because it assures that people will be exposed to at least two computer languages that way.) From time to time I run into a translation of a famous statement. It goes like this: 6.54 My propositions are elucidatory in this way: he who understands me finally recognizes them as senseless, when he has climbed out through them, on them, over them. (He must so to speak throw away the ladder, after he has climbed up on it.) I am reminded of Kirkegaard who spoke on how we get to a particular level in our lives using particular means, but those are not the means that will take us to the next level. I watch 10-year-old grand-nephew Jake struggle with mastery of arithmetic and wonder if he will be practiced enough when he is asked to suspend his approach to it and take a fresh look via algebra and trigonometry. Yet I counted on my fingers under the desk just as he does, and there did come a time when I did that no longer. I still write my carry-amounts at the top of addition columns though. And then what happens when knowledge expressed in algebraic terms is suspended and recreated using the calculus? And then shall we suspend that and learn about real functions and ultimately about computational/constructive objects and their limitations? And rediscover arithmetic through the eyes of Peano, Frege, and Russell? A journey up many ladders as part of a promising and perhaps unending developmental progression. It is hard to remember what it was like when I didn't have my latest ladder. It is even more difficult to anticipate what ascending the next ladder will require me to give up, even if only for a time! In his Nobel lecture, Richard Feynman pays homage to a notation that he once developed and that gave him purchase on an important area in physics. But he had since retired that particular notation because it did not support the models he needed to explore for the areas that opened up afterwards. Einstein was also a master of notations for bringing tractability to difficult problems. As a self-taught student of symbolic logic, I could work through early chapters of Principia Mathematica and other books, but I was completely stopped on modus ponens, the fundamental principle of inference. [Basically, modus ponens is the principle that given that *a*, and given that *a implies b*, one can infer that *b*.] It was clear to me, from writings of Quine and others, that there was some difficulty with modus ponens, but I couldn't even tell what modus ponens was, or how it worked, let alone appreciate the difficulty. I had that definition and other versions of it in front of me, and I couldn't get it. It am amazed how much of symbolic logic I could get some grasp of without grokking modus ponens. This went on for about 5 years, from when I was 19 to around 24. I also had a copy of a treatise on "Elementary Formal Systems" and I could do all right in the first (introductory) chapter, but I got stopped around modus ponens pretty early. It so happened that a coworker of mine, a concert pianist by training, knew the author of the book. So I meet Raymond Smullyan at his home on Manhattan, and my friend introduces me as a coworker who is very bright and knowledgable and has Smullyan's book. I am embarassed and not feeling so bright and knowledgable, knowing that I haven't mastered modus ponens or gotten past the bare introduction of "Elementary Formal Systems." The conversation is awkward, and Raymond shows me his study and that he corresponds with people I am familiar with by name who are working in the foundations of computer science. I finally get over my dumbfoundedness enough to tell professor Smullyan about my difficulty with modus ponens. He goes to the chalkboard in his study and draws the truth table for the implication proposition of logic. He carefully and simply takes me through the principle. And I see it. It is perfectly, beautifully clear in that moment and forever after. I have never forgotten it. And that was a *really* big ladder to have climbed. It took maybe 5 minutes. Probably the biggest part was being unwilling to continue in ignorance and asking for help when this marvelous opportunity became available. It was right up there with having the nerve to ask my wife out, though it took me much longer to have that much mastery of myself. One of the most profound moments in my early career as a young software developer came in the Summer of 1961 when I happened across issues of the Communications of the ACM in the stacks of the Seattle Public Library. I opened the Report on the Algorithmic Language ALGOL 60 and was enthralled to see a programming language in what seemed to be perfect description in 14 pages of typeset text and examples. (I could completely get it even though I hadn't mastered modus ponens yet, too.) We now know it wasn't all that perfect, or complete, but the effort to produce it and exploit it was the launchpad for an amazing explosion and development of a discipline that we dared to call computer science. Treatment of formal languages is perhaps not so singularly central these days, but it was an invaluable ladder. The Algol 60 report was prefaced with the following statement (in the original German): What we cannot speak about we must pass over in silence. -- Ludwig Witgenstein: Tractatus Logico-Philosophicus I have no idea what the authors of the Algol 60 report had in mind that led them to choose this quotation. It was many years later (and long after I had a copy of the full text, unread) before I noticed that this often-quoted final line of Witgenstein's "Tractatus" was preceded by the paragraph 6.54 quoted above. D. WHAT I CARE ABOUT I have worked with computers almost my entire life. And now my cellular phone has more computing power than the first computer I actively programmed, and my desktop system has more computing power than existed in the entire world shortly before I started. I have been fascinated by the elusive qualities of computers that has them be so powerful while so obviously limited. That started when high-school classmates and I struggled with ancient issues of Scientific American that proposed how we could build a tiny machine of our own, called Simple Simon, that exhibited everything there is about computing. It was all an enchanting mystery and, at first, completely impenetrable. I love exploring computation and the power of computing (and even more, the magnificent limitations) for its own sake. But I don't think I could have sustained a 40+ year career around software development if that was all there was to it. There is also something elusively fascinating about our relationship to computers and how difficult it is to comprehend them and have the software we provide for them be genuinely useful to people. I think most of us think there is something valuable here, and we want to convey that value to others, contributing something useful and lasting. Yet so many computer software projects fail, so many successful ones (that ship) are found to have been misguided in some way. It pains me, not only in my own experience but in watching young developers, as obsessive as I was, be frustrated by their contributions ultimately not being fruitful. I have recently been exploring the proposition that "software sucks." And looking for ways to make software and computers even more useful and supportive in what people are up to. I can think of no better perspective on learning about programming than this recent statement on software in general: "Learning to use software should be as easy as learning the way around a new office. A little benign exploration, a couple of interesting side trips, a fortuitous meeting in the hallway, this is how we get oriented in real life. We should expect nothing less from our software. The user should be reassured at every step and generously rewarded for his curiosity. In today's information age, creativity, excitement, and a sense of adventure are more important, ultimately, than correctness. There are no mistakes, only opportunities to learn." Alan Cooper. 1995 "About Face: The Essentials of User Interface Design." p.481 This is my personal manifesto for CP4E. I want learning about software and programming to be that kind of experience for my son Doug, my grand-nephew Jake, and anyone else who chooses to obtain some mastery of these marvelously simple artifacts on which we are willing to depend for so much. -- Dennis
participants (5)
-
Dennis E. Hamilton
-
Dustin James Mitchell
-
Frank Stajano
-
Jeffrey Elkner
-
Kirby Urner