13 июня 2017 г.

Just for Fun. Рассказ нечаянного революционера

Моё первое мимолетное знакомство с операционной системой Linux произошло во времена моей учебы в институте, когда один из преподавателей включил в свой курс информацию по современным на тот момент процессорам и операционным системам.

Как я уже писал в одном из постов, в администрирование SAP систем я ввязался только в 2002 году. А до этого меня привлекали операционные системы, и Unix в частности.

Так вот, когда я учился в институте информацию приходилось добывать по крохам, доступа к сети Интернет у меня тогда не было. Поэтому на Linux в институте я внимания не обратил, да и эта ОС тогда только становилась на ноги. Зато после, когда я устроился на свою первую основную работу, я оценил все его прелести, установив себе на рабочие станции на работе и дома Alt Linux.

В 2004 году, когда я переехал в Москву, я окончательно им заболел, читая запоем книги о нём, устанавливая различные дистрибутивы на личный и рабочий компьютеры. Помню, долго моим любимым дистрибутивом был Slackware. Дистрибутив, к слову, до сих пор живой (Слава Патрику!). О, сколько раз я сносил разделы и ломал разметку своего диска, играясь с загрузчиком и пробуя различные версии дистрибутивов. :)

Одна из первых книг, которую я с удовольствием купил и прочитал, была "Just for Fun" Линуса Торвальдса и Дэвида Даймонда. Книга рассказывает о финском хакере (увлеченном программисте), который в своей каморке создал ядро Linux.

Недавно я перечитал эту книгу. Только перечитывая книги, я вдруг понимаю, как я поменялся за последние 5-7-10 лет. Некоторые вещи воспринимаются совершенно по-другому. Некоторые книги, например, материалы SAP курсов, воспринимаются с новой глубиной. При первом прочтении обычно пытаешься уяснить основную идею, понять общую картину. При повторных прочтениях глаз натыкается на интересные детали, фишечки, нюансы. Появляется глубина.  А иные книги читаешь повторно, как в первый раз. Так было и в этот раз. Основная история мне знакома, а вот нюансы, детали заиграли новыми красками.

