Чому в MIT більше не вивчають SICP

Днями широке увагу привернуло, що відбулося на початку року на митапе NYC Lisp виступ Джеральда Джей Сассмана, — одного з авторів великого і могутнього SICP, а також хрещеного батька Scheme. Всьому виною — відповідь на питання, чому в MIT припинили викладати став легендарним курс 6.001, побудований на основі книги Сассмана і Абельсона «Структура та інтерпретація комп'ютерних програм» (питання поставлене на 59 хвилині).



Сассман назвав дві причини; втім, відразу зауважу, що в першій з них немає нічого особливого. До 1997 році Абельсон і Сассман вже втомилися розповідати практично одне і те ж з 80-их, тому вирішили залишити викладання і запропонували чолі кафедри самостійно вирішити, як вчинити з самим курсом. Тут дивуватися дійсно нема чому — що завгодно може осточертерть, якщо займатися ним досить довго.

Втім, друга причина набагато серйозніше. На думку Сассмана, вони з Абельсоном усвідомили, що навчальний план SICP більше не в силах підготувати інженерів до того, що являє собою «інжиніринг» сьогодні. У 80-их і 90-их інженери будували складні системи, комбінуючи прості і добре вивчені «частини». Метою SICP було надати мова абстракцій для міркувань про таких системах.

Сьогодні справи йдуть не так. Зараз інженери зазвичай пишуть код для складного апаратного забезпечення, яке вони не до кінця розуміють (причому часто це відбувається через комерційної таємниці, а не в силу лінощів або нестачі часу — взяти ту ж Apple і її технології). Це ж твердження справедливо і для програмного забезпечення, оскільки програмні оточення складаються з гігантських бібліотек з широкою функціональністю. Згідно Сассману, сьогодні його студенти більшу частину свого часу витрачають на читання мануалів до цим бібліотекам, щоб розібратися в тому, як зв'язати їх разом з простою метою — щоб все запрацювало і зробило те, що їм потрібно.

Зі слів Сассмана, «Програмування сьогодні більше нагадує науку: ви берете частина бібліотеки і «тикаєте» в неї — дивіться на те, що вона робить. Потім ви запитуєте себе: «чи Можу я налаштувати так, щоб воно робило те, що мені потрібно?». Підхід «аналіз через синтез», використовуваний в SICP, коли ви будуєте велику систему з простих, маленьких частин, став неактуальним. Сьогодні ми програмуємо «методом тику».

Зрештою, в якості альтернативи для Lisp в MIT був обраний Python. На користь мови викладачів схилив той факт, що для Python доступно значна кількість бібліотек, які дозволяють використовувати його для вирішення вправ в найрізноманітніших типах проектів (наприклад, для написання ПЗ для управління роботами).

Втім, сам Сассман пожартував, що використання Python було рішенням у дусі пізнього зв'язування" («late binding»), оскільки план навчання SICP був більш послідовним" порівняно з тим, що зайняв його місце. Він зізнався, що разом з колегами по колишньому не уявляє собі, яким має бути оптимальний план навчання.

Думки щодо сучасної освіти в цілому і того, чому ж все-таки повинні навчатися майбутні software engineer, розходяться радикально — тому запропонувати однозначний висновок із нововведення неможливо. Згідно одному з них, фундаментальною метою навчання CS є розуміння того, як працюють комп'ютери, а не вивчення конкретних мов програмування, і вже поготів — бібліотек. З думкою співавтора курсу Абельсона щодо кінця ери SICP в MIT можна познайомитися за адресою.

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

Одна з байок про MIT завжди говорила про те, що «вивчення SICP і Lisp — це той момент, коли першокурсники починають залишати більшу частину світу позаду себе щодо можливості вирішення проблем (мається на увазі problem solving) і вмінню робити свою роботу»; більш того — багато випускників MIT надалі якраз і займаються тим, що пишуть бібліотеки самі, а не використовують чиї-то ще. Думається, що незважаючи на жорстокі реалії бізнесу, серед нас знайдуться ті, кому (потай) набагато більше задоволення приносить процес навчання програмування «з нуля», ефективне використання ресурсів і побудова своїх велосипедів, ніж щоденні розборки з чужими API і зв'язування вже готових open source компонентів у прагненні зробити те, що потрібно — те саме «get work done», про який вів мову Сассман (хоча новий підхід у цьому відношенні справді ближче до виробничих завдань). Однак, часи, коли студентам під час навчання доводилося займатися створенням компіляторів/інтерпретаторів, можуть відійти в минуле швидше, ніж нам здається.

Зрозуміло, все це — не привід відмовлятися від знайомства з SICP. За традицією, посилання на саму книги, лекции додаються.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.