Multi-dimensional list initialization

Andrew Robinson andrew3 at r3dsolutions.com
Wed Nov 7 23:51:04 EST 2012


On 11/07/2012 04:00 PM, Steven D'Aprano wrote:
> Andrew, it appears that your posts are being eaten or rejected by my
> ISP's news server, because they aren't showing up for me. Possibly a side-
> effect of your dates being in the distant past?
Date has been corrected since two days ago.  It will remain until a 
reboot....
Ignorance, though, might be bliss...

> Every now and again I come across somebody who tries to distinguish 
> between "call by foo" and "pass by foo", but nobody has been able to 
> explain the difference (if any) to me.
I think the "Call by foo" came into vogue around the time of C++; Eg: 
It's in books like C++ for C programmers;  I never saw it used before 
then so I *really* don't know for sure...

I know "Pass by value" existed all the way back to the 1960's.  I see 
"pass by" in my professional books from those times and even most newer 
ones; but I only find "Call by value" in popular programming books of 
more recent times.  (Just my experience)  So -- I "guess" the reason is 
that when invoking a subroutine, early hardware often had an assembler 
mnemonic by the name "call".

See for example: Intelx86 hardware books from the 1970's;

Most early processors (like the MC6809E, and 8080) allow both direct and 
indirect *references* to a function (C would call them function 
pointers); So, occasionally early assembly programs comment things like: 
"; dynamic VESA libraries are called by value in register D.";  And they 
meant that register D is storing a function call address from two or 
more vesa cards.  It had little to do with the function's parameters, 
(which might be globals anyway)  (It procedural dynamic binding!)

Today, I don't know for sure -- so I just don't use it.
"pass" indicates a parameter of the present call; but not the present 
call itself.




More information about the Python-list mailing list