Як вчили мови програмування у 90-ті: кодинг на папері, «списування» з популярних проєктів та самвидав
Як навчалися програмування 30 років тому? Які мови були популярними, наскільки легко було знайти потрібну інформацію, чи допомагала тодішня література та яку роль у підготовці програмістів відігравали виші? Про все це ми спитали у трьох досвідчених програмістів, які поділилися своїми спогадами.
«Вивчав мови програмування переважно методом „списування“ з популярних проєктів»
Всеволод Лобко, Principal Software Engineer у DataRobot
Я в IT з початку
Як водиться, я потрапив до Fido, потім до не зовсім легального інтернету, IRC, Usenet та інших «звичайних речей» того часу. Мені дуже пощастило швидко залишити російськомовне середовище, тож я почав багато користуватися письмовою англійською.
Перехід до програмування був досить органічним. Спочатку це були завдання малої автоматизації для знайомих: збір і зберігання показників лічильників, облік відвідувачів курсів тощо. Я знайшов роботу ще до навчання, але тоді була не дуже велика професійна «тусовка», тож майже всі всіх знали. Через знайомих потрапив до Фонду держмайна, де саме почалася робота з автоматизації приватизації: потрібно було оцифрувати та внести до загальної бази документи сотень тисяч підприємств, які приватизувалися, а потім провести власне приватизацію — зібрати реєстри покупців, розподілити акції тощо. Це був перший комерційний досвід і перше знайомство з Unix у вигляді SCO Unix :)
Raspberry PI з минулого (Blackfin evaluation board)
До речі, цікаво, що я навчався за спеціальністю з самого початку. Після 8 класу пішов до Київського оптико-механічного технікуму, який був базовим навчальним закладом для заводу «Арсенал», у найпершу групу за спеціальністю «Ремонт та обслуговування ЕОМ». Після технікуму вступив до КПІ на щойно сформовану кафедру САПР (системи автоматизованого проєктування). Навчалися на техніці, яка була. У школі — КУВТ і ДВК, у технікумі — ДВК і БК-0010, у КПІ — PC, VAX-station, DEC-station.
На щастя, ані в технікумі, ані в КПІ нас не вчили мов програмування чи алгоритмів. Ми навчалися електроніки, фізики, дискретної математики, теорії оптимізації, матаналізу й інших теоретичних дисциплін. Я вважаю, це дає набагато універсальніші знання, які залишаються релевантними довше та розвивають мислення замість навичок.
У технікумі я потрапив до закритої групи, яка займалася автоматизацією. Ми мали доступ до великої кількості промислових контролерів, моторів, сенсорів та інших штук. Це було дуже великим доповненням до базової програми навчання. Подібне сталося й в інституті, коли я отримав доступ до лабораторії, яка займалася дуже практичною діяльністю. Хоча, на мій погляд, навчальні заклади треба розуміти передусім як точки перетину з іншими людьми та можливостями, а не як гарантоване джерело практичних знань.
З Оксаною Лобко, 1997 рік
Щодо мов програмування, у «допекашну» епоху популярним був асемблер/BASIC, на PC «стандарт індустрії» — Turbo Pascal під DOS, деколи — Turbo-C, але значно менше. До Delphi я, на щастя, не дійшов, встиг перемкнутися на Unix до початку Windows, тож майже не стикався з розробкою під Win. На FreeBSD/Linux спочатку був C та Perl. Потім трошки PHP/FI (як його тоді називали). Далі досить довго був Tcl і XOTcl (цікава OOП концепція). Потім — як у всіх: PHP, а коли Python дійшов до production-ready стану, більшість комерційних проєктів того часу вже були на ньому.
Вивчав мови програмування переважно методом «списування» з популярних проєктів. Документація та туторіали теж допомагали. У доінтернетну епоху — книжки, Fido, старші/молодші брати по нещастю :) Хоча література з магазину була застарілою вже на момент друку. Я досить рано мав доступ до Fido і Internet, що мало істотне значення. З паперової класики можу, мабуть, назвати лише The Design and Implementation of the 4.4BSD Operating System Маршалла Кірка МакКузика у вигляді третьої копії з копії на ксероксі. Щодо журналів про комп’ютери, вони завжди були якоюсь «жовтою пресою».
Зате популярним був обмін знаннями. Мабуть, це була більше «горизонтальна передача», ніж менторство у сучасному розумінні. Також мені пощастило з кількома викладачами.
«Виші створювали тусовку зацікавлених осіб, які вже самі обмінювалися між собою програмами, інформацією, даними, технологіями»
Максим Тульєв, член правління Інтернет-асоціації України
Мені було дуже цікаво займатися комп’ютерною технікою ще змалечку. Серед іншого допомогли комп’ютерні курси в Палаці дитячої творчості на Площі Слави біля ст. м. Арсенальна (були ще й місцеві районні гуртки). Там я отримав як базові знання, так і знайомства. Курси були безплатними.
Перший комп’ютер я зібрав 1992 року. Так, у ті часи комп’ютер треба було паяти власноруч, перед тим довго вишукуючи дефіцитні деталі. Це було хобі — у реальній праці така техніка майже не використовувалася, хіба що для якихось складних інженерних розрахунків. Але не так, як зараз, коли, напевне, кожну нашу повсякденну дію ми робимо за допомогою гаджету.
Профільна освіта була дуже спеціалізована та сильно відставала від розвитку техніки. Тому всі, хто рухав IT того часу, були самоучками. Виші на кшталт КПІ давали ази, але це було зовсім не тим, що тоді вимагав ринок. Виші насамперед створювали тусовку зацікавлених осіб, які вже самі обмінювалися програмами, інформацією, даними, технологіями. І це реально працювало.
Щодо техніки, спершу це були різновиди архітектури i8080 (Z80), потім їм на зміну прийшли IBM PC (x86). Популярними мовами другої половини
Профільна паперова література була основним джерелом інформації. Так, вона швидко застарівала. Були й паперові самвидави, періодичні паперові журнали, що виходили раз на місяць. Їх купували, коли вистачало грошей або якщо там було щось особливо цікаве. Інтернет став доступним широкому колу наприкінці
Треба було під’єднувати модем до телефонної лінії, набирати відповідний номер, отримувати з’єднання з іншою системою та завантажувати відповідний файл, наприклад, книжку або технічну документацію. Знати, на якій саме BBS які є книги та файли. Ані Google, ані єдиної мережі, як ми її розуміємо зараз, для пересічного ентузіаста не існувало. У Fido теж можна було поспілкуватися, отримати відповіді на питання, але цикл «запитання-відповідь» зазвичай займав дні.
Тусовка, принаймні у Києві, була дуже гарна. Всі допомагали одне одному, цікавились новинами технологій, писали комп’ютерні віруси разом. У мене склалося так, що, коли вчився в інституті, я вже був співзасновником першої компанії «УНІС», але її давно немає — ще
«У типових командах 1990-х самоучок було більше, ніж власників профільних дипломів»
Михайло Завілейський, Leader of Organizational Development у DataArt
Я народився у 1970 році, тож розповідатиму про різні періоди з
Першим персональним пристроєм для програмування та ігор був калькулятор Б3-34, який батько приносив з роботи (коштував він місячну зарплату молодшого наукового співробітника чи інженера). Для навчання він був дуже корисним: інтерактивність, характерна для інтерпретованих мов, польський запис і стек в’їдалися у свідомість, операції з регістрів і переходи готували до освоєння асемблерів. Були й ігри: перший хіт — «Лунолет», який ознайомлював з багатьма аспектами реалізації чисельних методів. І з обмеженнями також — у грі «Політ в атмосфері» через нестачу пам’яті не було перевірок на допустимість вхідних параметрів — і мікросекундний потужний реактивний вихлоп допомагав перевищити швидкість світла, інакше зашкалювало опір атмосфери.
Паперове програмування готувало до взаємодії з великими машинами (так називали радянські мейнфрейми). Я навчався у фізико-математичній школі при університеті, і нас пускали на режимне підприємство, а викладачі давали свої логіни/паролі. (Кібербезпека? Ні, не чули.)
Ціна помилки була великою — черга на запуск програми могла бути багатогодинною. Досі пам’ятаю ганьбу, коли, роздрукувавши діаграму напруженості магнітного поля при непростій конфігурації зарядів, що рухаються, я побачив, що на вулиці дощ, а роздруківку треба завтра здавати вчителю. Вирішив «з голови» написати програму, яка роздрукує ще метр нісенітниці, щоб загорнути рулон з діаграмою. Один зайвий «0» зробив із метра десять, і на кожному аркуші докором друкувалося: «ТОВАРИШІ-КОРИСТУВАЧІ, ЕКОНОМТЕ ПАПІР».
Попри захоплення програмуванням зі школи, я пішов вчитися на радіофізику, щоб з’ясувати, що до кінця навчання спеціальність втратила кар’єрні перспективи через перебудову та скорочення військових замовлень. На щастя, та ж перебудова привнесла інновації у вищу освіту, і нам дозволили замінювати курси своєї кафедри на курси інших кафедр і навіть факультетів, з невеликими обмеженнями. Я пам’ятаю, як на останній сесії ціною двох тижнів інтенсивної підготовки та години ганьби я склав кафедральний та незамінний курс «Поширення радіохвиль», після чого виспався та за день склав на матмеху «Бази даних», «Експертні системи», «Технології програмування». І вишенька на торті — «Turbo Pascal».
Зустрічі гравців гри електронною поштою Galaxy/Galaxy Plus/Dragon Galaxy у 1998 році. Я захопився нею 1996 року, потім навіть написав свій сервер, щоб урізноманітнити ігрові механіки. З десятком поточних колег у DataArt я познайомився у грі, двоє з них — топменеджери та партнери
У Пітері, де я навчався, «програмістські» кафедри були на математико-механічному факультеті та факультеті прикладної математики та процесів управління. У
На моєму фізичному факультеті були лабораторії, де стояли персональні компʼютери IBM PC/AT 256. Викладачі й аспіранти любили на них грати, але мені, студенту другого-третього курсу, для навчально-наукових завдань поступалися місцем відразу.
Навчання у вишах було «старорежимним»: з лекціями, програмуванням на папері, тестами на знання «канонів». Треба сказати, що коли ми налагоджували співпрацю з університетами у першій декаді
Інша історія: восени 1990 року один з аспірантів фізичного факультету вирішив прочитати «додатковий» спецкурс про C++, розрахований на семестр (одна пара на тиждень). Після першої ж лекції я був зачарований, поїхав у суботу на компʼютерний ринок і купив книгу Страуструпа, роздруковану на АЦДП (алфавітно-цифровий друкуючий пристрій — пристрій обчислювальної машини, призначений для відображення на носії даних букв, цифр і спеціальних символів — ред.), та дискети з піратським Turbo C++.
Прочитав за вечір і ніч. Чесно, жодна інша книга в моєму житті не викликала в мене стільки емоцій і не принесла стільки насолоди. У неділю я поїхав на одну з робіт, і перша програма, портована з Turbo Pascal, була готова до вечора. На другій лекції через тиждень я виправляв викладача. Більше ті лекції я не відвідував. Так що вчити — вчили, але нестерпно повільно. Самонавчання ж було вкрай швидким, спрага до знань і технологій зашкалювала.
У середині
Працювати почав рано: потрохи ще з 1986 році, з
З Романом Махненком, він же GVNG, теж працює у DataArt
Були й курйозні моменти. Наприкінці
Завантажили ми багато, нового та цікавого дізналися теж чимало, а від позовів нас врятувало тільки те, що взяти з нас не було чого (хоча кілька компаній збиралися з нами судитися). З того часу ані наївного, ані навмисного промислового шпигунства ми, звичайно, не вели, але перевага роботи в аутсорсі в тому, що отримуєш доступ до великої різноманітності систем, створених клієнтами й іншими вендорами для клієнтів. Часто цей аспект недооцінюють, але так можна побачити і як треба, і як не треба, і чим що закінчується.
У типових командах
Тож точка перелому, коли якісна профільна освіта стала безумовно корисною, справді десь на зламі тисячоліть. Загалом фундаментальним речам і тоді, і зараз корисно вчитися «академічно», не поспішаючи та вдумливо. Прикладна частина — це самонавчання, практика, тут підказки колег і наставників дуже помічні.
Щодо популярних мов програмування, то наприкінці
Передові виші йшли з відставанням від індустрії на рік-два, але деякі й досі відстають на десятиліття. При цьому залишається правило, що нормальний розробник навчається типового використання мови на льоту, зазвичай вистачає днів або тижнів, щоб почати писати код. Далі підвищення продуктивності та рівня зрілості відбувається у процесі роботи. Академічне, глибоке вивчення мов пов’язане з власне розвитком екосистеми мови та/або самої мови — і це окрема гілка навчання та роботи.
Поява групових проєктів освіти, колективних дипломних і курсових робіт стала проривом у передових вишах у
Про літературу. У середині — кінці
Я казав вище про роздруківку книги Страуструпа — це і був комп’ютерний самвидав, який був схожий самвидав літературний. В АЦДП не було букв нижнього регістру, натомість друкували вони швидко, рядок за раз, дешево, хоч і зі сильним промисловим шумом.
Літературний самвидав
З появою інтернету на початку
Пам’ятаю, наприкінці
Виші успадковували академічну систему з науковими керівниками та кураторами. Наставництво ж зародилося разом із появою ремесел. Програмування багато в чому є ремеслом, просто спочатку ніхто це так не називав. Часто на роботу брали друзів, що не вміють програмувати, і вчили в умовах реального часу.
Загалом не пам’ятаю, щоб хороші програмісти мали проблему з роботою: ні тоді, ні зараз. Є труднощі з переходом від учнівства до професійної роботи, але вона виникає у тих, хто не дуже ініціативний та самостійний, змотивований.
Взагалі найцікавіший для мене тренд у
41 коментар
Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.