Команда
Контакти
Про нас

    Головна сторінка


Програмування для математиків





Дата конвертації31.07.2018
Розмір6.86 Kb.
Типдоповідь

Наталія Дубова

У 1980 році на мехматі МДУ був введений новий курс програмування

Разом з появою перших обчислювальних машин виникла потреба у фундаментальній підготовці тих, хто навчить цих електричних монстрів осмисленої діяльності, тобто програмістів. На мехматі МДУ на початку 50-х Олексій Андрійович Ляпунов читав перший навчальний курс по принципам програмування. У 1980 році тут же виникає новий курс програмування, який в кінцевому підсумку надав серйозний вплив не тільки на кілька поколінь «мехматян», а й в цілому на викладання інформатики в країні.

У заголовок статті ми винесли назву підручника з мехматскому курсу програмування, який вийшов вісьмома роками пізніше. Автори курсу Геннадій Вікторович Лебедєв і Анатолій Георгійович Кушніренко підкреслюють, що назва це відображало не просто приналежність предмета головному математичного факультету країни. До 80-м стало очевидно, що мехмат, що проклав дорогу викладання теоретичного програмування, вже не має відповідного його високої наукової планці курсу з цього предмета. Викладання програмування зводилося до викладу Фортрану - мови, авторитет якого в сфері наукових розрахунків був незаперечний, і опису архітектури машин IBM 360, з яких робилися наші ЄС ЕОМ. Якість цих курсів ніяк не відповідало мехматскім вимогам. Визрівала потреба в абсолютно новому курсі, здатному внести вклад в загальну математичну культуру студентів.

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

Після кількох днів боротьби з бібліотеками на Фортране створити такий пакет програм не вдалося.

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

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

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

Два інших кита - технологія програмування «зверху вниз», cхематіческое зображення якої винесено на обкладинку підручника, і ієрархія структур даних з описом методів реалізації одних структур на базі інших - найважливіші компоненти, без яких не обходиться програміст-практик. Мехматскій курс програмування дійсно закладав базу для грамотної розробки складних систем. Однак тільки виклад важливих понять, не підкріплене практикою, мало що дало б студентам. Тому в курсі пропонувалося розібратися з кількома закінченими проектами (побудова опуклої оболонки, реалізація компілятора з мови арифметичних формул, побудова зображення поліедра) і, що найголовніше, модифікувати ці проекти, тобто, вивчивши 6-8 тис. Рядків еталонних програм, додати тисячу -другу своїх. Так студент на практиці закріплював отримані теоретичні знання і одночасно готувався до реальної роботи. Адже в житті часто все так і відбувається - рішення задачі зводиться до модифікації готових програмних систем.

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

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

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