Еще про массивы. Я тут просматриваю модули компилятора на предмет кандидатов в переписывание на обероне, чтобы определить направление "допиливания" языка до юзабельного состояния... Конкретно про массивы такой вопрос: а как будет выглядеть массив строковых литералов на обероне? Аналог на С имеет практически нулевой "оверхед" и выглядит так:
char const *array[] = {"str1", "str2", "str3"};
На современных платформах это будет тупо участок read-only памяти "str1\x0str2\x0str3\x0" + массив указателей. Без всяких мегаоптимизаций со стороны компилятора и вполне читаемо со стороны человека.
На существующем O7 рисуется такой ужос-ужос:
VAR array: ARRAY 3 OF ARRAY 10 OF CHAR;
BEGIN
array[0] := "str1";
array[1] := "str2";
array[2] := "str3";
Смущает не столько количество букаф, сколько количество возможностей ошибиться (с размером и индексами). Ну и несколько смущает оверхед по памяти в случае строк сильно разной длины. Замечу также, что "упаковать" все строки в одну строку ("str1\x0str2\x0str3\x0") также нет возможности, поскольку в обероновских строках нельзя использовать специальные символы (хотя этот вариант все равно мне не нравится).