Меня поразила некоторая непоследовательность разработчиков, как бы остановившихся на полпути. Возможно, это произошло потому, что в последующем вообще произошел отказ от передачи по имени, одной из существенных и отличительных особенностей языка. Когда я говорю “непоследовательность”, речь идет о том, что в Алголе-60 так и не произошла формализация понятия выражения, того самого объекта, который передается по имени.
В своем небольшом проекте, речь о разработке нового расширения Jalgolic 1k4 (1k4 – запись 2020 в тридцатишестиричной системе счисления в стандартной нотации) языка Алгол-60, а также транспилеров для него на JS, PHP и C, я пытаюсь завершить те направления развития исходного языка, которые были в силу каких-либо причин не завершены, отложены, а также осмыслить в духе Алгола идеи, возникшие в более позднее время и в той или иной степени реализованные в других императивных процедурных языках программирования.
Конкретной работы уже довольно много, о ней я рассказываю в своем блоге, специально посвященном проекту Jalgolic 1k4, но вчера мне пришла в голову очень удачная мысль, кратко и точно реализующая концепцию выражения.
В любом блоке переменная, объявленная посредством декларации, например, integer i;, может быть задана как выражение с помощью инструкции let i=’a[j]+x*g(y)’;, здесь правая часть – произвольная символьная строка, задающая выражение. Правая часть также может быть переменной строкового типа, текущее на момент связывания с помощью инструкции let значение которой будет определять выражение. Все let-инструкции размещаются после раздела деклараций до операторного тела блока. На мой взгляд, способ таким образом задавать выражения, преобразовывать их и, в том числе, передавать как параметр по имени, очень ясен, краток и абсолютно логичен. Концепция “выражения” в языке получает законченный вид.
Хочу отметить, что некоторые выражения могут встречаться по обе стороны от знака равенства, другие же только по левую сторону (ситуация в точности такая же, как при передаче параметра по имени). Пример: присвоение x:=y; значения выражения y выражению x. которые были определены с помощью let-инструкций let x=’a[j]’; и let y=’3*f(t)+5′;. соответственно.
Напоследок интересный пример реализации рекуррентных формул с помощью let-инструкций в Jalgolic 1k4:
Каждое обращение к переменной x генерирует новый член последовательности по рекуррентной формуле.
Итак, что же за город такой Тмутаракань и почему его название, знакомое преимущественно профессиональным историкам и любителям истории, вдруг всплыло в отношении к событиям дня сегодняшнего? Если бы меня попросили дать кратко некое подобие определения Тмутаракани как явления своего времени, я бы дал следующую характеристику. Тмутаракань – наиболее яркая неудачная попытка создать русскую факторию. Другая, менее значимая попытка – Саркел (Белая Вежа). Население Тмутаракани, географически находившейся на территории современной Кубани, было достаточно разношерстным, а сам период русского правления не слишком продолжительным. То, что так хорошо получалось у греков, создавших довольно много успешных факторий на берегах Черного моря, не получилось у русских, и, как я уже сказал, после непродолжительного русского управления город с окрестными землями перешел под греческое. Дело историков разбираться, почему так произошло, но в национальном самосознании Тмутаракань останется навсегда неудачной попыткой русского управления изначально многонациональной факторией. И поводом поразмыслить, насколько успешными могут быть подобные эксперименты для русского мира, для русского народа. Тмутаракань воплощает собой отрицательный ответ на заданный вопрос: русские неизбежно потеряют руководство любым начинанием, которое изначально было многонациональным по своему составу. Успешные русские проекты предполагают наличие обязательной русской доминанты. Если таковой доминанты нет, то или ее необходимо создавать, создавать методично снизу доверху, или отказаться полностью от участия в проекте. Бесспорно, эти выводы, сделанные все привязки к конкретному времени, к конкретной эпохе, sub specie aeternitatis, приложимы и к сегодняшнему дню.
