Пользоваться уменьшенным вариантом клавиатуры Apple на PC можно только через пень-колоду. Сама по себе клавиатура очень уж хороша, но она заточена под Мак — клавиши Alt на ней работают как Windows, а клавиш Windows вообще нет — вместо них Command. Некоторые дизайнерские решения выглядят сомнительно, например отсутствие кнопки Delete. Другие решения или потеряли актуальность, или не работают вовсе: кнопка Eject и «мультимедийные» функции на клавишах F*. Ко всем этим проблемам межплатформенности добавляются еще и проблемы с эргономикой стандартной раскладки, самая большая из которых — микроскопический размер и жутко неудобное расположение клавиши Control; для неискушенного пользователя это может быть некритично, но для пользователя Emacs это вопрос от которого зависит здоровье собственных рук. Конечно в здравом уме пользоваться эмаксом под виндой никто не станет, эмакс я запускаю исключительно внутри виртуальной машины с последней версией Ubuntu с интерфейсом Unity; в которой, само собой, старые проблемы приходят в новом обличье: размер, расположение и поведение клавиш Meta и Super, причем исправить это в самой Ubuntu практически невозможно ни встроенными средствами, ни многочасовыми плясками с бубном.

remapkey.exe

Программа remapkey.exe

Вся эта беда досаждала мне годы, но буквально вчера я нашел абсолютно убийственное решение всех подобных проблем. Программа remapkey.exe из комплекта Windows Server 2003 Resource Kit Tools позволяет переназначить любые кнопки клавиатуры, после чего все работает как следует. Действие программы распространяется и на внутренности виртуальных машин, поэтому особая настройка клавиатуры в гостевой ОС не нужна.

Проблемный блок

Проблемные клавиши

На Apple Keyboard Mini я переназначаю клавиши так:

caps ⇄ ctrl
большой caps бесполезен, он используется как ctrl — так гораздо удобнее, но если caps все-таки понадобится, он будет на маленьком ctrl.
alt ⇄ cmd
кнопка cmd больше, ближе к пробелу — используется как alt в системе и meta в эмаксе.
del ← eject
было бы просто замечательно, но похоже таких вещей remapkey не умеет.

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

Две недели назад всей компьютерной братией начали кучковаться в офисе. Маленькая комната, в которую еле-еле влазит три стола (шесть, если в два слоя) и шкаф. Теперь за каждым столом — по компьютерщику, на каждом компьютерщике — по наушнику, в каждом наушнике — орет музыка. Наушник-то открытый. Тут хочешь-не-хочешь, а пришлось затариваться собственной звукотехникой.

По совету человека @kotuke купил для офиса наушники KOSS Porta Pro. Нормальные такие наушники, легкие, хорошо сочетаются с очками. На звук не жалуюсь, в качестве альтернативы подошли бы просто беруши.

KOSS Porta Pro

KOSS Porta Pro

Перед большим яблочным праздником купил iPod Shuffle. Практически идеальный плеер, без вариантов — для его-то функциональности. Правда, есть один минус: iTunes — под виндой работает нестабильно, а под линуксами айтюнсозаменители работают через жопу и не поддерживают воис-овер, т.е. айпод не сможет проговаривать названия плэйлистов и песен. В отличие от всех остальных продуктов Apple, продающихся в России, айпод шафл цену свою более чем оправдывает: я купил за 2300 — в комплекте с ним идут наушники и проводок для подзарядки; для сравнения, китайское чудовище мне обошлось в ту же цену, с учетом покупки зарядного устройства, двух аккумуляторов и нормальных (т.е. целых) наушников.

После недели с айподом меня не перестают посещать думы. Может ну его нафиг — таскать за собой на ноуте 100-гиговую музыкальную библиотеку; куда же её девать? На работе отдаю предпочтение яндекс.музыке. Что делать с айподом? — надо найти способ по-человечески заливать в него музыку и свежие подкасты. От айтюнс-суррогатов и десктопного музыкального софта убунты уже тошнит.

У всякой работы есть свои преимущества и недостатки, но как же трудно достичь баланса.

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

Другое дело, когда просыпаешься, с полчасика сидишь в тви, потом идешь на остановку и, если повезет, час сидишь в маршрутке. Если не повезет — втискиваешься в большой, забитый до предела автобус. Но самая жопа — когда в этот переполненый хмурыми пассажирами автобус забирается тётка-контролер и начинает доебывать каждого встречного-поперечного на предмет хуевой работы кондуктора. Жадность транспортных компаний не имеет границ. Только они могут смотреть на клиента как на говно и вора в одном лице. Рабочий день — 9 часов сидишь на жопе перед монитором. Час сидишь в автобусе, едешь домой. И дома есть еще целых 3 часа чтобы посидеть посмотреть какое-нибудь кино.

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

