Уолл, Ларри

Материал из Letopisi.Ru — «Время вернуться домой»
Перейти к: навигация, поиск

Ларри Уолл (Larri ) - создатель языка Perl

Wall L., 1999, Diligence, Patience, and Humility in: Open Sources: Voices from the Open Source Revolution, 1st Edition January 1999, Available: http://www.oreilly.com/catalog/opensources/book/larry.html


Прилежание, Терпение и Смирение

У нас в сообществе языка Перл любят высказывания. Одно из таких высказываний гласит: "Всегда есть несколько способов сделать что-то". Это справедливо для языка Перл. Это справедливо и вне этого языка. Это справедливо и для сообщества OpenSource. Я не буду рассказывать как это работает в OpenSource, потому что это было бы все равно, что рассказывать об устройстве английского языка, но я расскажу как это работает в Перле.

Есть и другое высказывание: Три важнейшие добродетели программиста - лень, нетерпение и гордость. Всем великим программистам Перл свойственны эти качества. Они свойственны и разработчикам Открытых Программ. Но в этом тексте я буду говорит о других ценностях - прилежании, терпении и смирении. Если вы думаете, что это звучит как противоречие, то вы правы. Если вы думаете, что одно и то же сообщество не может придерживаться противоречивых ценностей, то вам следует побольше поработать с Перлом. В конце концов, для того чтобы сделать что-то всегда существует не один способ.

Письменные языки вероятно начались с нетерпения. Или с лени. Без письменного языка для того, чтобы общаться с другими людьми, вы должны были лично встречаться с ними или посылать к ним гонца с вашим устным посланием. При этом не было другого способа знать, что говорилось раньше, кроме как вспомнить. Но письменные языки дали людям символы, которые могли замещать образы вещей, если сообщество сможет согласиться относительно значения этих символов. Язык требует согласия. Это область, в которой группа людей согласна придерживаться общих правил. Короче, язык - это символы, которые объединяют сообщество.

Вот изображение реальности:
ose.02.gif

Как вы знаете, реальность это - помойка. Эта картинка может быть использована для изображения массы вещей. Это молекулы, которые носятся в воздухе. Изображение экономики. Изображение отношений между людьми в аудитории. Изображение устройства естественного языка. Изображение информационной системы любой компании. Изображение Всемирной Паутины. Изображение хаоса и сложности. Изображение того, как устроен Перл, поскольку Перл во-многом устроен как модель естественного человеческого языка. Причина сложности человеческих языков в том, что они иметь дело с реальностью. Мы все имеем дело с реальностью так или иначе. И все мы упрощаем. Иногда даже через-чур.

Наши предки через-чур все упрощали. Они обманывали себя тем, что Бог своздал только круги и сферы. Они думали, что Господь всегда предпочитает простоту, а не сложность. Когда они обнаруживали, что реальность сложнее, чем они думали, то он просто прятали эту сложность под ковром дополнительных объяснений. Таким образом они порождали необязательную сложность. Это важный момент. Действительность сложна, но это полезная сложность.

Факты показывают, что люди и сегодня продолжают чрезмерно упрощать. Многие создатели компьютерных языков чрезмерно упрощали свои языки и в результате сложность реального мира пряталась под ковром программ.

Естественная привычка человека - находить шаблоны в шуме, но когда мы ищем эти образцы, то порой мы находим их там, где их нет на самом деле. Но, это не значит, что образцов нет на самом деле. Если бы мы имели волшебную палочку, которая могла бы подавить шум, то мы бы получили чистый сигнал или чистую форму в виде окружности, квадрата или треугольника. И если мы знаем все эти формы, то нам легко выделить их из окружающего мира. Наш мозг легко делает эти операции. Теперь вы можете спросить что общего все это имеет с Перлом. Дело в том, что наши мозги как бы устроены так, чтобы программировать на языке Перл. Все мы устроены так, чтобы превращать сложное в простое и Перл просто одно из средств, которое может нам в этом помочь, точно так же как мы используем для этого упрощения реальности обычный язык. Мы можем использовать естественныйй разговорный язык, потому что язык это помойка.

Это важно, хотя и не так просто понять. Язык можно использовать, потому что он является свалкой и помойкой. Поскольку Язык (Английский) это помойка, он сопрягается с проблемной областью, которая так же является свалкой, которую мы называем реальностью. Соответственно и язык Перл был разработан для того, чтобы быть свалкой - хотя и самой чудесной.