Кусочки из книги:
  1. Смысл жизни от Линуса Торвальдса:

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


  2. Описание концепции Unix (потрясающе описано, на мой взгляд):

    "    Unix характерна тем, что она утверждает некоторые базовые ценности. Это цельная и красивая операционная система. Она избегает особых случаев. В Unix есть понятие процесса: процесс - это все, что что-нибудь делает. Простой пример. В Unix команда оболочки, которую  вводят, чтобы  войти в систему, не встроена в операционку, как в DOS. Это просто задание. Ничем не отличающееся от остальных. Просто это задание читает с клавиатуры и пишет на монитор. В Unix все, что что-то делает, - процесс. А еще там есть файлы.
        Простота структуры Unix всегда поражала меня, как и  большинство  людей (ну по крайней  мере - нас, хакеров). Почти все, что делается  в Unix, выполняется  с  помощью шести  базовых операций (называемых "системными вызовами", потому что они представляют из себя вызовы системы для выполнения тех или иных действий), А уж из этих шести  базовых  вызовов можно построить почти все на свете.
        Одной из фундаментальных операций Unix является "операция  порождения (fork)".  Выполняя "fork", процесс создает свою точную копию. Таким образом вы получаете две идентичные копии. Порожденная  копия чаще всего выполняет другой  процесс - заменяет себя новой программой. Это вторая базовая операция. Оставшиеся четыре вызова - open (открыть), close (закрыть), read (читать) и write (писать) - предназначены для доступа к файлам. Эти шесть системных вызовов представляют  собой простые операции, из которых и состоит Unix.
        Конечно, есть еще куча других системных вызовов, которые осуществляют детализацию. Но если  вы  поняли шесть базовых - вы поняли Unix. Потому что одна из прелестей Unix в том, что для создания сложных вещей не нужны сложные интерфейсы. Любого уровня сложности можно достичь за счет сочетания простых вещей. Для решения сложной проблемы нужно лишь создать связи ("каналы" в терминологии Unix) между простыми процессами.
        Уродство, когда для любого действия у системы есть специальный интерфейс. В Unix - все наоборот. Она предоставляет строительные блоки, из которых можно создать что угодно. Вот что такое стройная архитектура.
        То же самое с языками. В английском 26  букв, и с их помощью можно написать все. А  в китайском для  каждой мыслимой  вещи -  своя буква. В китайском вы сразу же получаете в свое  распоряжение сложные вещи, которые можно комбинировать ограниченным образом. Это больше напоминает подход VMS: есть множество сложных   вещей с интересным смыслом, которые можно использовать только одним способом. И в Windows то же самое.
        В Unix, напротив, основная идея: "Чем меньше, тем красивее". Здесь есть небольшой набор простых базовых строительных блоков, из которых можно строить бесконечно сложные конструкции.
        Именно так, кстати, обстоит дело и в физике. Эксперименты  позволяют открыть фундаментальные законы, которые, как предполагается, крайне просты. Сложность мира возникает за счет множества удивительных взаимосвязей, которые можно вывести из этих простых законов, а не из внутренней сложности самих законов.
        Простота Unix не возникла сама по себе. Unix со своей концепцией простых строительных  блоков была кропотливо разработана Деннисом Ричи и Кеном Томпсоном в Bell Labs компании AT&T.  Простоту вовсе не следует отождествлять с легкостью. Простота требует проектирования и хорошего вкуса.
        Если вернуться к примеру с языками, то пиктографическое письмо - например, египетские или китайские иероглифы - обычно древнее и кажется "примитивнее", а подход, использующий строительные блоки, требует гораздо более абстрактного мышления. Точно так же и простоту Unix не следует путать с отсутствием изощренности - совсем наоборот."


  3. Про статью Билла Джоя (ведущего разработчика BSD Unix):

    "    Я беру журнал "Wired" и вижу там его жутко негативную статью о техническом прогрессе под заголовком "Будущее в нас не нуждается". Я был разочарован. Ясно, что будущее в нас не нуждается. Но в этом нет ничего ужасного.
        Не хочу разбирать его статью строчку за строчкой, но я думаю, что самым печальным для  человечества было  бы продолжать жить как живется, избегая дальнейшего   развития. Видимо, Билл считает, что достижения вроде генетической модификации приведут нас к потере человеческого начала. Всем кажется, что всякое  изменение античеловечно, потому что вот сейчас-то мы люди. Но  если мы будем продолжать развиваться, то в любом случае через 10 тысяч лет мы  не будем людьми по сегодняшним стандартам. Человечество просто примет другие формы.
        В статье Билла звучит его страх перед этим фактом. А по-моему, пытаться ограничивать эволюцию - противоестественно и бесполезно. Вместо поисков двух собак, способных произвести  необходимое потомство, мы, безусловно, обратимся к генетике; кажется неизбежным, что то же самое коснется и людей. Мне кажется, лучше изменить человеческую породу с помощью генетики, чем оставить все как есть. Я думаю, что в широком смысле гораздо интереснее способствовать эволюции не самих людей, а общества в целом, в каком бы направлении оно ни шло. Нельзя остановить технический прогресс и нельзя остановить развитие наших знаний о том, как работает наша вселенная и как устроены люди.  Все меняется так быстро, что некоторых людей, как и Билла Джоя, это пугает. Но мне это представляется частью естественной эволюции."


  4. Про идеалистов и компромиссы:

    "   Кстати говоря, сам я никогда не причислял себя к идеалистам. Конечно, с помощью открытых исходников я стремился  сделать мир лучше. Но  прежде всего они приносили мне удовольствие. Какой уж тут идеализм!
        Идеалисты  всегда  представлялись мне  людьми  интересными, но  немного занудными, а иногда и опасными.
        Чтобы  твердо  придерживаться какого-то мнения,  нужно заведомо отмести все остальные. А это значит, что человек становится неподвластен  убеждению. По мне, именно этим американские политики хуже европейских. По  американской версии игры важно провести разграничительные линии и отстаивать свою позицию до  упора. Европейские же  политики  стремятся выиграть,  демонстрируя  свою способность наладить сотрудничество.
        Лично я  сторонник компромиссов.  Я  боялся коммерциализации  только  в самом начале, когда Linux была  никому не  известна. Если  бы  в тот момент коммерческие организации  захватили  Linux, я бы  ничего не смог сделать. Но теперь все явно переменилось. В  1998  году  в  телеконференции  было много криков о  том, что коммерческие участники не станут соблюдать  правила игры. До некоторой степени я был  вынужден  просто  доверять новым  корпоративным игрокам  так же, как разработчики Linux  доверяли  мне.  И они доказали, что доверять  им  можно.  Они ничего  не  зажимали.  До  сих  пор  опыт  весьма позитивный."


  5. Про мораль и моралистов:

    "    Издали я восхищаюсь Ричардом Столманом по множеству причин. И вообще мне нравятся люди  с твердыми моральными принципами, как  Ричард. Но почему  они не могут держать эти принципы при себе? Больше всего  я не  люблю, когда мне говорят, что делать и чего не делать. Я полностью отвергаю людей, которые полагают, что имеют право влиять на мои решения. (Кроме, возможно, моей жены.)
        По  ходу  разработки  Linux  некоторые корифеи,  вроде  Эрика Реймонда, утверждали, что успех этой  операционной системы и жизнеспособность модели с открытыми исходниками отчасти объясняются моим прагматичным подходом и  моей способностью не принимать  ничью  сторону во время  споров. Пусть Эрик самый лучший популяризатор идеи  открытых исходников  (хотя я категорически против свободной продажи  огнестрельного оружия, к которой он призывает), я думаю, что он не совсем правильно меня  воспринимает.  Дело не в  том, что я  не становлюсь  ни  на  чью сторону.  Я  просто решительно  против  навязывания окружающим   своей  морали. Вместо  "морали"  можно  поставить   "религии", "компьютерных предпочтений" и вообще что угодно.
        Если навязывать  мораль неправильно,  то вдвойне неправильно утверждать ее законодательно. Я  глубоко верю в свободу личного выбора и поэтому думаю, что в вопросах морали я должен принимать решения сам.
        Я  хочу решать  сам.  Я  решительно  против  ненужных  правил,  которые навязывает общество. Я убежден, что в своем собственном доме человек должен иметь  право делать что угодно - до  тех пор, пока это никому не  вредит. Всякий закон, утверждающий  иное, -  это очень, очень плохой закон. А законов, утверждающих иное, весьма много. Многие правила меня  пугают. Особенно те, что распространяются на школы и детей. Только представьте себе, что   кто-то  решит  установить  правила  обучения эволюции и двинется  в неправильном направлении. Это я считаю опасным. Это общественная мораль сует свою морду туда, где ей совершенно нечего делать.
        В то же время  я  лично считаю,  что есть  кое-что поважнее меня и моих нравственных решений. Я  имею в виду даже  не человеческий  род, а эволюцию. Поэтому в  своих решениях я стараюсь  учитывать  интересы общества.  Но это, возможно, встроенная функция. Думаю, это встроено в человеческую природу  в интересах эволюции - принимать во внимание общественные интересы. Иначе бы нас давно не было.
        Бурный   протест  вызывает у меня еще только одна вещь: любители нравоучений. Никто не должен считать себя вправе выступать с проповедями."


  6. Про технологии, эволюцию и будущее:

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


  7. Про открытые исходники и мотивацию:

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

Получилось много. Но лучше, конечно же, прочитать саму книгу. Я не сторонник бумажных книг, но эта у меня стоит на полке. В электронном виде книга лежит свободно (как и сама Linux), например, тут.

Комментариев нет:

Отправить комментарий