6 января 2015

Философия программирования 2 — Миф и язык

Программирование
def Миф и язык extends «трёхнаправленное программирование»;

Миф о том, что русские программисты лучшие в мире, запущен вовсе не партийными пропагандистами, он возник на перестроечной волне, вместе с мифами о хозяине-предпринимателе, невидимой руке рынка и ста сортах колбасы. Миф, это то, что человек не читавший взрослых книг называет «мем», а человек вообще не читающий, называет правдой. Передача «Разрушители мифов» берёт поверхностные мифы, которые можно легко опровергнуть, например, бросив бутерброд с маслом на пол тысячу раз. А вот Гордон, в одном из своих первых телепроектов «Собрание заблуждений», брался за раскрытие мифов посложнее, такие мифы нельзя раскрыть затопив машину и проверив, можно ли всё-таки открыть двери до того, как машина полностью наполнится водой, они как плавающий баг у которого нету «steps to reproduce». Вспомните Холмса или Хауса, интеллектуал в первую очередь отличается тем, что видит невидимое — пока паникующие пассажиры всматриваются в туман за бортом, он закрывает глаза и всматривается в свои «чертоги разума», вспоминает карту местности и ТТХ парохода.


«Всё содержится в моих чертогах разума, вы же понимаете о чём я мистер Холмс? Я обладаю знаниями, и поэтому могу щёлкать доктора Ватсона по носу хоть целый день.»

Неправомерно сравнивать российского программиста и американского когда они сидят в соседних кубиклах и пишут на PHP. Серёжа из подмосковья, именующий себя Serge или Sergei(y), это крем с торта, сливки нашей страны, парень очень крут, круче 99% читателей Хабра, он смог ради высокой идеи порвать с личным окружением, переехать за океан, устроиться на работу, выучить иностранный язык, а рядом с ним сидит человек по имени Скотт, он аналог тех друзей Серёги которые остались в Люберцах, и возможно спились, а может быть устанавливают Винду тёте Клаве, если, конечно, повезло и не спились. Просто Скотт не спился, и работает программистом на PHP в кубикле. Неудивительно, что Серёга пишет самые сложные участки проекта, от одного взгляда на которые Скотта бросает в дрожь. Сравнивать их нельзя. А с кем можно?

В этой комнате вообще нет того, кто является американским аналогом Серёги, его зовут, скажем Джон, и он сидит в отдельном кабинете, да и то, не особенно сидит, часто его там нет, иногда он заходит в зал девелоперов громко смеясь и излучая оптимизм и забирает Серёгу на ланч, причём в такое время, когда на ланч выходить нельзя, скажем в 11:00 вместо 12:00. Серёга виновато оглядываясь по сторонам спрашивает «а можно ли сейчас выходить», трудовое братство, ага, и Джон умело, да что там, безупречно изображает удивление, делает вид, что всем и всегда можно выходить куда они пожелают. Но это не правда, и он это ПРЕКРАСНО знает. И в этом важное отличие Серёги от Джона, Джон — политик.


«DHH — создатель Рельс, долларовый миллионер, внушает прихожанам вечные истины»

Американская культура пропитана политикой. Вспомните «Гарри Поттер и рациональное мышление» — под рациональным мышлением в первую очередь автор подразумевает игру, социальную Игру. Кому и что сказать. Как делать Ходы. Как добиться от других, чтобы они делали ходы, нужные тебе. Не выкладывай все карты на стол, и если есть пять важных пунктов которые можно сказать начальнику, не вываливай их все стоя посреди девелоперской залы как нервная барышня, дождись личной аудиенции у босса и выскажи один пункт. На следующей неделе, пообещай, что тебе есть, что сказать, запишись на приём к боссу — выскажешь ещё один пункт. Делай Ходы. Играй с боссом, с сотрудниками, со всеми. Это Джон. А Серёга наивно смотрит только в код, иногда размышляет за жизнь вообще, о духовности.

Как думает Джон? Джон проворачивает многоходовку, причём многолетнюю. Он очень много со всеми разговаривает, с теми кто выше него и теми кто ниже. Он выстраивает связи, плетёт сеть. Обязательно подробно расписывает, всё что он сделал, всем вокруг, как, почему, рекламирует каждый кусочек своего труда, чтобы всем был понятен его вклад. Его лозунг — продавай, каждый свой чих преподноси как товар. Думаешь, кто-то посмотрит в код и оценит твоё мастерство по достоинству? Как бы не так!


