Вячеслав Чермных Дебютант      30     Распечатать

Как стать хорошим программистом?

В настоящий момент, я вот уже семь лет обучаю детей программированию в системе дополнительного образования. Существенно, что не в общеобразовательной школе. Так что дети приходят ко мне, в основном, по собственному желанию и учатся, в основном, добровольно.

Хорошо программировать мне удается научить примерно одного ребенка из десяти. В этой статье я не собираюсь пускать кому-то пыль в глаза (для этого официальные органы имеются), а попытаюсь поделиться своими наблюдениями.

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

Для начала проведем некоторое разделение: есть пользовательский уровень использования уже готовых программ — компьютерная грамотность и собственно программирование — создание новых программ.

Компьютерная грамотность, при нынешней распространенности вычислительной техники, необходима практически всем нормальным людям. Обучать ей необходимо всех школьников. Кстати, при обучении компьютерной грамотности мне удавалось обучить практически всех. Этот предмет именуется информатика и в школах нормально преподается по принципу: «А это, деточки, подчеркнутый шрифт, и, чтобы его получить, надо нажать вот на эту кнопочку». Для изучения информатики достаточно иметь средний интеллект и среднюю память.

С программированием не все так просто. В начале моей преподавательской деятельности меня удивило резкое разделение школьников на тех, кто сразу схватывают программирование, и тех, у кого оно «не шло» и, в конечном итоге, «не пошло». В первую очередь, было непонятно, почему это разделение было очень резким. Или — или.

В дальнейшем выяснилось, схватывали «налету» те, кто в течение нескольких лет до этого занимались в математическом кружке. И чем дольше я работал, тем больше убеждался в правоте того, что:

больших успехов в изучении программирования достигает тот, у кого выше уровень математического мышления.

Позже, когда я общался с преподавателями университета, оказалось, что америки я не открыл. Им это давно было известно. Но вот в родительской среде этого, похоже, не знают.

Для того, чтобы у ребенка в старших классах были успехи в изучении программирования, в младших классах необходимо стимулировать его интерес к математике. Обычные занятия в школе не в счет, надо чтобы он получал углубленные знания в математическом кружке или в другом виде дополнительного образования.

Считаю, что было бы справедливо в учете олимпиадных достижений по программированию писать не только фамилию преподавателя программирования, но и фамилию преподавателя математики.

С какого класса надо учить программировать?
В основном, с 8 класса. Попытки учить семиклассников в моем случае не увенчались заметным успехом. Правда, сразу оговорюсь, отдельные школьники, занимавшиеся математикой или имеющие большой интерес к программированию, занимались у меня с 7 класса и достигли больших успехов (являются призерами уровня российской олимпиады).

А большинство следует учить тогда, когда они уже знакомы с алгеброй. Ведь программа — это текст, а умение оперировать символами развивается именно при изучении алгебры. Написал с 8-го, а затем подумал, что это в том случае, если ставить задачу участвовать в олимпиадах, а если не участвовать, то и с 9-го вполне можно.

Общие замечания: языки программирования различаются синтаксисом, то есть способом выражения мысли программиста. Главное не синтаксис, а алгоритмическое мышление. Если его нет, то нет и навыка программирования. Если выработано алгоритмическое мышление, то переход с одного языка программирования на другой не столь уж и проблематичен. Во многих школах преподавание ведется на BASIC-е просто потому, что других языков преподаватели не знают, а те, кто знают, работают программистами и ерундой (вроде преподавательской деятельности) не занимаются.

Сколько времени требуется на изучение программирования?
В зависимости от той цели, которую мы себе ставим. Элементарные навыки постигаются за год. Повышенный уровень — за два года, после чего следует продолжить обучение в ЛКШ (Летняя Компьютерная Школа). Лично я считаю своей задачей подготовить школьников к обучению в ЛКШ. С теми, кто отучился там в группе С, я программирование больше не изучаю, а даю им элементы дискретной математики, после чего они уже доучиваются в старших группах ЛКШ.

Те сроки, которые я указываю, относятся к обучению в небольших группах. Если же брать обычные классы (даже математические), то эти сроки следует умножить примерно на два. Отсюда получается: если начать изучение программирования в 9 классе, то за два года можно изучить начальный уровень, а 11 класс мы выбрасываем на ЕГЭ, тут уж не до программирования.

