Авторам языка программирования Python пришло сообщение от программиста Виктора Стиннера с просьбой заменить слова в коде. Он назвал оскорбительными слова master («хозяин») и slave («раб»), использующиеся для обозначения статуса функции: главная она или дочерняя.
Стиннер заявил, что спорные обозначения оскорбляют людей, чьи предки были рабами. В качестве альтернативных вариантов он предложил parent («родитель») и worker («работник»):
Tkinter and IDLE are full of "master" variables:
master: parent for widgets.
It seems to be a keep concept of Tkinter windows.
Автор обращения предлагает сделать эту замену не везде, а лишь в местах, где эти два термина стоят рядом. Если же они употребляются отдельно друг от друга, то проблем с восприятием не возникает.
Команда разработчиков языка начала бурное обсуждение замены. Одни выступали за инициативу Стиннера, ссылаясь на то, что многие убирают из своих языков слова, которые могут оскорбить программистов. Другие не увидели в спорных обозначениях ничего плохого.
В среде разработки Python открыт исходный код. Именно там в огромном количестве встречаются слова slave и master, которые стоят рядом друг с другом. Например:
STDIN_FILENO = 0 STDOUT_FILENO = 1 STDERR_FILENO = 2 CHILD = 0 def openpty(): """openpty() -> (master_fd, slave_fd) Open a pty master/slave pair, using os.openpty() if possible.""" try: return os.openpty()
Стиннер отметил, что просьбы об исключении оскорбительных слов поступают разработчикам не впервые, но непублично – чтобы избежать общественного резонанса.
В итоге создатель Python Гвидо ван Россум принял решение о замене слов на более политкорректные. Таким образом, вместо master в языке появятся parent/main/server(«родитель»/«главный»/«исполнитель»), а slave заменят на сhild/worker(«ребенок»/«работник»). При этом ван Россум отметил, что дискуссия может быть открыта снова, и появятся новые изменения.
Трудности перевода
Противники нововведений в ходе дискуссии подчеркнули, что в результате изменения слов код начнет выдавать ошибку. Например, документация Python не будет дублировать документацию Linux, а ведь именно в Linux используются термины master и slave. Замена же повлечет отклонение от стандарта Linux, и одни и те же функции в документациях будут обозначаются разными словами. Кроме того, под угрозой окажется работоспособность программ, написанных для старых версий языка в новых версиях.
Поступали предложения о компромиссе: оставить действующий порядок без изменений, пока термины не заменят в самой Linux. Но этих изменений дожидаться не стали, и нововведения вступят в силу с обновления Python 3.8. Спорные выражения будут встречаться реже, и программисты больше не найдут их рядом друг с другом.
Что у других?
Разработчики Python оказались не единственными, у кого возникла такая проблема. В 2003 году департамент внутренних закупок Лос-Анджелеса разослал производителям уведомление с просьбой избегать термины master/slave в описании продукции. А в 2004 году компания Global Language Monitor назвала master/slave самыми не политкорректными терминами года.
Также эти термины убрали из фреймворка Django, основанного на Python, заменив их на leader («лидер») и follower («последователь»).
А какие операторы Python раздражают вас?