Компьютерное программирование - это навык, который в значительной степени игнорируется образованием, особенно от начальной до средней школы. К счастью, школы начинают предлагать учебные программы по информатике. Но что такое информатика?

Стандарты CSTA K-12 выделяют 5 направлений, которые нацелены на то, чтобы прояснить, что информатика - это не просто программирование.

  1. Вычислительное мышление
  2. Сотрудничество
  3. Вычислительная практика и программирование
  4. Компьютеры и устройства связи
  5. Этические воздействия

Сотрудничество, устройства и этика - темы для отдельной статьи.

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

Новая концепция, представленная 5 нитями, - это вычислительное мышление.

Вычислительное мышление

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

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

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

Программирование против кодирования

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

За использованием терминов программирование по сравнению с кодированием стоит в значительной степени незарегистрированная история. Определение этих слов зависит от того, кого вы спрашиваете. Есть такие, которые описывают программиста как высокоуровневого дизайнера или изобретателя, использующего предопределенные функциональные блоки для решения проблемы. Затем они описывают кодировщика как человека, который переводит задачи в машиночитаемые инструкции, как рабочий конвейера - кодовая обезьяна.

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

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

Помощь при программировании

Высший уровень

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

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

Самый низкий уровень

На самом низком уровне помощи при программировании у вас есть пустая поверхность ввода, такая как терминал, перфокарта или лента, и машина для выполнения кода. Машина либо даст результат, либо нет. Поиск правильного решения методом проб и ошибок - долгий и утомительный процесс.

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

Промежуточный уровень: интерактивные редакторы программирования

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

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

  • CodePen.io показывает вам код и вывод в одном месте и повторно оценивает ваш код при модификации. Это избавляет от необходимости настраивать редакторы и окна вывода, чтобы они находились в одном файловом контексте. Он автоматизирует цикл итераций разработки: сохранение кода, переключение контекста, обновление вывода, определение успехов и сбоев, переключение контекста, редактирование, повторение. Возможно, что еще более важно, он позволяет мгновенно передавать код с помощью URL-адреса.
  • Block Builder, усовершенствованный проект Tributary, позволяет вам исследовать код визуализации D3.js, сохраненный в блоках. Он предоставляет контекст выполнения кода для визуализации данных, автоматизирует итерацию, совместно использует код и предоставляет интерактивный пользовательский интерфейс для игры с переменными, называемыми Inlet.
  • Аппарат - это одновременно графический редактор и инструмент для программирования. Переменные и функции не полностью абстрагируются от блоков, но возвращаемые значения этих выражений отображаются как свойства для визуальных объектов.

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

Люди понимают то, что видят. Если программист не может видеть, что делает программа, он не может этого понять. - Брет Виктор, Изучаемое программирование

Искусство программирования

Утрачено или еще не определено

Хотя ученые уже определили информатику как прикладную математику, мы действительно находимся на формирующей стадии определения того, что значит быть компьютерным ученым. Ассоциация для вычислительной техники при описании потребности в информатике для всех учащихся в разделе Новый образовательный императив: улучшение образования в области компьютерных наук в старших классах должен начинаться с« Что такое компьютер Во всяком случае, наука? " Ясно, что информатика не закрепилась в том, что люди считают общеизвестным.

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

Ключевое различие между обучением логическому выражению процесса с помощью компьютерного мышления и программирования - это язык, который вы используете. Вычислительное мышление использует языковой контекст, который вы уже установили в своей голове. Обучение программированию также включает в себя обучение взаимодействию с чем-то, для чего не установлен тот же язык.

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

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

Об авторе

Geoffery Miller (Geo) является основателем codelam и участником проекта с открытым исходным кодом Inlet . После 5 лет обучения программированию в Университете штата Флорида для неосновных специалистов он работает над тем, чтобы сделать процесс программирования более увлекательным и творческим с помощью игр и игрушек.

Спасибо Ларри Веру за редактирование и советы.