Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, AVC, Вы писали:
AVC>>Правда, в Обероне таких проблем вообще нет. (Он просто грамотно сделан.)
AVC>>Но ведь это такой скучный язык.
AVC>>А вот Си++ — это романтика.
К>На самом деле, указатели в Си — с одной стороны, крайне небезопасный, а с другой — очень выразительный механизм, в том числе — механизм абстракции.
К>Как в языках со слабой типизацией абстрагируются от типа данных, так в Си (ещё не С++) — от размещения данных.
К>В обоих случаях — это паттерн "простота (хуже воровства)", для слабо типизированных языков — получается более простой транслятор, для Си — облегчённый рантайм.
Мысль понятна.
Но согласиться с ней трудно.
Действительно, рантайм в Си "облегченный" (и "облегчается" он, похоже, в самых неожиданных местах оперативной памяти.

).
Но вот только компиляторы Си "весят" больше, чем компиляторы Оберона, и код в них — запутаннее. (Си++ я, по понятным причинам, вообще не упоминаю.)
К>Красивое развитие идеи указателей — это итераторы STL. Хотя с таким же, а то и с большим успехом можно было вместо итераторов ввести понятие "диапазон", и такие попытки делаются.
Согласен.
Вероятно, именно STL дала новую жизнь Си++.
На удивление, именно адресная арифметика и перегрузка операторов хорошо вписываются в STL.
(Здесь сишный синтаксис отпразновал незапланированный успех.)
Но, с другой стороны, это означает, что все соответствующие дефекты Си/Си++ проникли (как этакие синтаксические вирусы

) в STL, boost и т.д.
К>Оберон — да, действительно скучный язык. Типизацией по пальцам надавал, размещением по пальцам надавал, а средств абстракции — не надавал
Сорока-ворона кашу варила...
Почему же это вдруг не надавал?
Модули и расширение типов позволяют реализовать любую абстракцию.
Причем инкапсуляция не в пример лучше, чем в Си++.
(Дискуссию о плюсах и минусах перегрузки операторов пока разворачивать не будем. Я знаю диалекты Оберона, где такая перегрузка есть. Но вот хорошо ли это?)
Вообще, для меня в языках программирования очень важна возможность введения абстрактных типов данных.
Даже мое первый пост на RSDN был именно об АТД (и их связи с математическими моделями; я же все-таки прикладной математик).
Многие программисты почему-то думают, что
настоящая 
абстракция возможна только на Си++.
Побывал недавно в своей старой конторе. (Там где все сидели в отладчике Watcom C++.

) Сказал, что увлекся Обероном. До драки дело не дошло (я всерьез опасался

). Но народ удивлялся и ссылался как раз на мою страсть к АТД и математизированному подходу. А я отвечал: в Обероне все есть (как в Греции

).