On Wed, Sep 26, 2018 at 11:33 PM Ian Kelly <ian.g.ke...@gmail.com> wrote: > > On Wed, Sep 26, 2018 at 2:01 AM David Palao <dpalao.pyt...@gmail.com> wrote: > > > > Hello, > > My opinion is that the terms "master/slave" describe well some situations. > > They could be seen by some people as offensive (although unfortunately > > sometimes true, even today) when applied to persons. But it is not > > offensive when applied to processes in a computer. They are not living > > entities. > > > > I would say that when talking about programming, the terms have a > > perfect meaning. > > Care to give an example? The distinctive part of the definition of > "slave" is that it refers to someone who is owned and/or held captive, > and forced to work against their will. I can think of no situation in > programming in which the word is particularly apt, because the trait > of "lack of freedom" is just not something that comes up. There is > always a word choice available that is not only more sensitive, but > more accurate as well.
Lack of freedom? That's exactly what happens *frequently* in any job-farming situation. For instance, suppose you have an embarrassingly parallel task to perform - let's say it's some kind of search for correctness, where as soon as you attempt something, you know whether it's correct or not. (Examples include crypto, searching for prime numbers, finding patterns, etc, etc.) A master process hands out tasks to slave processes; the slaves have no freedom, but must simply do as they're told. Or you can slave a number of backup database servers to a master, where the master is in charge of everything, and the slaves simply follow orders, thus creating perfect replicas. While it's sometimes correct to talk about "primary" and "replica", it's also accurate to describe *all* the nodes as replicas (since they're all identical); and it's entirely possible to have more than one master, so there isn't really a "primary". So there certainly are situations in which "slave" is absolutely precisely correct. Technically, *all* computers lack freedom. But in order to make a useful distinction here, it's easiest to define "slave" as something that follows the orders of another program, having no *human* interaction - in other words, "autonomy" really means "taking orders from a human". So it's really a hierarchy, with humans at the top, and a cascade of masters giving orders to slaves, and sometimes those slaves are themselves the masters of other slaves. (Consider the Gospel of Matthew, chapter 8, in which Jesus talks to a centurion about the meaning of authority; the centurion, being a military man, understands that being a master does not mean he never takes orders.) The terms "master" and "slave" refer to a specific relationship between two programs or machines, just as "server" and "client" do (my program could be an X11 client and an HTTP server, for instance). Actually, "server" literally means the same thing as "servant" or "slave", and the only reason it hasn't been excised from the language is that somehow the non-offensive meaning has become sufficiently dominant that people would laugh at the implication that it should be removed. So rather than removing every trace of the word "slave", how about instead we go the other way: use it in so many contexts that it loses its sting everywhere except when referring to humans. In fact, make it such that a human slave is "a person being treated like a computer", and thus obviously lacking in basic human rights. ChrisA -- https://mail.python.org/mailman/listinfo/python-list