«Создатель GitHub Том Престон-Вернер знает толк в пиаре, постмодернизме и масскульте, потому, что читает книги по культурологии и философии»

Вспомните завораживающие речи Джобса и Балмера, — умение говорить о своём коде или проекте, много говорить, красиво говорить, убедительно, ярко, ГРОМКО, прилюдно и не прилюдно — это то, что Джон умеет с детства. Он мог и не читать Макиавелли или Адама Смита, но все их идеи живут в детских разговорах мальчиков на Манхэттене и субурбах Джерси и Калифорнии. Есть гениальный, фильм Спилберга «Empire Of The Sun», он не о войне и не об империи, это фильм об англо-саксонском социально-практическом мышлении, не таком уж загадочном и далёком, на самом деле очень близком к нашему по одному из векторов, основная мысль «хочешь жить — умей вертеться», только с упором не на слова «жить» и «вертеться», а на слове «умей», и даже ещё точнее — «хочешь жить — умей вертеть другими и вертеться среди них».

У нас такие «вертелки» тоже есть, только они не программисты. Ушлые мамочки, которые хотят своих деток пристроить получше в жизни, направляют их в основном на экономику, менеджмент. А в США ушлые мамочки пихают своих детишек в программисты. Если наш ВУЗ — это неофициальная школа дружбы народов, то американский — это школа лидерства, социального расслоения, ты или всплываешь в элите, или опускаешься к лузерам. Третьего не дано. Тебе приходится овладевать навыками «верчения» и «игры». То есть люди идут в программирование не для того чтобы «заниматься любимым делом, да ещё и за зарплату» — они сразу, целенаправленно идут туда чтобы деньги зарабатывать и завоёвывать себе место под жарким калифорнийским солнцем.


«Вот он: американский программист, он прорвался. В форменном малиновом пиджаке английской спецшколы, на лбу кровь, в руке котелок для баланды которым он указывает путь в светлое бэтменовское будущее, в грузовике истеблишмент боящийся поднять головы, позади голодные массы. Гениальный спилберговский символизм.»

Серёга думает: сначала выучусь классно программировать, потом подумаю, как на этом заработать. Ага, сейчас. Американец Джон, учит только то, что обещает приносить прибыль. Не первом курсе он ещё штудирует Scheme, но на втором он уже концентрируется на Ruby — ведь на нём поднялось большинство проектов о которых идёт слух по универу.

Представьте молодёжную тусовку, где в ней программист? У нас программисты тусуются друг с другом, потому, что в обычной тусовке их место в тёмном уголке в ожидании — когда придёт второй программист, а в социальной лестнице у нас программист это прислуга, водопроводчик, в лучшем случае фрик, сумасшедший учёный. А такие американские ребята, как Джон — в тусовке на первых ролях, — эй, кто звёзды на сегодняшней party? Да вон те два бейсболиста, кокаинщик-с-менеджмента, лохматый рокер и Джон-программист. Человек лидирует в социуме, если надо — ходит по головам, выгрызает место наверху пищевой цепочки, умеет говорить с «простыми людьми», как рыба в воде среди «бейсболистов и рокеров», «менеджеров и экономистов», они с ним дружат, чуют равного среди равных, элита держится друг к дружке — полезные люди. Поэтому он и может создать Google или Github. Торвальдс написал Git, но он финский фрик, такой же как и мы, технарь, хотя и с наивными организаторскими навыками своего рода, а Github создают американские дети с философским и деловым бэкграундом, внуки империи восходящего солнца.


«Ваши телефоны содержат один небольшой секрет, сами по себе они никуда не звонят, это просто коробка из пластика, это как заряженный М-16 без морпеха, чтобы нажать на курок. Так что, мои грёбаные морпехи, не кладите трубку, пока клиент не купит наш софт, или не сдохнет.»

Серёга этот условный — сегодня он как простые русские мужики сто лет назад, ломали шапки в потных ладонях, морщили лбы, пытаясь понять грамотных, «выходит буржуи нас иксплатируют?», «значица если я грамоте обучусь, то смогу науки постигать?», «так и моя дочурка может в английском платье хаживать?». Это человечек начинает понимать, что он был частью массы, а может быть чем-то другим, может выбиться, не прокачаться, не заслужить, а именно выбиться. Дело тут не в вестернизации и не в предпринимательстве, а просто посмотрите в окно как текут толпы, что вы видите? Хаос, броуновское движение, людское море. Но тыж-программист, ну придумай какой-нибудь код, по принципу турбины в реке или ветряка, загрузи этот код в общество. Пусть этот код преобразует хоть каплю этой общественной энергии во что-то полезное, хотя бы в твою зарплату, если не в решение общих проблем вроде нехватки ананасов, полётов в космическое пространство или мусора на улицах.

