Сколько лекций по карате нужно прослушать, чтобы уверенно противостоять нескольким хулиганам в тёмном переулке? Звучит нелепо, правда? Тогда сколько лекций по информатике нужно прослушать, чтобы научиться пользоваться компьютером? Компьютером в широком смысле — аппаратной частью, существующими программами и создавать свои программы под конкретные задачи. И может оказаться, что информатика не учит программировать, особенно если студента или учащегося не готовят именно как программиста. А ведь всё могло бы быть иначе.
Старый конспект
Я учился в техническом вузе на специальности не связанной с программированием. Два семестра у нас была информатика: в первом мы изучали основы работы с ОС Windows и офисными программами Word и Excel, а второй семестр был посвящён основам программирования. Полезный предмет? Очень полезный: на протяжении всех пяти курсов приходилось много считать и расчёты с помощью специально написанной программы выполнялись бы быстрее и точнее (меньше риск случайной ошибки в расчётах). Вот только подавляющее большинство студентов сдав экзамен по информатике почему-то никогда не писало программы. Почему?
Я нашёл свой старый конспект по информатике за второй семестр. Помнится, лекции проходили раз в 2 недели, потому их было мало. И вот их краткое содержание.
Лекция 1 посвящена понятию алгоритма, свойствам и видам алгоритмов, способам составления блок-схем и приводит пример составления блок-схемы для конкретной задачи
Лекция 2 рассматривает разные виды циклов и снова приводит примеры составления блок-схем для задач, оперирующих циклами
Лекция 3 знакомит с языком программирования: лексемы, разделители, специальные символы, идентификатор, метка, типы данных, старшинство операций
Лекция 4 описывает структуру программы, операторы присваивания, ввода/вывода данных и (наконец-то!) приводит первый пример полноценной программы с ветвлением
Лекция 5 описывает несколько полноценных примеров программ с циклами
Лекция 6 посвящена описанию работе с массивами и содержит 2 примера программ
Понимаете, прошла половина семестра и только в четвёртой лекции появился первый код, который можно скомпилировать и запустить. Почему только в четвёртой? Знаете, это как с электродрелью: нельзя начинать сверлить, не изучив досконально что такое дрель, как она работает, каких видов бывает и (самое главное!) не законспектировав руководство пользователя целиком. А это занимает не менее трёх лекций. Ладно, я (почти) шучу.
Задачи и ещё раз задачи
Понять причины такого преподавания можно. Например, так устроены многие учебники по программированию: длинное вступление, знакомство с блок-схемами, переход к языку и его синтаксису, введение в ветвление и циклы и только затем появляются полноценные примеры программ. Кажется логичным повторить это порядок в учебном процессе и подробно начать с основ, а далее «сколько успеем».
Но есть и другие примеры. В свою бытность студентом мне повезло принять участие в нескольких межвузовских олимпиадах как по профильному предмету, так и по информатике. И знаете, что там было? Правильно — задачи и ещё раз задачи. В отличие от экзамена, на олимпиаде не спрашивали знание свойств алгоритма и понимания блок-схем, а оценивали решения поставленных учебных задач. А ведь в жизни тоже так: специалист ценится не за абстрактные знания, а за умение применять эти знания на практике.
Тогда почему подготовка к олимпиаде отличается от обычного обучения? Пока одни учатся решать задачи (навык), все остальные получают побольше «знаний» — вдруг пригодится? Вот только «знания» довольно быстро забываются, а навыки остаются. И если мы говорим о программировании, то это инструмент, работе с которым нужно обучать так же, как и с любым другим инструментом, даже если обучаются не программисты.
Как могла бы выглядеть лекция, обучающая программированию как инструменту? Как демонстрация его практического применения: преподаватель показывает задачу и демонстрирует её решение, набирая код и поясняя каждый свой шаг, каждую написанную строку. Затем запускает набранный код и объясняет результат (здесь будет полезным проектор или большой экран, а не классическая доска). В код можно сразу вносить дополнения и изменения с объяснением их влияния на результат. А ниже я приведу возможный вариант первой лекции для не программистов.
Пример лекции
Возьмём простую задачу о полёте пушечного ядра. Вылетая с начальной скорость V0 (м/с) под углом α (радиан) ядро преодолевает горизонтальное расстояние L (м):
где g ≈ 9,81 м/с2 — ускорение свободного падения.
Если нужно посчитать L для V0 = 300 м/с и α = 35°, то достаточно воспользоваться обычным калькулятором, не забывая преобразовать градусы в радианты: умножить значение угла на π/180. Но если нужно считать L для разных значений V0 и α, то идея с калькулятором уже не выглядит такой привлекательной и становится проще написать несколько строк кода, например, на Python:
mport math V0 = 300 a = 35 a *= math.pi / 180 L = (V0 ** 2) * math.sin(2 * a) / 9.81 print(L) # 8621.033218219342
По крайней мере, теперь можно только менять значения V0 и a, остальное посчитает сама программа. Однако правильнее будет не задавать значения V0 и a заранее, а вводить их с клавиатуры:
V0 = float(input("V0 = ")) a = float(input("Angle = "))
Здесь функция input() возвращает ввод пользователя в виде строки, а float() преобразует введённую строку в число с плавающей точкой (если введено именно число). Небольшой пример для понимания различий между строкой и числом:
print(11.1 + 11.1) # 22.2 print("11.1" + "11.1") # "11.111.1" print(float("11.1") + float("11.1")) # 22.2
Если же нужно проверить значения от и до с одинаковым шагом, то может пригодиться цикл:
mport math V0 = 300 for i in range(5, 90, 10): # от 5 до <90 с шагом 10 a = i * math.pi / 180 L = (V0 ** 2) * math.sin(2 * a) / 9.81 print("a =", i, "L =", L)
Также необходимые для проверки значения можно поместить в массив (или «список» в терминах Python):
import math V0 = 300 A = [15, 30, 35, 40, 45, 50, 60, 75] for a in A: grad = a a *= math.pi / 180 L = (V0 ** 2) * math.sin(2 * a) / 9.81 print("a =", grad, "L =", L)
И так далее. Как говорили древние, exemplis discimus (мы учимся на примерах).
Некоторые пояснения
Как видно, лекция сразу начинается с задачи, которую можно решить и без программирования (посчитать на калькуляторе), но тут же приводится аргумент: если задачу решать много раз, то написание программы даёт преимущества. Студенты должны увидеть эти преимущества и получить первое представление о программировании именно как об инструменте для снижения трудоёмкости вычислений. А блок-схемы можно показать для общего понимания, но не требовать их знания перед началом «использования инструмента».
Для одной и той же задачи показано несколько вариантов программы, которые отличаются в основном способом ввода исходных данных: в виде констант, ввода с клавиатуры, цикла с параметром и массива (в смысле, списка) с его обходом в цикле. В процессе также показаны различия типов данных (float vs. str). Сами примеры дают базовое представление об импорте модулей (math), использовании констант и функций (pi, sin, input), операций умножения, деления и возведения в степень (*, /, **), а также сложения (чисел) и конкатенации (строк). А ещё о выводе данных (print) и комментировании кода (#).
Что дальше? Рассмотренная здесь задача не даёт представления о ветвлении и циклах с предусловием. Но вокруг ещё так много интересных и разнообразных задач, что хватит на все лекции. Каждая лекция может начинаться с примера решения очередной задачи, а уже после этого можно дополнительно дать практичные советы и справочные материалы (например, список полезных функций из модуля math). Чем больше разнообразных примеров и практических советов попадёт в конспект студента, тем выше вероятность, что хоть что-то из этого конспекта ему когда-то пригодится в дальнейшей учёбе или работе.
Заключение
На самом деле вопрос не только в информатике, а в подходах к преподаванию в целом. Есть предметы, явно посвящённые решению какой-то одной задачи и там из лекции в лекцию рассматриваются все возможные аспекты и способы решения этой задачи. К таким предметам претензий нет. Но есть много предметов общего назначения (не только информатика) без чётко выраженных целей и задач. Такие предметы легко превращаются в «лекции по карате»: что-то изучается, а как этим пользоваться — непонятно. И ладно бы они были совсем уж бесполезными (для культурного развития, так сказать), но часто их реальная польза просто не показана или не раскрыта в полной мере.
Полезность лекции можно оценить, ответив на несколько вопросов. Во-первых, какую задачу эта лекция решает и какой полезный навык она даёт? Во-вторых, сколько из лекции можно выкинуть без фактического ущерба для решаемой задачи и получаемого в процессе навыка? В-третьих, насколько сильно поменяется формат лекции, если она будет направлена на подготовку к олимпиаде? И если вдруг лекция окажется просто «подготовкой к экзамену», то это не смертельно — студенты всё равно чему-то научатся. Но если целью является подготовка специалиста, то надо готовить именно специалиста, независимо от того, какой предмет при этом преподаётся.
Комментарии (11)

chesser69
20.06.2026 16:55Я 13 лет преподавал ИТ. Раз в две недели такие дисциплины не преподают. Ваш пример тоже бы не сработал. Как я понимаю, Excel уже давно был. Все эти примеры там проще и круче. Я, чтобы хоть чуть заинтересовать школьников (вёл занятия и в нескольких ВУЗах и в колледже и в школе), показывал возможности Excel по формулам и... уходил в макросы а из макросов сразу в их корректировку руками. Вот это ребятам было интересно.

d_n_trunov Автор
20.06.2026 16:55Раз в две недели такие дисциплины не преподают
Я писал о лекциях, которые действительно было раз в 2 недели. Практические (в смысле, лабораторные) были каждую неделю, но только как "закрепление лекции". Если лекции ещё не было, то "сидим, раскладываем пасьянсы".
Я, чтобы хоть чуть заинтересовать школьников
Вашим школьникам/студентам с Вами повезло. Видно, что Вам самим было интересно и Вы этим интересом делились. Думали не о том, чтобы отчитать лекцию и забыть, а о том, чтобы кого-то заинтересовать.
Ваш пример тоже бы не сработал
Я лишь поделился видением лекции, которая мне была бы интересна как слушателю. И которую мне интересно было бы провести, если бы была такая возможность. А пример с полётом пушечного ядра мне просто недавно попался в учебнике и заинтересовал меня. Таких примеров может быть ещё очень много.

AzIdeaL
20.06.2026 16:55Сколько лекций по карате нужно прослушать, чтобы уверенно противостоять нескольким хулиганам в тёмном переулке? Звучит нелепо, правда? Тогда сколько лекций по информатике нужно прослушать, чтобы научиться пользоваться компьютером? Компьютером в широком смысле — аппаратной частью, существующими программами и создавать свои программы под конкретные задачи. И
В первом случае -- год с хвостиком по три...пять часов в день по шесть в неделю.
Во-втором -- пять академических часов, платных, накануне сдачи практики по Турбо Паскалю.
ЗЫ: в первом случае навык остаётся на ближайшую пятилетку, а во-втором -- сразу забыл после сдачи зачота))

