Особливості роботи програміста

Стаття написана Павлом Чайкою, головним редактором журналу «Пізнавайка». З 2013 року з моменту заснування журналу Павло Чайка присвятив себе популяризації науки в Україні та світі. Основна мета як журналу, так і цієї статті – пояснити складні наукові теми простою та доступною мовою.

програміст

У програмістів стійка репутація людей, причетних безпосередньо до науково-технічної революції. У цьому, мабуть, є частка істини: навряд чи НТР мислима без обчислювальної техніки. А програмісти оточені ореолом посередників між нами і найсучаснішим різновидом класу машин.

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

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

С. С. Лавров так і писав: «Це може здатися дивним, але в програмістів діють набагато більш суворі стандарти ясності і точності опису, ніж у математиків. Це і зрозуміло, так як математики можуть розраховувати на досить високий рівень знань, кмітливість і інтуїцію читача, програмісти мають справу з машиною (або програмою), позбавленої цих якостей».

Так що по строгості і чіткості програмування не має собі рівних. Рафінована математика поєднується в праці програміста з «брудною інженерною роботою», за висловом колишнього президента американської Асоціації по обчислювальній техніці Ентоні Еттінгера. Ні, не «залізо» він мав на увазі, не так зване апаратне забезпечення. Аналог інженерії в області програмного забезпечення — це, наприклад, турбота про економне витрачання пам’яті машини, прагнення якомога рідше використовувати у програмі ті операції, які довше виконуються або можуть призвести до втрати точності, оптимізація.

Програміст повинен володіти здатністю першокласного математика до абстракції і логічного мислення в поєднанні з едісонівским талантом споруджувати все, що завгодно, з нуля і одиниці. Він повинен поєднувати акуратність бухгалтера з проникливістю розвідника, фантазію автора детективних романів з тверезою практичністю економіста. Цей фантазер і реаліст, винахідник і логік місяцями напружує всі сили свого розуму, щоб навчити ЕОМ видавати колонки цифр, що складаються в балістичну таблицю або демографічний довідник, у розрахунок параметрів економічної моделі або технологічного процесу. Кульмінація творчих зусиль програміста — це виконання написаної ним програми. Тепер продукт його інтелекту відчужується від нього і починає самостійне життя. У цей момент програміст особливо гостро усвідомлює соціальну значимість своєї праці.

Як говорить А. П. Єршов, програміст відноситься до комп’ютера, як «хороший жокей до свого коня». Він піклується про машину, усвідомлює її гідності і намагається всебічно їх використовувати, він пристосовується до її недоліків, і вони його не дратують. Досягти раціональної та економічної роботи комп’ютера — виконання такої задачі (а програміст незмінно ставить її перед собою), що межує зі знайомим кожному творчо працюючому інженеру задоволенням від витонченого і незаперечного рішення.

Тільки програміст зрозуміє, що це означає – пройти з машиною «голова до голови крізь усі алгоритмічні хитросплетіння і пережити справжній тріумф» – програма пішла!»

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

Заздріть програмістам! У них цікава і важка робота, яка приносить внутрішнє задоволення, повагу оточуючих і матеріальну забезпеченість. Але тільки в казках ідилія триває вічно.

Та ж науково-технічна революція, якою програмісти зобов’язані появою на світ, і престижем, і ореолом «творчої професії»,— НТР тепер забирає нею видані привілеї у своїх прапороносців. Причому шлях від професії унікальної і творчої до професії масової програмісти здійснюють на наших очах і темпами воістину стрімкими.

Це якщо судити за звичними мірками. Адже в світі електроніки календарний час починає здаватися тихоходом. Конструктори скажемо, б’ються над прискоренням процесів, що тривають мільярдну частку секунди. Темпи — архісучасні. Не дивно: адже це темпи НТР. За пару десятиліть програмісти пройшли той шлях, який для представників старіших професій розтягнувся мало не на століття.

Автор: А. Войскунский.