А почему Вы думаете, что объектно-ориентированные языки сложнее процедурно-ориентированных? На мой взгляд, Java и C# ничуть не сложнее C, а в некоторых отношения даже существенно проще:
- нет указателей
- нет проблем с явным освобождением памяти
- не надо вникать в особенности внутреннего представления данных
- сообщения о большинстве ошибок на стадии выполнения носят содержательный характер (не "Access violation", а "Array index out of bounds").
Они может и не сложнее, но концептуально представляют другой уровень. То есть насущно осознать класс можно только прочувствовав необходимость в нём. То есть понимание тем глубже, чем почти самостоятельно приходишь к этим концепциям. Почему почти самостоятельно, а не самостоятельно? Потому, что знать об их существовании нужно, а не изобретать в нуля, но приходить к ним нужно самостоятельно.
Да и знание машинного представления даст большее качество даже при программировании на высокоуровневом языке. А то знаю я таких PHP-программистов, которые умудряются писать код, который при одном запросе вешает четырёх-ядерный процессор. Шли бы с самого начала не писали бы такое. Я не против PHP, я за то, чтобы люди которые пишут на нём знали основы.
Я думаю всё таки правильней изучать в историческом порядке (хотя бы отчасти).
Тогда начинайте с машинных кодов, вводимых с пульта. Потом ассемблер, фортран, кобол, PL/I, алгол 60/68 ...
Ну вообще-то примерно так я и начинал, писал в школьные годы програмки на ассемблере под Z80 процессор
Тут есть ещё один чисто практический момент: современные языки программирования или объёктно-ориентированные, или функциональные (в общепринятом смысле этого слова). Поэтому вопрос стоит так: или включать в программу современные языки (и, следовательно, ООП), или ограничиться C/Pascal.
А чем C не современен? :) Почти весь OpenSource написан на нём. ООП можно давать человеку, который уже начинает задаваться вопросами сокрытия данных, объединения функций не просто по файлам, а в какую-то семантическую сущность.