С первой же зарплаты купил во Владивостоке старый японский шоссейный велик за 3к. Хотел взять новый, но в Приморье со спортивными велосипедами все очень плохо: мало того что они нигде не продаются, а если и продаются, то стоят чуть ли не дороже мотоцикла. Почему не продаются понятно — на шоссейниках комфортно ездить получается только по хорошо асфальтированным дорогам, а в России, как известно, с дорогами большая беда. Шоссейный велосипед в силу тонкости конструкции и скорости езды имеет большие шансы убиться в хлам на внезапно подвернувшейся колдобине. Я сам имел неосторожность налететь на трещину в асфальте, в результате из колеса вылетело несколько спиц, одна даже потерялась, но обошлось.

Хотел купить Giant OCR3 за 23к Купил японский за 3к

Хотел купить Giant OCR 3, купил старый японский — в 8 раз дешевле

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

Езжу 18 километров по шоссе, с краюшку, воткнув в правое ухо наушник с металлом на полную катушку.

Весь последний год я занимался всякой херней:

  • читал русские и заграничные блоги
  • тупил в Сети
  • смотрел фильмы
  • играл в игры
  • начинал что-то изучать но не заканчивал
  • немного писал на лиспе, совсем немного на питоне, джаве и аштиэмэле
  • завел этот блог
  • добрался до четвертой главы SICP
  • пытался переписать библиотеку Iterate с Common Lisp'а на Clojure (кодоволкер таки переписал)
  • досконально изучил пятую главу CTMCP (о конкурентном программировании и передаче сообщений), посмотрел курс лекций UC Berkley CS 61 A и половину курса CS 61 B.

Все это время я работал дворником: каждый день я тратил на выполнение своих служебных обязанностей 10 минут. Работа пыльная, но если прикинуть соотношение затрат времени (что-то около пяти часов в месяц) и уровень оплаты, то в целом, не такая уж и плохая. Однако в феврале произошла неведомая мне перемена в устройстве местных служб жилищно-коммунального хозяйства и моя простая, бесхитростная и весьма экономичная в плане ресурсозатрат работа закончилась.

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

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

Если раньше я работал 5 часов в месяц, и большую часть оставшегося времени пинал балду, то теперь я работаю с 9ти до 6ти 5 дней в неделю. Ну как сказать работаю… Сейчас я занимаюсь примерно тем же, чем занимался последний год в свободное время: это учеба и программерская практика; но сейчас все серьезней, в больших объемах и с настоящей нагрузкой, не дающей бездельничать и растрачивать свое время попусту. Работа это переход из мира розовых пони и программистов, пишущих на лиспе в эмаксе в суровый российский реал ворлд, которым овладела корпорация зла: начиная с компьютера на котором я пишу по-работе, заканчивая всеми остальными компьютерами в городе (и во всех соседних городах тоже.)