Вот, какие-нибудь программисты создали фирму, скажем в Новосибирском Академе, взяли известную старую игрушку для PC, сделали клон для iOS, выкатили в AppStore, и вдруг попёрло, продажи — на уровне птиц. Им позвонили из Тайваня и спросили «можно мы ваш клон симсити вставим в наш клон айпэда как предустановленную игрушку?», блин — это успех! люди думают, что они стали большим бизнесом, закупили шампанское, повесили 3Д графики в опенспейсе, на кайтах катаются, лекции читают студентам об интернет предпринимательстве, это их представление о высокотехнологичном бизнесе. Но это не они делают бизнес, они обслуга, высокотехнологичная, да, но бизнес делают не они, а на них, те — кто придумал айпэд, придумал как организовать людей на его использование, как собирать деньги с пользователей.


«Что лучше запрограммировано, движение самолётиков вокруг аэропорта, или движение человечков внутри терминала?»

То есть бизнес программиста, — «организовать людей с помощью кода». Примерно так: «господа, слушаем меня, идём сюда, кладём денежку в коробочку, потом идём сюда — берём шоколадку с полочки, потом следующий, всем всё ясно?». Программа. Это не бизнес-логика, это сценарий детского утренника: пляшем, радуемся, читаем стихи, билет 100 рублей, одеваемся нарядно, на пол не плевать. Одни люди создают алгоритмы по которым другие люди живут, работают, развлекаются. Социальные алгоритмы. Я помню как я жил в Гонконгском аэропорту 10 дней, спал на лавочке, там никто не «следит за порядком», на тебя вообще никто не смотрит, само здание терминала, каждая дверь и дорожка — всё уже запрограммировало поведение людей, все идут куда надо, а куда ни надо пойти невозможно в принципе. Само здание, как отлаженный кусок кода, оттестированный миллиардами пользовательских микропоступков.

Вот попробуйте на несколько минут забыть, что именно делает сайт или программа, как она называется, какие фреймворки использованы, зачем она людям, просто взгляните на неё как на простейший механизм-автомат по организации людей: человек открывает сайт, морщит лобик, нажимает кнопочки, раз, денежка перевелась, ещё нажимает, раз — сообщил другу, что можно делать то-же самое. Вирус. Код написанный программистом Джоном, выполняется в сотнях тысяч голов, рук и ног, и они выполняют команды собирая денежку для Джони. Ему всё равно, пусть это будет 1% от переводимых средств, можно даже 0.0001%, важно, что они выполняют его социальную программу, которую он написал на Руби, например.


«Американский мальчик-программист думает об идеальном человеке, выполняющем все его алгоритмы.»

Так мыслит американский программист Джон, аналог нашего Серёги из подмосковья, того Серёги про которого известный миф «лучшие в мире программисты — русские». Русский программист это 90% инженер, остальное смесь космонавта-мечтателя, пионера-героя и деревенского парня, американский программист это 50% инженер, 25% бизнесмен, остальное первооткрыватель, политик, колонизатор и философ.

В прошлой своей статье я написал, что в России нет опенсорса. Как-то основатель Гитхаба Том Престон-Вернер, его жена, кстати, специалист по истории культуры, исправил баг в одной из ранних версий Руби, ну исправил, что такого, а то, что он весь процесс поиска бага публиковал на форуме подробно разжёвывая каждый шаг. Так вот — это совершенно типично для англосаксов. Я так скажу: когда три человека пишут маленькую программку, но по ходу дела проговаривают каждую написанную строчку достигая того, что все трое начинают говорить на одном языке и одинаково видеть этот небольшой код — тогда рождается живой проект. Сам код — это ничто, забудьте о выкладывании кода в открытый доступ, думайте о сообществе, о языке на котором говорит ваше сообщество, каждая запятая в вашем проекте должна как-то называться, и должно быть хотя бы три человека которые одинаковыми словами называют каждую маленькую фигулечку. Простой тест, вы должны не запинаясь, любому участнику проекта указать на любой символ в любом файле проекта по телефону не более чем за десять секунд, а он его должен найти и какой-то фразой подтвердить, что он его нашёл, так, чтобы вы были уверены. Это назыается общий язык. Чтобы не было этих «ща пришлю скрин, в нём обвёл красным место где -1 вместо 1». Это основа, вербальная работа с кодом.

