Компьютерра що таке вуз сьогодні
Всьому кращому, що є
в мені, я зобов'язаний книгам.
Що таке вуз сьогодні? Раніше відповідь на це питання звучало приблизно так: "Наш інститут - це просторі світлі аудиторії, найдосвідченіші викладачі, серед яких багато кандидатів і докторів наук, це найсучасніше обладнання, це.", - і так далі в тому ж ключі.
А що таке вуз сьогодні, в сенсі - зараз? На жаль, "світлі аудиторії" напівзруйновані "золотими ручками" студентів, та й обладнання вже далеко не найсучасніше. Проте навчальний процес в інститутах йде. Мені хочеться розповісти про те, чому і як навчають у вищій школі на прикладі одного, окремо взятого Московського авіаційного інституту і чи може нинішній вуз підготувати початківця програміста до самостійної роботи.
Коли почалася перебудова, ми всі опинилися не підготовлені до орієнтації на "маленької людини" в ролі кінцевого користувача - споживача нашої продукції. Це відноситься до всіх галузей науки і техніки, починаючи з автомобілебудування і закінчуючи програмуванням. Проте вищі навчальні заклади досить жваво відреагували на зміну положення. З'явилися спецкурси, орієнтовані на останні новинки в області програмного забезпечення персональних комп'ютерів. Я, студент початку дев'яностих, прекрасно пам'ятаю з яким задоволенням ходив на курси В. Н. Лукіна і Л. Н. Чернишова по базах даних і за методами побудови великих програмних систем. Цікаво було перш за все тому, що Новомосковсклі ці курси "живі" програмісти, люди, які беруть безпосередню в розробках цих самих СУБД і великих програмних систем.
Є певна специфіка в вищій технічній освіті. Воно, взагалі кажучи, не орієнтовано на "високу науку". Це освіта покликана дати людині в руки шматок хліба. На жаль, професія інженера повністю девальвувала, але ж раніше інженер був і конструктором, і механіком, і трошки вченим.
На відміну від університетської освіти, вища технічна більш спеціально, немає тієї широти охоплення і занурення в глибини теорії, але воно не гірше університетського вчить думати. Основна мета, яку ставлять перед собою вузи, - це закласти хорошу базу і навчити приймати самостійні рішення.
Якщо говорити безпосередньо про програмування, то треба дуже чітко собі уявляти, що знання деякого мови, навіть досконале, і вміння друкувати десятипальцевим методом не є ні необхідним, ні достатньою умовою для того, щоб стати програмістом.
Минуло кілька років після закінчення вузу, і тепер я вже маю моральне право виступати від імені викладачів. Не знаю як де, але Московський авіаційний інститут може заслужено пишатися по-справжньому продуманими програмами навчальних курсів з інформатики та програмування. (Йдеться про факультет прикладної математики та фізики.) З першого семестру починається читання курсу "Алгоритмічні мови та програмування". Оскільки я деякий час був активним учасником цього заходу, то можу сказати, що викладачі роблять все, від них залежне, щоб життя студентам не здавалося медом. Уже в першому семестрі студенти дізнаються про машинах Тьюрінга, причому на досить високому рівні. У літературі рідко зустрінеш зібрані разом програми для машин Тьюринга в п'ятірках, схеми і діаграми машин Тьюринга і теореми Шеннона, тому необхідність такого складного початку, з моєї точки зору, легко з'ясовна. Чим раніше студент починає розуміти, що програмування - це не просто вміння набирати на клавіатурі деякі оператори, а щось більш глибоке, тим краще. Теоретичний матеріал підкріплюється лабораторку на "реальної" машині Тьюринга. Ще одна схожа лабораторна робота пов'язана з нормальними алгоритмами Маркова.
Потім починаються лекції по Паскалю. Сперечатися про необхідність обов'язкового вивчення цієї мови можна довго. Але, як мені здається, уявлення про нього повинен мати кожен поважаючий себе програміст. Оглядове вивчення Паскаля в першому семестрі тим більше виправдано, що на старших курсах хлопці пишуть програми в основному на Сі / Сі ++. На прикладі Паскаля студенти знайомляться з основними конструкціями імперативного мови, вчаться грамотно оформляти програми. До речі, вимоги до оформлення пред'являються більш ніж жорсткі. Охоплення тим в задачах на лабораторних і курсових роботах дуже широкий, від обчислення деякої функції за допомогою ряду до написання найпростішої бази даних.
Практично весь другий семестр присвячений динамічним структурам даних і сортувань. Виклад перекладається з Паскаля на модулі-2, охочі можуть програмувати на Модулі-3 (об'єктна версія Модули). Така побудова забезпечує подальший, практично безболісний перехід до програмування на мові Сі ++, вивчення якого починається на другому курсі.
Позитивною стороною є і те, що викладання мов програмування ніколи не було в МАІ самоціллю. Обов'язково приділяється належна увага основним областям застосування кожного вивчається. Якщо Новомосковскется курс SQL, то можна бути впевненим, що розкажуть і про СУБД взагалі, і про схеми зберігання даних, і про технології "клієнт-сервер", і про реляційної алгебри не забудуть.
На старших курсах спектр обов'язкових і не дуже курсів вкрай широкий: від баз даних, які зараз необхідно знати, якщо хочеш влаштуватися на більш-менш пристойну роботу, до такої екзотики, як Пролог, Лісп і ряд інших мов штучного інтелекту. Вивчаються системи логічного висновку і розпізнавання образів, теорія компіляції. Коротше, після закінчення інституту навіть посередній студент має достатній багаж знань і ерудиції і для того, щоб підтримати заумний розмову на комп'ютерні теми, і для того, щоб легко включитися в реальний проект в якості розробника.
Так що ж, все здорово в окремо взятому Московському авіаційному інституті? Звичайно, ні. Звичайно, старі VAX 11/750, на яких ще я вчився, застаріли і морально, і фізично. Слава богу, вдалося перейти на "Альфу". Звичайно, хочеться працювати на шикарних персоналках з великими моніторами - і не під Unix, а під NT. Звичайно, дуже важко практично за свої гроші ремонтувати вийшла з ладу техніку. А просиджувати ночами за екраном, щоб привести систему в робочий стан, і не отримувати за це взагалі ніяких грошей? Це як? Ентузіазм зараз не в моді, проте зустрічається. Я схиляюся перед людьми, у яких вищий навчальний заклад - постійне і єдине місце роботи.
Саме розуміння глибинних процесів (точніше, їх основ) і дає інститут. Все інше вивчається і розуміється не більше ніж за пару тижнів при наявності опису або безпосередньо в процесі роботи. Саме конкретна робота, конкретна задача є основною мотивацією вивчення нових програмних продуктів і нових методологій в програмуванні, а вищу інженерну освіту як раз і дозволяє все це легко освоїти. І мені абсолютно незрозуміла споживча позиція багатьох сьогоднішніх студентів, які вважають, що інститут має їх чогось там навчити, а вони будуть чинити опір з усіх сил. Це, вибачте, совок. Людина повинна все досягати в житті сам, і вчитися він теж повинен самостійно, а завдання інституту - надати людині цю можливість. І максимально ускладнити життя, піднімаючи планку вимог на дуже велику висоту.
В якості останнього аргументу того, що інститут здатний підготувати молоду людину до конкретної роботи, наведу такий факт. Коли я готував цю статтю, то обдзвонив своїх інститутських приятелів, з якими провчився майже шість років на приматі МАІ. Практично всі вони зараз так чи інакше пов'язані з програмуванням. Вони працюють в різних місцях: кілька людей є співробітниками відділу програмування в банку, деякі стали "вільними художниками" і беруть участь в якості вільнонайманих співробітників в великих програмістів проектах, хтось працює безпосередньо в фірмах, що займаються розробкою програмного забезпечення. Найбільше мене вразило те, чоловік п'ять з моїх однокурсників, продовжують роботу на "ящиках" і в общем-то задоволені життям, принаймні - її нематеріальної стороною. Всі вони пишуть на різних мовах і для різних платформ, хтось із них намагається рухати науку і вже наближається до захисту кандидатської дисертації. Абсолютно різні люди, абсолютно різні погляди на життя і різні пріоритети. Все - професіонали досить високої кваліфікації (двоє з них самостійно керують великими програмістські проектами). Але всі вони зійшлися на тому, що, коли зрозумілий принцип, все інше - справа часу і досвіду. А досвіду навчити не можна.