On Mar 15, 7:29 pm, [EMAIL PROTECTED] wrote: > 'join' in the wrong word for the method in class Thread. > > The agent-patient semantics of calling functions can get ambiguous. > It is not a problem of native Pythoners alone. Is it due to lazy > programming, an inability of English (do you have it in other > languages?), or not a problem at all? This is what Java uses, and Python's threading module tries to imitate it. > > th1.join() doesn't mean, 'do something to th1', or even, 'have th1 do > something to itself.' In fact, if anything is doing anything > differently, taking waiting to be doing something different, it's the > caller. > > Translating literally, > > th1.join() -> join me here, th1. > > And, > > file1.close() -> close yourself, file1. > > But not, > > th1.join() -/> join yourself, th1. > > Worse, > > lock1.wait() -/> wait, lock1. (For what?) > > Furthermore, in toolbars: > > File -> Open -/> file an open. > > and: > > File -> Load -/> load a file. (It means, load the computer.) > > In English, the placements of identifiers isn't consistent. IOW, > there isn't a syntactic mapping into natural language sentences. > (Though you can do it in Latin, German, Sanskrit, and Russian with > case markers*.) What are the true literals? What's doing what? > > th1.join() -> 'be joined by th1' > file1.close()-> 'close file1' > lock1.wait()-> 'getinlinefor lock1' > > And of course, 'open' isn't a method of File objects at all. The > closest is, 'be loaded by file1'. > > Assuming speakers** of classical computer languages use OVS order-- > object-verb-subject***, the most literal transformations are: > > th1.bejoinedby() > file1.close() > lock1.getinlinefor(). > > The mapping of identifiers to English isn't consistent. It takes some > knowledge to read them-- shuffle an English sentence and it changes > meaning. > > Functional languages are one long sentence: True.**** Declarative > ones tell a story. ('th1' joins him.) Imperatives command an > impartial audience. > > What do the docs say about it? > > ''' > Thread.join([timeout]) > Wait until the thread terminates. This blocks the calling thread until > the thread whose join() method is called terminates - either normally > or through an unhandled exception - or until the optional timeout > occurs. > > When the timeout argument is present and not None, it should be a > floating point number specifying a timeout for the operation in > seconds (or fractions thereof). As join() always returns None, you > must call isAlive() after join() to decide whether a timeout happened > - if the thread is still alive, the join() call timed out. > > When the timeout argument is not present or None, the operation will > block until the thread terminates. > > A thread can be join()ed many times. > > join() raises a RuntimeError if an attempt is made to join the current > thread as that would cause a deadlock. It is also an error to join() a > thread before it has been started and attempts to do so raises the > same exception. > ''' > > The natural language meaning of 'join' isn't used. Do benevolent > dictators do this? What do malevolent ones call themselves? > > *Latin, German, Sanskrit, and Russian can do it. Latin, German, > Sanskrit, and Russian -speakers- can do it. > **It would be interesting to try to learn a language without ever > speaking it. > *** English is SVO, subject-verb-object. French is too, unless the > object is direct: subject- direct-object -verb. > **** The sum of the first three integers in the last two files, sorted > alphabetically, in 'c:\programs'.
-- http://mail.python.org/mailman/listinfo/python-list