Не жду, что вы согласитесь безоговорочно, но надеюсь, что не ответите сразу «нет»: самое интересное в цифровой технике — её столкновение с реальностью, повседневностью, когда рождаются вопросы и проблемы, не имеющие формального доказательства, однозначной оценки.
Возьмите секрет успеха: клоны приснопамятной Flappy Bird исчислялись тысячами, но зажечь вторую «звезду» так никому и не удалось. Или интуицию: как она работает, как устроена — и как ИИ, который этому прямо не учили, смог интуицию выработать и применить, обыграв человека в го? А дилемма красоты и красивости — когда машина претендует на понимание «удачного кадра» и либо безжалостно правит отснятое человеком, либо вовсе отбирает у нас камеру?
Список этот можно продолжать и он, конечно, продолжится, по мере того, как техника забирается всё глубже в нашу жизнь. Но сегодня хотелось бы остановиться лишь на одной из обозначившихся таким образом тем — вызвавшей нешуточный спор этой весной и летом. Речь как раз шутках.
Пару-тройку месяцев назад один из участников проекта glibc (это один из самых популярных программных продуктов: open source-реализация главной библиотеки языка C, используемая в том числе в Linux) обнаружил в исходных текстах фрагмент, показавшийся ему может быть неприличным, наверное неуместным, но главное — бесполезным! Фрагмент этот звучал следующим образом (вольный перевод с английского мой — Е.З.): «Поправки к федеральному законодательству могут в будущем помешать нам информировать вас о возможности вызова этой функции или потребуют уточнять, что данная функция не является социально-приемлемым способом остановки программ».
Вырванная из контекста фраза звучит непонятно, но достаточно сказать, что находится она в теле функции abort(), как всё встаёт на свои места. Очевидно кто-то из предыдущих авторов решил… ну, скажем, не посмеяться, но остро пошутить в адрес зарвавшихся законодателей, а заодно и религиозных фанатиков, действия которых могли привести если не к запрету, то к ограничению обсуждения искусственного прерывания беременности. Попросту говоря, некий программер пошутил насчёт цензуры.
Понятно, что это шутка: конечно, ограничивать программистов в названиях функций никто не станет. Понятно, что шутка вовсе не про аборты как таковые: это шпилька в адрес политиков и «экстремистов веры», покусившихся на свободу слова и права человека. И тем не менее случилось то, что случилось: комментарий было предложено убрать — и его убрали уже в следующей ревизии.
Случившееся уже само по себе достойно вызвать улыбку: ведь «зацензурили» насмешку над цензурой! Но дискуссия, разгоревшаяся сперва среди разработчиков glibc, а после выплеснувшаяся и на популярные технофорумы, оказалась вовсе не смешной. А тон задал не кто иной, как Ричард Столлман собственной персоной.
Этот колоритный дядька — один из отцов-основателей всего движения свободных исходников. Не в последнюю очередь его усилиями заложен правовой и технический фундамент под желание некоторых людей распространить принцип свободы слова на софт (на случай, если вы никогда не слышали, см. «Имею право!»). И, как и другие классики, он многое сделал своими руками — сейчас его труды по большей части собраны под крышей проектов FSF и GNU.
Столлман не является автором собственно glibc, но напомнил, что для всех субпроектов в GNU (в том числе и glibc) он был и остаётся своего рода главным руководителем, оставляя за собой право корректировать действия разработчиков, чтобы они шли согласно с политикой GNU. А вот автором скандального комментария в glibc был именно он — это он вставил его собственноручно ещё двадцать лет назад. И теперь потребовал вернуть удалённый текст в программу — и его вернули конечно. Но в результате разгорелся спор между сторонниками двух диаметрально противоположных мнений.
Одна группа настроена резко против конкретно этой и всех подобных шуток. Кто знает, говорят они, кому попадут в руки исходники, кому и с каким настроением доведётся их изучать? В лучшем случае шутку просто не поймут — как среднестатистический гражданин России, например, где цензура пока ещё не забралась так глубоко. В худшем — не оценят или оценят неверно, истолковав её в контексте ущемления прав верующих, сочтя за оскорбление тех, для кого тема смерти священна или связана с травмирующими воспоминаниями, и т.п.
И перечень возможных последствий тогда чрезвычайно широк: от неприятного разговора с начальством до увольнения, потери клиентов, уголовного преследования. Тем более, что прецеденты известны — возьмите хоть рассказанную бывшим сотрудником HP историю, как случайная цитата из комикса («Так бы и сжёг вас всех красочным термоядерным зарядом!»), показанная скринсейвером, послужила причиной обвинения в экстремизме и потери работы.
Но даже и без этого, с точки зрения противников «шуток на рабочем месте», юмор в исходных текстах выглядит непрофессионально. Такое впечатление, мол, что писали этот код не взрослые люди, а заигравшиеся школьники! Оставьте то, что вам кажется смешным, для друзей — а в программный продукт, работающий на сотнях миллионов машин (может быть миллиардах — тем более!), пропускайте только то, что имеет отношение к делу.
Столлман парирует, что сегодня шутка даже более актуальна, чем во времена, когда была придумана. Давление государства (напомню, речь о США) и противников абортов снова очень сильно: клиники, информирующие пациентов о праве на аборт, лишают государственных дотаций… Но Столлман исходит из предположения, что шутки в коде вообще имеют право на жизнь — что не очевидно для многих из его оппонентов в данном споре. К счастью, нашлись те, кто поддержал Ричарда, добавив аргументов.
Прежде всего не нужно забывать, что речь о свободном программном обеспечении. Люди трудятся над ним в значительной степени из интереса, на голом энтузиазме. И вознаграждением за труд служит не только результат, но и такая эфемерная штука, как удовольствие, получаемое в процессе разработки. А получение удовольствия для большинства предполагает в том числе и свободу шутить.
Непрофессионально? Может быть. Но open source никогда и не был «профессиональным» в полном понимании этого слова: движение свободных исходников выросло из хакерского движения — хаотичного, неконтролируемого, щедрого. Хакеры возятся с кодом, ломая его там и здесь, сшивая на грубую нитку, чтобы посмотреть, что получится — и их труд не профессионален, потому что не может быть таковым в принципе! Может быть именно поэтому хакеры произвели на свет такие продукты, как Linux, Facebook, Bitcoin.
Потом, шутки в коде часто всё-таки играют некоторую полезную роль. Помните «Ошибку 418: Я чайник!», придуманную в качестве первоапрельского розыгрыша? Сегодня она реализована во множестве серверов — и заставляет пользователей чесать затылки, когда (регулярно!) они на неё натыкаются. А натыкаются почему? Потому что на 418-ю ошибку принято вешать нераспознанные проблемы. Если что-то в программе пошло не так и она не знает, как классифицировать происходящее, то как раз и может выбросить «Error 418», а разработчики, получив такое, сразу понимают, что проблема заслуживает особого внимания.
Наконец, поиск спрятанных несерьёзных сюрпризов составляет особое удовольствие и для разработчиков, и для пользователей (которым такие сюрпризы известны как «пасхальные яйца»). Но одним нравится наблюдать, как перекашивает «Гугл» от запроса «askew», а другим — считать, сколько раз употреблены бранные словечки в исходниках ядра Linux (а там, простите, одного только «дерьма» больше полутора сотен!). Несерьёзности делают код живым, рутину программинга менее скучной, пользование весёлым. Гарантий, что очередная шутка будет понята правильна, конечно, никто дать не может — но так и вообще программное обеспечение гарантиями не комплектуется.
И не думайте, что авторы проприетарного софта что-то такое гарантируют или что, по причине якобы большего профессионализма, избегают шутить. Вот, вспомните, как это было в коде Microsoft в эпоху, когда она ещё была способной на великие дела: стихи, шуточки религиозного толка, непечатное в комментариях и названиях функций и прочее обычное. Профессионалы тоже люди!
В этом споре лично я на стороне тех, кто отстаивает право шутить без ограничений. Но противников должен обнадёжить. Пройдёт ещё какое-то время, программы станут писать сами машины — и тогда очень быстро машинный код станет нравственно чистым, политкорректным, математически правильным. Искусственному программисту юмор без надобности. Он исключит его именно по причине бесполезности — максимизируя функцию качества f, зависящую от длины кода l, риска неправильного понимания n и сложности алгоритма k…
Но пока за клавиатурой нас не сменила машина — руки прочь от святого!