Цитата:
... и на этой почве пинки Борландовому диалекту как тупиковому...
С первого взгляда на PascalABC его диалект обращает на себя внимание. Причём речь в данном случае не о каких-то "продвинутых" языковых наворотах, а о базовых вещах. Бросается в глаза использование операции ":=" вместо "=" в декларациях элементов, прежде всего, при объявлении начальных значений переменных (если таковы предусматриваются) в виде:
var переменная: тип := значение;
Старая (или традиционная для Паскаля) форма через "=" поддерживается для совместимости, в частности для переменных. А вот для новых языковых конструкций, отсутствующих в "типовом" Паскале, введена лишь новая форма (но я могу ошибаться, всю документацию не изучал), как для "коротких" определений функций/процедур:
function f(i: integer; s: string): string := <some_expression>;
В таких объявлениях роль двоеточия увеличивается, а, в целом, код на PascalABC несколько более агрессивнее, что-ли, на фоне обычного Паскаля. Вероятно, из-за возможности декларации переменных и по месту использования (в стиле Си) в PascalABC для какого-то упрощения введена некая единая (но не общая для всего) форма объявлений, чтоб меньше напрягать мозг и не следить за тем, когда указывать ":=", о когда "=". К тому же, даже если взглянуть в
википедию насчёт математических символов, то как раз ":=" и означает "равно по определению".
В общем, диалект PascalABC принуждает поплотнее обратить внимание на правильную или корректную форму дефениций (в моём случае возникает и практическая необходимость, поскольку приходится заниматься неким DSL-строением). Позиция Вирта нашлась и в
википедии, но в отношении лишь операции присваивания (и сравнения). Наткнулся на полезную статейку, где исторический экскурс по поводу операций и присваивания, и сравнения, и инициирующих объявлений, и почему в Си возникли соответствующие формы этих операций (а заодно и "++", "--" и т.п.):
"Почему "=" означает присваивание?"Насколько я понимаю (и как демонстрирует статейка выше), в традиционном Паскале и производных (как и в ML, близком к математическим текстам, и его производных) для дефиниций вместо ":=" используется лишь символ равно ("=") как некая краткая форма "равно по определению", поскольку то, что это "по определению" указывается по контексту (имеются предшествующие ключевые слова и пр. И в той же википедии приведена иная форма оператора ":=" как символ "=" и сверху него надпись "def", в некотором смысле этот "def" возникает рядом). При этом нет абсурда вида "a = a + 1". В математике также для аналогичных дефениций (с символом "=") в математических текстах имеется соответствующий контекст (мол понятно, что в данном месте определяется функция или уравнение и т.п., включая классические "пусть ..." или "... где, ..." и т.д.). А операция "присваивание" (которой, как таковой, нет в математике) выглядит как некое новое "определение" через ":=", при этом нет каких-то сопровождающих ключевых слов и т.п. (в ML через ":=" изменяются "ссылки").
В PascalABC c использованием ":=" при новых определениях, вроде как, нет криминала (хотя, может быть, возникает некое "масло масляное"). Но, всё-таки, не понятно, почему всё же нет единой универсальной формы, и константы с типами декларируются по-прежнему через "=" как обычно аля:
"const c = <значение>;"