Thanks for your feedback.  A few comments:
> I do not consider these two things conceptually equivalent. In Python the 
>identifier ('a' in this case) is just label to the value
I used APL professionally for about ten years.  None of your objections ring 
true.  A simple example is had from mathematics.  The integral symbol conveys 
and represents a concept.  Once the practitioner is introduced to the 
definition of that symbol, what it means, he or she uses it.  It really is a 
simple as that, this is how our brains work.  That's how you recognize the 
letter "A" as to correspond to a sound and as part of words.  This is how, in 
languages such as Chinese, symbols, notation, are connected to meaning.  It is 
powerful and extremely effective.

The use of notation as a tool for thought is a powerful concept that transcends 
programming.  Mathematics is a simple example. So is music.  Musical notation 
allows the expression of ideas and massively complex works as well as their 
creation.  In electronics we have circuit diagrams, which are not literal 
depictions of circuits but rather a notation to represent them, to think about 
them, to invent them.
The future of computing, in my opinion, must move away --perhaps not entirely-- 
from ASCII-based typing of words.  If we want to be able to express and think 
about programming at a higher level we need to develop a notation.  As AI and 
ML evolve this might become more and more critical.  
APL, sadly, was too early.  Machines of the day were literally inadequate in 
almost every respect.  It is amazing that the language went as far as it did.  
Over 30+ years I have worked with over a dozen languages, ranging from low 
level machine code through Forth, APL, Lisp, C, C++, Objective-C, and all the 
"modern" languages such as Python, JS, PHP, etc.  Programming with APL is a 
very different experience.  Your mind works differently.  I can only equate it 
to writing orchestral scores in the sense that the symbols represent very 
complex textures and structures that your mind learns to imagine and manipulate 
in real time.  You think about spinning, crunching, slicing and manipulating 
data structures in ways you never rally think about when using any other 
language.  Watch the videos I link to below for a taste of these ideas.
Anyhow, obviously the walrus operator is here to stay.  I am not going to 
change anything.  I personally think this is sad and a wasted opportunity to 
open a potentially interesting chapter in the Python story; the mild 
introduction of notation and a path towards evolving a richer notation over 
time.
> Second point, I can write := in two keystrokes, but I do not have a dedicated 
> key for the arrow on my keyboard. Should '<--' also be an acceptable syntax?
No, using "<--" is going in the wrong direction.  We want notation, not ASCII 
soup.  One could argue even walrus is ASCII soup.  Another example of ASCII 
soup is regex.  Without real notation one introduces a huge cognitive load.  
Notation makes a massive difference.  Any classically trained musician sees 
this instantly.  If we replaced musical notation with sequences of two or three 
ASCII characters it would become an incomprehensible mess.

Typing these symbols isn't a problem at all.  For example, in NARS2000, a free 
APL interpreter I use, the assignment operator "←" is entered simply with "Alt 
+ [".  It takes seconds to internalize this and never think about it again.  If 
you download NARS2000 right now you will know how to enter "←" immediately 
because I just told you how to do it.  You will also know exactly what it does. 
 It's that simple.
The other interesting thing about notation is that it transcends language.  So 
far all conventional programming languages have been rooted in English.  I 
would argue there is no need for this when a programming notation, just like 
mathematical and musical notations have demonstrated that they transcend spoken 
languages.  Notation isn't just a tool for thought, it adds a universal element 
that is impossible to achieve in any other way.

Anyhow, again, I am not going to change a thing.  I am nobody in the Python 
world.  Just thought it would be interesting to share this perspective because 
I truly think this was a missed opportunity.  If elegance is of any importance, 
having two assignment operators when one can do the job, as well as evolve the 
language in the direction of an exciting and interesting new path is, at the 
very least, inelegant.  I can only ascribe this to very few people involved in 
this process, if any, any real experience with APL.  One has to use APL for 
real work and for at least a year or two in order for your brain to make the 
mental switch necessary to understand it.  Just messing with it casually isn't 
good enough.  Lots of inquisitive people have messed with it, but they don't 
really understand it.

I encourage everyone to read this Turing Award presentation:

"Notation as a Tool of Thought" by Ken Iverson, creator of APL
http://www.eecg.toronto.edu/~jzhu/csc326/readings/iverson.pdf


Also, if you haven't seen it, these videos is very much worth watching:
Conway's Game of Life in APLhttps://www.youtube.com/watch?v=a9xAKttWgP4

Suduku solver in APLhttps://www.youtube.com/watch?v=DmT80OseAGs


-Martin


    On Tuesday, November 5, 2019, 11:54:45 PM PST, Richard Musil 
<risa20...@gmail.com> wrote:  
 
 On Wed, Nov 6, 2019 at 5:32 AM martin_05--- via Python-ideas 
<python-ideas@python.org> wrote:

In other words, these two things would have been equivalent in Python:

    a ← 23

    a = 23


I do not consider these two things conceptually equivalent. In Python the 
identifier ('a' in this case) is just label to the value, I can imagine "let 
'a' point to the value of 23 now" and write it this way: "a --> 23", but "a <-- 
23" does give an impression that 23 points to, or is somehow fed into, 'a'. 
This may give false expectations to those who are coming to Python from another 
language and might expect the "l-value" behavior in Python.
Second point, I can write := in two keystrokes, but I do not have a dedicated 
key for the arrow on my keyboard. Should '<--' also be an acceptable syntax?
Richard  
_______________________________________________
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/VAGY7OV7UJCREV5WG2OFMGPTUPGYTNB7/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to