> Из семантического тождества record и struct автоматически не следует семантическое
> тождество языков. Вам сравнить как C-ник и паскалист, например, разложит строку в
> Ваш связанный список? а потом наоборот список в строку? Ответьте, как Не нужно сравнивать. Нужно всего лишь заметить, что оба это сделают - у обоих есть готовые абстракции строки и списка. И обоим нужна функция, чтобы выделить подстроку - самописная или библиотечная. Семантика операции от этого не изменится.
> паскалист сделает примененный C-ником инкремент указателя? А выделение памяти под
Семантика "инкремента указателя" = "получить следующий элемент массива". В Паскале это делается с помощью массивов, а не указателей.
Совсем другая история про "получить адрес стековой переменной и прибавить её размер, чтобы найти адрес возврата". Здесь мы говорим не про любой указатель, а про указатель на стек, для которого нет эквивалента в школьном Паскале.
> А как C-ник реализует добавление символа в конец строки без того,
> чтобы убедится, что там есть место?
Он добавит символ в строку без того, чтобы убедиться, что там есть место. Поэтому атаки с переполнением буфера настолько часты. Смысл операции от этого не изменился, но появились побочные эффекты, которые наблюдаются на более высоком уровне.
> Вы подобное называете семантическим тождеством, то я даже не знаю что
> нужно для "нетождества". Если только переход на сравнение с функциональными языками.
Именно так.
Оба - строго типизированые, контексто-независимые процедурные языки, для них существует БНФ.
В традиционном Паскале не было только макросов и возможности в явном виде оперировать с аппаратными сущностями - адреса переменных, представления целых типов (big/little endian), автоматическое приведение целых типов друг к другу.
А вот добавить новый факт к куче существующих у них не получится, в то время как в Прологе это элементарная операция. Чтобы выполнить такой трюк и в C и Pascal нужно написать подсистему, которая будет оперировать с абстракциями фактов.