Опенсорс это не сам код проекта, это запрограммировать друг друга на общее понимание. Вот вы сажаете рядом с собой паренька на 10 лет моложе себя и начинаете показывать свой код, и на всё говорите как оно называется, но не называется «вообще» и «правильно по учебнику», а так, как вы это сами называете, даже как это называется в вашем подсознании. Так возникает язык, общий язык, язык как его понимает философия. Языковая общность людей, группа объединённая языком. И сам проект — он в первую очередь в головах, на языках, в ушах.

В любом коде есть вменённое, неявное знание и оно проговаривается не формально, в множестве личных бесед. Это дискурс, — фактический язык работы и общения. Нет никакого правильного языка, «как правильно функция или процедура?», никак, есть только победивший язык, тот который использует некое сообщество в данное время. Сейчас говорят «функция», если мы все будем говорить «процедура», то «правильно» будет «процедура». Это я берегу читателя, честно надо сказать не «если мы все будем говорить», а «если в силиконовой долине начнут говорить «процедура» — то правильно будет ПРОЦЕДУРА», и все мы это проглотим и это будет правильным словом. И на Хабре пойдут статьи: «как я изучал модное процедурное программирование на примере нового языка Proceton».



Ещё не так давно в мировой культуре шла битва чей язык будет определяющим в философии, чья терминология английская или французская победит в мировой культуре, и я не про массовое использование языка для межнационального общения, я о взгляде на жизнь через язык и терминологию, английская терминология победила, а ведь французы были лидерами, их философия и культурология и взгляд на историю на голову выше высушенных английских формул. Другой пример: ещё не так давно в технике и инженерии немецкий язык боролся за лидерство (слесарь, шахта, шнур, шприц), люди эти слова учили по всему миру, а так же пользовались главной международной валютой до 1914 года: рейхсмаркой, но и немецкий был вытеснен английским языком. Проблема в том, что какая группа определяет язык, та и возглавляет проект, нельзя сделать конкурентный проект не создав своего языка в той или иной форме, это даже не технологическое отставание, тут глубже. Чтобы развиваться на переднем крае, надо постоянно вводить новые понятия, но если своего языка нет, то вы, лично вы, не можете ввести новое понятие, и вам приходится ждать пока за океаном введут новые понятия, а мы их выучим читая их мануалы. Вот скажем вы делали сайт на работе, 20 человек, и кто-то придумал продвинутый способ обмена сообщениями между модулями, но как его назвать? Это же новый способ, нет названия, нет термина для нового понятия — нет и новой технологии. Идём в магазин за книжками или интернет и ищем другой способ обмена сообщениями, такой у которого уже есть название. Ничего, что это название было придумано два года назад, тогда же когда и ваша технология, просто люди могут назвать, а вы не можете, вы вне культурного ядра, вы — последователи.

Тут дело не в битве между Россией и Америкой, западом и востоком, вопрос в том, будет у вас передовой коллектив, фирма, опенсорс проект, университет, общественное движение или не будет. Нет своего языка — нет ядра, нет ядра — некому вводить новые понятия, нет движения вперёд. Если нет совершенно новых терминов то нет и совершенно новых технологий. Дело не в том, какие слова вы будете брать, английские, славянские, выдуманный марсианский язык, слова из диалектов народов сибири или японские — вопрос в том, есть ли у вас ядро сообщества, которое генерирует понятия навешивает на них термины, и само вбирает в себя эти сгенерированные идеи. Вот что такое философия программирования. Это не идеальный язык программирования на котором вы всех порвёте, это — язык на котором вы разговариваете друг с другом. Вспомните, даже детишки в младших классах иногда придумывают СВОЙ ЯЗЫК и сразу образуется сообщество, сразу люди чувствуют себя частью чего-то интересного.

Философия программирования
6: Продукт и Проект
5: Реактос и Колибри
4: Технология «Шапито»
3: Чичиков и программиат
2: Миф и язык
1: Трёхнаправленное программирование
Теги:философия программирования
Хабы: Программирование
+23
55k 403
Комментарии 103
Похожие публикации
Лучшие публикации за сутки