Хабрахабр

Пятница. Бредни программиста

Привет, Хабр! Иногда в голове начинают бродить разные мысли. Кое-что записал. Получилось что-то вроде рассказа. Не судите строго — ведь это всего лишь фантазии.

image

Странные танцы

Пятница после работы. Я в ночном клубе. Пригласил девушку с приятным именем Алла, и мы танцуем под довольно приятную композицию.

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

Все как раз наоборот, особенно в последнее время. И дело не в том, что девушки плохо относятся к программистам. Девушкам стало понятно, что в ИТ остроумные, надежные, не сильно скованные материальными проблемами и поэтому не жадные парни. Финансовые гайки стали закручивать и легкие деньги понемногу стали исчезать из экономики.

Дело не вообще в программистах, а конкретно во мне.

Вот как это происходит.

— глаза Аллы широко распахиваются. — Я программист.
— Программист?! Я в компьютерах ничего не понимаю. — Расскажите, это наверное так интересно.

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

— Как вы думайте Алла, сколько в этом зале сейчас работает компьютеров?

Давайте посчитаем. Алла оглядывается, ее взгляд останавливается на ноутбуке диджея.
— Ну вот, один у диджея.
— Вы кое-что не учли. У каждого сотовый телефон. В этом зале сейчас примерно сотня людей. Итого — в среднем около 15 процессоров на один телефон. В современном телефоне как правило 4-8 основных вычислительных ядер, 2-3 вспомогательных, еще по процессору на блютуф и вайфай, еще один процессор обслуживает модуль сотовой связи, два криптопроцессора в двух сим-картах, скорей всего есть сопроцессор для музыки, ну еще один-два для каких-нибудь неведомых функций. Итого получаем 25*100 — 2500 процессоров.
— Ух-ты. А у человека еще есть несколько банковских карт — на каждую еще по криптопроцессору, фитнес-браслет или часы а там еще пара-тройка ядер, опять тот-же блютуф, беспроводные наушники… Ну в общем 25 процессоров на человека — вполне честное число.

Здесь бы мне остановится и перевести разговор в другое русло. Алла заинтригована. Все эти разноцветные огни вокруг делаются осветительной аппаратурой. Но меня уже понесло.
— Но это еще не все. Звук тоже не обходится без цифровой обработки — эквалайзеры, усилители еще плюс 10. В каждом умном светоустройстве как минимум по процессору плюс два-три процессора на светопульте — еще 20 процессоров в плюс. Ну и не забываем про навороченный ноутбук диджея — думаю плюс 15 ядер еще можем прибавить… На стене висит пара телевизоров — еще десяток ядер.

Как правило я еще успеваю сказать про то, что программы для этих процессоров содержат миллионы строк кода. И дальше в таком же духе… Знакомство с Аллой движется к неизбежному финалу. Что все процессоры связаны между собой скоростными каналами и за мгновение каждый с каждым обмениваются информацией, равной хорошей библиотеке. Что каждый из этих процессоров исполняет эти программы со средней скоростью в среднем от миллиона до миллиарда операций в секунду.

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

Я программист, который пытается быть искренним. Я не псих.

Почему же я программист

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

Как раз в это время цивилизация делала Большой Поворот. Только теперь начинаешь примерно понимать происхождение этого странного течения. Возможно самый важный в своей истории.

Мой отец стал авиационным инженером. Еще совсем недавно человечество бредило космосом. Все ловили сигналы со спутников и улыбки космонавтов. Все взгляды были устремлены в небо. Туманность Андромеды Ефремова. Луноходы, полеты зондов к Венере и Марсу. Магелланово облака Лема.

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

Все подростки инстинктивно тянутся к силе. Есть еще одна причина. У каждого свое понимание силы, поэтому кто-то идет в секцию карате, кто-то в уличные банды, кто-то покупает мотоцикл.

Что нажимая кнопки в правильном порядке и вдумчиво всматриваясь в пятна на мониторе можно изменить ВСЕ. Я же чувствовал, что настоящая сила скрыта в ИТ.

Про силу

Обычно я чувствовал силу ИТ подсознательно, но был момент, когда я почувствовал это явно, ясно и недвусмысленно. Это случилось, когда я приобрел первый MP3-плеер.

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

И что самое главное — со временем эта цифровая запись ПРИНЦИПИАЛЬНО не могла стать хуже НИКОГДА. И вот теперь много лет спустя я скачал файл на MP3-плеер и Цой зазвучал в качестве, о котором раньше мы могли только мечтать. Повеяло чем-то вечным. Эта мысль пронеслась у меня в голове с первых услышанных аккордов.

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

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

И Цой больше никогда не умрет.

Про фундамент

У ИТ есть сила, но сама ИТ не висит в воздухе. ИТ опирается на фундамент науки. Думаю единственные люди перед которыми программисты должны смиренно преклонить колени — это математики и физики. Вот это действительно реальные ребята. Они взламывают реальность и бьются за тайны природы не на жизнь а на смерть.

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

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

