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

Програмування змінилося. У мовах першого покоління, таких як FORTRAN і C, тягар програмістів було переводити концепції високого рівня код. З сучасними мовами програмування - я буду використовувати Python як приклад - ми використовуємо функції, об'єкти, модулі та бібліотеки для розширення мови, і це не тільки робить програми краще, але й змінює те, що програмування.

У програмуванні йшлося про переклад: висловлювання ідей природною мовою, робота з ними в математичному записі, потім написання блок-схем і псевдокодів і, нарешті, написання програми. Переклад був необхідний, тому що кожна мова пропонує різні можливості. Природна мова виразна і читабельна, псевдокод точніший, математичний запис лаконічний, а код виконуємо.

Але ціна перекладу полягає в тому, що ми обмежені підмножиною ідей, які ми можемо ефективно висловити кожною мовою. Деякі ідеї, які легко висловити в обчислювальному відношенні, незручно писати в математичному записі, а символічні маніпуляції, які ми робимо з математики, неможливі у більшості мов програмування.

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

Малюнок 1

Як приклад на малюнку 1 показаний алгоритм пошуку завширшки (BFS), виражений у псевдокоді, що використовується в популярному підручнику. Автори розробили цю мову, щоб бути більш коротким і читаним, ніж більшість мов програмування в той час, який був у 1989 році.

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

Малюнок 2

Звичайно, запуск програм – це весь зміст програмування, але це ще не все. Здатність виконувати код робить програмування інструментом для роздумів та досліджень. Коли ми висловлюємо ідеї як програм, ми робимо їх тестованими; коли ми налагоджуємо програми, ми також налагоджуємо наш мозок.

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

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

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

Використовуючи обчислювальний підхід, ми можемо піти «згори донизу», розпочавши з бібліотек, які реалізують найважливіші алгоритми, такі як швидке перетворення Фур'є. Студенти можуть спочатку використовувати алгоритми, а потім дізнатися, як вони працюють. Вони можуть бачити найважливіші ідеї, такі як спектральне розкладання, без засліплення деталями. Вони можуть працювати з реальними програмами в перший день, які забезпечують мотивацію йти глибше. І вони можуть бути набагато веселішими.