Про Perl 6, новый Мак Про и восторг от computing

NB: Это старая статья (2019). Всё могло поменяться с момента публикации.


Моя история отношений с компьютерами началась довольно рано — родители купили первый семейный компьютер, когда мне было лет шесть, и я практически сразу понял, что это самая крутая вещь во Вселенной. На нём стояла Windows 95, и одно из первых воспоминаний о ней — как я несколько дней подряд случайно убивал систему разными экспериментами, после чего отец полночи снова переустанавливал систему. Я облазил все настройки в Control Panel, пытаясь понять смысл за аббревиатурами и представить себе, зачем может понадобится столько видов «интернета» (ISDN, PPTP, TCP/IP, мост).

Затем была Windows 98, и странная книжка «Windows 98 для профессионалов», в которой была роковая глава про скрипты на VBScript. Я переписывал скрипты из неё в Блокнот, запускал, они не работали, я пытался найти ошибки; затем начал писать игру про колонизацию далекого космоса, построенную целиком на попапах с Да/Отмена (их было легко вызвать из скрипта).

Потом в руки попалась книга про System V Unix, начал играть в орлянку и покатился.

Но это, несомненно, магия — ты пишешь какие-то полупонятные слова-заклинания, и мир, немножечко, но меняется.


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

Говорят, что шахматисты запоминают тысячи вариаций и тактик, это иногда моделируют как decision trees: если у нас есть такое состояние поля, то отсюда можно перейти в состояния А, Б, В, и В — самое выгодное. Мне кажется, что в моей голове происходит то же самое, но про код: как смоделируем этот кусок проблемы, к чему это может привести, как справиться с последствиями.

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

У меня пока есть две мысли. С одной стороны, этот язык сделан теми, кто любит мощные инструменты, для таких же; с другой стороны, это как если бы язык программирования настраивался так же гибко, как лучшие текстовые редакторы. Не нравится писать кавычки? Можно писать qq(string goes here). Устал типизировать? Ну не пиши эти типы. Хочешь — пиши императивно, функционально, в духе ООП, или вообще реактивно, язык не против, главное — не запутаться самому.

При этом он не сильно потерял в той утилитарности, которой мне нравился пятый пёрл. Прочитать файл: $path.IO.slurp (понятно, что это только один из вариантов). Паттерн-матчинг в голове перегружен и сбоит; может это и называется «выйти из зоны комфорта».


С одной стороны — ощущение возможности всего, с другой — восхищение мощностью компьютеров, тем самым compute, который можно купить в Амазоне или Гугл-облаке.

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

Я понимаю тот же appeal в отношении компьютеров: даже если эту вычислительную мощность негде толком применить, обладать ею приятно. Впрочем, эта аналогия не совсем верна — компьютеры так продвинулись за мою жизнь в скорости, что если бы автомобили развивались также, то были бы уже во много раз быстрее скорости звука (но меньше скорости света).

Последний пример из такого безумного прогресса: новый Мак Про, который можно сконфигурировать на 28 ядер и полтора терабайта оперативной памяти. Есть ли у меня в обычной жизни сценарии, где мне понадобится столько ресурсов? Нет. Хочется ли мне, чтобы такие ресурсы у меня были? Конечно.

Тим опубликовал