Данный материал был подготовлен для журнала "Компьютер в школе и семье" летом 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, т.к. требует понимания ООП. Имеет современные среды разработки.
Анализ Цели
Один из важных вопросов. Какую Цель наша образовательная система ставит перед собой?
- IT - одно из важнейших направлений экономического развития страны и мы массово готовим профессионалов?
- Мы развиваем интеллектуальный потенциал нации и делаем акцент на естественные науки в школе?
- Мы хотим более эффективно выбирать лучших людей способных к информатике, жертвуя при этом средними показателями?
В случае (1) - моя рекомендация ориентироваться на Java, С#, Web технологии. Что-то на постоянной основе, что-то на факультативной. С++ - факультатив для олимпиадников. (2) Наверное, Pascal + C++ - как факультатив для наиболее способных. (3) C++ как база плюс углубленная алгоритмика для олимпиадников.
Численный анализ
У меня есть предположения, что будет легче даваться ребятам, а что будет тяжелее. Но мне сложно дать численную оценку этой разницы. К примеру, оценить сколько людей потеряют интерес к информатике, если учить будут С++ а не Pascal. Поэтому я бы провел так называемое a/b тестирование. На определенной выборке учителя, с примерно одинаковым знанием языков параллельные группы обучает двум разным языкам и сравнивает результаты по некоему тестированию. На основании этого делается статистический анализ.
Анализ опыта
Кстати, как с этим вопросом обстоят дела в России, США, Китае, Индии? Кто-то изучал их опыт? Нужно как-то синхронизироваться с институтами. Чему учат там?
Главный вопрос
Однако, во всей этой истории с выбором языка есть вопрос, который я считаю самым важным. Мы можем выбрать язык, но кто ему будет обучать детей? Достаточно ли у нас людей в принципе способных обучать алгоритмике? Как мы обучаем их? Какие программы повышения квалификации для учителей 8-9 классов? И еще, если они действительно знают эти языки программирования и могут спокойно перейти на любой другой, который мы скажем, почему они не зарабатывают те же деньги что и в школе, но в долларах?
С моей точки зрения, нам нужно сосредоточится на образовательной системе на основании удаленных лекций и курсов по примеру https://www.coursera.org/
С другой стороны, наверное, на данный момент нужно давать возможность имеющимся учителям давать возможность обучать на тех языках, к которым они привыкли и делать акцент на углублении знаний и методики, а не изменении языка.
0 коммент.:
Отправить комментарий