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 та труднощі з підготовкою машини, саме за допомогою цих перших машин були закладені основи програмування.
- Міністерство освіти і науки україни
- 9.12. Огляд WinDev 154
- 10. Історія операційних систем 169
- Список літератури 187
- Передмова
- 1. Передвісники комп’ютерної ери
- 1.1. Комп’ютерна програма–що це?
- 1.2. Доелектронна історія обчислювальної техніки
- Логарифмічна лінійка
- 1.3. Можливості двійкового коду
- 1.4. Розвиток двійкової системи
- 1.5. Винахід перших комп’ютерів
- Перша в історії працююча програмнокерована універсальна обчислювальна машина z-3 (1941 р.)
- 1.6. Гарвардська архітектура
- 1.7. Архітектура фон Неймана
- 1.8. Створення зрозумілих людині кодів
- 1.9. Крок на благо програмування
- 1.10. Можливості програмного управління
- 2. Нові мови програмування
- 2.1. Поневіряння пакетної обробки
- 2.2. Універсальна мова програмування
- 2.3. Усунення неоднозначності
- 2.4. Заклик до дотримання математичної строгості
- 2.5. Пошук та усунення помилок
- 2.6. Нелегке мистецтво програмування
- 2.7. Обчислювальна техніка та програмування в срср
- 3. Розквіт та хаос програмного забезпечення
- 3.1. Місце народження хакерів
- 3.2. Два чародії програмування
- 3.3. Перші промислові стандарти
- 3.4. Дружній інтерфейс
- 3.5. Прообраз сучасного «ноутбука»
- 4. Болісний шлях розвитку програмування
- 4.1. Плануюче обчислення
- 4.2. Внесок Великої Британії
- 4.3. Програмування англійською мовою
- 5. Три комерційні гіганти
- 5.1. Перша комерційна мова програмування
- 5.2. Обчислювальна техніка приходить у бізнес
- 5.3. Народження codasyl
- 5.4. Конференція в Цюріху
- 5.5. На шляху до сумісності комп’ютерів
- 5.6. Розбіжності Нового Світу
- 6. Десятиліття динамічного розвитку
- 6.1. Перші кроки непроцедурної мови
- 6.3. Алфавітне хрещення
- 6.4. Успіх та суперечки
- 6.5. Інженерний підхід
- 6.6. Структурний підхід
- 6.7. Поява мови “Ада”
- 7. Програмування приходить у наші домівки
- 7.1. Розквіт Бейсіка
- 7.2. Поява мови Модула-2
- 7.3. Музикальний француз
- 7.4.Довгожитель Lisp – інструмент функціонального програмування
- 7.5. Prolog – нездійснена мрія еом V покоління
- 7.6. Революція на ім’я Java
- 8. Історія і шляхи розвитку супер-еом
- 8.1. Усе починалося з менфреймов
- 8.2. Напрями розвитку обчислювальної техніки
- 8.3. Розвиток елементної бази. Закон Мура
- 8.4. Вдосконалення архітектури
- Звичайна послідовн обробка
- Конвеєрна обробка
- 9. Сучасний стан та перспективи розвитку програмування
- 9.1. Криза у програмуванні
- 9.2. Методологія процедурно-орієнтованогопрограмування
- 9.3. Методологія об’єктно-орієнтованогопрограмування
- 9.4. Методологія об’єктно-орієнтованогоаналізу та проектування
- 9.5. Технології програмування
- 9.6. Case –засоби
- 9.7. Методологія rad
- 9.11.1. Знайомство с LightSwitch
- 9.11.2. Архитектура LightSwitch
- 9.11.3. Створення проекту в Microsoft Visual Studio LightSwitch
- 9.11.4. Дванадцять основних переваг LightSwitch
- 9.12. Огляд WinDev
- 9.12.1. ПризначенняWinDev
- 9.12.2. Деякі характеристики wLanguage
- 9.13. Технологія model checking
- 9.14. NeoBook – программирование для непрограммистов
- 9.14.1. Введення для секретарок
- 9.14.3. Можливості та області застосування
- 9.15. Файлові системи найближчого майбутнього
- 9.15.1. Зетта-повінь настає
- 9.15.2. Файлова система zfs
- 9.15.3. Файлова системаBtrfs
- 9.15.4. Файлова системаHammer
- 10. Історія операційних систем
- 10.1. Послідовна обробка даних
- 10.2. Прості пакетні системи
- 10.3. Багатозадачні пакетні системи
- 10.4. Системи з режимом розподілу часу
- 10.5. Основні досягнення
- 10.6. Сучасні системи unix
- 10.7. Os/2. Битва двох гігантів
- Список літератури