Программирование как способ мышления

Программирование изменилось. В языках первого поколения, таких как FORTRAN и C, бремя для программистов было переводить концепции высокого уровня в код. С современными языками программирования - я буду использовать Python в качестве примера - мы используем функции, объекты, модули и библиотеки для расширения языка, и это не только делает программы лучше, но и меняет то, что программирование.

В программировании речь шла о переводе: выражение идей на естественном языке, работа с ними в математической записи, затем написание блок-схем и псевдокодов и, наконец, написание программы. Перевод был необходим, потому что каждый язык предлагает разные возможности. Естественный язык выразителен и читабелен, псевдокод более точен, математическая запись лаконична, а код исполняем.

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

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

Рисунок 1

В качестве примера на рисунке 1 показан алгоритм поиска в ширину (BFS), выраженный в псевдокоде, используемом в популярном учебнике. Авторы разработали этот язык, чтобы быть более кратким и читаемым, чем большинство языков программирования в то время, которое было в 1989 году.

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

Рисунок 2

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

Такие языки, как Python, также идеально подходят для обучения и преподавания. Например, недавно я написал книгу о цифровой обработке сигналов (DSP). Я использовал Python для написания простой библиотеки и Jupyter (это среда разработки программного обеспечения) для создания онлайн-тетрадей, которые объединяют текст, код и результаты, включая изображения и аудиоклипы.

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

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

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

https://naslednik124.ru info детская психология.