Преподавание языков программирования при обучении программистов, Виталий Николаевич Брагилевский

Профессиональный программист обычно владеет несколькими языками программирования. Но заранее обучить программиста всем языкам невозможно. В процессе обучения могут появиться новые языки, или какие-то языки неожиданно становятся популярными. В этих условиях следует обучать наиболее «типичным» языкам, не обязательно самым актуальным, но облегчающим освоение новых языков программирования. Язык программирования – это инструмент, способ выражения мысли, и даже способ самого мышления. Кроме того, язык программирования – это ещё и некий стиль работы. При обучении языкам программирования необходимо также обучать и стилю написания программ, а именно, какие конструкции принято использовать и как они связаны между собой. Многие языки программирования начинают оцениваться и с точки зрения того, насколько правильно их использовать в качестве инструмента для обучения. Рассмотрим два языка, часто используемых для обучения. Например, язык Python идеален как язык программирования, когда мы готовим специалистов в разных областях: химиков, математиков, биологов, лингвистов, историков. Но для обучения программистов не стоит его использовать. Python – это язык с устаревшим синтаксисом, пришедшим из начала 90-х годов. У него неудачная система типов. Слишком большая свобода для написания кода. Кроме того, переход от Python к другому языку гораздо сложнее и опаснее, чем в обратную сторону. Язык С также создаёт проблемы при обучении программистов. Это сложный язык, который всё время развивается и его трудно полностью изучить. С его помощью легко написать «работающую», но некорректную программу. Практически невозможно быстро перейти к решению прикладных задач. Был проведён опрос вновь поступивших студентов 1-го курса Факультета математики и компьютерных наук СПбГУ о том, какими языками программирования они владеют. Большинство (89%) владеют языками C или C , больше половины (63%) знают Python. Можно в этом случае учить языку, который все якобы «знают». Но не понятно какой процент обучающихся его знает, насколько хорошо знают. Можно переучивать на профессиональные подходы к написанию кода, но это достаточно сложно, к тому же не все будут согласны переучиваться. А что же делать с теми, кто совсем не умеет программировать или обучен другому языку? Возможно решением этих проблем станет обучение студентов менее знакомым им языкам программирования, например, , Julia, Kotlin. При этом необходимо сразу же обучать «хорошо» писать на них программный код. Основные характеристики качества кода: удобство сопровождения, гибкость, портируемость, возможность повторного использования, удобочитаемость, тестируемость, понятность. Некоторые считают, что нужно обучать языку Java, поскольку это главный объектно-ориентированный язык программирования. Этот взгляд уже устарел лет на 15-20. Есть мнение, что нужно преподавать Javascript или PHP, поскольку, зная их студенты смогут быстро начать работать в компаниях, но вузы в этом не заинтересованы. Некоторые предлагают начать с низкоуровневости, с языка ассемблера, С, чтобы студенты знали, как всё устроено изнутри. Кто-то предлагает начинать с функционального программирования на языке Haskell. Но пригодятся ли эти знания студентом позже, в том числе, для перехода на другие языки программирования? Каждая образовательная программа или преподаватель делают свой выбор относительно преподаваемых языков программирования, который зависит от многих факторов. Нужно думать о том, как этот выбор будет влиять на дальнейшее обучение, как изучаемый язык программирования будет применяться в последующих дисциплинах. Языки программирования все разные и заставляют нас думать по-разному. Навыки программирования просто так не переносимы с одного языка на другой. На образовательной программе «Современное программирование» Факультета математики и компьютерных наук СПбГУ на первом курсе обучения в сентябре-октябре реализуется курс «Основы программирования» (язык Kotlin). Параллельно реализуется дисциплина «Основы Linux» (язык Bash). В ноябре-декабре преподаётся дисциплина «Введение в объектно-ориентированное программирование» (язык Kotlin), и параллельно дисциплина «Низкоуровневое программирование» (Язык C ). Кроме того, на первом курсе используется Python для решения задач в курсе «Дискретная математика». Во втором семестре первого курса на языке Kotlin реализуются проекты, в том числе и командные. Студенты приближаются к решению промышленных задач. С тоже изучается в полной выкладке, и одновременно начинается курс «Алгоритмы и структуры данных». На втором курсе стоит задача расширить кругозор студентов, и в третьем семестре они изучают язык Haskell. В четвёртом семестре в рамках курса математической логики изучается язык логического программирования Prolog. Не третьем курсе обучения в рамках дисциплины «Машинное обучение» используется Python. C 5-го по 8-ой семестры студентам предлагаются дисциплины по выбору: Python, Scala, Java, C#, Rust, Javascriptm PHP.
В начало