On Sun, Mar 22, 2009 at 8:03 PM, Edward Cherlin <echer...@gmail.com> wrote:
<< SNIP >> > We need a language-independent way of teaching programming concepts. I > have an idea for one based on Turtle Art, which represents programs as > trees, not texts. Most programming languages have to transform texts > to trees before executing or compiling them. Trees are far more > fundamental than texts. Everybody in the LISP world knows that syntax > is just sugar on the top of a language. > > I hope to see other language-independent models. > I'm not so sure about this, unless by "language-independent" you mean we go through several languages, in which case then I agree. What I shun is a "purist" approach wherein no actually executing language is considered worthy or good enough, because each and every one is considered too quirky or special case in some way (as if that "perfectly general language" at the end of the rainbow could ever be free of these defects). This trading away of a very appealing feature ("it runs on a machine") in favor of some paper and pencil "pureness" is what I'd consider a rip off, as students want the fun of actually noodling and doodling with electrified metal, not just with wood pulp. What's fun about computing is in large degree the superhuman speeds attainable with fast-oscillating crystals. The paper and pencil world shouldn't plan on getting in the way here, though its fine to design with diagrams, storyboard, all manner of squiggles (we also allow colored pens, not just pencils). >> << SNIP >> >> >> In the Wonderful World of the Future, most people will be actively >> creating active digital content with state and flow control, object >> abstraction, "programming" in the sense of producing automated >> stuff that accomplishes tasks. > > There are several programming languages popular among non-professional > programmers. These languages get no respect in the professional > community, and neither do their users. But think what a > non-professional programmer is. He or she is typically a specialist in > some other domain who needs custom programming. A statistician, a > scientist, an engineer, a computer musician...I know people in each of > those fields, and others, creating their own software to do their > jobs. An example or two might be helpful. I spontaneously think of Excel, SPSS and Mathematica, all of which get respect, although not so much as "general purpose languages" -- which has specific meaning. Mathematica is general purpose in the sense of "comprehensive in what it covers" but I don't see it as a replacement for SQL or Javascript. I think it's helpful for all of us to admit that, in writing specific instructions in language A, we're likely also leveraging others' work in languages B, C and D. For example, Python depends on C which in turn depends on a surrounding operating system with an API to the hardware, firmware controlled, and so forth. A musician using a music-editing application is just as much "programming", only here the "program" is notated in musical notation (includes loop constructs, other flow instructions) and the execution is in terms of a MIDI engine or whatever. People always talk about looms, punch card controlled, as an important feeder technology, but player pianos, other instruments driven by recorded media, sometimes rotating metallic, are just as important. > > A language for professional programmers can be quite elaborate, > requiring considerable effort to learn and constant use to maintain. A > language for non-professionals must be simple in structure, with > minimal syntax and minimal > Per the CP4E rhetoric, such as I understand it, we're aiming for a day when writing machine executable notations, including musical, scripts for puppets (avatars, characters) won't be considered a career in an of itself so frequently as a component skill within other more comprehensive disciplines. Per R0ml, we're talking about a new kind of literacy. During the Renaissance, the infusion of Hindu-Arabic algorithms and abacus-based thinking, trickling through Pisa and Liber Abacci, had a profound effect on the surrounding discourse, including in art, other media. I think we're in a similar position, in terms of careers morphing in response to new digital capabilities. We're just starting to experience the "network effects" of 21st century telecommunications. In more practical terms, what CP4E looks like is some computer language experience pre-college (and not just programming those TI calculators or Lego bricks), then lots of walks of life (career paths) wherein the job-specific "control surfaces" get accessed lexically (textually) through exported APIs. That's how it is already, so I'm extrapolating from a lot of points already. If we think of driving a car as "operating the car's API" then we see how CP4E puts everyone in the driver's seat, not as a full time chauffeur necessarily (i.e. "programmer") but at least as someone who knows the freeway system (i.e. Internet), how to serve content. >> But it won't be text based. There >> may be a few Morlocks laboring down amongst the lines of code like >> you and I do. > > Mitch Bradley, the author of Open Firmware, programs to bare metal so > that the rest of us don't have to. He is hardly a Morlock. > <rant> This is what I most disagreed with in Keith's remarks. I don't think all those centuries upon centuries of encoding our thinking in lexical constructs, grammars, is suddenly on the verge of evaporating in to some drag and drop cartoon-like haze. Rushing to shield children from the supposedly harmful effects of lexical coding, while on the other hand stressing reading books and imagining while so doing (i.e. not needing those pictures "as a crutch"), is to work at cross purposes in a self defeating pattern. We're not anti-lexical, aren't trying to kill off the "left brain". Needing to type lots of characters in order to get things to happen is not a terrible thing. Wiggling fingers, instead of just lying in bed and programming through "chip implants" is also not a high crime. I'm all for prosthetics where necessary, but why as elective surgery? We have better ways to spend our R&D budgets, than on gratuitous peripherals for those with already functional biological equipment. </rant> >> Working with "text code" will probably be considered >> "fundamental" and "connected with our roots", like animal-powered >> agriculture is now.... > Agriculture is still animal powered I would add, in that animals (such as humans) eat the ag products, staff the infrastructure, thereby keeping the wheels turning. Without that insistent demand from the animals, there'd be little point doing the work. > Code will not go away. But as in the AI community long ago, we will > think of programs to write programs to write programs. > Yes, and lets not forget how languages are written in other languages. Going from Python to its C, C# or Java language "guts" is a great way to go. First get the benefits, cut your teeth, feel you've got some high level skills, then dive beneath the surface and start ripping into the internals, learning about PyObject or whatever. It's also fine to go from Python to C++, like in John Zelle's new book. Large parts of Python's favorite libraries are written in C++, notably wx and VPython (many others, feel free to chime in?). >> So take a look at "programming in schools" from the viewpoint of >> an adult in 2030, not a 2009 viewpoint, and heaven forbid from the >> viewpoint of the ancient times when you and I were trained. What >> do you wish you had been taught 40 years ago? > > Not BASIC, not Pascal, not even Python. In my case, Smalltalk, > LISP/SCHEME, FORTH, and APL/J, each of which presents a different > model for thinking about how computers work and about how to represent > knowledge and skill. Each also has a radically simple syntax and a > universal concept of data structures. In Smalltalk, everything is an > object. LISP represents everything in trees. APL in forests. FORTH in > memory layout. LISP, FORTH, and APL each has a different way to model > object-oriented programming. > We've had some discussion on this list about whether we care about some unified primitive data structure. I sense countervailing temperaments at work. Some people just feel better when there's this sense of a unified substrate, a primitive simple beginning. Others are less monotheistic in their proclivities and don't mind a more heterogeneous "toolbox" model. You get down to a bunch of very different things, working in complement. But there you have it: "everything is a thing" in basic English (a useful design pattern, even though ridiculously misleading). > "I invented Object-Oriented Programming, and C++ is not what I had in > mind."--Alan Kay > Yet we want to recruit talent willing to learn and work with C++. I've put quite a bit of work into thinking how we might recruit future M programmers (suMerian meme), copying humanities disciplines focused on ancient cultures (linguistics, archeology, history, warcraft... poetics). They tell me UC Davis is still a hotbed of MUMPS scholarship. This isn't easy work for me though, because in other contexts, hospitals clinging to "dead language" systems like MUMPS is biting into my take home pay. I want elegant FOSS solutions to replace creaky, unmaintainable, unscalable systems, but bureaucrats fight me, because people like using what they already know. Upgrading is painful, and yet without upgrading, we'd still be living in caves roasting bats for dinner. I think I'll stop trying so hard to help the MUMPS people. Let them solve their own propagation puzzles eh? I've got enough on my plate. Nevermind about suMerian, forget I ever brought it up. >> What was fashionable but dated? > > Computer literacy is the worst. Just as though we had a room where all > of the pencils and paper and books were kept, where you could fool > around for an hour or two a week, but you had no books in your > courses, and you could not do written homework. Earth Treasury is > working on Digital Textbooks, now that we can give children the use of > computers 24/7. > I like that any teacher can bookmark a boatload, and sustain storytelling with all manner of media, thanks to those nifty little URLs, invented in Switzerland they tell me. If I had to choose, whether particle physics, or the web itself, was CERN's most valuable output.... fortunately I don't have to choose (nor would anyone care if I did (have to)). >> Extrapolate that forwards, and try to guess what they >> will want, not what you and I consider important /now/. For extra >> points, try to guess what they should be teaching *their* kids, >> for use in the year 2060, and get started on the theoretical >> underpinnings of *that*. > > In 2060 there will be new physics and math that we have no idea of. > There will be new media, and new art forms. We will not think about Another way of saying it: even right now, today, many young people in our midst are doing stuff that'll seem pretty mundane and mainstream when they're old people, because then they'll be the ones running things while the rest of us, who don't understand them today, probably don't need to just to get our own work completed (we're completing projects that would've seemed zany and unthinking 50 years ago, except to people like Vannevar Bush, who anticipated Google (called it a "the MEMEX" in 1945)). > economics and politics as we do now. We can expect that everybody on > Earth who wants to be on the Internet will be. Dire poverty should > have ended. We cannot specify content in advance. What I want is for > children to be taught collaborative discovery in the realm of powerful > ideas. > A lot of us were planning to end death by starvation by 2000 (e.g. The Hunger Project), consider the delay on meeting that target a sign that we're still dangerously low IQ as a species. Philanthropists feel its a lot on their shoulders. Broadening the base of philanthropists is a core mission of my "cafe philanthropique" franchise, branded CSN around Portland, mostly viral in the blogosphere these days (using "viral" in a positive sense is one of those features of "geekspeak" that confuses the "less geekazoid"). > o What is this? Is it real? How do I know? (In a $2 word, ontology) > > o What does this mean? Is it true? Why should you believe me? (epistemology) > > o Is this important? Should I do something about it, even if I don't > want to? (ethics) > Yes, I would underscore the relation between FOSS and ethics. A rather considerable amount of negative PR has been directed at "hackers", not limited to trying to make "Linux" to blame for the dot com crash in some way (more lame Wall Street action, like we've seen a lot more of more recently), or to making "copying" synonymous with "pirating" as if (a) pirates "just copied" their booty or (b) as if copying around our own stuff weren't perfectly legal according to our own copyright (aka copyleft) laws (aka licenses). I'd say Richard Stallman is one of our great turn-of-the-millenium ethicists and it's silly not to recognize that i.e. if you're studying ethics in university someplace and don't know who Richard Stallman is, then maybe you go to some lackadaisical academy that shouldn't be handing out "doctor of philosophy" degrees in anything, let alone in philosophy itself! >> I'm wondering what people on this list think about this remark. >> >> I responded rather sharply at the time, as I think it's a common >> dodge, to avoid adding grist to the mill today, because of some >> hypothetical future wherein said "grist" will be obsolete. > > I do not argue against grist. I argue that our children should be able > to adapt the mill when necessary. > I'd argue they will do so, whether we wish it or no. However, to bring about change in an orchestrated, smooth, even enjoyable way, takes plenty of skill. We need to do our damnedest to transmit any wisdom we may think we have gleaned in this regard. And let's learn from our elders while we're at it, even as we adapt the hell out of this mill of ours. Many are working overtime to make sure that we "get it" (whatever "it" is). >> In the meantime, we continue teaching technical subjects as if the >> FOSS revolution never happened, I think imperiling its gains (sliding >> back into a pit of "deep silos" proprietary ignorance -- could >> happen). > > Some of us are working on integrating FOSS into the heart of the > curriculum. In order to penetrate into the other world you speak of, > we have to get past the current bureaucratic textbook acquisition > process. We can do that because our books will have no cost. We have > to integrate software into textbooks, and into the curriculum, as we > can with one-to-one computing. We know of social and political forces > preventing school reform. FOSS allows us to go around these obstacles. > We must prepare to meet others that will arise. > Yes, this sounds like a good summary of what a lot of people are working on. The idea of a textbook is very reassuring to most teachers. They really don't want to venture into a subject without one. "No textbook" is like sitting in front of an audience with no sheet music, expected to just improvise. That's just not how many musicians were trained. You don't spontaneously think up symphonies or duets. You carefully craft them over a period of months if not years, then serve them up, complete and "shrink wrapped" (like a new computer game, a team effort). My bias is towards improv and jazz but that's only because I've carved out various niches within the Internet as my sandbox and playground, now run around in same "as if" it were some kind of textbook (a new kind of textbook), consisting mainly of URL-identified resources cross-referencing in various ways. Thanks for putting a lot of thought into your posts to this list. I like remembering my time with Smalltalk. That notion of saving an "image", a state machine, more like a whole doll house, with everything paused, is really interesting. I don't think beginner courses with Python do enough with pickling or sharing objects over networks. I know my own curriculum writing is currently quite deficient in that respect. I usually find that when I work in a different language for awhile, then go back to one I'm more familiar with, I have new sensibilities "under my skin" which effect me even still. Habits of thought persist across languages. That's sometimes for the better, sometimes for the worse. I'm thinking it's partly the job of textbook writers aka curriculum designers, to "stack the deck" such that these transition experiences are more likely to net positive synergies than negative. That's why I think a *sequence* is important. It's all fine and good to say "they should have some exposure to LISP and/or Scheme" but then exactly where and how? The devil is in the details. For me, it might just be that in describing the "little lambda" in Python (what it does) I take this opportunity jump over to the Big Lambda religions [screen shot] and show what "real" (heavy duty) anonymous functions look like ("lambda" is kind of like "anon" in literature), in all their (sometimes tail recursive) glory. Likewise with APL/J, my bridge is probably the primitive data structure known as "a list" in Python, and the idea of "dimension" with respect to "array" (a kind of list). Working with Bernie Gunn, the New Zealand geochemist, it was interesting to see how counterintuitive it seemed to him, that we could look at v=[[a,b],[c,d]] as a "two dimensional array" such that v[0][1] in Python was like v[0,1] in Pascal or FORTRAN. This use of "dimension" is in turn our bridge to "hyperdimension" in mathematics, where once again, we're talking deeply nested arrays of the kind APL eats for breakfast -- except in geometry we might call some of these data structures "polytopes" ("like tesseracts 'n shit" (sorry -- 'Idiocracy' allusion, a fave movie)). Thanks again, Kirby > > > -- > Silent Thunder (默雷/धर्ममेघशब्दगर्ज/دھرممیگھشبدگر ج) is my name > And Children are my nation. > The Cosmos is my dwelling place, The Truth my destination. > http://earthtreasury.net/ (Edward Mokurai Cherlin) > _______________________________________________ Edu-sig mailing list Edu-sig@python.org http://mail.python.org/mailman/listinfo/edu-sig