d_n_trunov Автор
20.06.2026 16:55В первом случае -- год с хвостиком по три...пять часов в день
Интересные оценки. Наверное, речь всё-таки идёт о практических занятиях с отработкой приёмов. Грубо говоря, если руками-ногами махать. А вот если слушать классические лекции (преподаватель рассказывает - студенты слушают, конспектируют), то наверное года будет маловато. Тут на все пять потянет))
vadimr
Информатика и не должна учить программировать, это теоретическая дисциплина. Просто так уж сложилось, что очень часто путают информатику (computer science) с программированием. Мне лично повезло принадлежать к немногим школьникам, которым преподавали то и другое на двух соответствующих предметах. Ну и в институте на программистской специальности, конечно, было множество специальных дисциплин, относившихся к тому и другому.
Моё мнение, что дай бог если ученики образовательной школы освоят из информатики общее представление о целенаправленной деятельности и понятии алгоритма, о законах логики, о формальных языках. Поймут, что не надо выходить замуж за LLM и вообще антропоморфизировать компьютер. А программы большинству и не надо писать.
То же самое в целом относится и к студентам непрофильных специальностей, программирование – для них дело факультативное.
d_n_trunov Автор
Тем не менее, у нас дисциплина называлась "Информатика", а по сути это были основы программирования. Была и теория, и лабораторные занятия (в компьютерной лаборатории), и курсовая с вычислениями и их анализом. А вот у коллег с другой группы курсовая сводилась только к построению блок-схемы. Возможно, я просто в своё время не понял пользу такой курсовой.
Может, и не надо. У нас некоторые для сложных вычислений использовали Excel или MathCAD.
Dhwtj
computer science это про методы сортировки наизусть? Да ну нафиг!
Вот software engineering тоже наука только более прикладная: управление сложностью, все архитектурные -abilities, управление командой
d_n_trunov Автор
Вы что?! На экзамене же может пригодиться))
vadimr
На некотором этапе понимания методы сортировок начинают иллюстрировать некоторые глубинные свойства сортируемых последовательностей. Но для студентов это практически недостижимо. Это уже когда создаётся субъективный образ конкретного алгоритма сортировки в целом, а не отдельных его шагов.
Вообще, большинство преподаваемых в вузе материалов более-менее проясняется в уме где-то к 40 годам, если работать по профессии.
d_n_trunov Автор
А мне почему-то жаль, что на это уходит так много времени. И почему-то кажется, что это время может зависеть от способа подачи материала ещё в вузе.
Нужно ли программирование не программистам? Вот пример: в дипломном проекте выполняются расчёты параметров гиброобработки пласта. 14 начальных параметров, 28 формул. Некоторые параметры нужно подбирать для получения оптимального результата и все 28 формул нужно пересчитывать. Разве основы программирования здесь лишние? Для написания программы нужно лишь разбираться как набрать формулу и ввести/вывести данные. А нас блок-схемами пичкали.
vadimr
Конечно, в таких расчётах основы программирования нужны. Но они сами по себе мало кому нужны.
Блок-схемы лично я не переношу, но я вообще не люблю графическую форму подачи данных. А некоторые люди, наоборот, очень любят и без этого не мыслят. В том числе очень умные.
С другой стороны, я предпочитаю разбирать алгоритмы до основ и потому люблю чистые лямбда-формы. Но большинству студентов это точно не нужно.