Саша, ну я же не в смысле "Beginenders must die!!!"
Я сам выучил Паскаль с большим удовольствием (хотя Бейсик, 8080 ассемблер и Фортран знал еще до того). Была такая весчь - Паскаль для ДВК-3М. Он компилировал в ассемблерный (текстовый) файл, и его надо было макроассемблером превращать в OBJ потом и линковать.
А потом я долго программировал на Турбо-Паскале под ДОС. И я безоговорочно согласен, что это лучший учебный язык для начинающих, гораздо лучше Бейсика, глаза мои бы его не видели.
Дело не в том, стандартизован язык или нет. Дело в том, насколько хорошо вписываются новые конструкции в старую схему языка. Если язык гибкий, то хорошо, если нет - плохо, что выражается, например, в сложности новых конструкций или в многочисленных альтернативных попытках устранить тот или иной недостаток. Паскаль изящен, ясен, прост для изучения, но не гибок.
Ну, откуда там C++ стырило int i = 0; из Алгола? А как это дело нам стырить в Паскаль, если там i: Integer? Опять, казалось бы мелочь, где писать тип, до или после, а все же... Или НЕСКОЛЬКО способов разбивать программу на части, сишный и "модульный". Это тоже следствие паскалевской стуктуры программы, хорошей для обучения, дисциплинирующей, но крайне неудобной для практических приложений большого размера. Или расширенный тип процедурной переменной и все заморочки с @ и @@. В С подразумевается, что ИМЯ функции это и есть ее АДРЕС, как это и есть после компиляции, это то что стоит после CALL кода. А ВЫЗОВ функции обозначается () после ее имени, или после переменной, в которую всунут адрес функции, без разницы. (Это не Саше, а тому, кто спрашивал, зачем нужны эти дурацкие ()? Вот, нужны. В С практически ничего лишнего нет.)
Сила С именно в этом. Он, пусть неявно, предусматривает, что программа будет компилироваться и выполняться на машине, где есть сегмент кода, где функции вызываются по адресам, статический сегмент данных, стек и все прочее. Попробуй объяснить чайнику, какая разница между
int ETIM;
static int VOT_ETIM;
int main()
{
int I_VOT_ETIM
?
Это ведь все "глобальные". Поэтому учить Паскаль легко, а писать профессиональные программы лучше все-таки на С, тогда хоть ясно понимаешь, что у тебя после компиляции получится. Недостаток С в этом же - фактически, нужно знать принципы работы процессора, ассемблер, и хотя бы некоторые идеи по реализациям языков высокого уровня, как аргументы в функции передаются, что такое стек и прочее.
Ну, хорошо, Delphi - это чудесная вещь, которая в своей области не уступает MSVC. Ну, а выйдя за пределы этой области? Скажем, RPC сервер в виде NT сервиса и соответствующий ему клиент? Коммерческие, разумеется, со сложной собственной функциональностью, типа TCP/IP сокетов. Не говоря уже о драйверах...
Потом, обрати внимание, сколько вещей в программировании строилось по тому же сишному стандарту, хотя к С прямого отношения не имеют. Те же сокеты (по образу сишных файлов), RPC (сишные функции), OLE интерфейсы (реализация С++ объектов), та же Ява. С заслуженно вошел в культуру программирования, это уже больше, чем язык. Знать его надо, и желательно хорошо, даже если программируешь на совсем другом языке.
<<Ну и степень удобства MFC? >>
:- Ну а что? По-моему - вполне.
<<В Delphi тоже можно регистрить сообщения и обработчики, не используя расширений языка>>
А как? Пардон, я Дельфи не знаю до таких тонкостей.