Мы приучены ценить простоту и красоту. Это чудесно. Но, и сложность не всегда является нашим врагом. Важно то, как мы связываем простоту и сложность. Нам всегда необходим определенный уровень сложности для того, чтобы выполнить определенную работу. Так космический корабль состоит из семи миллионов частей и все они выполняют работу. Это не совсем верно, поскольку некоторые их этих частей были излишни. Но, это излишество было абсолютно необходимо для того, чтобы выполнить работу по доставке человека на Луну в 1969 году. То же справедливо и в отношении языка, некоторые части которого избыточны и не используются. Но, это не значит, что они не нужны. Они просто ждут своей очереди.

Мы обманываем себя, если говорим "Это излишество", имея в виду "Это не нужно". Излишество не всегда означает ненужность, говорите ли вы о космических кораблях, человеческом языке или языке программирования. Зачастую упрощение мешает успеху. Иногда сложность бесполезна, а иногда полезна.

Другой пример полезной сложности - Китайский Иероглиф. Для тех, кто воспитан в системе западной письменности, этот иероглиф может показаться избыточно сложным. Однако, это еще один пример инженерного решения - в данном слуя Китай обменивает простоту в обучении на простоту переносимости. Китайский не является одним языком. В нем не менее пяти основных языков, каждый из которых вполне самостоятелен. Тем не менее, вы можете написать на любом китайском языке и затем прочитать написанное на другом. Это и называется переносимым или портируемым языком. Выбирая высокий уровень абстрактности Китайская система письменности выбирает в пользу большой сложности, но и большой открытости для коммуникации. В Китае живет околло миллиарда человек и многие из них не могут говорить друг с другом, но все они могут обмениваться письменными сообщениями. Так же и компьютеры могут посылать сообщения друг другу.

Большинство моих размышлений в этом году было связано с Юникодом и XML. Десять лет назад Перл был достаточно хорош для обработки текстов. Сейчас он стал даже лучше для этих целей, если иметь в виду старое определение текста. Однако само значение слова "текст" с тех пор значительно изменилось. Вы можете видеть это на примере тех изменений, которые происходят с сетью Интернет. Когда вы нажимаете кнопки и стрелки в вашем броузере, то компьютеры начинают обмениваться сообщениями. И они хотят посылать эти сообщения преодолевая границы между различными культурами. Так же как Вы хотите понимать, что означают изображения на Вашем экране, так и компьютеры хотят понимать, что значат эти значки, потому что компьютеры хотят точно знать, что вы от них требуете. Потому что компьютеры может и глупы, но всегда исполнительны. Ну, почти всегда.

И для того, чтобы компьютеры понимали записи друг друга, на сцене появляются Юникод и XML. Юникод - набор универсальных знаков, так что с помощью этого набора компьютеры могут передавать сообщения друг другу и существует значительная вероятность того, что они сделают это верно. Некоторые из знаков Юникода связаны с различными национальными символами, так как это сделано в ASCII, но никто в мире никогда не учил этих знаков и этих языков. Никто и не ожидает, что вы будете их учить. Дело не в этом.

Вот в чем дело. Например, существуют два названия одного и того же объекта. Одно из них на английском и оно может быть представлено в виде ASCII символов, а другое на китайском. Если ваш броузер поддерживает Unicode, то вы сможете прочитать китайские иероглифы. Год назад эта проблема не была решена и все что вы могли сделать это вставить на место китайской надписи картинку GIF. Но, с картинками всегда существуют проблемы. Например, вы не можете скопировать в буфер текст из картинки.

В культуре Перл очень мало запрещенных вещей. Мне кажется, что в остальном мире слишком много запретов, так что зачем изобретать новые? Это касается не только программирования, но и межличностных отношений. Мне часто предлагают исключить кого либо из Перл сообщества за то или иное нарушение, но я всегда отказываюсь. Я считаю, что это правильная политика. По крайней мере, она до сих пор срабатывала на уровне практики. Нарушитель либо сам покидал сообщество, либо приучался взаимодействовать с другими более конструктивно. Это странно.

Люди инстинктивно понимают , что лучший способ для компьютерных программ для общения с другими программами, состоит в том, чтобы быть возможно более строгим к тому, что они передают сами, и быть как можно более либеральным к тому, что они получают от других программ. Странно то, что люди сами не хотят быть строгими по отношению к тому, что они говорят другим людям, и либеральными по отношению к тому, что они слышат от других людей.


Мы пытаемся поддерживать некоторые ценности в сообществе Перл. Как указал апостол Павел, никто не издавал законов против любви, радости, покоя, терпения, дружбы, нежности и самоконтроля. Так что вместо того чтобы запрещать зло, можно сосредоточиться на продвижении добра.

Персональные инструменты
Инструменты