Strangely, I am preparing a Python session for pupils who are supposed ti know almost nothing about programming; and I finally came up with the turtle module! I realized that
*COBOL has been invented so that people who work in banks and do not know how to program, can program *Basic was supposed to be usable by beginners (hence the "b" letter); which imho is false *LOGO has been invented so that such silly creatures as robots could program; and of course children could program in LOGO (and even, as I read, tech programmation at the age of 4) *Smalltalk has been created to cope with the mice and windows, but thinking about programmation for children (hence, Etoys and Scratch) *In France there was a thing called "LSE" which was supposed to help writing the program in a language neighboring French language. No one remembers that, but there were other experiments like "execalgo" or "algobox" (not mentionning MathsOntologie ;-)) Seeing that, I realize that a programming tool especially made for children is not really a new idea, but Python is cool for that. In France too Python is heavily used, especially for students. What surprises me is that the English government choose Python for *children* instead of, say, Scratch. I would not use xMaxima to teach fractions just because xMaxima is able to compute integrals! To conclude, for me, Phratch on Android is the future in that domain ;-) Alain On Sun, Sep 7, 2014 at 2:29 PM, kilon alios <kilon.al...@gmail.com> wrote: > Python has no competition. Sure there are languages that are more popular > than Python for their own reasons. There have been simpler languages before > python, there have been more popular languages, more cross platform > languages etc etc but Python fills a gap that no language was able to fill > before it , easy to use very powerful well documented libraries. Python is > a language that you can teach to a kid now and make a living later on using > until his or her old age. Its not because the language is simple , its > simple enough but not the simplest. Its because the culture surrounding the > creation of libraries . That culture has a name its called "pythonic" > > Beautiful is better than ugly. > Explicit is better than implicit. > Simple is better than complex. > Complex is better than complicated. > Flat is better than nested. > Sparse is better than dense. > Readability counts. > Special cases aren't special enough to break the rules. > Although practicality beats purity. > Errors should never pass silently. > Unless explicitly silenced. > In the face of ambiguity, refuse the temptation to guess. > There should be one-- and preferably only one --obvious way to do it. > Although that way may not be obvious at first unless you're Dutch. > Now is better than never. > Although never is often better than *right* now. > If the implementation is hard to explain, it's a bad idea. > If the implementation is easy to explain, it may be a good idea. > Namespaces are one honking great idea -- let's do more of those! > > > this kind of ideology is why Python has been so successful. It has also > inspired jokes like this > > > http://xkcd.com/353/ > > it may look funny and it says thinks about overestimating the simplicity of > those libraries but python does feel at times as simple as this, as simple as > importing antigravity. > > So if a kid comes to me and ask me "what language should I learn" , I will > recommend a language that is fairly easy to learn , has powerful library , > easy to use libraries , well documented and its a language that will able to > keep using even if his or her needs change, forever. For that only Python is > the language that has been able to succeed and I think its adoption will > continue to progress in educational institutions pretty much everywhere on > the planet. > > > Referring to the rest of your post I dont agree that we need to separate Data > from Code, I think quite opossite that a kid needs to be taught why Code and > Data are one and what that means in practice. I also don't agree that OO or > functional programming or any other programming paradigm I am aware of are > the future. They are simple solutions for simpler times. The coding community > at large the way I see it is in denial hoping to apply simple recipes to > solve complex problems. We need very complex solutions to very complex > problems , we need tools that can interact with the user in many diffirent > ways. > > Pharo is definitely showing the future, the close integration of IDE , > language and environment. But thats is just the start, the next step is > powerful tools that can deeply interact with code and solve automagically > logical coding problems. Obviously all that has to be wrapped to an easy > enough interface for the user even if the solutions is very complex. > > Fortunately this where the rest of the coding world is heading. For example > iPython is one of the most popular python projects right and it offers a > highly interactive environment for python coders that shares a lot of > similarities with Pharo though the implementation is very different. > > So the future is no longer languages , is no longer IDEs , its not even > environments but tools that are produced in these environments that can > vastly automate coding and hide the increasing complexity of coding > solutions. Maybe one day a child will be able to describe to a computer what > kind of software he or she needs and the computer automatically generate the > code for it. That day is not close enough but is where we are heading. > > > > On Sun, Sep 7, 2014 at 12:34 PM, Trygve Reenskaug <tryg...@ifi.uio.no> > wrote: > >> I have for some time been pondering two problems. One is to identify >> the fourth R in *R*eading, w*R*iting, a*R*ithmetic, and p*R*ogramming. >> There are many contenders for the kids' first step. I believe the English >> government has chosen Phyton as a first language. Scratch has a certain >> popularity, there are many others. My concern is "what comes next"? I want >> the kid to gradually build a mental model of what computing is all about. >> Learn a little, do a little, lean more, do more, etc. up do old age. This >> goes much deeper than any programming language. It's a bit as learning to >> read. Personally, I "broke the reading code"at an early age. Since then, I >> have been learning more and more. What I read today would have been >> incomprehensible to me 75 years ago. But my basic mental model of what >> reading is all about has remained unchanged. I have never had to unlearn >> anything. >> >> I suggest that true object orientation (not class orientation) can form >> the foundation for the human mental model of computing. Internalize it and >> live with it forever. >> ------------------------------------- >> The other problem is to find a better example for DCI presentations. It >> should >> >> 1. Be executable and have a cool demo effect. >> 2. Its domain model should be obvious from the demo. >> 3. It should have very few and very simple Data classes. >> 4. It should have a Context that is clearly and obviously >> separate from the Data. >> 5. It should scale to any number of Contexts (use cases) without >> changing the Data classes. >> >> ----------------------------------------- >> *Last night I got an idea for an example: A waltzing couple. (See the >> attached for a picture and Wikipedia for a movie of the use case).* >> >> The program needs one simple class for a moveable shape and a DCI Context >> for each dance (waltz, foxtrot, tango, ... for two role, polonaise for >> more.) The example will clearly demonstrate the wisdom in separating what >> the system IS from what the system DOES since the simple Shape class would >> be overloaded with instance methods for all dances. >> >> What do you think? >> >> --Trygve >> >> >> >> -- >> >> Trygve Reenskaug mailto: tryg...@ifi.uio.no >> Morgedalsvn. 5A http://folk.uio.no/trygver/ >> N-0378 Oslo http://fullOO.info >> Norway Tel: (+47) 22 49 57 27 >> > >