'join' in the wrong word for the method in class Thread.

Benjamin musiccomposition at gmail.com
Sat Mar 15 22:28:32 EDT 2008


On Mar 15, 7:29 pm, castiro... at gmail.com 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'.




More information about the Python-list mailing list