И Вы не в силах сделать выбор с кем прожить жизнь. Например, Вам нравится и Галя и Зина. А надо тайком пробраться в ближайшую лабораторию и в абсолютной тайне под покровом ночи проделать там классический опыт по прохождению электрона через две щели. Согласно последним физическим веяниям Вам не надо отчаиваться. Согласно последним научным предположениям произойдет вот что. При этом, встав перед портретом Шредингера, дать себе страшную клятву, что если электрон пройдет через щель А, то Вы сделайте предложение Гале, а если через щель Б, то Зине. В другой вселенной Вы зарегистрируйте прохождение электрона через щель Б, и проживете жизнь с Зиной. В момент проведения эксперимента Вселенная раздвоится и в одной из них Вы зарегистрируйте прохождение электрона через щель А, и соответственно проживете жизнь с Галей.

Причем за многоженство Вас не посадят, так как полиция, суд и прокуратура тоже раздвоятся и ничего не заметят.

Но только не у программистов. От всего этого может поехать крыша у кого угодно. Мало того, сейчас стало модным форкать все что угодно от исходников, до кластеров. Потому что программист видит в этом принцип действия обычной системной функции fork(), которая выполняется на его компьютере по 10000 раз за сутки. Ты сказал крекс-пекс-ФОРК. Не нравится тебе что-то. И делаешь там все что хочешь. И живешь уже в собственной персональной вселенной.

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

Про понимание

Программисты вообще понятливые люди. И могут понять практически все. Даже самые странные дела.

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

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

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

Ангелы, демоны, атомы, цели,, хозяева, рабы, мастера, визарды, очереди, списки, феи, писатели, читатели, семафоры, хранители, строители, разрушители, конструкторы, деструкторы, фабрики, миры, генераторы, итераторы, массивы структур, структуры массивов, умные указатели, глупые указатели, сборщики мусора, делатели этого мусора, порты, точки подключения, потоки, нити, родители, дети, события, подписчики на эти события, каталоги, оформители, контроллеры, модели, парсеры, формы, пауки, слушатели, шаблоны, кодеры, декодеры, шифровщики, дешифровщики, замки, ключи, открытые, закрытые, разделенные, сигналы, шумы, заглушки, отглушки, заменители, подменители,…

Это называется Объектно-Ориентировнное-Программирование.

Про хороший софт

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

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

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

Вот уж поистине мистическая история, как у Мюнхаузена, который вытащил сам себя за волосы из болота. Так возник язык Паскаль, когда Вирт со своим ассистентом написали компилятор Паскаля НА САМОМ ЖЕ ПАСКАЛЕ и ВРУЧНУЮ применили исходник компилятора к самому себе.

А началось с того, что нескольких инженеров Sun довели до ручки бестолковыми техническими и организационными решениями. Или история языка Java, который навсегда изменил ландшафт программирования, потом принял на себя весь ужас Enterprise разработки и до сих пор с честью все это несет.

У меня какое-то время была Nokia-E51. Хорошие примеры можно найти и в прикладном софте и в гаджетах, которые дарят тебе ощущение красоты и надежности. Снимаю шляпу перед теми, кто недосыпал по ночам и сделал эту хорошую вещь. Больше не буду ничего говорить, кто знает, тот поймет.

Про плохой софт

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

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

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

Представляются в общем-то хорошие и талантливые инженеры, но дико уставшие от никому не нужных дедлайнов и бессмысленных поручений.

Но при желании, я могу остановить этот безумный кинофильм на любом кадре, заглянуть каждому в глаза и спросить… Что спросить, я не знаю. Этих всех людей так много, что они сливаются в безликую серую массу, проносящуюся мимо со скоростью самолета. Да и кто я такой, чтобы спрашивать.

Ведь я один из них.

Бросить программирование?

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

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

После того, как ты поймаешь первые несколько щук, тебя будет не оттащить от удочки. — Давай, Михаил, это круто. Ты просто не понимаешь, что такое охотничий азарт!

Это они НЕ ПОНИМАЮТ, что происходит почти каждый день на экране моего компьютера. Я то как раз понимаю.

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

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

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

Ты настигаешь ошибку и загоняешь ее в угол. Стоит ли говорить, что в крови охотника появляется море адреналина и не электронного, а самого настоящего. Вредоносный код уничтожен. Затем исправляешь пару символов и программа работает правильно. Это ни с чем не сравнимое чувство победы… Это настоящая, чистая, бесконечная радость… Ошибка, так долго досаждавшая людям, исправлена.

Вечер без Аллы

Мечтая и улыбаясь в пустоту я спотыкаюсь о ступеньки подъезда. За бредовыми мыслями дорога от ночного клуба показалась очень короткой. В подъезде пахнет сыростью. Прохожу в квартиру и сажусь на тумбу в прихожей. Жаль, что с Аллой ничего не вышло. Она мне понравилась. Но может мы с ней еще встретимся.

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

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

Нажимаю на кнопку питания. Сажусь в кресло и делаю пару глотков из бутылки. Теперь мы с компьютером — одно целое. По моим венам распространяется тепло, а по компьютерным шинам — импульсы. Поехали!!! В чуть расширенных зрачках отражаются сообщения от системного загрузчика.

И я проваливаюсь в бесконечный персональный космос…

(продолжение следует)

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть