Моя точка зрения

В 70-х и 80-х годах все программисты были математиками, наверное поэтому предмет программирования называли прикладной математикой. В то время технологический подход к программированию только начал формироваться, и главной доблестью специалиста считалось умение грамотно написать алгоритм. С тех пор утекло много воды, подход к предмету сильно изменился. Появилось достаточно много людей, совершенно серьезно полагающих, что все алгоритмы уже написаны, и единственно, что требуется современному программисту - это владение технологией сборки алгоритма из уже готовых процедур, функций, объектов и т.д. В какой-то степени это справедливо. Действительно, сделано много. Сегодня можно быть вполне успешным программистом, умеющим решать полезные задачи, за которые хорошо платят, но эти специалисты могут быть очень плохими математиками. Сегодня быть успешным программистом и быть хорошим математиком, означает разные вещи.

Может быть это и правильно, но давайте подумаем вот о чем. Технологию могут освоить многие. И технологии программирования для того собственно и разрабатывались, чтобы программирование стало массовой профессией, чтобы стало возможно промышленное программирование. Разработка алгоритмов – задача более тонкая. Здесь, во-первых, требуются более глубокие знания, а во-вторых, в этом деле есть серьезный элемент творчества. И лично я из своей и программисткой, и педагогической практики заметил, что человек, владеющий уверенными навыками алгоритмизации, способен самостоятельно освоить любую технологию. А вот обратное - неверно. Хорошее понимание технологических моментов ничего не дает для развития умений алгоритмизации.

Поэтому ключевой пункт моей школы – это алгоритмизация и хорошее знание математики. Второе основание – многоязычие. Сегодня в объявлениях часто можно встретить – требует программист, пишущий на Питоне, Си или каком-либо ином языке. Деление программистов по признаку языка - самое примитивное деление, какое только можно придумать. Не язык составляет суть программиста. Конечно, совсем уйти от языковой проблемы нельзя и мое мнение такое - настоящий специалист должен свободно владеть двумя, тремя языками и уметь быстро осваивать новый язык или систему программирования. Более того, языковое образование, безусловно, не должно ограничиваться императивными языками. Необходимо быть знакомым со всеми основными идеями в области построения языков программирования.

Третье основание моего метода - опора на прикладные задачи. Весь курс – это последовательность задач от самых простых до профессиональных. Поэтому, я имею смелость утверждать, что могу подготовить специалиста в области программирования с нулевого уровня.

Очень важен вопрос, для кого возможно стать программистом. Здесь, я думаю, дело обстоит следующим образом. В любой профессии есть уровень творчества и уровень технаря, хорошо решающего точно поставленную задачу. Творчеству вас никто не обучит. Думаю, мы сегодня очень плохо понимаем, что такое творчество,  тем более, как ему учить. А вот научить техническим навыкам решения задач, даже сложных, вполне возможно, и мой большой и педагогический, и программисткий опыт говорит о том, что это возможно если не для всех, то для очень многих. Никакого особенного таланта для этого не нужно. А если вы имеете способности к предмету, то вполне возможен и выход на уровень творчества.

А что для этого необходимо? Очень много терпения и очень много личного труда. Если вы на это готовы, то я смогу вам помочь. Сейчас я работаю со всеми желающими в режиме дистанционного обучения. В общем, пишите если есть желание.

С уважением, Виталий Валерьевич Потопахин. Учитель программирования. Email: lotos-khv@yandex.ru

Свободно распространяемые компиляторы используемые в моей школе

Си (CodeBlocks)

Компонентный Паскаль (BlackBox)

Питон (Python 2.7.3)