Мои любимые технологии из мира розовых пони проиграли в столкновении с суровой правдой жизни. Линуксу, эмаксу (под виндой он невыносим), лиспу и даже питону (как знать, может быть напишу еще что-нибудь на F#), гиту (на этот счет я все еще теплю надежду покуда SVN в конец не остоп*%дит) и гитхабу (как оплоту всего хорошего в программерском мире) нет места в моем деле.

P.¶.S. Когда через полтора месяца после начала работы дело дошло до документирования проекта, я сдул пыль с «Путеводителя по пакету LaTeX и его расширению LaTeX2ε», поставил TeXlive и NOWEB, открыл Emacs и начал педалить документацию вперемешку с исходниками (знаю, я дурак.) Да, Visio хорош чтобы по-быстрому набросать десяток-другой схемок, но пользоваться Вордом для документирования программ это полный пиздец, тут уж как ни крути.

Я год писал для JVM, но за всю свою жизнь я не написал и десяти классов на джаве. Ближайшие несколько месяцев мне предстоит иметь дело исключительно с Java ME. Первые две недели я пытался организовать под виндой хоть сколько-нибудь рабочее окружение для кодинга для мобильников: перепробовал все 3 среды разработки, посмотрел на богомерзкие средства для кодинга мышкой и взглянул на поражающий воображение своей колоссальностью автосгенерированный Ant-скрипт для сборки проекта. В итоге остановился на варианте Netbeans + Maven + консолька MS PowerShell.

Но кодинг в нашем деле — вещь десятая. Вняв мудрому наставлению, прежде чем написать хоть одну строку я сел за проектирование, черт меня дери. Сидел себе и проектировал, открыв по случаю слайды курса MIT 6.005 Elements of Software Construction. Да, это были две недели дизайна стэйт машин и сетевых протоколов в контексте эргономичного пользовательского интерфейса. Еще две недели неспешного кодирования, и скелет программы готов. Чтобы позже не поиметь головной боли с локами и пятью потоками решил не заморачиваясь с самого начала иметь в виду «Десятое правило Гринспуна»

Любая большая система на C или Java содержит тормозную и бажную реализацию половины Common Lisp.

и наваял самопальную тормозную бажную полу-Эрланг-полу-Кложу.

Что будет дальше не знаю, но работа обещает быть интересной.

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

С моей колокольни довольно трудно принимать всерьез весь этот религиозный ужас, продолжающий охватывать человечество на протяжении многих тысячелетий — с глубокой древности и по наши дни. Благо мое окружение с самого детства было довольно атеистическим, если не считать остаточных наполовину православных, наполовину анимических, в духе русского народного вуду с бабками-целительницами и сглазами, осколков «веры» моей матери; и в свое время временно подверженной телевизионной водозаряжательной заразе Чумака, а ныне заразе умеренного православия, бабушки. В целом, я рад за себя; рад, что благодаря скептицизму и любви к естественным наукам, а может, благодаря недостаточно активному промыванию мозга, с раннего детства мне удалось избежать поражения моего разума всем этим религиозным дерьмом.

Что же до книги — автор разносит религию во всех её проявлениях и по всем фронтам, так что после вдумчивого чтения, если у человека осталось хоть сколько-то живое мышление, не должно остаться сомнений насчет истинной природы религии и вызываемой ею веры.

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

Познавательная сама по себе, эта книга будет познавательна и полезна вдвойне всем, кто имеет дело с компьютерами и информацией вообще. Общее понимание природы заключенного во всевозможных машинах кода — «живого» и «неживого» — не важно, но способного так или иначе оказывать влияние на мир, поистине вдохновляет. «Эгоистичный ген» объясняет причины, механизмы эволюции и бесчисленные варианты столь сложного, необычного и разнообразного поведения огромного множества живых созданий, используя для этого простые математические модели и теорию игр. Например, книга объясняет поведение групп организмов на основе степени их родства — по количеству общих генов, которые они делят между собой; и с использованием «эволюционно стабильных стратегий», описывающих эволюцию группового поведения как игру генов популяции в «парадокс заключенных». Удивляет то, что безжалостный эгоизм, паразитизм одного на другом и борьба за выживание всех со всеми приводят в конце концов к альтруизму и взаимопомощи.


Гены и мемы

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

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

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

Все это не к добру. Если я не могу не думать, то нормально думать я не смогу тем более.

Эйнштейн сказал:

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

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

Думать — трудно, не думать — еще труднее.

Пришло время отказаться от изобилия информационного мусора. Я решил — какие вещи мне нужны на самом деле и когда они мне нужны.

Новости
Нужны ли мне новости? Определенно нужны. Но не срочно. Мне просто некуда спешить, поэтому любую новость из мира ИТ можно без опаски отложить до понедельника. Новости из не-ИТ мира меня вообще мало интересуют и если они чего-то стоят — я о них узнаю рано или поздно в любом случае.
Подкасты
Еженедельные подкасты «Радио-Т», «Рунетология» и «Точка» достаточно хороши, продолжительны и информативны чтобы полностью избавить от необходимости читать глобальные «политические» новости из мира корпораций. Выходят и слушаются мной в воскресенье и понедельник.
Блоги
Их много. Хороших — мало. Они тем более никуда не денутся. Если не прочитаю вовремя мне грозит только одна неприятность — не смогу оставить своей первый нах в комментариях.
Газеты и ТВ
Газеты я не читаю, телевизор не смотрю. Что остается? Смотреть фильмы и аниме по вечерам. После важных дел, разумеется.
Хабрахабр и Hacker News
Если хабр еще можно проверять раз в неделю — порою там попадаются достойные вещи, то хакерньюс лучше не проверять вообще, а подождать до нового месяца — когда выйдет «Hacker Monthly» с лучшими статьями и избранными комментариями. В конце концов вся эта стартаперская движуха имеет смысл только если в ней активно участвовать. Читать и ничего не делать не имеет смысла.
Твиттер и почта
При небольшой активности тех за кем я следую (примерно 40 человек), тви-лента чуть более чем полностью состоит изо всякой фигни, на которую тем не менее стоит взглянуть — вечером. Так же и с почтой.

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

С утра принял — весь день свободен.

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

Чем же забить прорву освободившегося времени? Программированием, к которому я не притрагивался уже месяц. Учебой — если захочется днем что-нибудь посмотреть на YouTube, то пусть это будет лекция UCBerkley по CS. Чтением книг, которые могут стать фундаментом для профессиональных знаний. Работой, в конце концов.

Тренд ограничения потребления информации и временного отказа от электроники в пользу реального мира (digital downtime) явно прослеживается в этом году. Вот что пишет об этом JWT (крупнейшее рекламное агентство) в ежегоднике «100 Things To Watch in 2011»:

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

А вообще, толчком к написанию всего этого послужил последний XKCD, в котором автор приводит свой способ избавления от напастей, пожирающих внимание:

После нескольких лет попыток использования различных методов, я избавился от этой привычки, противопоставив мое нетерпение моей лени. Я разделил действие и неврологическое вознаграждение путем установки простой 30-секундной задержки, которую я должен был переждать и ничего делать, перед тем как новая страница или чат-клиент будет загружен (при этом позволительно иметь только одну открытую страницу/чат). Желание проверить все эти сайты моментально улетучилось — и мое «плодотворное» использование компьютера оказалось незатронуто.

Давно. Как же давно я так не залипал. Dead Space и Dead Space 2 выбили меня из колеи и сожрали три недели моего времени.

Не скажу что я большой любитель игрушек, но мне порой бывает приятно расслабиться и порубать монстров в какой-нибудь доброй игре. Однако хорошие игры мне попадаются очень редко. На память могу припомнить всего несколько таких; последними были эпизоды Half Life и Call of Duty (и отечественная Метро 2033, жаль что я так и не смог пройти её до конца в силу невероятных тормозов на встроеной в мой неигровой компьютер видеокарте NVidia ION).

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

Назвать игру шедевром у меня язык не поворачивается, но все её составляющие подогнаны так, что комар носа не подточит — это факт. Я прошел обе игры вдоль (игра линейная и поперек пройти не получилось :) 2 и 3 раза соответственно — пока не отпустило; и не смог найти ни одной вещи которая была бы сделана не так или плохо. Это образцово-показательный «survival horror»: отличная графика, отличный звук, оригинальный и абсолютно естественный и ненапрягающий интерфейс (точнее — его отсутствие), отличные противники, правильная невесомость и безвоздушное пространство; оригинальное и великолепно сбалансированое оружие, которое по большей части даже и не оружие вовсе, а горнодобывающий, инженерный и хирургический инструмент. Особенно мне понравились взрывной коломет с электрошоком, циркулярная пила с летающими лезвиями и огнемет — с ними уменьшение поголовья монстров превращается в самый настоящий праздник. И конечно, динамика боя — в этой игре все на уровне.

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

Большая редкость среди известных мне игр, но наверное сама собой разумеющаяся вещь в случае крепко сбитых блокбастеров: в качестве предысторий первой и второй части игры выпущены два полнометражных мультфильма — «Dead Space: Downfall» и «Dead Space: Aftermath». Особой художественной ценности в них нет; тратить время на их просмотр имеет смысл только если вам нравятся простые и бесхитросные как титановый лом боевики.

Думаю, любителям инопланетной чертовщины мир игры понравится, ведь «Красный Маркер», вокруг которой вертятся все события, это явно позаимствованый из старой доброй «Космической Одиссеи 2001 года» «Обелиск». А игровые монстры — не что иное, как воплощение твари из фильма «Нечто».

Программирование — это не математика, программирование — это дизайн.

Задача математика состоит в том чтобы найти наиболее простую и универсальную формулу или систему аксиом, описывающую некоторое явление.

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

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

Из естественных наук программированию ближе всего биология. У человеческого организма оптимальный дизайн? Почти. Он идельно работает? Более-менее. Он сложен? Запредельно. И тем не менее, при всей своей запредельной сложности организм, по большей части — невероятное нагромождение груд мусора с огромнейшим, просто необъятным прицепом хлама для «обратной совместимости», накопившемся за миллиарды лет.

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

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

С другой стороны, к дизайну языков программирования нужен математический подход. Чем ниже уровень языка, тем более строгое определение он должен иметь. Взять к примеру оригинальный Лисп: он определен чисто математически — как система из десятка функций для работы со словами и списками, с лямбда-исчислением в качестве вычислительного движка. Это самый нижний уровень. Идеальная математическая точность. С такой же точностью определена таблица кодирования аминокислот ДНК. Однако, слои систем возведенных поверх основы — безнадежно сложны, хаотичны, подвержены сбоям, но тем не менее стабильны и работают.

Чем дальше в лес — тем больше дров.

При всей простоте основополагающих конструкций в современных языках, будь то класс или лямбда, никто не в силах предвидеть и осознать те возможности, которые в них скрыты. Мы выбираем самые простые и полезные, называем их «шаблонами проектирования» и думаем что они — те кирпичи, из которых можно собрать все что угодно; ан нет, за горизонтом всегда остается бездна возможностей. В одной «лямбде» заложена вся сложность мира вычислений. Она как числа 1, 2, 3,… нет ничего проще? Но отношения между числами непостижимы.

Эта заметка — ответ на пост @oxij'а «Паттерны проектирования, гриды и прочая безответственность» и последовавший за этим срач.

↓ Старый булшит