Філософія програмування 2 - Міф і мова

def Міф і мова extends «трехнаправленное програмування»;

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


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

Неправомірно порівнювати російського програміста і американського коли вони сидять у сусідніх кубіклах і пишуть на PHP. Сергійко з підмосков'я, що іменує себе Serge або Abc(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 осіб, і хтось придумав просунутий спосіб обміну повідомленнями між модулями, але як його назвати? Це ж новий спосіб, ні назви, ні терміну для нового поняття — немає і нової технології. Йдемо в магазин за книжками або інтернет і шукаємо інший спосіб обміну повідомленнями, такий у якого вже є назва. Нічого, що це назва була придумана два роки тому, тоді ж, коли й ваша технологія, просто люди можуть назвати, а ви не можете, ви поза культурного ядра, ви — послідовники.

Тут справа не в битві між Росією і Америкою, заходом і сходом, питання в тому, чи буде у вас передовий колектив, фірма, опенсорс проект, університет, громадський рух чи не буде. Немає мови — немає ядра, немає ядра — нікому вводити нові поняття, немає руху вперед. Якщо немає абсолютно нових термінів, то немає і абсолютно нових технологій. Справа не в тому, які слова ви будете брати, англійські, слов'янські, вигаданий марсіанський мова, слова з діалектів народів сибіру або японські — питання в тому, чи є у вас ядро спільноти, яка генерує поняття навішує на них терміни, і саме вбирає в себе ці ідеї згенеровані. Ось що таке філософія програмування. Це не ідеальний мову програмування, на якому ви всіх порвете, це — мова, на якій ви розмовляєте один з одним. Згадайте, навіть діти в молодших класах іноді вигадують СВОЮ МОВУ і відразу утворюється спільнота, люди відразу відчувають себе частиною чогось цікавого.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.