Rodegast
Начинают, потом к этому привыкают и даже не знают что можно по другому.
Есть пути обучения. Старый путь и новый путь. Новый путь - это путь в стиле “а давайте начнём обучение сразу с ООП, чтобы мозги изначально становились ООПшными и придерживались правильного мышления”. Так вот и учат. Потом оказывается, что этот ООПшный новичок не знает, как починить старую сломавшуюся функцию, которых очень много в существующих системах. Не умеет границы массивов проверять, потому что не делал коды классических квадратных сортировок. Они как бы ни для чего не нужны, но в них как раз и вырабатываются навыки проверки границ массивов. В общем, там таких навыков всяких малозаметных, но базовых, от которых всё зависит в итоге, - вагон и маленькая тележка. А вырабатываются они как раз в классическом способе.
Я вот вчера хотел с YouTube скачать интервью, а YouTube говорит “а вы в аккаунт зайдите в свой”. Какой аккаунт? Я его всегда без аккаунтов смотрю. Открываю браузер - то же самое. Ну придумали тупость, чтобы с них не качали видео, а заходили в аккаунты и смотрели через браузер. Первым делом надо было понять, как смотреть видео без аккаунта. Есть браузерные расширения. С расширением показывает без входа в аккаунт. Окей. А как скачать? Нашёл способ, что можно заходить в печенье браузера и им пользоваться. То есть это берётся печенье браузера и подаётся в YouTube, как будто это браузер качает. Попробовал - о! работает. Ну и дальше мне нужно было в свою программу добавить эту опцию взятия печенья. Я просто в файл настроек своей программы вставил эту опцию в команду загрузчика. И всё, и загрузка пошла.
Я это как вообще сделал? Ну, во-первых, я свою программу написал по правилам структурного программирования. Соответственно, в той школе учат чему? Тому, что подпрограмма должна быть со слабым предусловием и сильным постусловием. Она должна быть общего вида, чтобы она подходила для большого множества исходных условий, и чтобы она давала всегда точный и недвусмысленный результат. Вот из-за этого я загрузчик файлов в своей программе вынес в параметр, а не зашил его внутрь программы в виде такого классного загрузчика. А параметр этот потом я вынес в конфигурационный файл, к которому всегда имею доступ как пользователь программы. Это к ООП не относится. Это базовые вещи из предыдущих парадигм. Почему я и против второго пути обучения, хотя на вид он кажется таким правильным и классным, потому что якобы все будут такими чистыми и ООПшными с самого начала и очень быстро научатся ООПшно писать. На деле оказывается, что чаще нужно простой алгоритм составить правильный, а в ООП этому не учат, это не его область.
Поэтому новичок такой будет сидеть и знать, как наследовать собак, но не сможет ничего на YouTube посмотреть, потому что там его не пускают, а думать алгоритмически он не умеет.
А рекурсия? Думаешь, он узнает про неё из космоса? В ООПшных материалах ему будут давать рекурсивные задачки, чтобы у него мозги осознали, как раскручивается стек? Нет, в том-то и дело. Поэтому он будет думать об объектах, но не знать, как дерево рекурсивно обойти, дерево директорий, например, чтобы файлы прочистить или переконвертировать на всех уровнях там.
Я все фракталы делал, ООП там нет даже близко. Папоротник Барнсли, снежинку Коха, ну и так далее. Они как бы не нужны, но зато потом, когда в какой-нибудь задаче нужно проанализировать аргументы командной строки с параметрами, где параметры могут содержать параметры параметров, это всё сразу вспоминается и задействуется. И ты реально раз и решил задачу какую-то на лету, тебе не надо сначала учиться делать рекурсию.