Програмування для математиків h2>
Наталія Дубова p>
В
1980 році на мехматі МДУ було введено новий курс програмування p>
Разом
з появою перших обчислювальних машин виникла потреба у фундаментальній
підготовці тих, хто навчить цих електричних монстрів осмисленої
діяльності, тобто програмістів. На мехматі МГУ на початку 50-х Олексій
Андрійович Ляпунов читав перший навчальний курс за принципами програмування. У
1980 тут же виникає новий курс програмування, який в кінцевому
підсумку зробив серйозний вплив не лише на кілька поколінь «мехматян», але
і в цілому на викладання інформатики в країні. p>
В
заголовок статті ми винесли назву підручника з мехматскому курсу
програмування, який вийшов вісьмома роками пізніше. Автори курсу Геннадій
Вікторович Лебедєв і Анатолій Георгійович Кушніренко підкреслюють, що назва
це відображало не просто приналежність предмета головному математичному
факультету країни. До 80-х стало очевидно, що мехмат, проклали дорогу
викладання теоретичного програмування, вже не має відповідного його
високої наукової планці курсу з цього предмету. Викладання програмування
зводилося до викладу Фортрану - мови, авторитет якого в сфері наукових
розрахунків був незаперечний, і опису архітектури машин IBM 360, з яких
робилися наші ЄС ЕОМ. Якість цих курсів ніяк не відповідало мехматскім
вимогам. Визріває потреба в абсолютно новому курсі, здатний внести
внесок у загальну математичну культуру студентів. p>
Тепер
його автори впевнені, що в підсумку, коли курс остаточно сформувався, їм
вдалося досягти цієї мети. Щоправда, напередодні 1 вересня 1980 такі
глобальні ідеї не формулювалися. Просто молоді викладачі вирішили, що кожен
студент, який прийшов на перше заняття з програмування, повинен піти з нього з
роздруківкою готової програми. Для цього вирішили написати пакет програм з
використанням бібліотек системи «Асфор» - скороченою версією Фортрану,
розробленої на мехматі спеціально для програмування студентських завдань.
Студенти мали побудувати алгоритм пересування нема кого «мандрівника» через
заданий набір перешкод і скласти програму, що складається тільки з викликів
стандартних програм. Далі залишалося тільки зібрати потрібні перфокарти з
набитими на них програмами, запустити їх обробку і отримати результат. p>
Після
декількох днів боротьби з бібліотеками на Фортране створити такий пакет програм
не вдалося. p>
«В
останню ніч в повному розпачі і від безвиході в голові народилася шалена
думка, що Фортран тут не потрібен. Треба написати інтерпретатор. З цієї ідеї і
стартував мехматскій курс », - пригадує Лебедєв. За дві години був написаний
інтерпретатор, що обробляє лінійні оператори знову придуманого мови з
російської лексикою. Перше заняття пройшло з повним успіхом. Вся група пішла з
виконаними програмами і вже набутим досвідом виправлення типових помилок.
У колишніх курсах студенти отримували перші результати не раніше ніж через
два-три місяці освоєння мови. p>
Написаний
за ніч інтерпретатор поклав початок спеціалізованому програмному
забезпечення, наявність якого стало одним з основних факторів ефективності
викладання нового курсу. Але в принципі курс можна було вивчати, навіть не
підходячи до обчислювальної машини. Курс вводив базові поняття програмування,
не приділяючи практично ніякої уваги синтаксису конкретних мов. Наприкінці
студенти отримували довідкові відомості про операторів Фортрану, щоб мати
можливість реалізувати на цій мові розроблені раніше на псевдокоді
системи. Але основний зміст курсу не прив'язується до визначеного мови
програмування, і в цьому було його важлива відмінність. p>
За
образним висловом авторів курсу, в його основі лежать «три кити», які
покликані допомогти студентові набути навичок грамотного програмування систем
обсягом у кілька тисяч рядків. Це поняття виконавця, технологія «зверху
вниз »і розвинені структури даних. Перше поняття, вигадане Володимиром
Борисовичем Бетеліним, творці курсу самі освоїли при вирішенні цілком
конкретних завдань і виявили, що з його допомогою можна з успіхом будувати самі
великі та складні системи. Фактично виконавець - пакет програм, що працюють
над загальними даними, - попередник об'єктно-орієнтованого
програмування, екземпляр класу в сучасній термінології. p>
Два
інших кита - технологія програмування «зверху вниз», cхематіческое
зображення якої винесено на обкладинку підручника, і ієрархія структур даних з
описом методів реалізації одних структур на базі інших - найважливіші
компоненти, без яких не обходиться програміст-практик. Мехматскій курс
програмування дійсно закладав базу для грамотної розробки складних
систем. Однак тільки виклад важливих понять, не підкріплене практикою,
мало що дало б студентам. Тому в курсі пропонувалося розібратися з
декількома закінченими проектами (побудова опуклій оболонки, реалізація
компілятора з мови арифметичних формул, побудова зображення поліедра) і,
що найголовніше, модифікувати ці проекти, то є, вивчивши 6-8 тис. рядків
еталонних програм, додати тисячу-другу своїх. Так студент на практиці
закріплював отримані теоретичні знання і одночасно готувався до реальної
роботі. Адже в житті часто все так і відбувається - рішення задачі зводиться до
модифікації готових програмних систем. p>
Новий
курс відразу привернув увагу студентів, так само як і професури. Подача предмета
була цікава і незвичайна. Кожен студент на першій лекції отримував іменну
роздруківку з розкладом курсу, програмами лекцій, переліком екзаменаційних
завдань. Викладачі прагнули зробити процес навчання максимально
ефективним, а студенти відчували, що про них піклуються, і не могли не оцінити
цього. Але з боку професорського складу, як згадує Кушніренко, нетрадиційний
підхід зустрів психологічне та емоційне неприйняття. Говорили, що настільки
повна распланірованность курсу з самого початку виключає творчий підхід до
читання лекцій. Боялися розповсюдження подібних методів на інші предмети. P>
Побоювання
ці були безпідставні. Нова постановка викладання програмування на
мехматі не заважала вивчення класичних математичних дисциплін. Виявилося,
що сильні студенти цілком здатні захопитися таким «приземленим» заняттям,
як програмування, знайшовши його цікавим і своєчасним. Творці курсу
вклали в нього всю свою енергію, захопленість і талант. «Ми були досить яскраві
хлопці і робили курс з великим смаком і інтересом », - згадує з притаманним йому
гумором Кушніренко. До середини 80-х на курсі програмування для математиків
була вирощена група молодих фахівців, яка разом з ветеранами
склала еліту факультетського програмістської спільноти. p>
Автори
курсу говорять, що підручник, виданий понад десять років тому, не соромно читати і
зараз. І додають, що порекомендують його будь-якій старшій школяру або
студенту, зацікавленому в глибокому вивченні програмування. У другій
половині 80-х із створеного на мехматі курсу виросло шкільне викладання
інформатики, яке почали повсюдно впроваджувати в ті роки. До цієї теми ми
неодмінно повернемося в майбутніх номерах. p>
Список літератури h2>
Для
підготовки даної роботи були використані матеріали з сайту http://www.osp.ru
p>