Чи може програміст нічого не розуміти в своїй справі?
Назва найвищою мірою дивне. Читач явно дивується. Мені, до речі, робили такий комплімент.
Спочатку я засмутився. Як же так? Досвід тривалий. Починав ще з ЄС ЕОМ. Маса сменяющей один одного техніки пройшло через мої руки, різні системи, мови - і я раптом «нічого не розумію». Потім задумався.
А що, взагалі, означає «програміст»? Природно, людина, яка пише програми. Від останнього слова і виник цей термін. Але зараз в нього вкладають дещо ширше поняття. Програмістами називають і системщиков, і ставків, та адміністраторів. Самі вони програми не пишуть, але програмістами вважаються. А програмування керуючих програм для верстатів з числовим програмним управлінням? Програміст УП для верстатів з ЧПУ. Так це звучить. Навіть просто періодичне залицяння за комп'ютерами, підтримання їх працездатності теж відносять до різновиду роботи програміста.
Повернемося до витоків, коли обчислювальна техніка робила тільки перші кроки. Не було мов високого рівня. Мізерна пам'ять, і завжди недостатньо місця. Програми писалися в машинних кодах. Набагато пізніше з'явився мова асемблера, наближений до цих кодів, але вже язик! Більш легкий для розуміння і вимагає транслятора в ці коди. Когорта програмістів різко розширилася. Знання кодів конкретної машини перестало бути актуальним, а робота з ними з рангу мистецтва перетворилася на непотрібний мотлох.
Новий виток ознаменувався появою мов високого рівня. Вони вимагали більше пам'яті і місця, але те й інше було вже в надлишку. Я пам'ятаю, як сам порався з операторами асемблера, вишукуючи, як би скоротити пам'ять хоча б на кілька байтів. За швидкість теж йшла безперервна боротьба. І за місце. Ох, вже це місце на диску! Доводилося видаляти все зайве і не тільки, щоб налагодити нову програму.
Ще один жалісний фактор спливає в пам'яті. Машинний час. Ми за нього билися! Образно висловлюючись, звичайно. Ера персональних комп'ютерів начисто ліквідувала цю проблему.
Але, стоп! Я захопився. Чи не лекцію про розвиток техніки я читаю. Головна думка в тому, що ніяка наука, ніяка виробництво так стрімко НЕ прогресувало, як комп'ютери. Математика, приміром, - наука вічна. Ряди Фур'є, якими вони були століття тому, такими й залишилися. Значення синуса тридцяти градусів не зміниться і через століття. А обчислювальні машини ... Їх уявити собі неможливо навіть через двадцять років. У фантастичних романах тридцятирічної давності ЕОМ описувалися величезними з неозорих кількістю проводів, кабелів і кнопок. Хіба такі зараз ноутбуки з бездротовим виходом в Інтернет?
Змінювалася техніка, системи, змінювалися і мови програмування, прийоми і підходи. І все це протягом одного інженерного покоління, яке ще, до речі, цілком активне. Перехід всього лише на нову версію Windows вимагає певного пристосування і на певний час уповільнює роботу. А що можна сказати про шифрувальники машинних кодів, перепригні він зі свого часу в наше? Багато чого, звичайно, він вважав би більш зручним, простим, навіть фантастично легким, але не відразу. Потрібен час для адаптації. І зміг би він швидко освоїти сучасне програмування? Весь його досвід зводився до найскладнішою для того часу проблеми: скласти машинні коди і змусити їх працювати. А тут зовсім інша ідеологія!
Точно так само при будь-якому якісному стрибку програміст попереднього рівня може розгубитися на наступному, не відразу зрозуміти його і навіть не стати освоювати, всіма силами чіпляючись за знайоме і зрозуміле. А стрибків було достатньо.
Багато часу і сил я віддав операторному програмування. Коли стало переважати об'єктно-орієнтована, мені важко було в нього вникнути. Треба було поглянути на все з незвичної точки зору. Пам'ятаю, як молоді фахівці, яких вигодували новим підходом ще на інститутській лаві, легко орієнтувалися в класах, об'єкти і їх властивості. Зв'язати ж два оператори їм було важко. Вони відразу починали шукати вже написаний десь компонент, щоб швидко приєднати його до програми. Я ж у той час - навпаки: міг елементарно створити сто операторів, але не бачив, як знайти всього лише одну команду, яка замінює добру половину з них. Виникає асоціація з кульманом. Конструктора, що створюють складні креслення, свого часу не бачили більше нічого, крім хорошого олівця, гумки і справного кульмана. Коли з'явилася можливість робити все на комп'ютері, багато з них злякалися та так і не перейшли на нові рейки. Легкість проектування креслення віртуально - без паперу і кульмана - не всіма була зрозуміла.
Якісним стрибком була поява персональних комп'ютерів. Потім перехід до багато віконному режиму. До цих пір змінюють один одного системи Windows. Самим дивним явищем і стрибком у розвитку стала поява Інтернету. Коли із Заходу хлинули готові програмні системи, власне програмування виявилося в загоні. Багато розробок були переведені ще з нашої власної недолугої техніки і мали стару ідеологію. Розвинутися вони просто не встигли. Готові іноземні системи мали відмінний інтерфейс і вирішували потрібні нам проблеми. Тому багато програмісти стали перекваліфікуватися в користувачів нових систем. Своє писати виявилося не потрібно.
Поява Інтернету знову зажадало створення програм - програм для світової Мережі. Програмісти зараз там затребувані. Але потрібен новий рівень знань та вміння. З'явилося безліч мов web-програмування. І кожен з них вимагає скрупульозного освоєння. Найчастіше програміст з великим досвідом опиняється в ситуації: можу, хочу, але потрібно освоїти. Ось і виходить, що він раптом не підготовлений і нічого не може відразу зробити. І все це через швидкість змінюваних декорацій. Програміст як би їде у звичному поїзді, де все до болю знайоме. А за вікном проносяться повз нові експреси. Скоро поїзд застаріє, а як взяти квиток на експрес?
Мене не раз відвідувала думка, що кілька останніх років розвиток техніки йде вперед великими прогресивними кроками. Але це нарощується кількість. Нарощується зручно, добре. А попереду чекає новий якісний стрибок. Можливо, він настільки змінить наші підходи і до техніки і до програмування, що ми поки цього собі навіть не уявляємо. Ймовірно, десь вже йде зародження нового, але воно ще не набуло закінчені форми.
Якими ж будуть комп'ютери всього через десять років?