А чем по Вашему ненормально объявление переменных в Паскале?
То, что переменную надо объявлять до того, как написан код, который её использует. Это довольно затруднительно, поэтому обычно переменные объявляют всё-таки когда она стала нужна. Но при этом приходится бегать туда-сюда между кодом и блоком var. Бывает, что переменная нужна только внутри цикла, но её тоже приходится объявлять вместе со всеми, - в рузультате она может быть по ошибке использована за пределами цикла. Поскольку объявление переменной находится далеко от места её использования, бывает сложно понять какого она типа.
Мы ведь говорим о структурном программировании. И получается, что в Паскале его принципы реализуются полнее и структура каждого программного блока более четкая:
// заголовок блока: program/unit/procedure/function
label
....
const
...
type
...
var
...
// вложенные процедуры и функции
begin
// тело программы/процедуры
end;/end.
Т.о. для одного и того же алгоритма, реализованного на С/С++ и на Pascal, так что общее количество строк примерно одинаковое, каждый раздел (const, type, var, begin) будет короче, что облегчает его восприятие. А на С/С++, когда все вперемешку, получаются слишком длинные куски. Впрочем, судя по упомянутым CUDA-примерам, и у программистов на С/С++ есть хорошо заметная тенденция сначала объявлять все (или хотя бы большинство переменных), а потом уже и производить действия с ними. А иначе можно десять раз i,j,k объявить, потом замучаешься переименовывать/удалять
Кстати сказать, С/С++ не допускает вложенных функций, в отличие от процедур и функций Паскаля. Это, на мой взляд, серьезный минус. Что касается навигации по коду, то при современных IDE это не проблема. Навел курсор и видишь определение во всплывшем окне. Если, конечно, использовать Блокнот, то будет не очень удобно работать с большой программой. А внешние вызовы (библиотечных функций, объектов) будут в Блокноте сущей каторгой.
Отдельное сомнение вызывает целесообразность заголовочных файлов (расширение
.h), которых в больших проектах бывает очень много. Т.о. в сравнимых проектах в С/С++ гораздо больше файлов, чем в Delphi, что сказывается негативно на скорости построения. Попробуйте, например, перекомпилировать ядро Линукса