Hi,

2014-09-07 13:02 GMT+02:00 Alain Busser <alain.busser@gmail.com>:
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 ;-)

Thank you to make advertisement ��for phratch. I hope to see it on Android soon.

Cheers,
Jannik
��


Alain


On Sun, Sep 7, 2014 at 2:29 PM, kilon alios <kilon.alios@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 <trygver@ifi.uio.no> wrote:
I have for some time been pondering two problems.�� One is to identify the fourth R in Reading, wRiting, aRithmetic, and pRogramming.�� 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: trygver@ifi.uio.no
Morgedalsvn. 5A��������������http://folk.uio.no/trygver/
N-0378 Oslo��������������������������http://fullOO.info
Norway������������������������������������������Tel: (+47) 22 49 57 27





--

~~Jannik��Laval~~
��cole des Mines de Douai
Enseignant-chercheur
http://www.jannik-laval.eu
http://www.phratch.com
http://www.approchealpes.info
http://car.mines-douai.fr/