Почитал вот, не удержался, влез
Интересно, здесь столько сишников, а никто не ответил на вопрос, почему имена переменных иногда начинаются с подчеркивания. А ответ простой: если пишешь обыкновенную прикладную программу - никогда не начинать имен с подчеркивания. Если пишется статическая библиотека, и нужна глобальная переменная с внешним линкажом, ее имя ДОЛЖНО начинаться с подчеркивания, чтобы пользователь библиотеки не получил проблемы с конфликтом имен. Или пользователь макроса, скажем. С двух подчеркиваний должны начинаться ключевые слова, если разработчик компилятора возжелает добавить их. Сейчас это в изрядной мере устарело, после введения пространств имен. Но когда-то было актуально. Конечно, всякие там начинают с подчеркиваний что попало, чтоб круче выглядел листинг, но это уже другой вопрос
.
По поводу типа рациональных чисел. А они имеют тенденцию к переполнению числителя и знаменателя, хотя само число остается вполне в пределах. Сколько раз надо умножить 2/3 само на себя, чтобы поиметь неприятность? Или представьте, что решаете уравнение типа х*х=2 методом деления отрезка пополам, а х - рационального типа? Может показаться, что это редкость, но при вычислениях с плавающей точкой это будет случаться сплошь и рядом. К тому же программа, которая использует дробное деление, с высокой вероятностью будет использовать и sqrt или sin, а тут уж один черт, нужно обыкновенное дробное.
Наконец, по поводу языков.
Как язык, Паскаль ничем не хуже С. А может, и наоборот. Да, изящнее, красивее. Как средство разработки работающих программ - хуже. Ну, не думал Вирт о такой приземленной вещи как линкер. Казалось бы, какая разница, вкладывать функции друг в друга или писать их одна за другой. Ан нет, для разбиения программы на несколько файлов паскалевский способ не годится. А для профессионального программирования это жизненно необходимо. Что, 10000 строк в один файл пихать? Точно так же, изящество Паскаля не признает такой приземленной, но необходимой вещи, как библиотека. Почему паскалисты живут без традиции подчеркивать переменные? А, наверное, потому, что библиотек они не пишут.
Не все ведь, что пишет программист есть программа. Или, скажем, программирование на разных языках, один файл на одном, другой на другом, потом линкуем. Или программы в стиле Windows, с обработчиками сообщений.
Все это, конечно, устранимо. Путем расширений Паскаля. Причем расширения, как правило, являются "плагиатом" из С.
Никаких проблем писать под Win, только надо признать, что могут быть переменные типа функция.
С расширениями, однако, тоже есть проблема. Разные производители компиляторов Паскаля расширяют его по-разному. То же элементарное разбиение кода программы на несколько файлов может быть сделано разными способами.
Характерно, что С тоже расширялся, но это не были расширения ad hoc. С++ появился потому, что появилось ООП, а вот Delphi появился потому, что появилось Windows.
На вопрос Натальи, почему надо учить С - а потому, что ты не все время будешь программировать в той среде, в которой ты сейчас работаешь. Появится что-то новое. И Паскаль там будет опять изуродован до неузнаваемости, если вообще будет, а С... С гибок. Написала же МS свои message maps под MFC на препроцессоре без единого расширения С++. А та же самая вещь в Delphi?
По поводу бессмысленности спора - конечно, нельзя сравнивать SQL, C, ассемблер и "Яву". У них у каждого своя экологическая ниша, они слабо пересекаются. А у Паскаля и С ниша одна и та же, они конкурируют. Паскаль эту конкуренцию проигрывает, тут ничего не поделаешь.
Вот если сравнивать, сравнивать Паскаль с Бейсиком, то тут да... Уж лучше бы Майкрософт оставила эту работу Борланду.