При изучении алгоритмов в курсе информатики образовательной школы вводятся алгоритмические языки для управления исполнителями. В самом простом случае это может быть язык стрелок. Сначала используется 4 стрелки, показывающие направление движения карандаша для рисования линий в рабочей тетради вдоль осей. Затем к ним добавляются ещё 4 стрелки для диагональных перемещений. Для тех, кто ещё не умеет или не любит писать, предназначена программная среда ПиктоМир, в которой команды управления виртуальным роботом задаются при помощи пиктограмм. В начальной школе для записи алгоритмов может использоваться язык Лого в ЛогоМирах, а в средней - КуМир - школьный алгоритмический язык.
Для составления команд и алгоритмов в ЛогоМирах и КуМире используется алгоритмический язык на кириллице, что, как считается, более понятно русскоязычным пользователям и является одним из их главных достоинств. При этом сразу возникает вопрос, является ли текстовое программирование с использованием данных алгоритмических языков и вообще языков программирования оптимальным для изучения основ управления исполнителями? Давайте разбираться.
К преимуществу алгоритмического языка относят наглядность текста, независимость от ограниченного набора машинных команд, набор операций выбирается из удобства формулирования алгоритмов и др. Рассмотрим пример записи команды для вычисления простого выражения:
ЛогоМиры покажи 2 + 2 (пробелы важны и 2+2 не сработает) КуМир вывод 2+2 Консоль браузера 2+2
Что понятнее вам? Мне понятнее последний вариант, потому что через месяц после окончания изучения алгоритмических языков надо будет вспоминать, а что там нужно писать для вывода результата вычисления математической операции - печать, напечатать, напечатай, вывести, вывод, выведи, покажи, вычисли или др.
В целях оптимизации кода в данных языках используются сокращённые названия команд - вп, нц, кц, лит, лог и др. Когда видишь сокращения int, bool и др., то это понятно, так как языки, использующие их, являются распространёнными по всему миру, но при описании алгоритмов намного понятнее будет комментарий, написаный на привычном человеческом языке, например:
функция ВыводСуммы a,b выводим результат вычисления выражения a+b
Выходит, понятность алгоритмических языков проявляется не всегда и не во всём.
Для перемещения исполнителя Черепашки вверх в ЛогоМирах используется команда вперед или вп, а в для перемещения Робота в КуМире - вверх. Разные исполнители могут находится в разной обстановке и иметь разные команды, но, с другой стороны, командный интерфейс для выполнения похожей работы у разных исполнителей должен коррелироваться, что позволит пользователю быстрее и проще адаптироваться к новому, используя свой предыдущий опыт. Навык работы с разными интерфейсами необходим, но проще ли будет изучать Excel, если интерфейс данного приложения будет отличаться от Word? Если же учащийся сначала изучал ЛогоМиры, а затем перешёл к изучению КуМир, то ему придётся переучиваться, потому что синтаксис команд у них разный. Более того, отличаются и действия похожих команд. Если в КуМир команда вправо означает перемещение Робота на одну клетку вправо, то похожая команда в ЛогоМирах направо 100 означает поворот Черепашки по часовой стрелке на угол 100 градусов, а не перемещение вправо на 100 пикселей, как можно было бы ожидать.
Можно много и долго говорить о том, что эти алгоритмические языки похожи, легки в освоение и др., но указанного выше факта изучения нового синтаксиса и логики работы это не отменяет. Вы сами что предпочтёте, в начальной школе изучать эсперансо, а в средней малоупотребительный диалект английского языка или и там, и там практический английский язык? Последнее, но почему тогда в информатика предлагает школьникам первый вариант?
Можно отменить изучение ЛогоМиров в начальной школе и начать обучение работе с КуМир с 7-го класса, но это не кажется оптимальным решением в условиях растущего запроса на IT-специалистов. Можно продвинуть КуМир в начальную школу, как это уже сделано применительно к старшей, но тогда на протяжении всего курса информатики школьники будут изучать язык программирования, который за рамками школы практически нигде не используется на практике. Вы сами что предпочли бы изучать, повсеместно используемый английский язык или какой-нибудь диалект русского языка, на котором говорит небольшая группа людей?
Есть мнение, что после изучения КуМир переход на язык программирования Pascal, который также изучается в школе, происходит легко, но это не отменяет необходимости изучать синтаксис и этого языка (который также стоит не на первом месте в рейтингах практически востребованных языков, но он хотя бы востребован на практике). Если не КуМир, тогда какой язык программирования выбрать? Выбор любого языка приведёт к спорам. Если выбрать Basic, то почему не Pascal? Если Pascal, то почему не Python, С++ или С#? Если Python, С++ или С#, то почему не Java и т.д. Как же быть? Посмотреть на проблему и существующие варианты её решения шире.
Один из недостатков любого языка программирования, использующегося для обучения, является необходимость изучения его синтаксиса. Ситуация в сфере IT за последнее время изменилась коренным образом, сместив акцент с настольной разработки в web и мобильную разработку, а в образовательной программе происходит лишь перетасовка языков программирования. Но помимо текстового программирования существует ещё и визуальное программирование. Знаем-знаем - Delphi, Visual Basic… Нет, Delphi, Visual Basic - это текстовые языки программирования, которые при помощи одноимённых сред разработки позволяют строить интерфейс приложений визуальным образом. Можно сказать, что и здесь происходит визуальное программирование, поскольку добавление на форму компонентов приводит к автоматической генерации соответствующего кода, но логика работы приложения программируется при помощи текстового кода. А в нашем случае речь идёт о визуальных языках программирования, позволяющих строить логику управления исполнителями визуальным образом, например, при помощи графических блоков, которые соединяются друг с другом как элементы пазла, как в среде Scratch, для получения нужного алгоритма. Но это же язык программирования для детей! Нет, он задумывался на возраст от 8 до 16 лет и прекрасно подходит для обучения основам составления алгоритмов и программирования в школе.
К преимуществам визуального программирования относятся:
Помимо Scratch существуют десятки сред разработки с использованием визуального программирования. Некоторые из них позволяют получить исходный код в текстовом виде, а некоторые - преобразовать текстовой код в блоки. Преимущества очевидны, но почему это не используется в школе? Вот и я хочу задать этот вопрос.
Визуальные среды разработки стали более функциональными и удобными для отладки и тестирования кода. Можно выбрать язык программирования, осуществлять проверку и подсветку синтаксиса, а также многое другое, что недоступно визуальному программированию, но при всём этом они развивают логическое мышление в контексте выбранного языка программирования. Каковы цели курса информатики? Учиться ради учёбы, выпуск программистов или развитие навыков логического мышления, что постоянно требуется в жизни? В рамках дополнительного образования можно предложить детям изучать визуальное программирование, но скажите, логично ли такая программа обучения, когда на практике вас учат водить легковой автомобиль, что в жизни пригодится с большой степенью вероятности, а на теоретических занятиях вам даёт информацию для водителей-дальнобойщиков, начиная от устройства грузовиков и заканчивая детальным рассмотрение вопросов в билетах, касающихся их категории? Нет, но для чего это делается в школе? Раздел информатики, касающийся изучения основ составления алгоритмов и программирования, напоминает мне кружок радиолюбителей, в котором в приказном порядке заставляют основательно изучать радиодетали и паять радиоприёмники, только не паяльниками, а современными паяльными станциями. Возможно, лет 20 назад это ещё и было актуально, но на данный момент это вызывает сильное удивление.
На уроках информатики проходят основы работы в разных приложениях, использующихся на практике (если это не откровенно устаревшие версии ПО). Это пригодится не всем, но хотя бы останется понимание того, что помимо Windows, игр, браузера и соцсетей есть ещё что-то, что при необходимости можно найти и изучить более основательно. Также и с изучением основ программирования. Оно заинтересует не всех, но это не причина нагружать школьников не использующимися на практике языками программирования. Если нужна именно отечественная разработка, то её следует создать, основываясь на современных тенденциях. Программирование 1С на кириллице поначалу казалось дикостью, но затем привыкаешь, потому что это востребовано на практике. И с этой позиции изучение программирования даже 1С в школе выглядит перспективнее того, что изучают в ней сейчас.
Многочисленные исследования учёных показали, что программировать на кириллице ощутимо проще, практичнее и целесообразнее для русскоговорящих пользователей? Тогда имеет смысл запустить Национальный проект кириллизации отечественной сферы IT, чтобы опыт 1С перенести во многие другие приложения. При этом синтаксис языка очень желательно сделать единообразным, а не так, что в одном курсе учишь нч и кц, в другом - начало и конец, а где-то ещё - начать и закончить. Но пока этого нет, может, стоит обратиться за помощью к зарубежной практике?
У нас часто говорится о межпредметных связях, но как связано программирование исполнителей, изучающееся в рамках информатики, с тем, что реально используют в тех же школьных кружках робототехники? Механические платформы и роботы широко используют Basic, КуМир и Pascal или, эти языки программирования являются основными для программирования мобильных устройств? Нет, а визуальное программирование в этих и не только областях используется и весьма успешно. Для чего обучать пользователей работать стилусом, если повсеместно используется работа пальцами? Не пора ли образовательный процесс привести к тому, что пригодится на практике?
Преимущества визуального программирования очевидны и, наверно, ПиктоМиры можно рекомендовать для изучения, так как составление алгоритма в них происходит визуальным образом. Возможно, мне потребовалось минут 20 чтобы понять, как в этих мирах нужно решить простую задачу - появлялось сообщение, что робот либо ломался, либо задание не было выполнено. Для сравнения откройте Scratch и уже через 10 минут будет понятно то, что нужно делать, хотя эта среда на порядок сложнее ПиктоМира. Почему так? Потому что создатели Scratch понимали, для чего и для кого они создают свой продукт, что видно уже по главной странице сайта.
Один из логичных вариантов построения практической части курса информатики для изучения основ программирования может быть следующим. В начальной школе использовать открытый проект code.org. В средней школе - Scratch, code.org, Blockly, факультативно - App Inventor, Sketchware, Thunkable и др., в старшей - визуальное программирование и JavaScript для развития навыков текстового программирования. JavaScript не является учебным языком программирования? Спорное утверждение, но его использование выглядит логичным и обоснованным по многим моментам, включая широчайшую область применения и высокую практическую востребованность. JavaScript не изучают в ВУЗах? Не вижу в этом проблемы. В контексте ЕГЭ учащиеся демонстрируют способность логического мышления, а не знания конкретного языка программирования. Если требуются знания чего-то конкретного, то для этого нужно стыковать профили входа и выхода различных учебных заведений, в рамках чего можно изучать Python, C++, Java и др., когда понятно, кому и для чего это действительно необходимо.