On Fri, Nov 29, 2019 at 12:23:41PM +0900, Stephen J. Turnbull wrote:
> Steven D'Aprano writes:
>  > On Fri, Nov 29, 2019 at 12:55:13AM +0900, Stephen J. Turnbull wrote:
>  > > Abdur-Rahmaan Janhangeer writes:
>  > > 
>  > >  > "Designed With Learning in Mind"
>  > > 
>  > > That's Python.  Guido said so from the beginning,
>  > 
>  > Is it? Did he? Do you have references for that?
> 
> Yes, it is in my opinion (I use it in teaching all the time in the
> same way I would use pseudo-code, and I haven't taught a class in
> programming in 25 years).
> 
> Yes, he did.
> 
> No, just my memory of occasions where he has said or posted that use
> of Python as a teaching language informed his design philosophy and
> decisions (which is the minimum that "with learning in mind" implies).

Guido might have something different to say about all this, but 
according to his blog, he *literally* designed Python as a scripting 
language for himself to glue together libraries written in C for the 
Amoeba operating system.

    "My original motivation for creating Python was the perceived
    need for a higher level language in the Amoeba project. ...
    So there was a need for a language that would “bridge the gap 
    between C and the shell.” For a long time, this was Python’s main 
    catchphrase."

http://python-history.blogspot.com/2009/01/personal-history-part-1-cwi.html

He describes his design of the language here:

http://python-history.blogspot.com/2009/01/pythons-design-philosophy.html

and notably missing from that list of design principles is anything 
about teaching programming or making it easier to learn or "Designed 
With Learning in Mind".

In fact, some of the features of ABC that actually were designed with 
learning in mind were consciously rejected by Guido when designing 
Python.

Honestly, this discussion is quite surreal. The json.load/loads API is 
clearly copied from the same API in the pickle and marshal modules, 
which are some of the oldest APIs in Python, going back to at least 
Python 1.5 if not older. So we have people simultaneously arguing that:

    * the load/loads distinction is hard to learn
    * and that Python was designed to be easy to learn from 
      the earliest days

which is contradictory. If it had been, the pickle/marshal API probably 
wouldn't have used loads and json wouldn't have copied it.

Python naming conventions have evolved, and the oldest APIs are not 
"Designed With Learning In Mind".



>  > Python is not Scratch, nor is it ABC. ABC was a *big* influence on
>  > the evolution of Python, but (in my opinion) at least half of that
>  > influence was to convince Guido *not* to make Python "designed with
>  > learning in mind".
> 
> "Design with learning in mind" literally means "don't forget about
> beginners in Python and in programming", not "sacrifice everything
> else on the altar of education".

That's not what it *literally* means.

Its literal meaning is a lot closer to the second statement than the 
first, only without the perjorative elements of sacrificing to the cult 
of education.

In any case, it is a matter of historical fact (to the degree that we 
believe Guido's account, and we have no reason to think that he is 
lying) that he didn't design Python with beginners in mind.



>  > For example, ABC used its own alledgedly "beginner friendly"
>  > terminology that nobody else in programming used; Python mostly
>  > sticks to common terminology used by other languages which will be
>  > recognised by programmers coming from other languages.
> 
> Which is a decision that has learning Python (vs. learning programming
> in general) in mind, no?

No. If you want to learn programming concepts, you might prefer ABCs 
terminology. That at least was what the ABC designers thought; your 
mileage may vary. But ABC was designed with learning in mind:

https://homepages.cwi.nl/~steven/abc/teaching.html

just as Scratch and similar languages are.

Using ABC for learning was the reason why it was created, and its design 
reflected that. This is not why Python was created, and while Guido 
copied some of the concepts from ABC, he consciously rejected others. 
One of those concepts he intentionally rejected was that the user had no 
prior experience and was learning how to program.



-- 
Steven
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/TAEFU6JSILJF4CQLWQTPO43L25ZCAP4Z/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to