13 сентября 2018, 01:35

В программировании больше не будет «господ» и «рабов». Из Python убрали термины master и slave

Читать 360tv в

Популярный язык программирования Python в версии 3.8 лишится привычных терминов master («хозяин») и slave («раб») в угоду политкорректности. Вопрос о замене был поднят сотрудником компании Red Hat и одним из ключевых разработчиков продукта Виктором Штиннером. Проблема вызвала дискуссию в сообществе экспертов. Их мнения разделились.

Предлагаемое изменение — не прихоть одного разработчика, отметил Штиннер. По его словам, такова общая тенденция для разных языков программирования и технологий. В качестве примера он привел примеры схожих изменений в Redis, Drupal, CouchDB и Django. В двух последних произошла замена master и slave на leader («лидер») и follower («последователь»). При этом Штиннер предположил, что прежнюю терминологию можно сохранить для некоторых терминов, таких как ветка master в Git, веб-мастер и postmaster.

Реклама

Он отметил, что «поступали жалобы» на прежнюю терминологию, но все они были не публичными, а частными, чтобы не спровоцировать скандал. Будет хуже, если изменений потребуют власти, к чему уже были предпосылки. Так, в 2003 году отдел закупок департамента внутренних сервисов округа Лос-Анджелес разослал производителям электроники и бытовой техники требование избегать терминов master/slave в описании своей продукции. В 2004 году группа мониторинга Global Language Monitor признала master/slave самым политически некорректным термином года.

Часть специалистов согласились с тем, что master и slave ассоциируются с неравноправием и нарушением прав человека. Другие подчеркивали, что даже по сути своей они не могут считаться оскорбительными в политическом смысле, поскольку являются всего лишь общеупотребительными словами английского языка. Такое мнение, к примеру, высказал разработчик Раймонд Хеттингер. По мнению части экспертов, замена понятий будет сбивать с толку разработчиков и отрицательно скажется на обратной совместимости.

Разработчик Ларри Хастингс остался недоволен тем, что Штиннер предложил исправления в виде пул-реквестов. Это, по его мнению, противоречит традиционно открытой модели управления языка Python, при которой все проблемы подлежат публичному обсуждению.

Поддержавшие идею замены терминов, предложили вместо master использовать parent («родитель»), main («главный»), а slave заменить на server («исполнитель»), child («ребенок») и worker («работник»). Четыре из пяти вариантов предложил Штиннер.

Окончательное решение о замене осталось лично за создателем Python Гвидо ван Россумом. Ему пришлось сделать это, несмотря на намерение сложить с себя полномочия пожизненного руководителя проекта. Из пяти предложенных вариантов в итоге утвердили только четыре, поскольку пятый имеет отношение к терминологии UNIX ptys, на которой базируются сторонние проекты.

В качестве примеров изменений приводятся следующие:, master process заменят на parent process, master option mappings — на main option mappings, а master pattern object — на main pattern object. В модуле ssl вместо master будет использоваться server, а в pty.spawn() вместо параметра master_read будет применяться parent_read.

Метод pty.slave_open() получил название pty.child_open(), при этом из-за обратной совместимости вызов pty.slave_open решили сохранить без изменений. Параметры master_fd и slave_fd в os.openpty() и os.forkpty() стали называться parent_fd и child_fd соответственно.

Новые названия внутренних переменных master_fd, slave_fd и slave_name стала выглядеть как parent_fd, child_fd и child_name соответственно. Опция --slaveargs примет вид --worker-args, а функция run_tests_slave() теперь выглядит как run_tests_worker().

Стоит отметить, что «неполиткорректная» терминология уже стала частью современного языка и вряд ли от нее можно полностью избавиться. Так, Дэвид Гребер в своем произведении «Долг: первые 5000 лет истории» привел пример понятий «dominium» (доминиум) и «familia» (семья).

Первый термин происходит от слова «dominus», означающего «хозяин», или «рабовладелец», однако восходит к слову «domus» — «дом», или «хозяйство». С ним же связан английский термин «domestic» («домашний»), который также используется в значении «относящийся к частной жизни» или обозначает слугу, убирающего дом. «Domus» перекликается со словом «familia» («семья»), которое происходит от слова «famulus» («раб»). Изначально под семьей понимались люди, подчинявшиеся абсолютной, по римскому праву, домашней власти «pater familias». Мужчина мог распоряжаться своими детьми и рабами, как ему хотелось.

Получается, что даже термины «семья», «фамилия» и понятие частной собственности можно объявить неполиткорректными, как имеющие отношение к рабству. Но все они прочно вошли в современные языки, и об их происхождении люди, как правило,не задумываются.

Напомним, Python в настоящее время остается одним из самых широко используемых в мире языков программирования. Он идеален для новичков, но нашел применение в серьезных проектах, таких как YouTube, Instagram и Dropbox.

Реклама

Реклама