Видел множество всевозможных курсов (предметов) по теме. Как в институтах, так и в школах. Первой проблемой в них всех было то, что составители курса ни перед его подготовкой, ни в процессе, ни после неё не ответили даже сами себе на один вопрос: чему их курс должен научить? Расчётному программированию (алгоритмированию)? Написанию скриптов и утилит? Разработке коммерческих продуктов? Устройству компьютера? Особенностям операционных систем? Работе в офисных приложениях? Истории программирования (истории компьютеров)? Чему вообще?
Явно подавляющее большинство разработчиков курсов отвечали для себя на этот вопрос примерно так: «курс должен дать общее представление». В результате все эти предметы дают «общее представление» исключительно о сферическом коне в вакууме. Причём, сам конь из Невер-Неверленда, а вакуум это разновидность Гиперурании Платона. По окончанию курсов что-то умеют делать только те, кто добровольно занимался дома, причём, знания черпал из третьих источников.
Тут надо понимать: я не говорю про «персональные курсы» ряд преподавателей, самостоятельно разработавших свой курс, достигают впечатляющих результатов. Речь идёт о систематическом преподавании программах уровня университета или региональной/всероссийской школьной. Там бардак. Программу по программированию (простите за тавтологию) пишет тот, кто, судя по всему, в жизни никогда этим серьёзно не занимался, а знания получил из источника «Компьютер это клёво». 1989-го года издания. По информатике отбор строже для написания программы по ней специально отбирают тех, кто не только программировать не умеет, но и компьютеров опасается. Иначе откуда это всё?
1. Нахрена отводить полгода-год на изучение систем счисления? Они вообще не нужны ни для работы на компьютере, ни для программирования.
2. Нахрена изучать десять почти одинаковых языков, вместо того, чтобы выучить один, но на уровне, достаточном для практического применения?
3. Нахрена писать сначала в С-стиле и только потом переходить к С++-стилю (в общем виде, конечно, речь не конкретно о С идёт)? Только потому, что когда-то писали на С, а потом перешли на С++? Так чего стесняться тогда начните с машинного кода и перфокарт. И с Паскалины, блин.
4. Нахрена тратить год обучения на машину Тьюринга? На ней что-то реально полезное написано? Или, быть может, она понимание улучшает? Практика показывает, что машина Тьюринга очень хорошо понятна уверенно знающему С/С++, а вот обратное неверно. Ну да ладно, предположим, жить нельзя без теоретического программирования, но зачем с него начинать? После С/С++ вполне можно изучить и машины Тьюринга и ассемблер, причём, обучение всему этому будет на порядок более быстрым.
5. Нахрена проводить лекции по программированию без семинаров и лабораторных? Это из серии «теоретическая езда на велосипеде».
6. Нахрена основывать преподавание на нетривиальных вычислениях, при реализации которых профессиональный программист 9/10 своего времени потратил бы на то, чтобы вникнуть в математику? Есть же куча задач, которые вообще никаких математических знаний не требуют. В конце концов, переводить алгоритм на язык, понимающий этот язык сможет. Для начала надо языку научить.
7. Нахрена, соответственно, преподавать объектный подход так, будто объект это просто обёртка для С-стайл функции?
Всё вышеперечисленное не обязательно присутствует одновременно, однако разработчики институтских и школьных курсов, по ощущениям, соревнуются, кто больше пунктов воплотит в жизнь.
Надо уже ответить на озвученный вначале вопрос и написать нормальную школьную/институтскую программу, которая будет своим результатом иметь не «мы тоже учим модным сейчас компьютерам», а что-то практически полезное. Программирование и компьютер это практика. В первую очередь практика. Без неё где-где, а в программировании теория вообще не нужна. Хотя и в других предметах аналогично кому, например, нужен математик-теоретик, не умеющий взять простейший интеграл?
← Ctrl ← Alt
Ctrl → Alt →
← Ctrl ← Alt
Ctrl → Alt →