logo search
Вступ до спец

1.1. Комп’ютерна програма–що це?

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

Але що наділяє комп’ютер здатністю розв’язувати різноманітні задачі, що робить цю розумну машину несхожою на всі інші машини та механізми, що були створені людьми за довгу історію людської цивілізації? Потужність комп’ютера полягає у його програмному забезпеченні, і щоб він почав діяти, потрібна ще досить велика робота з написання серії програм (або з придбання готових), які здатні надихнути життя у комп’ютер. Причому для кожного нового завдання доводитися складати свою програму. Ця робота (робота програміста) вельми специфічна і не має аналогів у жодній іншій області діяльності людини. Насправді, об’єм програм, що забезпечують вирішення комп’ютером будь-якого комплексу завдань, сягає сотень мільйонів бітів, і достатньо лише в одному місці випадково переплутати 0 та 1, як все піде шкереберть: комп’ютер або відмовиться розв’язувати задачу, або почне видавати різну нісенітницю, або “безмовно” працюватиме і працюватиме, поки його не зупинять.

У перші десять – двадцять років існування комп’ютера основні витрати фірм-виробників були пов’язані із розробкою та виробництвом власно машин. У ті часи питанням програмування приділялося значно менше уваги, вони залишалися так би мовити на другому плані. Потім картина різко змінилася. З одного боку, грандіозні успіхи електроніки ведуть до здешевлення самих машин, а з іншого – значні сфери застосування комп’ютерів вимагають все більшого обсягу робіт з програмування. В результаті витрати на розробку програмного забезпечення сягають нині вже 90% [2, 14] від загальної вартості обчислювальних систем і частка їх продовжує зростати, а професія програміста у наші дні стала однією з найпопулярніших та престижніших, що мають постійний попит у переважній більшості застосувань людської діяльності.

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

Якщо представити комп’ютер як музичний інструмент, то ПЗ – це нотний запис. Термін програмне забезпечення” (software) широко увійшов до вжитку з початку 60‑х років 20 ст. Це було пов’язано з необхідністю провести чітку грань між командами керування комп’ютером та його фізичними компонентами, або апаратним забезпеченням” (“залізо” – hardware), яке, власно, і складає саму машину. Вдале слово software (буквально – “м’який вироб”), яке підкреслює рівнозначність програмного забезпечення і самої машини, разом з тим говорить про його гнучкість, здатність модифікуватися, пристосовуватися, розвиватися.

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

Переналаштування комп’ютера з одного виду діяльності на інший (наприклад, з розробки стандартного контракту на створення карти погоди земної кулі і т.і.) не завжди було такою простою справою. Для програмування “монстрів”, що сповістили своєю появою у 40-50-і роки початок комп’ютерної ери, були потрібні не тільки математичні здібності, але і фізична витривалість. Серед перших програмістів машини ENIAC (1946 р., ENIAC – Electronic Numerical Integrator and Computer – електронний цифровий інтегратор та обчислювач), яка була створена у Вищому технічному училищі Пенсільванського університету Джоном Моучлі (Мочлі) та Преспером Еккертом, були тільки математики (більшість з них були жінки). Машина ENIAC призначалася для обчислення балістичних таблиць, яких гостро потребувала армія США під час другої світової війни. Такі таблиці давали артилеристам можливість обирати належний кут вертикального наведення гармати при заданій відстані до цілі та певній вазі снаряду з урахуванням атмосферних умов і швидкості вітру. При використанні електромеханічного настільного арифмометра кваліфікований фахівець витрачав на обчислення однієї траєкторії близько трьох днів, а для комбінації гармати та снаряда було потрібно 2-4 тис. таких розрахунків.

Для підготовки ENIAC до виконання цих операцій (зміна програми) доводилося проробляти запаморочливу процедуру з установки тисяч перемикачів та з’єднання сотень кабелів. У ENIAC використовувалося 17468 електронних ламп, сполучні кабелі були змонтовані на 40 панелях, вона могла за секунду скласти 5 тис. десятирозрядних чисел.

Програмісти, що обслуговували ENIAC, бралися за вивчення креслень, з’ясовували, як треба перемикати сотні кабелів, та міркували, в які положення встановити приблизно 6 тис. тумблерів і перемикачів. В середньому на підготовку машини для обчислення однієї таблиці витрачалося два дні. Не дивлячись на невелику продуктивність ENIAC та труднощі з підготовкою машини, саме за допомогою цих перших машин були закладені основи програмування.