«Мучить программированием» всех подряд нет особой необходимости. То есть я категорически против всеобщей асунизации (в советские времена внедрялось АСУ — Автоматизированные Системы Управления — крику и лозунгов было много, а толку мало). Итак, учить программированию надо тех, кто этого действительно хочет. Учить надо в небольших группах. Учить должны профессионалы. Вот тогда и будет результат, а иначе — по-черномырдински, как сейчас.

30 комментариев (комментировать)
Теги: обучение, школа, ученики, программирование, компьютеры
Рейтинг статьи Ваша оценка
Подробнее

Поделиться

Опубликовано 17.10.2008

Обсуждение статьи:

  • Владимир Кузнецов Владимир Кузнецов Дебютант 17 октября 2008 в 03:55   # Ответить 0 +1

    "больших успехов в изучении программирования достигает тот, у кого выше уровень математического мышления"
    я бы сказал логическое/алгоритмическое мышление, частным случаем которого является склонность к математическим операциям

    "языки программирования различаются синтаксисом"
    неточность, порочащая вас как специалиста в этой области: не только синтаксисом, но и логикой, вспомните про разделение языков программирования на процедурные, функциональные, ооп и тд
    но я согласен с вами с тем, что кто умеет логически мыслить, и имеет опыт программирования хотя бы на одном языке, тому будет проще изучать новый

    "Итак, учить программированию надо тех, кто этого действительно хочет. Учить надо в небольших группах."
    у меня в школе стандартный минимум информатики был для всех, а для желающих преподаватель вел дополнительные курсы. на них вначале ходило человек 10, потом уменьшилось до двух человек, а периодически я занимался с преподавателем программированию тет-а-тет, за что большое спасибо ему, ибо он с интересом и желанием делился своими знаниями


    ps: статья вроде и правильная, но как-то она недоработана, местами скудновата чтоли или поверностна, или плохо систематизирована, в итоге после прочтения что-то не понравилось, но оценивать не стал

    • Юрий Лях Юрий Лях Читатель 17 октября 2008 в 16:03   # Ответить 0 +1

      В добавок к комментарию Владимира - в институте на самом первом занятии по программированию (IBM360/370 assembler) преподаватель сказала, казалось бы, противоречивую вещь - типа: то, что она будет рассказывать, мы все равно сейчас не поймем, по-этому задача первых лекций - привыкнуть к терминам и попытаться представлять их (объекты, названные этими терминами) взаимодействие. Т.е. делается попытка объяснить непонятные вещи на непонятном языке. Может остюда и растут ноги - кто-то лучше усваивает абстракции (что, вообще-то, не свойственно для мозга) , а кому-то нужны образы, а без образов мозгу не за что зацепиться (представьте кота на наклонной стеклянной поверхности), чтоб дальше строить цепочку знаний - идет элементарная пробуксовка. Ведь изучаются проще те вещи, на которые у человека есть ассоциации.

      Оценка статьи: 5

      • Вячеслав Чермных Вячеслав Чермных Дебютант 17 октября 2008 в 18:25   # Ответить 0 +1

        "то, что она будет рассказывать, мы все равно сейчас не поймем"
        Таким приемом, тем более для школьников, я никогда не пользуюсь.
        Весь мой курс построен на том, что на каждом этапе я стараюсь добиваться полного понимания того, что я рассказываю.
        Основной принцип: "от простого к сложному".
        Даже детям я говорю: "если вы не понимаете чего-то сложного, значит раньше было непонято что-то простое".
        "а без образов мозгу не за что зацепиться"
        Есть два способа мышления:
        1 образное
        2 вербальное (словесное)
        Если школьник знаком с алгеброй, то ему можно преподавать программирование на вербальном уровне, ведь в конечном итоге, программа это некий текст.
        Но на начальном этапе можно давать и графические диаграммы. Лет 30 назад они активно использовались и даже в официальных описаниях программ, сейчас это как то ушло.
        Развитию образного мышления очень сильно помагает геометрия (математика однако) которую в настоящее время гуманитарии, которые мыслят вербальными категориями, активно изгоняют из школьных программ.

        • Юрий Лях Юрий Лях Читатель 17 октября 2008 в 19:28   # Ответить 0 +1

          слово "вербальный" - слишком неоднозначно, например:
          "Вербальный интеллект определяет успешность учения по всем предметам и, в первую очередь гуманитарным (язык, литература, история и т.п.)". (http://www.effecton.ru/384.html).

          "Программа - некий текст" вспомните "МАТРИЦУ" - там на экране тоже бежал некий текст, но из совершенно непонятных символов - за что там можно было зацепиться ? А тут пошли языковые конструкции - синтаксис, семантика. Кстати - полностью Вас поддерживаю, что в связи с переходом на объектный подход (ООП, ООД), к формальному описанию алгоритмов внимание уменьшилось. Считается, что лучшее описание - сама программа на каком-нибудь ЯВУ.

          Оценка статьи: 5

          • Владимир Дубровский Владимир Дубровский Дебютант 20 октября 2008 в 11:59   # Ответить 1 +1

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

          • Владимир Иванович Пресняков Владимир Иванович Пресняков Читатель 23 января 2011 в 11:08   # Ответить 0 +1

            Юрий Лях, режет глаз "Каком нибудь" мужского рода, "Ява" -женского. Если вставить "языке", как то глаже будет

            • Марианна Власова Марианна Власова Бывший главный редактор 24 января 2011 в 10:55   # Ответить 0 +1

              Владимир Иванович Пресняков, не получится, ЯВУ - язык высокого уровня.

              • Владимир Иванович Пресняков Владимир Иванович Пресняков Читатель 24 января 2011 в 17:37   # Ответить 0 +1

                Марианна Власова, почему ЯВУ а не ЯВА? Довольно известный язык. Я на Ява-скрипт уже лет 15 пишу. Прямо таки сверхпопулярный. Программы годятся и для Виндовса и для Мака. Или это разные языки?

                • Юрий Лях Юрий Лях Читатель 24 января 2011 в 18:23   # Ответить 0 +1

                  Владимир Иванович Пресняков, среди программеров существовал такой каламбур: "бред на ЯВУ" . По поводу Языков Высокого Уровня.

                  Оценка статьи: 5

                  Комментарий отредактирован 24 января 2011 в 21:44

                • Вячеслав Чермных Вячеслав Чермных Дебютант 24 января 2011 в 19:26   # Ответить 0 +1

                  Владимир Иванович Пресняков, Java -это язык высокого уровня.
                  можно посмотреть здесь.
                  JavaScript - это высокоуровневый специализированный язык для программирования Web сайтов можно посмотреть здесь.

                  • Владимир Иванович Пресняков Владимир Иванович Пресняков Читатель 24 января 2011 в 19:57   # Ответить 0 +1

                    Вячеслав Чермных, зачем мне это смотреть? В книжном шкафу две полки книг про этот язык, 1/3 из них- на русском.
                    JavaScript программирует не сайты, а html страницы, пришлось на него перейти после того, как браузер страницы с Бейсик скриптом стал опознавать как опасные.
                    Сайты жемчужным или питоньим языком программируются. Последние 5 лет сайты программирую на 1С.

                    Комментарий отредактирован 24 января 2011 в 20:18

                    • Марианна Власова Марианна Власова Бывший главный редактор 24 января 2011 в 21:47   # Ответить 0 +1

                      читать дальше →

                      • Владимир Иванович Пресняков Владимир Иванович Пресняков Читатель 25 января 2011 в 03:00   # Ответить 1 +1

                        Марианна Власова, спасибо, наконец то дошло. Термин ЯВУ в среде программистов как то не принято применять по следующим причинам:
                        На языке низкого уровня редко кто умеет программировать, а среди тех, кто умеет, редко кто программирует.
                        Термин слишком пафосный, и по смыслу противоположный, на ЯВУ может программировать самые тупые и неквалифицированные программисты, а на ЯНУ программирует 1-2 из 10000.
                        Если бы меня попросили перечислить ЯВУ только названия, через запятую, это заняло бы 3-4 страницы, а из ЯНУ и двух строк не натяну.
                        Так что термин явно избыточный вроде автомобиля с ДВС (а они все с ДВС, кроме паровых, а кто трогал рукой автомобиль с паровым двигателем?)

  • Андрей Зайкин Андрей Зайкин Читатель 15 мая 2010 в 09:49   # Ответить 0 +1

    Хмм... Програмирование мы начнем учить только в следующем классе а точнее в 11. Так значит теперь из-за ***вой программы я не стану хорошим програмистом?? Ну спасибо автору за статью прям вселил в меня оптимизм.

    Оценка статьи: 1

    • Вячеслав Чермных Вячеслав Чермных Дебютант 15 мая 2010 в 20:26   # Ответить 0 +1
      Бездельникам в программировании нет места

      Андрей Зайкин, ну надо-же, обидился. 10 лет дурака валять да в трубочку плеваться - не обидно, а тут реальную информацию прочёл, и сразу обиделся.
      Там, где информатику начинают учить в 11 классе, не ставится задача подготовки будущих программистов, тем более хороших. В таких школах, просто немного знакомят, с тем, что такое программирование, скажем для будущих экономистов и т.д., т.е с теми, кто сталкивается с программами, но сам их не пишет.
      Если два раза в неделю, по 2 часа изучать программирование, то можно неплохо преуспеть. Если меньше-увы.
      С хорошим репетитором по 2 раза в неделю и ЕГЭ можно сдать.
      А если раз в неделю по часу, в преполненном классе, вряд-ли.
      Так что чудеса бывают, но не сразу и не вдруг, а в результате систематической настойчивой работы.
      А лентяям в программирование и вовсе соваться не рекомендуется. Программирование-это труд, и даже голова от него болит порй.

      Комментарий отредактирован 15 мая 2010 в 21:19

      • Владимир Кузнецов Владимир Кузнецов Дебютант 15 мая 2010 в 21:08   # Ответить 0 +1

        Вячеслав Чермных,
        1 было бы желание, можно обойтись и без регулярного репетитора
        2 программист обязан быть ленивым, ибо иначе это не будет программист, компьютеры изобрели из лени ) и многие программы пишутся так же
        3 голова болит - да, более чем

        • Вячеслав Чермных Вячеслав Чермных Дебютант 15 мая 2010 в 21:41   # Ответить 0 +1

          Владимир Кузнецов,
          1 бывает, у нас в Краснодаре есть учительница специализированной школы с уклоном в математику-программирование, выпускники которой сдают без репетиторов. Но я знаю лишь одну такую (не исключаю других грамотных - работающих подпольно), и это на город практически миллионник. Квантор существования к вашему высказыванию применим. А вот квантор всеобщности я бы ставить не стал.
          2 сам грешен, спорить не буду. Но при этом без труда не обойтись, что и проявляется в нашем единстве мнений по пункту 3.
          а вот у бездельников она болит как правило с перепоя.

          Комментарий отредактирован 15 мая 2010 в 21:43

        • Владимир Иванович Пресняков Владимир Иванович Пресняков Читатель 23 января 2011 в 11:16   # Ответить 0 +1

          Владимир Кузнецов, это точно, подпрограммы и циклы именно ленивые программисты придумали

  • Александр Селедин Александр Селедин Читатель 17 сентября 2014 в 19:15   # Ответить 0 +1

    Советую начать с простого языка программирования как можно раньше. Например, Pascal, Delphi.

    Комментарий отредактирован 17 сентября 2014 в 22:56

  • Александр Притула Александр Притула Читатель 7 марта 2015 в 23:02   # Ответить 0 +1

    С 7ого класса забил на учёбу, математикой не интересовался.
    Пол года назад поступил в колледж на программиста, знание английского на нуле, по математике с горем пополам на тройку) Но спец предметы вроде "Операционные системы" и "Алгоритмизации" одни пятёрки. Получается хорошо, первый раз увидел паскаль, в отличии от своих одногрупников (В школе на его не преподавали, как и бейзик). Сейчас лучший в группе. Но знания математики, как и английского уже начинают сказываться. Недавно, буквально месяц назад серьёзно увлёкся написания различного простейшего кода) Но самому далеко уйти не получатся. В городе спец.школ программирования нету. Да и средств на это тоже нету... Хочу попросить помочь в изучении математики и не много объяснить в коде если что будет не понятно...

Посмотреть все комментарии (30)

Чтобы оставить комментарий зарегистрируйтесь или войдите на сайт

Войти через социальные сети: