среда, 23 декабря 2015 г.

Какой язык программирования изучать в школах



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

Сравнение языков

Я бы рассматривал только такие языки: Free Pascal, GNU C++, Java, C#. С моей точки зрения Basic слишком тупиковая ветвь в плане синтаксиса, чтобы его изучать. Скриптовые языки Perl, Python, PHP, Groovy, Ruby и т.д., ориентированы на быстрое решение каких-то прикладных задач, в основном Web, и не являются базовыми для алгоритмизации. Есть функциональные языки, которые становятся все более популярными в практическом программировании, однако в школе их изучение вероятно только факультативно.

Pascal - классический алгоритмический язык, который позволяет сосредоточится на алгоритмах и реализации своих структур данных. Многие учителя знают этот язык. С другой стороны, не имеет серьезной прикладной реализации (Delphi - не в счет). Нет современной визуальной среды.

C и C++ - прекрасный язык для реализации эффективных алгоритмов. Имеет прикладное применение для реализации критических с точки зрения производительности модулей, разработки для iPhone / iPad. Прекрасно подходит для изучения ООП. Имеет мощные библиотеки алгоритмов, и более эффективный компилятор, нежели Free Pascal, что делает язык наилучшим для применения в олимпиадах. С другой стороны, язык более сложен для изучения - сложная работа с указателями, сложные синтаксис. Язык "позволяет совершать ошибки". Вряд ли у нас много учителей, которые знают С++ и могут ему обучать.

Java - очень востребованный на рынке труда язык (как и технологии с ним связанные), разработки для Android. Может применяться на олимпиадах, но, в основном, со студенческого уровня. Имеет современные среды разработки. С точки зрения обучения более сложен чем Pascal, т.к. требует понимания ООП.

C# -  востребованный на рынке труда язык (в рамках .NET технологии), разработки для мобильных приложений. Допустим в некоторых соревнованиях по программированию со студенческого уровня. С точки зрения обучения более сложен чем Pascal, т.к. требует понимания ООП. Имеет современные среды разработки.

Анализ Цели

Один из важных вопросов. Какую Цель наша образовательная система ставит перед собой? 

  1. IT - одно из важнейших направлений экономического развития страны и мы массово готовим профессионалов?
  2. Мы развиваем интеллектуальный потенциал нации и делаем акцент на естественные науки в школе?
  3. Мы хотим более эффективно выбирать лучших людей способных к информатике, жертвуя при этом средними показателями?
В случае (1) - моя рекомендация ориентироваться на Java, С#, Web технологии. Что-то на постоянной основе, что-то на факультативной. С++ - факультатив для олимпиадников. (2) Наверное, Pascal + C++ - как факультатив для наиболее способных. (3) C++ как база плюс углубленная алгоритмика для олимпиадников.

Численный анализ

У меня есть предположения, что будет легче даваться ребятам, а что будет тяжелее. Но мне сложно дать численную оценку этой разницы. К примеру, оценить сколько людей потеряют интерес к информатике, если учить будут С++ а не Pascal.  Поэтому я бы провел так называемое a/b тестирование. На определенной выборке учителя, с примерно одинаковым знанием языков параллельные группы обучает двум разным языкам и сравнивает результаты по некоему тестированию. На основании этого делается статистический анализ.

Анализ опыта

Кстати, как с этим вопросом обстоят дела в России, США, Китае, Индии? Кто-то изучал их опыт? Нужно как-то синхронизироваться с институтами. Чему учат там?

Главный вопрос

Однако, во всей этой истории с выбором языка есть вопрос, который я считаю самым важным. Мы можем выбрать язык, но кто ему будет обучать детей? Достаточно ли у нас людей в принципе способных обучать алгоритмике? Как мы обучаем их? Какие программы повышения квалификации для учителей 8-9 классов? И еще, если они действительно знают эти языки программирования и могут спокойно перейти на любой другой, который мы скажем, почему они не зарабатывают те же деньги что и в школе, но в долларах?

С моей точки зрения, нам нужно сосредоточится на образовательной системе на основании удаленных лекций и курсов по примеру https://www.coursera.org/ 

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

0 коммент.:

Отправить комментарий