
- •Опис навчальної дисципліни «Інформаційні технології при експлуатації водогосподарських об’єктів» Денна форма навчання
- •Мета навчальної дисципліни
- •Програма навчальної дисципліни
- •Структура навчальної дисципліни
- •Теми практичних занять
- •Самостійна робота
- •Індивідуальне навчально-дослідне завдання
- •Методи навчання
- •Методи контролю
- •Методичне забезпечення
- •12.1. Базова
- •12.2. Допоміжна
- •Інформаційні ресурси
- •Тема 1.Основні поняття інформаційних технологій
- •Тема 2.Апаратне забезпечення інформаційних технологій
- •Тема 3.Програмне забезпечення інформаційних технологій
- •Тема 4.Звязок в інформаційних технологіях
- •Тема 5.Програмне забезпечення для графічного моделювання водогосподарських систем
- •Тема 6.Програмне забезпечення для проведення водогосподарських розрахунків
- •10 Головних причин випробувати програму Excel 2010
- •Тема 7.Інформаційно-обчислювальна система (іос) «Полив-2»
- •Тема 8.Автоматизована інформаційно-вимірювальна система для прогнозування паводків і управління водними ресурсами в басейні р.Тиса
- •1. Передумови створення аівс-“Тиса”
- •2. Завдання аівс-“Тиса”
- •3. Сучасний стан аівс-“Тиса”
- •3.4. Програмне забезпечення
- •4. Розвиток 2-ї черги аівс-“Тиса”
Рекомендована література
12.1. Базова
Білик В.М., Костирко В.С. Інформаційні технології та системи: Навч. Посіб. Київ: ЦНЛ, 2006.
Ибрагимов И. М. Информационные технологии и средства дистанционного обучения: учеб. пособие /под ред. А.Н.Ковшова. М: «Академия» -2007. -336с.
Румянцева Е. Л., Слюсарь В. В. Информационные технологии: учеб. пособие /Под ред. проф Л.Г.Гагариной. –М:, 2007.-256с.
Советов Б.Я., Цехановский В.В. Информационные технологии: учеб. для вузов. –М: «Высшая школа». -2006. -263с.
12.2. Допоміжна
Башмаков А.И., Башмаков И.А. Интеллектуальные информационные технологии. –М: Издательство МГТУ имени Н.Э. Баумана, 2005. -304с.
Бугаевский Л.М., Цветков В.Я Геоинформационные системы: Учебное пособие для вузов. –М: - 2000. – 222с.
Избачков Ю.С, Петров В.Н. Информационные системы: Учебник для вузов. СПб: Питер. -2006. -656с.
Сергеев В.И., Григорьев М.Н., Уваров,С.А. Логистика.Информационные системы и технологии. -Альфа-Пресс.2008.-608c
Титоренко Г.А. Информационные системы в экономике: учебник для вузов. –М: - 2008. -463с.
Інформаційні ресурси
До складу інформаційних ресурсів навчальної дисципліни входять:
1.Програма рекомендованої навчальної дисципліни підготовки бакалавра напряму 0926 «Водні ресурси» (Шифр за ОПП 2.10).
2. http://intuit.ru/
3.Бібліотеки:
НУВГП – 33000, м.Рівне, вул..Приходька, 75.
обласна наукова – 33000, м.Рівне, вул. Короленка, 6, тел.22-10-63
Тема 1.Основні поняття інформаційних технологій
Інформація — абстрактне поняття, що має різні значення залежно від контексту. Походить від латинського слова «informatio», яке має декілька значень:
роз'яснення; виклад фактів, подій; витлумачення;
представлення, поняття;
ознайомлення, просвіта.
Загальне поняття інформації подано у філософії, де під нею розуміють відображення реального світу.
Як філософську категорію її розглядають як один з атрибутів матерії, що відбиває її структуру. Погляд на інформацію з точки зору її споживачів окреслює таке поняття:
Інформація — це нові відомості, які прийняті, зрозумілі і оцінені її користувачем як корисні.
Іншими словами, інформація — це нові знання, які отримує споживач (суб'єкт) у результаті сприйняття і переробки певних відомостей.
Дані (від лат. data, множина від лат. datum від лат. dare — давати, щось дане):
Інформація, відомості, показники, необхідні для ознайомлення з ким-, чим-небудь, для характеристики когось, чогось або для прийняття певних висновків, рішень.
Здібності, якості, необхідні для чого-небудь.
Форма представлення знань, інформації. Тексти, таблиці, інструкції, відомості про факти, явища і таке інше, представлені у буквено-цифровій, числовій, текстовій, звуковій або графічній формі. Дані можуть зберігатися на різних носіях, в тому числі в ЕОМ та пересилатися і піддаватися обробці.
У інформатиці дані символізують інформацію, що представлена у вигляді необхідному для її опрацювання автоматичними засобами. Для цього інформацію кодують за допомогою знаків (алфавіт) відповідно до правил певного синтаксису. У сучасних машинах використовується двійковий метод запису даних за допомогою 0 та 1 (алфавіт з двох цифр). Для полегшення роботи для людини двійковий код перекодовується у більш зрозумілі числа, букви тощо.
Дані є інформацією лише тоді, коли вони несуть значення у заданому контексті. Наприклад: кодом міжнародного телефонного зв'язку є набір знаків +38, тобто це дані, про інформацію ми можемо говорити лише за наявності відомості про назву країни, що відповідає цьому коду.
Дані розрізняють на:
структуровані (наприклад: база даних, XML-документ),
не структуровані (наприклад: текстовий документ),
тимчасові.
Структуровані дані відносно легко піддаються машинній обробці, на відміну від них автоматична обробка неструктурованих даних не завжди можлива або можлива лише неточна.
Важливими проблемами у інформатиці, особливо у розподілених системах,— є синхронізація даних, а в управлінні даними — стрімке зростання кількості даних.
Низка суджень, що відображають реальність. Велику групу практично важливих суджень складають вимірювання та спостереження за змінними. Ці судження охоплюють числа, слова та зображення. Дані отримуються в результаті якоїсь дії (вимірювання, обчислення)
Знання́— форма існування і систематизації результатів пізнавальної діяльності людини. Виділяють різні види знання: наукове, повсякденне (здоровий глузд), інтуїтивне, релігійне та інші. Повсякденне знання служить основою орієнтації людини в навколишньому світі, основою її повсякденної поведінки і передбачення, але звичайно містить помилки і протиріччя. Науковому знанню властиві логічна обґрунтованість, доведеність, відтворення результатів, прагнення до усунення помилок і подолання суперечок.
Знання́— суб'єктивний образ, об'єктивна реальність, тобто адекватне віддзеркалення зовнішнього і внутрішнього світу в свідомості людини у формі уявлень, понять, думок, теорій.
Знання́ у широкому сенсі — сукупність понять, теоретичних побудов і уявлень.
Знання́ у вузькому сенсі — дані, інформація.
Знання́ (предмету)— упевнене розуміння предмету, уміння самостійно поводитися з ним, розбиратися в ньому, а також використовувати для досягнення поставленої мети.
Знання́ в теорії штучного інтелекту — сукупність даних (у індивідуума, суспільства або у системи штучного інтелекту) про світ, що включають інформацію про властивості об'єктів, закономірності процесів і явищ, а також правила використання цієї інформації для ухвалення рішень. Правила використання включають систему причинно-наслідкових зв'язків. Головна відмінність знань від даних полягає в їхній активності, тобто поява в базі нових фактів або встановлення нових зв'язків може стати джерелом змін в ухваленні рішень.
3нання фіксується в знаках природних і штучних мов. Знання протилежне незнанню, тобто відсутності перевіреної інформації про що-небудь.
Знання можуть бути: декларативні та процедурні.
Декларативні знання містять в собі лише уявлення про структуру певних понять. Ці знання наближені до даних, фактів. Наприклад: вищий навчальний заклад є сукупністю факультетів, а кожен факультет у свою чергу є сукупністю кафедр.
Процедурні знання мають активну природу. Вони визначають уявлення про засоби і шляхи отримання нових знань, перевірки знань. Це алгоритми різного роду. Наприклад: метод мозкового штурму для пошуку нових ідей.
Знання можуть бути науковими і позанауковими.
Наукові знання можуть бути: емпіричними, отриманими на основі досвіду або спостереження, теоретичними, отриманими на основі аналізу абстрактних моделей.
Теоретичні знання — абстракції, аналогії, схеми, що відображають структуру і природу процесів, що протікають у предметній сфері. Ці знання пояснюють явища й можуть використовуватися для прогнозування поведінки об'єктів.
Згідно більшості мислителів, для того, щоб щось вважалося знанням, це щось повинне задовольняти три критерії: бути підтвердженим, істиним і заслуговуючим на довіру.
Управління знаннями (англ. Knowledge Management) передбачає розуміння способів, яким знання використовується і розповсюджується в організаціях і розглядає знання як те, що співвідноситься з самим собою і можливе для повторного використання. Повторне використання означає, що визначення знання знаходиться в стані постійної зміни. Управління знаннями трактує знання як форму інформації, яка наповнена контекстом, заснованому на досвіді.
Інформація — це дані, які істотні для спостерігача через їхню значущість. Дані можуть бути предметом спостереження, але не обов'язково повинні бути ним. У цьому сенсі знання складається з інформації, підкріпленої наміром або напрямом. Цей підхід знаходиться у згоді з DIKW моделлю, яка розташовує дані, інформацію, знання, мудрість у вигляді піраміди за ступенем корисності.
Безпосереднє (інтуїтивне) знання є продуктом інтуїції— здатності осягнення істини істини шляхом прямого її спостереження і без обґрунтування за допомогою доказів.
Процес наукового пізнання, а також різні форми художнього освоєння світу не завжди здійснюються в розгорненому, логічно і фактично доказовому вигляді. Нерідко суб'єкт схоплює думкою складну ситуацію, наприклад під час військової битви, визначення діагнозу, винуватості або невинуватості обвинуваченого. Роль інтуїції особливо велика там, де необхідний вихід за межі існуючих прийомів пізнання для проникнення в невідоме. Але інтуїція не є щось безрозсудне або надрозумне. В процесі інтуїтивного пізнання не усвідомлюються всі ті ознаки, за якими здійснюється висновок, і ті прийоми, за допомогою яких він робиться. Інтуїція не складає особливого шляху пізнання, що йде в обхід відчуттів, уявлень і мислення. Вона є своєрідним типом мислення, коли окремі ланки процесу мислення проносяться в свідомості більш-менш несвідомо, а гранично ясно усвідомлюється саме підсумок думки — істина.
Інтуїції буває достатньо для розсуду істини, але її недостатньо, щоб переконати в цій істині інших і самого себе. Для цього необхідно доказ.
Життєві знання, як правило, зводяться до констатації фактів і їхнього опису, тоді як наукові знання піднімаються до рівня пояснення фактів, осмислення їх в системі понять даної науки, включаються до складу теорії.
Науковому знанню властиві логічна обґрунтованість, відтворюваність пізнавальних результатів.
Емпіричні знання отримують в результаті застосування емпіричних методів пізнання — спостереження, вимірювання, експерименту. Це знання про видимі взаємозв'язки між окремими подіями і фактами в наочній області. Воно, як правило, констатує якісні і кількісні характеристики об'єктів і явищ. Емпіричні закони часто носять ймовірнісний характер і не є строгими.
Теоретичні уявлення виникають на основі узагальнення емпіричних даних. В той же час вони впливають на збагачення і зміну емпіричних знань.
Теоретичний рівень наукового знання припускає встановлення законів, що дають можливість сприйняття, що ідеалізується, описи і пояснення емпіричних ситуацій, тобто пізнання сутності явищ. Теоретичні закони мають суворіший, формальніший характер, в порівнянні з емпіричними.
Терміни опису теоретичного знання відносяться до об'єктів, що ідеалізуються, абстрактним. Подібні об'єкти неможливо піддати безпосередній експериментальній перевірці.
Для експертних оцінок процесу появи нових знань використовують обсяг знання, накопиченого в бібліотеках. Експериментальним шляхом вивчають здатність людини витягувати інформацію в процесі самонавчання на нормованих за інформацією середовищах. Поки не представляється можливим в повному обсязі зміряти темпи виробництва знання, оскільки немає адекватних універсальних моделей.
Імануїл Кант:
-
«В наш час накопичилась величезна кількість знань, гідних вивчення. Скоро наші здібності будуть надто слабкими, а життя надто коротким, щоб засвоїти хоча б одну найкориснішу частину цих знань».
С. Джонсон
-
«Знання буває двох видів. Ми або знаємо предмет самі, або знаємо, де можна знайти про нього відомості.»
Інформацíйна систéма (англ. Information system) — сукупність організаційних і технічних засобів для збереження та обробки інформації з метою забезпечення інформаційних потреб користувачів.
Таке визначення може бути задовільним тільки при найбільш узагальненій і неформальній точці зору і підлягає подальшому уточненню. Інформаційні системи діють в Україні під назвою «автоматизовані системи (АС)».
Історія
Інформаційні системи здавна знаходять (в тому чи іншому вигляді) досить широке застосування в життєдіяльності людства. Це пов'язано з тим, що для існування цивілізації необхідний обмін інформацією — передача знань, як між окремими членами і колективами суспільства, так і між різними поколіннями.
Інформаційні системи існують з моменту появи суспільства, оскільки на кожній стадії його розвитку існує потреба в управлінні. Місією інформаційної системи є виробництво потрібної для організації інформації, потрібної для ефективного управління всіма її ресурсами, створення інформаційного та технічного середовища для управління її діяльністю.
Інформаційна система може існувати і без застосування комп’ютерної техніки — це питання економічної необхідності.
В будь-якій інформаційній системі управління вирішуються задачі трьох типів:
задачі оцінки ситуації (деколи їх називають задачами розпізнавання образів);
задачі перетворення опису ситуації (розрахункові задачі, задачі моделювання);
задачі прийняття рішень (в тому числі і оптимізаційні).
Найдавнішими і найпоширенішими ІС слід вважати бібліотеки. І, дійсно, здавна в бібліотеках збирають книжки (або їх аналоги), зберігають їх, дотримуючись певних правил, створюють каталоги різного призначення для полегшення доступу до книжкового фонду. Видаються спеціальні журнали та довідники, що інформують про нові надходження, ведеться облік видачі.
Найстаріші (у моральному і у фізичному розумінні) ІС повністю базувалися на ручній праці. Пізніше їм на зміну прийшли різні механічні пристрої для обробки даних (наприклад, для сортування, копіювання, асоціативного пошуку, тощо). Наступним кроком стало впровадження автоматизованих інформаційних систем (АІС), тобто систем, де для забезпечення інформаційних потреб користувачів використовується ЕОМ зі своїми носіями інформації. В наш час — епоху інформаційної революції — розробляється і впроваджується велика кількість самих різноманітних АІСів з дуже широким спектром використання.
Інформаційні системи включають в себе: технічні засоби обробки даних, програмне забезпечення і відповідний персонал. Чотири складові частини утворюють внутрішню інформаційну основу:
засоби фіксації і збору інформації;
засоби передачі відповідних даних та повідомлень;
засоби збереження інформації;
засоби аналізу, обробки і представлення інформації.
В залежності від ступеня (рівня) автоматизації виділяють ручні, автоматизовані й автоматичні інформаційні системи.
Ручні ІС характеризуються тим, що всі операції з переробки інформації виконуються людиною.
Автоматизовані ІС частина функції (підсистем) керування або опрацювання даних здійснюється автоматично, а частина — людиною.
Автоматичні ІС усі функції керування й опрацювання даних здійснюються технічними засобами без участі людини (наприклад, автоматичне керування технологічними процесами).
Оскільки ІС утворюються для задоволення інформаційних потреб в межах конкретної предметної галузі, то кожна предметна галузь (в сфері призначення) відповідає свій тип ІС. Перераховувати всі ці типи немає змісту, оскільки кількість предметних галузей велика, але можна вказати наприклад такі типи ІС:
Економічна ІС — інформаційна система призначена для виконання функцій управління на підприємстві.
Медична ІС — інформаційна система призначена для використання в лікувальному або лікувально-профілактичному закладі.
Географічна ІС — інформаційна система, забезпечуюча збір, збереження, обробку, доступ, відображення і розповсюдження даних.
Адміністративні,
Виробничі,
Навчальні,
Екологічні,
Криміналістичні,
Військові та інші
Класифікація інформаційних систем за місцем діяльності:
наукові ІС — призначені для автоматизації діяльності науковців, аналізу статистичної інформації, керування експериментом.
ІС автоматизованого керування — призначені для автоматизації праці інженерів-проектувальників і розроблювачів нової техніки (технології).
ІС організаційного керування — призначені для автоматизації функції адміністративного (управлінського) персоналу. До цього класу відносяться ІС керування як промисловими (підприємства), так і непромисловими об'єктами (банки, біржа, страхові компанії, готелі і т. д.) і окремими офісами (офісні системи).
ІС керування технологічними процесами — призначені для автоматизації різноманітних технологічних процесів (гнучкі виробничі процеси, металургія, енергетика тощо).
Інформаційна система, як система управління, тісно пов’язується, як з системами збереження та видачі інформації, так і з іншої — з системами, що забезпечують обмін інформацією в процесі управління. Вона охоплює сукупність засобів та методів, що дозволяють користувачу збирати, зберігати, передавати і обробляти відібрану інформацію.
В залежності від функціонального призначення можна виділити такі системи:
управляючі (АСУТП, АСУВ),
проектуючі (САПР),
наукового пошуку (АСНД, експертні системи),
діагностичні, моделюючі,
систем підготовки прийняття рішення (СППР).
Інформаційні системи і технології використовуються для обліку та аудиту.
Автоматизована інформаційна система — це взаємозв’язана сукупність даних, обладнання, програмних засобів, персоналу, стандартних процедур, які призначені для збору, обробки, розподілу, зберігання, представлення інформації згідно з вимогами, які випливають з цілей організації. Сьогодні, у вік інформації, практично кожна інформаційна система використовує комп’ютерні технології, і тому надалі під інформаційними системами надалі будемо розуміти саме автоматизовані.
Основними факторами, які впливають на впровадження інформаційних систем, є потреби організацій та користувачів, а також наявність відповідних засобів для їх формування. Найсуттєвіше на розвиток інформаційних систем вплинули досягнення в галузі комп’ютерної техніки та телекомунікаційних мереж
Інформаційні технології, ІТ, інформаційно-комунікаційні технології (Information and Communication Technologies, ICT) — Сукупність методів, виробничих процесів і програмно-технічних засобів, інтегрованих з метою збирання, обробки, зберігання, розповсюдження, відображення і використання інформації в інтересах її користувачів.
Технології, що забезпечують та підтримують інформаційні процеси. (Процеси пошуку, збору, передачі, збереження, накопичення, тиражування інформації та процедури доступу до неї).
Інформаційна технологія — цілеспрямована організована сукупність інформаційних процесів з використанням засобів обчислювальної техніки, що забезпечують високу швидкість обробки даних, швидкий пошук інформації, розосередження даних, доступ до джерел інформації незалежно від місця їх розташування.
Інформаційна технологія — це сукупність методів, виробничих процесів та програмно-технічних засобів, об’єднаних у технологічний ланцюжок, що забезпечує виконання інформаційних процесів з метою підвищення їхньої надійності та оперативності і зниження трудомісткості ходу використання інформаційного ресурсу.
Інформаційні технології — сукупність методів, виробничих і програмно-технологічних засобів, об'єднаних у технологічний ланцюжок, що забезпечує збирання, зберігання, обробку, висновок і поширення інформації. Інформаційні технології призначені для зниження трудомісткості процесів використання інформаційних ресурсів.
Інструментарій інформаційної технології — один або декілька взаємопов’язаних програмних продуктів для певного комп'ютера, технологія роботи, за допомогою яких користувач досягає поставленої мети.
Зараз інформаційні технології впроваджуються на багатьох підприємствах, організаціях та різних органах влади. Розроблені концепції впровадження ІТ в наукові заклади, фабрики, тощо. Наприклад Концепція впровадження інформаційних технологій у законодавчих органах влади передбачає як автоматизацію самого процесу, так і аналізу роботи, налагодження спілкуванням між різними органами влади та населенням.
Україна за рівнем розвитку інформаційних технологій у світі посіла 75 місце.
Такі дані оприлюднила міжнародна громадська організація Всесвітній економічний форум у своїй шостій щорічній доповіді. У попередньому рейтингу Україна займала 76 позицію за розвитком IT-технологій.
У складеному рейтингу лідирує Данія — завдяки зразковій нормативно-правовій базі і чіткій політиці держави з поширення інформаційних технологій.
Друге місце зайняла Швеція, яка за 2006 рік піднялася на шість позицій, ставши однією з країн із найбільш зростаючим ІТ — сектором економіки. Також у першу трійку потрапив Сінгапур. У першу десятку увійшли Фінляндія, Швейцарія, Нідерланди, США, Ісландія, Великобританія і Норвегія.
США — лідер рейтингу минулого року — опустилися на 7 місце. Росія зайняла лише 70 місце, піднявшись, у порівнянні з торішнім рейтингом, на дві позиції. Найнижчий рівень розвитку інформаційних технологій спостерігається в африканських країнах.
Всього розглядалося більше 122 країн, які оцінювалися за впливом інформаційних і комунікаційних технологій на їх розвиток і конкурентноздатність.
2009 року KPMG внесла Львів у список 30 міст світу з найбільшим потенціалом розвитку інформаційних технологій.
Тема 2.Апаратне забезпечення інформаційних технологій
Комп'ю́тер (від англ. computer; лат. computator — обчислювач, лат. computatrum — рахувати) — обчислювач. Ним може бути як механічний, немеханічний (електронний) пристрій або людина, призначені для проведення обчислень. Обчислення можуть відбуватися дискретно або безперервно у часі. У вузькому значенні — електронний цифровий програмований пристрій (електронна обчислювальна машина) для проведення обчислень, а також приймання, оброблення, зберігання і видачі інформації за заздалегідь визначеним алгоритмом
Виконання поставлених перед ним завдань обчислювальна машина може забезпечувати за допомогою переміщення певних механічних частин, руху потоків електронів, фотонів або за рахунок використання ефектів від інших добре вивчених фізичних явищ. На сьогодні більшість найпоширеніших типів використовуваних обчислювальних машин — електронний обчислювальна машина. Архітектура обчислювальних машин може безпосередньо моделювати вирішувану проблему, максимально близько (у значенні математичного опису) відображаючи досліджувані фізичні явища. Так, електронні потоки можуть використовуватися як моделі потоків води при моделюванні гребель або дамб. Таким чином сконструйовані аналогові обчислювальні машини були звичними у 60-х роках XX століття, проте сьогодні є достатньо рідкісним явищем. У більшості сучасних обчислювальних машин проблема спочатку описується в математичних термінах, при цьому вся необхідна інформація представляється в двійковій формі (у вигляді одиниць і нулів), після чого дії з її обробки зводяться до застосування простої алгебраїчної логіки. Оскільки практично вся математика може бути зведена до виконання булевих операцій, достатньо швидка електронна обчислювальна машина може бути застосована для вирішення більшості математичних завдань (а також і більшості завдань з обробки інформації, які можуть бути легко зведені до математичних).
Коротка історія обчислювальної техніки
Немеханічні обчислювальні пристрої
3000 років до н. е. — у стародавньому Вавилоні була винайдена перша рахівниця — абак.
500 років до н. е. — у Китаї з'явився більш «сучасний» варіант абаку з кісточками на стрижнях — суаньпань. Одним із різновидом суаньпань є російська рахівниця, яка в деяких випадках використовується і в наш час.
Механічні обчислювальні пристрої
87 рік до н. е. — в Греції був виготовлений «антикітерський механізм» — механічний пристрій на базі зубчастих передач, що являє собою спеціалізований астрономічний обчислювач.
1492 рік — Леонардо да Вінчі в одному зі своїх щоденників малює ескіз 13-розрядного підсумовувального пристрою з десятизубцевими кільцями. Хоча пристрій, що працює на базі цих креслень було збудовано лише у XX столітті, все ж таки реальність проекту Леонардо да Вінчі підтвердилася.
Підсумовувальна машина Паскаля
1623 рік — Вільгельм Шикард, професор університету Тюбінгену, розробляє пристрій на основі зубчастих коліс для додавання і віднімання шестирозрядних десяткових чисел. Чи був пристрій збудований за життя винахідника, достовірно невідомо, але в 1960 році він був відтворений і проявив себе цілком працездатним.
1630 рік — Річард Деламейн створює кругову логарифмічну лінійку.
1642 рік — Блез Паскаль представляє «Паскаліну» — перший реально здійснений і такий, що отримав широку популярність механічний цифровий обчислювальний пристрій. Прототип приладу додавав та віднімав п'ятирозрядні десяткові числа. Паскаль виготовив понад десять таких обчислювачів, причому останні моделі оперували числами з вісьмома десятковими розрядами.
1673 рік — відомий німецький філософ і математик Ґотфрід Вільгельм Лейбніц збудував механічний калькулятор, який за допомогою двійкової системи числення виконував множення, ділення, додавання і віднімання.
Приблизно в цей же час Ісаак Ньютон закладає основи математичного аналізу.
1723 рік — німецький математик і астроном Христіан Людвиг Герстен на основі робіт Вільгельма Лейбніца створив арифметичну машину. Машина розраховувала частку та кількість послідовних операцій додавання при множенні чисел. Крім того, в ній була передбачена можливість контролю за правильністю введення даних.
1786 рік — німецький військовий інженер Іоган Мюллер висуває ідею «різницевої машини» — спеціалізованого калькулятора для табулювання логарифмів, що обчислюються методом різниць Калькулятор, побудований на ступінчастих валиках Лейбніца, вийшов достатньо невеликим (13 см в висоту і 30 см в діаметрі), але при цьому міг виконувати всі чотири арифметичних дії над 14-розрядними числами.
1801 рік — Жозеф Марі Жаккар будує ткацький верстат з програмним керуванням, програма робота якого задається з допомогою комплекту перфокарт.
1820 рік — перший промисловий випуск арифмометрів. Першість належить французу Тома де Кальмару.
1822 рік — английский математик Чарлз Беббідж винайшов, але не зміг побудувати, першу різницеву машину (спеціалізований арифмометр для автоматичної побудови математичних таблиць) — Різницеву машину Чарлза Беббіджа.
1855 рік — брати Георг Шутс і Едвард Шутц (англ. George & Edvard Scheutz) із Стокгольма побудували першу різницеву машину на основі робіт Чарлза Беббіджа.
1876 рік — російським математиком Чебишовим створений сумувальний апарат з безперервною передачею десятків. В 1881 році він також сконструював до нього приставку для множення і ділення (Арифмометр Чебишова).
1884—1887 роки — Герман Холлеріт розробив електричну табулювальну систему, яка використовувалася в переписах населення США 1890 і 1900 років, а також в Російській імперії в 1897 році.
1912 рік — створена машина для інтегрування звичайних диференціальних рівнянь за проектом російського вченого А. Н. Крилова.
1927 рік — в Массачусетському технологічному інституті (MIT) була створена аналогова обчислювальна машина.
1938 рік — німецький інженер Конрад Цузе побудував свою першу машину, названу Z1. Це повністю механічна програмувальна цифрова машина. Модель була пробною і в практичній роботі не використовувалася. Її відновлена копія зберігається в Німецькому технічному музеї в Берліні. У тому ж році Цузе приступив до створення машини Z2 (Спочатку ці машини називалися V1 і V2. По німецькі це звучить як «Фау1» і «Фау2» і щоб їх не плутали з ракетами, обчислювальні машини перейменували в Z1 і Z2).
Комп'ютер ENIAC
Обчислювальні машини
1941 рік — Конрад Цузе створює обчислювальну машину Z3, що мала всі властивості сучасного комп'ютера.
1942 рік — в Університеті штату Айова (англ. Iowa State University) Джон Атанасов (англ. John Atanasoff) та його аспірант Кліффорд Беррі (англ. Clifford Berry) створили (а точніше — розробили і почали монтувати) перший в США електронний цифровий обчислювальна машина (англ. Atanasoff-Berry Computer — ABC (обчислювальна машина)). Хоча ця машина так і не була завершена (Атанасов пішов у діючу армію), вона, як пишуть історики, мала великий вплив на Джона Мочлі, який створив через два роки першу ЕОМ ENIAC.
На початку 1943 року успішні випробування пройшла перша американська обчислювальна машина Марк I, призначена для виконання складних балістичних розрахунків ВМФ США.
В кінці 1943 року запрацювала англійська обчислювальна машина спеціального призначення «Колосс». Машина працювала над розшифровкою секретних кодів фашистської Німеччини.
В 1944 році Конрад Цузе розробив ще більш швидкий обчислювальна машина Z4.
1946 став роком створення першої універсальної електронної цифрової обчислювальної машини ENIAC.
В 1950 році в Києві під керівництвом академіка Лебедєва була створена перша в континентальній Європі ЕОМ — МЕСМ.
Історія обчислювальних машин |
||
Перше покоління (механічні та електромеханічні пристрої) |
Калькулятори |
Антикітерський механізм, Різницева машина |
Програмовані пристрої |
ткацький верстат Жакарра, Аналітичний машина, Марк I, Z3 |
|
Друге покоління (електронні вакуумні прилади) |
Калькулятори |
калькулятор Атанасова-Беррі, IBM 604, UNIVAC 60, UNIVAC 120 |
Програмовані пристрої |
Колосс, ENIAC, EDSAC, Ферранті Pegasus, Ферранті Меркурій, CSIRAC, EDVAC, UNIVAC I, IBM 701 , IBM 702, IBM 650, Z22 |
|
Третє покоління (на дискретних транзисторах та мікросхемах) |
Майнфрейми |
IBM 7090, IBM 7080, IBM System/360, BUNCH |
Мінікомп'ютери |
PDP-8, PDP-11, IBM System/32, IBM System/36 |
|
Четверте покоління (надвеликі інтегральні схеми) |
Мінікомп'ютери |
VAX, IBM System i |
4-бітні комп'ютери |
Intel 4004, Intel 4040 |
|
8-бітні комп'ютери |
Intel 8008, Intel 8080, Motorola 6800, Motorola 6809, MOS Technology 6502, Zilog Z80 |
|
16-бітні комп'ютери |
Intel 8088, Zilog Z8000, WDC 65816/65802 |
|
32-бітні комп'ютери |
Intel 80386, Pentium, Motorola 68000, ARM архітектури |
|
64-бітні комп'ютери |
Alpha, MIPS, PA-RISC, PowerPC, SPARC, x86-64 |
|
Вбудовані комп'ютери |
Intel 8048, Intel 8051 |
|
Персональний комп'ютер |
настільний комп'ютер, домашній комп'ютер, портативний комп'ютер, особистий цифровий помічник (PDA), Tablet PC |
|
Теоретичні та експериментальні проекти |
Квантовий комп'ютер, хімічний комп'ютер, ДНК-комп’ютер, оптичний комп'ютер, спінтронний комп'ютер |
|
Обладнання |
||
Периферійні пристрої (введення/виведення) |
Введення |
Миша, Клавіатура джойстик, сканер, веб-камера, графічний планшет, мікрофон |
Виведення |
Монітор, принтер, гучномовець |
|
Носії інформації |
гнучких дисків, жорсткий диск, оптичний диск, телетайп |
|
Системи обміну даними |
невелика відстань |
RS-232, SCSI, PCI, USB |
великі відстані (комп'ютерні мережі) |
Ethernet, ATM, FDDI |
Будова сучасного комп'ютера
Більшість сучасних обчислювальних машин мають блочно-модульну конструкцію: апаратну конфігурацію, необхідну для виконання певних робіт, можна складати з готових вузлів та блоків.
Системний блок являє собою основний вузол, у якому зібрані найбільш важливі компоненти персонального комп’ютера. Основною компонентою є материнська плата. На ній розміщені:
центральний процесор
шини — набір кабелів для передачі даних та сигналів управління;
оперативна пам'ять — набір мікросхем, призначених для зберігання даних під час їх безпосереднього опрацювання;
постійна пам'ять — мікросхеми, призначенні для постійного зберігання інформації, у тому числі і за вимкненого живлення.
У зв’язку з тим, що багато компонентів можуть бути інтегровані на материнській платі, то не всі вони можуть бути представлені як окремі комплектуючі елементи. Задня панель, як правило, містить панелі плат розширень із роз’ємами, заглушки роз’ємів, вентиляційний отвір вентилятора блоку живлення.
Материнська плата
Материнська плата є своєрідним «фундаментом» для всіх комплектуючих персонального комп’ютера. Саме в неї вставляються всі основні пристрої: відеокарта, оперативна пам'ять, процесор, жорсткі диски тощо. Інакше кажучи, це платформа, на якій будується вся конфігурація комп'ютера.
На материнських платах також зустрічаються інтегровані пристрої, тобто вмонтовані. Материнські плати подібного типу вже протягом тривалого часу фігурують на комп’ютерному ринку. Прикладом можуть бути материнські плати із вмонтованими звуковою і відеокартами.
Пристрої інтегруються на материнську плату з метою здешевлення загальної вартості комп’ютера. Справді, вартість чіпа плюс витрати на інженерні розробки з інтеграції значно менші, ніж вартість розробки й виготовлення окремої повноцінної плати розширення. Однак інтегровані рішення мають свої недоліки. Це, по-перше, неможливість модернізації у майбутньому. А по-друге, такі рішення мають досить середню продуктивність.
Сьогодні існує два основних виробника процесорів для персональних компютерів і відповідно наборів системної логіки (чипсетів) для побудови материнських плат для них — від компанії Intel (Slot 1, Slot 2, Socket 340, Socket 478) і від компанії AMD (Slot A, Socket А). Перша підтримує процесори Intel Pentium II, Pentium ІІІ, Celeron і Pentium 4, а друга — AMD Athlon і Duron. Процесор одного виробника у більшості випадків неможливо використовувати в материнських платах, розрахованих для іншого.
За числом процесорів, що складають центральний процесор, розрізняють однопроцесорні й багатопроцесорні (мультипроцесорні) материнські плати.
Тема 3.Програмне забезпечення інформаційних технологій
Операці́йна систе́ма — це базовий комплекс програмного забезпечення, що виконує управління апаратним забезпеченням комп'ютера або віртуальної машини; забезпечує керування обчислювальним процесом і організує взаємодію з користувачем.
Операційна система звичайно складається з ядра операційної системи та базового набору прикладного програмного забезпечення. |
Функції операційної системи
Головні функції:
Виконання на вимогу програм користувача тих елементарних (низькорівневих) дій, які є спільними для більшості програмного забезпечення і часто зустрічаються майже у всіх програмах (ввід і вивід даних, запуск і зупинка інших програм, виділення та вивільнення додаткової пам'яті тощо).
Стандартизований доступ до периферійних пристроїв (пристрої введення-виведення).
Завантаження програм у оперативну пам'ять і їх виконання.
Керування оперативною пам'яттю (розподіл між процесами, організація віртуальної пам'яті).
Керування доступом до даних енергозалежних носіїв (твердий диск, оптичні диски тощо), організованим у тій чи іншій файловій системі.
Забезпечення користувацького інтерфейсу.
Мережеві операції, підтримка стеку мережевих протоколів.
Додаткові функції:
Паралельне або псевдопаралельні виконання задач (багатозадачність).
Розподіл ресурсів обчислювальної системи між процесами.
Організація надійних обчислень (неможливість впливу процесу на перебіг інших), основана на розмежуванні доступу до ресурсів.
Взаємодія між процесами: обмін даними, синхронізація.
Захист самої системи, а також користувацьких даних і програм від дій користувача або програм.
Багатокористувацький режим роботи та розділення прав доступу (автентифікація, авторизація).
Базові відомості
Поняття операційної системи напряму пов'язане з такими поняттями, як:
Файл - іменований впорядкований набір даних на пристрої зберігання інформації; операційна система забезпечує організацію файлів в файлові системи.
Файлова система - набір файлів (можливо порожній), організованих за наперед визначеними правилами. Якщо організація файлів в файлову систему відбувається з використанням каталогів, то така файлова система називається ієрархічною.
Програма - файл, що містить набір інструкцій для виконання. В якості виконавця інструкцій програми можуть виступати:
центральний процесор - якщо програма містить машинний код (звичайно отримують шляхом компіляції вихідного текста програми, написаного однією з компільованих мов);
інтерпретатор - інша програма, яка забезпечує розпізнавання і виконання інструкцій (в окремих випадках інтерпретатор також називають віртуальною машиною).
Задача - програма в процесі виконання (в термінології операційних систем UNIX використовують термін "процес").
Команда - ім'я, яке використовує користувач ОС або інша програма для виконання вказаної програми (може збігатися з іменем файла з програмою) або поіменованої дії (вбудованої команди).
Командний інтерпретатор - середовище, яке забезпечує інтерфейс з користувачем і виконання команд.
Відносно свого призначення, операційні системи бувають:
універсальні (для загального використання);
спеціальні (для розв'язання спеціальних задач);
спеціалізовані (виконуються на спеціальному обладнанні);
однозадачні (в окремий момент часу можуть виконувати лише одну задачу);
багатозадачні (в окремий момент часу здатні виконувати більше однієї задачі);
однокористувацькі (в системі відсутні механізми обмеження доступу до файлів та на використання ресурсів системи);
багатокористувацькі (система впроваджує поняття "власник файлу" та забезпечує механізми обмеження на використання ресурсів системи (квоти)), всі багатокористувацькі операційні системи також є багатозадачними;
реального часу (система підтримує механізми виконання задач реального часу, тобто такі, для яких будь які операції завжди виконуються за наперед передбачуваний і незмінний при наступних виконаннях час).
Відносно способу встановлення (інсталяції) операційної системи, операційні системи бувають]:
вбудовані (такі, що зберігаються в енергонезалежній пам'яті обчислювальної машини або пристрою без можливості заміни в процесі експлуатації обладнання);
невбудовані(?) (такі, що інсталюються на один з пристроїв зберігання інформації обчислювальної машини з можливістю подальшої заміни в процесі експлуатації).
Відносно відповідності стандартам операційні системи бувають:
стандартні (відповідають одному з загальноприйнятих відкритих стандартів, найчастіше POSIX);
нестандартні (в тому числі такі, що розробляються відповідно до корпоративних стандартів).
Відносно можливостей розширення операційні системи бувають:
закриті (не дозволяють розширення функціональності ОС);
відкриті (будуються за технологіями, що забезпечують можливості розширення функціональності ОС).
Відносно можливостей внесення змін до вихідного коду операційні системи бувають:
відкриті (англ. open source) - з відкритим програмним кодом;
власницькі (англ. proprietary) - комерційні з закритим кодом.
Складові ОС
До складу операційної системи входять:
Ядро операційної системи, що забезпечує розподіл та управління ресурсами обчислювальної системи;
базовий набір прикладного програмного забезпечення, системні бібліотеки та програми обслуговування.
Ядро системи — це набір функцій, структур даних та окремих програмних модулів, які завантажуються в пам'ять комп'ютера при завантаженні операційної системи та забезпечують три типи системних сервісів:
управління введенням-виведенням інформації (підсистема вводу-виводу ядра ОС);
управління оперативною пам'яттю (підсистема управління оперативною пам'яттю ядра ОС);
управління процесами (підсистема управління процесами ядра ОС).
Кожна з цих підсистем представлена відповідними функціями ядра системи.
Багатозадачні операційні системи також включають ще одну обов'язкову складову - механізм підтримки багатозадачності. Ця складова не надається в якості системного сервісу і тому не може бути віднесена до жодної з підсистем.
Існує три основних механізми забезпечення багатозадачності (планування задач):
шляхом надання процесора окремій задачі на квант часу, який визначається самою задачею (кооперативна Багатозадачність; останнім часом практично не використовується або область використання значно обмежена всередині процесів);
шляхом надання процесора окремій задачі на квант часу, який визначається обладнанням обчислювальної системи - інтервальним таймером;
виділення під окрему задачу окремого процесора в багатопроцесорних системах.
В перших двох випадках на кожному з процесорів в окремо взятий момент часу обраховується лише одна задача, але за рахунок достатньо малого кванту часу (в межах мілісекунд), що почергово надається кожній з задач, виникає ілюзія одночасного виконання в системі багатьох задач.
В сучасних системах, як правило комбінується методи 2 і 3.
Вимоги до обладнання
Окрема операційна система зазвичай може виконуватись на обмеженому переліку обладнання, яке забезпечує потрібні їй механізми. Сучасні універсальні (і не тільки) операційні системи зазвичай вимагають апаратної підтримки наступних механізмів:
підтримка сторінкового поділу оперативної пам'яті з можливістю апаратного захисту сторінок від модифікації даних окремими задачами (процесами);
підтримка захищеного режиму виконання процесора (режиму ядра ОС), який передбачає можливість виконання операцій процесора по управлінню обладнанням системи, при цьому спроба виконати подібну операцію в прикладній програмі блокується апаратно.
Можуть існувати і інші вимоги.
Підсистеми ядра ОС
Інтерфейс ядра операційної системи
Функції ядра операційної системи можуть бути виконані в наслідок виконання в прикладних програмах спеціальних функцій - системних викликів. Призначення системного виклику полягає в тому, що прикладні програми не взмозі самотужки визначити, за якими адресами знаходяться функції ядра.
Системний виклик в один з машинно-залежних способів реалізує механізм отримання адрес функцій ядра та передачу в ці функції необхідних параметрів системного виклику, а також отримання результату системного виклику. Найчастіше системні виклики забезпечуються через систему переривань, завдяки чому адреса функції ядра не тільки обраховується апаратно (в процесі обробки переривання), але й забезпечується захист інформаційних ресурсів ядра.
Системні виклики найчастіше мають синтаксис функції мови програмування, на якій написано ядро ОС.
Підсистема управління введенням-виведенням
Підсистема управління введенням-виведенням реалізує базові механізми обміну даними між пристроями введення-виведення та оперативною пам'яттю обчислювальної машини та забезпечує організацію файлів в файлові системи.
Операція введення виконується як читання даних з зовнішнього пристрою в оперативну пам'ять, операція виведення - як запис даних з оперативної пам'яті на зовнішній пристрій.
При роботі з файлами система введення-виведення впроваджує спеціальну абстракцію - поток вводу-виводу, що дозволяє програмам, які звертаються за сервісами введення-виведення, використовувати одноманітний перелік функцій роботи з файлами не залежно від типу пристрою, на якому знаходиться файл, та типу файлової системи, яка містить цей файл. Відмінності доступу до різних пристроїв та файлових систем забезпечуються додатковими програмними модулями - драйверами пристроїв та файлових систем.
В окремих операційних системах підсистема управління введенням-виведенням також може впроваджувати механізми, які призвані підвищити швидкість обміну даними між задачами та файлами. Найчастіше використовується механізм буферизації (кешування) даних, який полягає в тому, що при читанні даних з файлу підсистема намагається за одну операцію введення читати дані блоками зручного (звичайно досить великого) розміру, а не порціями, які запитує задача. Завдяки цьому за одну операцію введення в оперативну пам'ять потрапляють також додаткові дані, які зберігаються в кеші і в подальшому передаються в програму без додаткових звернень до пристрою. Подібним чином цей механізм працює і при виконанні операцій запису.
Підсистема управління оперативною пам'яттю
Будь яка програма може виконуватись лише тоді, коли вона завантажена в оперативну пам'ять, так само, будь які дані з файлів можуть оброблятись лише тоді, коли вони завантажені в оперативну пам'ять. Завантаження програми та даних в оперативну пам'ять призводить до того, що в оперативній пам'яті одночасно знаходяться одразу кілька компонентів: ядро операційної системи, командний інтерпретатор, програма, що виконується, та дані, що обробляються. Крім того, програма в процесі свого виконання може звертатись до підсистеми управління оперативною пам'яттю з запитами на виділення додаткової - динамічної - оперативної пам'яті.
В багатозадачних операційних системах кількість компонентів, що одночасно можуть знаходитись в оперативній пам'яті зростає пропорційно кількості задач і може сягати сотень.
Підсистема управління оперативною пам'яттю забезпечує розподіл оперативної пам'яті між різними компонентами, а також розподіляє пам'ять під кеш системи введення-виведення.
В окремих багатозадачних операційних системах підсистема управління оперативною пам'яттю також забезпечує віртуалізацію оперативної пам'яті, завдяки чому кожна задача (процес) отримує власну віртуальну пам'ять, причому таким чином, що нестача реальної (фізичної) пам'яті покривається за рахунок перерозподілу даних між оперативною пам'яттю та зовнішнім накопичувачем і переміщення даних між фізичною оперативною пам'яттю і зовнішнім накопичувачем приховується від задач. Це переміщення називається пейджінгом (англ. paging) або свопінгом (англ. swapping — обмін) — в залежності від термінології конкретної ОС.
Введення механізму віртуалізації оперативної пам'яті дозволяє отримати два корисних наслідки:
кожна задача фактично виконується у власному адресовому просторі, тобто таким чином, якби вона виконувалась в одно-задачній операційній системі, завдяки чому значно зменшується вплив окремих задач однією на одну та на ядро системи, а завдяки цьому - і надійність системи;
кожна задача отримує стільки віртуальної оперативної пам'яті, скільки потрібно, а не стільки, скільки є наявної фізичної оперативної пам'яті.
Віртуалізація оперативної пам'яті вимагає апаратної підтримки і звичайно забезпечується через спеціальну таблицю сторінок пам'яті, котра містить відповідності між віртуальними та фізичними адресами.
[ред.] Підсистема управління задачами (процесами)
Детальніше: Процес (інформатика)
Детальніше: Планувальник операційної системи
Підсистема управління задачами (процесами) забезпечує створення задачі (процесу), завантаження програмного коду і його виконання та завершення задачі (процесу).
В багатозадачних системах підсистема управління задачами (процесами) також забезпечує механізми залежностей між задачами, в тому числі: синхронізацію задач та успадкування властивостей.
Засоби міжпроцесної взаємодії
Детальніше: Взаємодія між процесами
Взаємодія процесів дозволяє процесам синхронізувати свою роботу, сумісно і узгоджено використовувати спільні ресурси та спільно виконувати обробку даних.
Взаємодія процесів забезпечується всіма підсистемами ядра ОС: підсистема управління введенням-виведенням забезпечує передачу даних між процесами; підсистема управління оперативною пам'яттю розподіляє під процеси спільну оперативну пам'ять, підсистема управління процесами забезпечує синхронізацію виконання процесів та впроваджує механізм обміну сигналів, за допомогою якого процеси повідомляються про виникнення в системі надзвичайних подій.
Додаткова функціональність операційних систем
Безпека
Безпека ОС базується на двох ідеях:
ОС надає прямий чи непрямий доступ до ресурсів на кшталт файлів на локальному диску, привілейованих системних викликів, особистої інформації про користувачів та служб, представлених запущеними програмами;
ОС може розділити запити ресурсів від авторизованих користувачів, дозволивши доступ, та неавторизованих, заборонивши його.
Запити, в свою чергу, також діляться на два типи:
Внутрішня безпека — вже запущені програми. На деяких системах програма, оскільки вона вже запущена, не має ніяких обмежень, але все ж типово вона має ідентифікатор, котрий використовується для перевірки запитів до ресурсів.
Зовнішня безпека — нові запити з-за меж комп'ютера, як наприклад реєстрація з консолі чи мережеве з'єднання. В цьому випадку відбувається процес авторизації за допомогою імені користувача та паролю, що його підтверджує, чи інших способів як наприклад магнітні картки чи біометричні дані.
На додачу до моделі дозволити/заборонити системи з підвищеним рівнем безпеки також слідкують за діяльністю користувачів, що дозволяє пізніше дати відповідь на питання типу «Хто читав цей файл?»
Графічний інтерфейс користувача
Детальніше: Графічний інтерфейс користувача
Більшість сучасних операційних систем мають графічний інтерфейс користувача (ГІК, англ. Graphical User Interfaces, GUIs, вимовляється як «гуіз»). В деяких старіших ОС ГІК вбудований у ядро, як наприклад у оригінальних реалізаціях Microsoft Windows чи MacOS. Більшість сучасних ОС є модульними і графічна підсистема у них відділена від ядра (як наприклад у Лінукс, МакОС Х і частково у Віндовз).
Багато операційних систем дозволяють користувачеві встановити будь-який графічний інтерфейс на власний вибір. Типовим прикладом у більшості Юнікс-систем (BSD, Лінукс, Minix) є віконна система Х у поєднанні з графічним менеджером KDE чи Gnome. Для Юнікс-систем графічний інтерфейс не є необхідним.
Графічний інтерфейс користувача невпинно розвивається. Наприклад, інтерфейс Windows модифікується щоразу при випуску нової основної версії, а ГІК MacOS було кардинально змінено після випуску MacOS X у 2001 році.
Драйвери пристроїв
Драйвери — це особливий тип комп'ютерних програм, розроблених для коректної взаємодії з пристроями. Вони представляють інтерфейс для взаємодії з пристроєм через певну шину комп'ютера, до котрої даний пристрій під'єднано, за допомогою ряду команд що відправляють та отримують дані з пристрою. Ці програми залежні як від пристрою так і від операційної системи, тобто кожен пристрій потребує свого драйвера під кожну ОС.
Ключовим моментом проектування драйверів є абстрагування. Кожна модель пристрою (навіть якщо пристрої однакового класу) є унікальною. Новіші моделі часто працюють швидше чи продуктивніше і інакше контролюються. ОС не може знати, як контролювати кожен пристрій зараз і в майбутньому. Для вирішення цієї проблеми ОС лише задає правила поведінки класу пристроїв. Задачею драйвера є перетворення цих правил у специфічні для кожного пристрою команди керування.
Робота в мережі
Детальніше: Комп'ютерна мережа
В більшості сучасних ОС реалізовано підтримку стеку протоколів TCP/IP. Це означає що вони можуть взаємодіяти в мережі, доступаючись до ресурсів одне одного.
Багато ОС також підтримують один чи кілька специфічних протоколів, як наприклад SNA на системах від IBM, DECnet на системах від Digital Equipment Corporation, та Microsoft-специфічні протоколи для Windows. Для певних задач виористовуються специфічні протоколи, як наприклад NFS для роботи з файлами через мережу.
Історія
Перші комп'ютери взагалі не мали ОС. На початку 1960-х вони лише комплектувались набором інструментів для розробки, планування та виконання завдань. Серед інших можна виділити системи від UNIVAC та Control Data Corporation.
До кінця 1960-х, проте, було розроблено цілий ряд операційних систем, в котрих були реалізовані всі або більшість з вищеперелічених функцій. До них можна віднести «Atlas» (Манчестерський університет), «CTTS» и «ITSS» (Массачусетський технологічний інститут (МТІ)), «THE» (Ейндховенський технологічний університет), «RS4000» (Університет Орхуса) та інші (на той момент їх налічувалось близько сотні)
Найбільш розвинуті ОС того часу, такі як «OS/360» (компанія «IBM»), «SCOPE» (компанія «CDC») та завершений вже в 1970-х роках «MULTICS» (МТІ та компанія «Bell Labs»), передбачали можливість використання багатопроцесорних системи.
Спонтанний характер розробки ОС призвів до наростання кризових явищ, пов'язаних, перш за все, зі складністю та великими розмірами розроблюваних систем. ОС погано масштабувались (простіші не використовували всіх можливостей потужних обчислювальних машин; складніші неоптимально виконувались або взагалі не виконувались на менш потужних системах) і були повністю несумісними між собою.
У 1969 році співробітники МТІ Кен Томпсон, Деніс Рітчі та Брайан Керніган з колегами розробили та реалізували ОС «Юнікс» («Unix»; первинно «UNICS», на противагу «MULTICS»), котра увібрала в себе багато рис попередниць, але на противагу їм мала цілий ряд переваг:
проста метафорика (два ключових поняття — процес та файл);
компонентна архітектура (принцип «одна програма — одна функція», або інакше «кожна програма має робити лише одну роботу, але робити її добре» плюс потужні засоби об'єднання цих програм для вирішення конкретних задач);
мінімізація ядра та кількості системних викликів;
незалежність від апаратної архітектури і реалізація на машинно незалежній мові програмування (для цього була розроблена мова програмування «C»;
уніфікація файлів (будь-що у системі є файлом, до котрого можна доступитись по спільних для всіх правилах).
Завдяки зручності перш за все в якості інструментального середовища «Юнікс» дуже тепло зустріли в університетах, а потім і в галузі в цілому і незабаром вона стала прототипом єдиної ОС, котру можна було використовувати у найрізноманітніших обчислювальних системах, і — більше того — швидко та з мінімумом зусиль перенести на іншу апаратну архітектуру.
В кінці 1970-х років співробітники Каліфорнійського університету в Берклі внесли ряд суттєвих вдосконалень у джерельні коди Юнікс, включно з реалізацією стеку мережевих протоколів TCP/IP. Їх розробка стала відомою під іменем BSD (англ. Berkeley Software Distribution).
Через конфлікт з «Bell Labs» Річард Столмен поставив задачу реалізувати повністю незалежну від авторських прав ОС на основі Юнікс, заснувавши проект «GNU» (англ. рекурсивсне скорочення «GNU's Not Unix» — «ГНЮ Не Юнікс»).
Незабаром «Юнікс» стала стандартом де-факто, а потім і юридичним — ISO/IEC 9945. ОС, що дотримувались цього стандарту чи опираються на нього, називають «відкритими» або «стандартними». До них відносяться системи, що базуються на останній версії «Юнікс», випущеної «Bell Labs» («System V»), на розробках Університету Берклі («FreeBSD», «OpenBSD», «NetBSD»), а також ОС «Linux», розроблена спільнотою на чолі з Лінусом Торвальдсом та в межах проекту «GNU» (основні системні інструменти).
Сьогодення
Сучасні операційні системи типово мають графічний інтерфейс користувача, котрий на додачу до клавіатури користується також вказівниковим пристроєм — мишею чи тачпадом. Старіші системи, та системи, що не призначені для частої безпосередньої взаємодії з користувачем (як наприклад сервери) типово використовують інтерфейс командного рядка. Обидва підходи так чи інакше реалізують оболонку, котра перетворює команди користувача — текстові з клавіатури, чи рухи мишки — на системні виклики.
При виборі ОС ключовим моментом є архітектура комп'ютера (зокрема центрального процесора), на котрій вона буде запускатись. На персональних комп'ютерах сумісних з ІВМ РС запускаються ОС сімейства «Майкрософт Віндовз», «Лінукс» та «БСД». На мейнфреймах Burroughs MCP — B5000, IBM OS/360 — IBM System/360, UNIVAC EXEC 8 — UNIVAC 1108. Крім того на більшості сучасних мейнфреймів запускаються різні варіанти Лінукс чи Юнікс, а на деяких — версія Datacenter Windows 2003 Server. На вбудованих системах використовується велика кількість вбудованих ОС.
Юнікс-подібні ОС
KDE запущений в Лінукс.
До юнікс-подібних ОС відноситься велика кількість операційних систем, котрі можна умовно поділити на три категорії — System V, BSD та Лінукс. Сама назва «Юнікс» є торговою маркою, що належить «The Open Group», котра власне й ліцензує кожну конкретну ОС на предмет того, чи відповідає вона стандарту. Тому через ліцензійні чи інші неузгодження деякі ОС, котрі фактично є Юнікс-подібними, не визнані такими офіційно.
Системи Юнікс запускаються на великій кількості процесорних архітектур. Вони широко використовуються як серверні системи у бізнесі, як стільничні системи у академічному та інжененому середовищі. Тут популярні вільні варіанти Юнікс, такі як Лінукс та БСД-системи. Окрім того, деякі з них останнім часом набувають широкого поширення в корпоративному середовищі, особливо це стосується орієнтованих на кінцевого користувача дистрибутивів Лінукс, в першу чергу Ubuntu, Mandriva, Red Hat Enterprise Linux та Suse. Лінукс також є популярною системою на стільницях розробників, системних адміністраторів та інших ІТ-спеціалістів.
Деякі варіанти Юнікс, як наприклад HP-UX компанії Хьюлет Пакард та AIX від IBM запускаються лише на апаратних системах своїх розробників. Інші, як наприклад Solaris, можуть запускатись на багатьох апаратних типах, включаючи сервери на базі x86 та ПК.
Родина Microsoft Windows
Windows XP
Спочатку родина ОС Microsoft Windows проектувалась як графічна надбудова над старими середовищами DOS. Сучасні версії розроблені на базі нового ядра (англ. NT - New Technology, Нова технологія), яке з'явилось в OS/2, запозичене з VMS. Windows запускається на 32- та 64-бітних процесорах Інтел та AMD; попередні версії також могли запускатись на процесорах DEC Alpha, MIPS, Fairchild (пізніше Intergraph) Clipper та PowerPC. Проводились роботи на портування її на архітектуру SPARC.
Станом на 2006 рік Windows утримує монопольне становище (близько 94 %) світового ринку настільних систем, дещо втрачаючи позиції через зростання популярності систем з відкритими джерельними кодами. Вона також використовується на малих та середніх серверах мереж та баз даних. Останнім часом Microsoft проводить ряд маркетингових досліджень, котрі мають на меті показати привабливість родини Windows на ринку корпоративних систем.
Найбільше на сьогоднішній день поширена версія Microsoft Windows XР, випущена 25 жовтня 2001 року. Останній випуск Windows XP Service Pack 2 випущено 6 серпня 2004 року. Станом на 27 червня 2008 року операційні системи сімейства Microsoft Windows займають 91 % долі світового ринку ОС [1]
У листопаді 2006 року, після більш ніж 5 років розробки, корпорація Microsoft випустила ОС Windows Vista, що містить велику кількість нововведень та архітектурних змін в порівнянні з попередніми версіями Windows. Серед інших можна виділити новий інтерфейс користувача, названий Windows Aero, ряд вдосконалень безпеки, як наприклад Контроль реєстраційного запису користувача (User Account Control) та нові програми для мультимедія, як наприклад Windows DVD Maker.
Mac OS X
Робочий стіл Mac OS X «Тигр»
Mac OS X — це ряд графічних ОС, що розроблюються, реалізуються та підтримуються компанією Apple. Mac OS X — це наступниця оригінальної MacОС, що її розробляла Apple з 1984 року. На відміну від попередниці, Mac OS X є Юнікс-системою, що розроблена на основі NEXTSTEP.
Перші випуски Mac OS X були у 1999 році — Mac OS X Server 1.0, та в березні 2001 — Mac OS X 10.0. З того часу було випущено ще 5 версій Mac OS X у варіантах «кінцевий користувач» та «сервер». Остання версія, Mac OS X 10.5, випущена 15 листопада 2007 року. Випуски Mac OS X називаються іменами великих тварин з родини котячих; Остання версія (10.6) носить назву «Сніжний Леопард».
Серверна версія Mac OS X Server архітектурно ідентична версії для кінцевого користувача, але запускається на серверах виробництва Apple. Вона містить програми для керування робочими групами та адміністрування ключових мережевих служб, включаючи поштові служби, сервери Samba, LDAP, DNS та ін.
Хмарні операційні системи
Основна ідея такої системи — легкий перехід від одного комп'ютера до іншого. Тут можуть виникнути мимовільні аналогії з акаунтом соціальної мережі, який можна підвантажувати на будь-якому доступному терміналі з доступом до Мережі в незалежності від встановленої ОС. Приблизно така ідея і переслідується творцями цієї нової революційної операційної системи.[2]
У сфері програмного забезпечення персональних комп'ютерів (від кишенькового до настільного) існує поняття «Офісний пакет» (англ. Office suite), що означає набір застосунків, націлених на роботу з електронною документацією. Компоненти офісних пакетів розповсюджуються, як правило, разом, мають схожий інтерфейс і мають добре розвинену схему взаємодії один з одним.
Типові компоненти
Від виробника і його спеціалізації склад застосунків офісного пакету вар'юється, проте еволюція програмного забезпечення зробила типовими для офісних пакетів такі компоненти (або деякі його елементи):
Текстовий процесор — для роботи з документів, що складаються з текстів, розбавлених ілюстраціями, таблицями, графіками тощо;
Редактор електронних таблиць — засіб для обробки об'ємних таблиць даних;
Засіб створення презентацій — дозволяє створювати барвисті і виразні електронні презентації, щоб краще розповісти клієнтам про пропозиції і роботу вашої фірми;
Система управління базами даних, як правило, в офісних пакетах бази даних забезпечують початковий рівень;
Графічний редактор — дозволяє редагувати графічні файли.
Відомі офісні пакети
Довгий час практично синонімом поняття офісний пакет був Microsoft Office, його успіх у споживачів не малою мірою забезпечив і загальний успіх операційної системи Windows. Однак, існували альтернативні пропозиції офісних пакетів, наприклад WordPerfect (його сучасний наступник Corel WordPerfect Office), IBM Lotus SmartSuite чи Ability Office.
На платформі Mac Apple випустив свій власний пакет iWork.
Співтовариство відкритого програмного забезпечення GNU/Linux розробляє офісні проекти, як Gnome Office та KOffice.
Відрита платформа і формат OpenDocument підтримується такими вільними пакетами як OpenOffice.org та IBM Lotus Symphony, доступними на багатьох операційних системах.
Розвиток служб інтернету привів до нової хвилі повноцінних офісних пакетів, які являють собою переважно онлайнові веб-служби, такі як Zoho Office Suite чи Google Docs.
Застосунок, прикладна програма, застосовна програма (англ. application, application software; рос. приложение, прикладная программа) — користувацька програма, що дає змогу вирішувати прикладні задачі користувача. Поняття введено, щоб підкреслити відмінність від операційної системи, драйверів, бібліотек, системних утиліт тощо (які забезпечують функціонування власне комп'ютерної системи та підтримують її працездатність) та засобів і середовищ розробки.
Прикладами застосунків є текстовий процесор, графічний редактор, електронні таблиці, оглядач. Іноді застосовується більш вільно для позначення будь-якої програми, включаючи користувацькі і системні. В інших контекстах може означати діловий офісний пакет, відділяючи тим самим такий тип програм від ігор та службових програм.
Слово «застосунок» у сенсі «прикладна програма» є неологізмом, який вперше використаний компанією Майкрософт для перекладу слова «application» у операційній системі «Microsoft Windows Vista». Раніше, в українській мові слово «застосунок» не зустрічалося, а словосполучення «application», «application program» традиційно перекладалося як «прикладна програма».
Прикладні програми
Прикладне програмне забезпечення — це програми, призначені для виконання конкретних завдань користувача. Прикладне програмне забезпечення (англ. application software) також прикладна програма, прикладне ПЗ, застосовна програма — частина програмного забезпечення, що потребує безпосередньої взаємодії та забезпечує користувачеві розв`язання певної задачі. Цим самим поняття прикладного ПЗ є протилежним до системного та іншого допоміжного ПЗ (наприклад операційна система), котрі «лише» забезпечують можливість виконання роботи, але не приносять безпосередньої користі користувачеві.
Наглядним прикладом аналогічного поділу може бути електричний струм: електромережа не приносить прямої користі користувачеві, але забезпечує роботу електричних пристроїв, надаючи їм електроенергію, в свою чергу користувач використовує ці пристрої для вдоволення потреб, тобто отримує користь.
Проте таке чітке розмежування не завжди можливе, особливо у вбудованих системах (наприклад мобільний телефон або кавоварка) де програмне та апаратне забезпечення є єдиним цілим.
Окрім того, виробники системного ПЗ нерідко вбудовують також і прикладні програми, відомим прикладом є ОС Windows, де стандартно вбудовано велику кількість прикладного ПЗ. Ця практика не завжди відповідає вимогам користувачів певної системи.
Є чимало стандартизованого прикладного ПЗ, котре спрямовано на задоволення потреб якомога ширшого кола. Але значна частина прикладного ПЗ розробляється індивідуально «з нуля» або ж на основі стандартних програм для рішення вузьких завдань, наприклад: в межах однієї компанії чи галузі.
Типи прикладного програмного забезпечення
Прикладне програмне забезпечення підприємств та організацій. Наприклад, фінансове управління, система взаємовідносин із споживачами, система постачання. До цього типу відносяться також відомче ПЗ підприємств малого бізнесу, а також окремі підрозділи великого підприємства (Керування транспортними витратами, служба IT підтримки).
Програмне забезпечення інфраструктури підприємства. Забезпечує загальні потреби у підтримці ПЗ підприємств. Це бази даних, сервери електронної пошти, керування мережею та безпекою.
Програмне забезпечення інформаційного робітника. Обслуговує потреби індивідуальних користувачів у створенні та керуванні інформацією. Це, як правило, керування часом, ресурсами, документацією, наприклад, текстові редактори, електронні таблиці, програми-клієнти для електронної пошти та блогів, персональні інформаційні системи та медіа редактори.
Програмне забезпечення для доступу до зміста. Використовується для доступу до тих чи інших програм або ресурсів без їх редагування (може включати й функцію редагування). Призначено для груп та індивідуальних користувачів цифрового контенту. Це, наприклад, медіа-плеєри, веб-браузери, допоміжні браузери та інше.
Освітнє програмне забезпечення за змістом близько до ПЗ для медіа та розваг, але на відміну від нього має чіткі вимоги по тестуванню знань користувача та відслідковуванню прогресу у вивченні того чи іншого матеріалу. Багато освітніх програм включають функції спільного користування та багатобічного співробітництва.
Імітаційні програми. Використовуються для симуляції фізичних або абстрактних систем у наукових, освітніх або інших цілях.
Інструментальні програмні засоби у галузі медіа. Забезпечують потреби користувачів, що виробляють друковані або електронні медіа ресурси для інших споживачів, на комерційних або освітніх засадах. Це програми поліграфічної обробки, верстання, обробки мультимедіа, редактори HTML, редактори цифрової анімації, цифрового звуку та інше.
Прикладні програми для проектування та конструювання. Використовуються при розробці апаратного («залізо») і програмного забезпечення. Охоплюють автоматизований дизайн (computer aided design — CAD), автоматизоване проектування (computer aided engineering — CAE), редагування та компіляцію мов програмування, програми інтегрованих середовищ розробки (Integrated Development Environments), інтерфейси для прикладного програмування (Application Programmer Interfaces).
Систе́ма автоматизо́ваного проектува́ння (САПР; англ. Computer-aided design) — комп'ютерна система обробки інформації, що призначена для автоматизованого проектування (CAD), розробки (CAE) і виготовлення (CAM) кінцевого продукту, а також оформлення конструкторської і/або технологічної документації.
Дані з CAD-систем передаються в CAM (англ. Computer - aided manufacturing — система автоматизованої розробки програм обробки деталей для верстатів з ЧПУ або ГАВС (Гнучких автоматизованих виробничих систем)).
Робота з САПР зазвичай має на увазі створення геометричної моделі виробу (двовимірної чи тривимірної, твердотільної), генерацію на основі цієї моделі конструкторської документації (креслень виробу, специфікацій і інш.) і наступний його супровід.
Слід зазначити, що термін «САПР» по відношенню до промислових систем має ширше тлумачення, ніж CAD — він включає CAD, CAM і CAE.
Компоненти САПР:
Математичне забезпечення — математичні моделі, методики та методи їх отримання;
Лінгвістичне забезпечення;
Технічне забезпечення — пристрої введення, обробки і виведення даних, засоби підтримки архіву проектних рішень, пристрої передачі даних;
Інформаційне забезпечення;
Програмне забезпечення — інформаційна база САПР, автоматизовані банки даних, системи керування базами даних (СКБД)
Програмні компоненти;
Методичне забезпечення;
Організаційне забезпечення.
Система автоматизованого проектування
SolidWorks
AutoCAD
Mathcad
Altium Designer
База даних (БД) — впорядкований набір логічно взаємопов'язаних даних, що використовується спільно, та призначений для задоволення інформаційних потреб користувачів. У технічному розумінні включно й система керування БД.
Головним завданням БД є гарантоване збереження значних обсягів інформації (т.зв. записи даних) та надання доступу до неї користувачеві або ж прикладній програмі. Таким чином БД складається з двох частин : збереженої інформації та системи управління нею. З метою забезпечення ефективності доступу записи даних організовують як множину фактів (елемент даних). |
Історія розвитку
1960-ті рр. розробка перших БД. CODASYL — мережева модель даних та одночасно незалежна розробка ієрархічної БД фірмою North American Rockwell, яка пізніше взята за основу IMS — власної розробки IBM.
1970-ті рр. наукове обґрунтування Едгаром Ф. Коддом основ реляційної моделі, котра на початку зацікавила лише наукові кола. Вперше цю модель було використано у БД Ingres (Берклі) та System R (IBM), що були лише дослідними прототипами, анонсованими протягом 1976 року.
1980-ті рр. поява перших комерційних версій реляційних БД Oracle та DB2. Реляційні БД починають успішно витісняти мережеві та ієрархічні. Дослідження децентралізованих (розподілених) систем БД, проте вони не відіграють особливої ролі на ринку БД.
1990-ті рр. увага науковців спрямовується у сторону об'єктно-орієнтованих БД, які знайшли застосування у першу чергу в тих областях, де використовуються комплексні дані: інженерні, мультимедійні БД.
2000-ні рр. головним новоденням є підтримка та застосування XML у БД. Розробники комерційних БД, які панували на ринку у 1990-их рр., отримують все більшу конкуренцію зі сторони руху відкритого програмного забезпечення. Реакцією на це стає поява безкоштовних версій комерційних БД.
Структуровані та неструктуровані БД
Структуровані БД використовують структури даних, тобто структурований опис типу фактів за допомогою схеми даних, більш відомої як модель даних. Модель даних описує об'єкти та взаємовідносини між ними. Існує декілька моделей (чи типів) баз даних, основні: плоска, ієрархічна, мережна та реляційна. Приблизно з 2000 року більше половини БД використовують реляційну модель.
До неструктурованих БД відносяться повнотекстові бази даних, які містять неструктуровані тексти статей чи книг у формі, що дозволяє здійснювати швидкий пошук (як наприклад вікіпедія).
Характеристика БД
Часто зустрічається характеристика БД на основі певних параметрів або необхідних вимог, наприклад:
значна кількість даних
незалежність даних
відкритий доступ до даних
підтримка транзакцій з гарантією відповідних властивостей
гарантована відсутність збоїв
одночасна робота з багатьма користувачами
З подальшим розвитком БД змінюються й ці вимоги та додаються нові, тому одностайності щодо повноти цієї характеристики немає.
Реалізації
Комерційні
DB2
Informix
Oracle
SQL Server
З відкритим кодом
MySQL
Firebird
PostgreSQL
Мо́ва програмува́ння (англ. Programming language) — система позначень для опису алгоритмів та структур даних[1], певна штучна формальна система, засобами якої можна виражати алгоритми[2]. Мову програмування визначає набір лексичних, синтаксичних і семантичних правил, що задають зовнішній вигляд програми і дії, які виконує виконавець (комп'ютер) під її управлінням.[Джерело?]
З часу створення перших програмованих машин було створено понад дві з половиною тисячі мов програмування.[3] Щороку їх кількість поповнюється новими. Деякими мовами вміє користуватись тільки невелике число їх власних розробників, інші стають відомі мільйонам людей. Професійні програмісти зазвичай застосовують в своїй роботі декілька мов програмування. |
Історія
Першу мову програмування високого рівня — Планкалькюль (нім. Plankalkül) спроектував німець Конрад Цузе у 1945 році[Джерело?], але вона не мала комп'ютерної реалізації і не одержала уваги, хоча мала дуже потужні на той час можливості. У кінці 40-их — початку 50-их застосовувалися інтерпретовані системи кодування, коли певні команди мови програмування кодувалися числами, які уже інтерпретувалися машинним кодом. Ці системи називалися «автоматичним програмуванням», були простішими для програмування, ніж машинні коди, але могли мати значно меншу (до 50 разів) швидкодію, через що часто надавали перевагу машинним кодам. До таких систем належали — Short Code для BINAC (1949) і UNIVAC I (1952), Speedcoding для IBM 701, розроблена Джоном Бекусом у 1954.
Першою широковживаною компільованою мовою став розроблений групою Джона Бекуса Фортран, анонсований у 1954 році і випущений у 1957 для IBM 704. Основним призначенням Фортрану були швидкі наукові обчислення, оголошувалося що швидкодія згенерованого компілятором коду майже не відрізянтиметься від машинного коду написаного вручну. Уже у квітні 1958 близько половини програм для IBM 704 були написані на Фортрані. Випущений у 1958 році Фортран II дозволяв незалежну компіляцію підпрограм, що дозволило створювати більші програми, оскількі низька надійність IBM 704 не дозволяла скомпілювати без збоїв велику програму (понад 300—400 рядків) одразу. Розроблений у 1960—1962 роках Фортран IV був однією з найпоширеніших мов того часу і лишався стандартною версією Фортрану до появи у 1978 році Фортрану 77.
У 1958 році у MIT розробили LISP — першу функційну мову, яка понад чверть століття домінувала у програмуванні задач штучного інтелекту.
У кінці 1950-их почали розроблятися різні мови програмування. У 1958 році декілька значних груп комп'ютерних користувачів у США, включаючи SHARE — групу науковців-користувачів IBM і USE (UNIVAC Scientific Exchange, група науковців-користувачів UNIVAC) запропонували ACM заснувати робочу групу зі створення універсальної мови програмування. Також ще у 1955 році німецьке Товариство прикладної математики і механіки (GAMM) заснувало комітет зі створення універсальної мови програмування. У кінці травня 1958 року було проведено зустріч у Цюриху між ACM і GAMM, на матеріалах якої у грудні опубліковано ALGOL 58 Report. На його основі було створено 3 значні реалізації — MAD (1961), NELIAC (1963), JOVIAL (1963). З них лише JOVIAL отримав поширення, ставши на чверть століття офіційною мовою програмування у Військово-морських силах США. SHARE і IBM почали створення власної реалізації ALGOL, але припинили, врахувавши витрати на створення і просування Фортрану.
Впродовж 1959 року ALGOL 58 широко обговорювався, була запропонована нотація для опису синтаксису мов програмування — форма Бекуса-Наура. У 1960 проведено чергову зустріч і опубліковано ALGOL 60 Report. ALGOL вплинув на багато мов програмування і став стандарною мовою для публікації алгоритмів, але через ряд причин не одержав широкого поширення — він був заскладним, і не було реалізацій, які підтримували його повністю, відсутність стандартного введення-виведення привела до появи різних несумісних реалізацій, деякі неоднозначності опису мови так і не були розв'язані. Також широкого вжитку уже набув Фортран, і IBM не підтримала ALGOL.
У 1959 році була проведена зустріч у Пентагоні для створення мови CBL (Common Business Language), засновано комітет з його створення, і у 1960 опубліковано початкову специфікацію COBOL 60, який невдовзі став першою мовою прийнятою у Міністерстві оборони США. У 1968 році COBOL було стандартизовано ANSI.
У 1964 році було створено спрощену мову BASIC (Beginners All-purpose Symbolic Instruction Code) для навчання програмуванню студентів, які переважно спеціалізувалися у вільних мистецтвах, а не технічних науках.
Тоді як науковці переважно використовували Фортран, а бізнес — COBOL, у 1963 році в IBM вирішили створити універсальні платформу IBM/360 і мову програмування. У стислі терміни до 1965 року було розроблено мову PL/I, яка поєднувала можливості Фортран, ALGOL і COBOL, і виявилась заскладною, хоча і була у широкому вжитку у 1970-их у наукових і бізнес задачах, також її підмножини (PL/C, PL/CS) використовувалися для навчання програмуванню.
На початку 1960-их було створено перші мови із динамічною типізацією — APL і SNOBOL.
SIMULA 67 була першою об'єктно-орієнтованою мовою програмування.
У 1965 році Ніклаус Вірт і Тоні Хоар запронували комітету з розвитку мови ALGOL свою версію, яку згодом назвали ALGOL-W і застосовували для навчання в деяких університетах. Пропозиція була відхилена через незначну кількість змін, на користь значно складнішого ALGOL 68. У ALGOL 68 з'явилися визначення структур данних і динамічні масиви. ALGOL 68 став першою мовою із формальною специфікацією, яка однак була складною для розуміння.
У 1971 році Вірт опублікував опис мови Pascal, яка у 70-их стала загальновживаною для навчання студентів.
У 1972 році Деніс Річі розробив у Bell Labs мову C. Тоді ж у Марселі створено інтерпретатор мови Пролог - першої і найвідомішої мови логічного програмування. Алан Кей у Xerox PARC розробив першу широко вживану об'єктно-орієнтовану мову — Smalltalk.
у 1973 Робін Мілнер в Единбурзькому університеті створив ML.
У 1975 році в Массачусетському технологічному інституті описано спрощений діалект мови Лісп — Scheme.
У 1976 випущено мову для статистичного програмування S, на базі якої в 1993 році створено R.
У 1977 році випущено Bourne shell.
У 1975 Міністерство оборони США утворило міжнародну групу для створення нової мови програмування для власних потреб, конкурс у 1979 виграла мова Ада.
У 1981 випущено dBASE II.
У 1984 році з метою об'єднання різних діалектів Ліспу створено Common Lisp. Випущено MATLAB
У 1985 році Б'ярн Страуструп опублікував реалізацію мови C++. Тоді ж випущено AWK.
У 1986 році опублікована мова Objective-C і створено Erlang. Тоді ж Borland і Apple незалежно створили об'єктно-орієнтоване розширення мови Pascal - Object Pascal.
У 1987 році створено Perl.
У 1990 році опубліковано Standard ML і Haskell.
У 1991 році створено Visual Basic і опубліковано Python.
У 1992 випущено Oracle 7 з підтримкою PL/SQL
У 1993 році створено Lua.
У 1995 році Sun Microsystems випустила Java, Netscape — JavaScript, тоді ж створено PHP і Ruby.
У 1996 році створено OCaml.
У 2001 році створено C#.
У 2002 році створено F#. У 2003 році створено Scala.
Елементи
Синтаксис
Синтаксис мови програмування визначає те, як буде виглядати програма на цій мові, зокрема, як пишуться оператори, оголошення і інші мовні конструкції[4]. Наприклад, оголошення масиву V з десяти цілочислових елементів в на мові С буде виглядати так:
int V[10];
На мові Pascal:
V: array [0…9] of integer
Типи даних
Область зберігання даних в апаратній частині комп'ютера (пам'ять, регістри і зовнішні запам'ятовуючі пристрої) зазвичай мають доволі просту структуру в вигляді послідовності бітів, згрупованих в байти або слова. Проте в віртуальному комп'ютері, як правило, організовано більш складним чином — в різні моменти виконання програми використовуються такі форми зберігання даних, як стеки, масиви, числа, символьні рядки та інші. Один або декілька однотипних елементів даних, об'єднаних в одне ціле в віртуальному комп'ютері в певний момент виконання програми, прийнято називати об'єктом даних. При виконанні програми існує багато об'єктів даних різних типів. Тип даних — це деякий клас об'єктів даних разом з набором операцій для створення і роботи з ним[5]. В кожній мові програмування є певний набір вбудованих примітивних типів даних. Додатково в мові можуть бути передбачені засоби, що дозволяють програмісту визначати нові типи даних.
Класифікація мов програмування
Мови класифікують за такими критеріями:
Рівень абстракції
Мови програмування високого рівня оперують сутностями ближчими людині, такими як об'єкти, змінні, функції. Мови програмування нижчого рівня оперують сутностями ближчими машині: байти, адреси, інструкції. Текст програми на мові високого рівня зазвичай набагато коротший ніж текст такої самої програми на мові низького рівня, проте програма має більший розмір.
Область застосування
Універсальні та спеціалізовані. Спеціалізовані мови теж бувають Тьюрінг-повні, та все ж їх область застосування обмежена, як наприклад у мови shell.
Підтримувані парадигми програмування
Об'єктно-орієнтовані, логічні, функційні, структурні…
Імперативні мови базуються на ідеї змінної, значення якої змінюється присвоєнням. Вони називаються імперативними (лат. imperative - наказовий), оскільки складаються із послідовностей команд, які звичайно містять присвоєння змінних <назва_змінної> = <вираз>, де вираз може посилатися на значення змінних присвоєних попередніми командами.
Мови програмування низького рівня
Перші комп'ютери доводилось програмувати двійковими машинними кодами. Проте програмувати таким чином — доволі трудомістка і важка задача[6]. Для спрощення цієї задачі почали з'являтися мови програмування низького рівня, які дозволяли задавати машинні команди в більш зрозумілому для людини вигляді. Для перетворення їх у двійковий код були створені спеціальні програми — транслятори.[7]
Приклад машинного коду і представлення його на асемблері[8]
Транслятори поділяються на:
компілятори — перетворюють текст програми в машинний код, який можна зберегти і після цього використовувати уже без компілятора (прикладом є виконувальні файли з розширенням *.exe).
інтерпретатори — перетворюють частину програми в машинний код, виконують і після цього переходять до наступної частини. При цьому щоразу при виконанні програми використовується інтерпретатор.
Прикладом мови низького рівня є асемблер. Мови низького рівня орієнтовані на конкретний тип процесора і враховують його особливості, тому для перенесення програми на асемблері на іншу апаратну платформу її потрібно майже цілком переписати. Певні відмінності є і в синтаксисі програм під різні компілятори. Щоправда, центральні процесори для комп'ютерів фірм AMD та Intel практично сумісні і відрізняються лише деякими специфічними командами. А ось спеціалізовані процесори для інших пристроїв, наприклад, відеокарт, телефонів містять суттєві відмінності.
Переваги
За допомогою мов низького рівня створюються ефективні і компактні програми, оскільки розробник отримує доступ до всіх можливостей процесора.
Недоліки
Програміст, що працює з мовами низького рівня, має бути високої кваліфікації, добре розуміти будову мікропроцесорної системи, для якої створюється програма. Так, якщо програма створюється для комп'ютера, потрібно знати будову комп'ютера і, особливо, влаштування і особливості роботи його процесора.
результуюча програма не може бути перенесена на комп’ютер або пристрій з іншим типом процесора.
значний час розробки великих і складних програм.
Мови низького рівня, як правило, використовують для написання невеликих системних програм, драйверів пристроїв, модулів стиків з нестандартним обладнанням, програмування спеціалізованих мікропроцесорів, коли найважливішими вимогами є компактність, швидкодія і можливість прямого доступу до апаратних ресурсів.
Асемблер — мова низького рівня, що широко застосовується до сих пір.
Мови програмування високого рівня можна сказати є більш зрозумілими людині, ніж комп'ютеру. Особливості конкретних комп'ютерних архітектур в них не враховуються, тому створені програми легко переносяться з комп'ютера на комп'ютер. Здебільшого достатньо просто перекомпілювати програму під певну комп'ютерну архітектурну та операційну систему. Розробляти програми на таких мовах значно простіше і помилок допускається менше. Значно скорочується час розробки програми, що особливо важливо при роботі над великими програмними проектами.
Адресна мова програмування
Фортран
Кобол
Алгол
Pascal
Java
C
C++
C#
Objective C
Smalltalk
Delphi
Недоліком мов високого рівня є більший розмір програм порівняно з програмами на мові низького рівня. Тому в основному мови високого рівня використовуються для розробок програмного забезпечення комп'ютерів, і пристроїв, які мають великий обсяг пам'яті. А різні підвиди асемблеру застосовуються для програмування інших пристроїв, де критичним є розмір програми.
П'ять поколінь мов програмування
Розрізняють п'ять поколінь мов програмування[9] [10] [11]:
Перше покоління
Початок 1950-х років — мови перших комп'ютерів. Перша мова асемблера, створена за принципом «одна інструкція — один рядок».
Основна відмінна риса: орієнтування на конкретний комп’ютер.
Друге покоління
Кінець 1950-х — початок 1960-х р.р. Розроблено символьний асемблер, в якому з'явилося поняття змінної. Це перша повноцінна мова програмування.
Основна відмінна риса: орієнтування на абстрактний комп'ютер з такою ж системою команд.
Третє покоління
1960-ті р.р. — мови програмування високого рівня. Їхні характеристики:
відносна простота;
незалежність від конкретного комп'ютера;
можливість використання потужних синтаксичних конструкцій.
Простота мов дає змогу писати невеликі програми і людям, які не є професійними програмістами.
Основна відмінна риса мови третього покоління: орієнтування на алгоритм (алгоритмічні мови).
Приклади: Сі, Паскаль, Джава, Бейсік, та багато інших.
Всього у світі існує близько 200 популярних мов програмування третього рівня.
Четверте покоління
Початок 1970-х р.р. до сьогоднішнього часу. Створюються мови, призначені для реалізації великих проектів. Проблемно-орієнтовані мови, що оперують конкретними поняттями вузької галузі. Як правило, в такі мови вбудовують потужні оператори, що дозволяють одним рядком описувати функції, для опису яких мовами молодших поколінь потрібно було б сотні чи навіть тисячі рядків початкового коду.
Часто відносять: SQL, SGML (HTML, XML), Prolog, та багато інших вузькоспеціалізованих декларативних мов. Щоправда ряд мов, які відносять до четвертого покоління, не є мовами програмування як такими. Наприклад SQL є мовою запитів до баз даних, HTML є мовою розмітки гіпертексту, а не повноцінними мовами програмування, скоріше вони виступають своєрідними спеціалізованими доповненнями до мов програмування. Теж саме стосується XML.
Основна відмінна риса мови четвертого покоління: наближення до людської мови (декларативні мови).
Деякі мови мають риси одночасно і третього і четвертого поколінь.
П'яте покоління
П'ятого покоління мов програмування поки що не існує.
Виробники пропроієтарних програмних продуктів часто намагаються приписати своїм продуктам якісь маркетингові особливості, і деколи вказують що їхній продукт — це «мова п'ятого покоління». Насправді, всі ці продукти — це просто середовища для прискореного створення продуктів (Rapid Application Development — RAD), і використовують мови третього та четвертого поколінь.
Мова п'ятого покоління витіснить чи суттєво потіснить мови третього (напр. Java) і четвертого покоління (напр. SQL) за рахунок значно збільшеної продуктивності праці програміста — в 10-1000 раз. За прогнозами, 5GL буде оперувати мета-мета-даними.
Наразі існує єдина мова, яка працює з мета-мета-даними, — це мова команд менеджерів пакетів чи менеджерів залежностей, таких як apt, yum, smart, maven, cpan та інші. Вони оперують над метаданими про метадані про дані у пакетах. Використання apt-get, yum та smart дійсно надзвичайно підвищило продуктивність системних адміністраторів — приблизно в 1000-у раз. Використання менеджерів залежностей, таких як maven, cpan, rakudo, pim, easy_install, дійсно значно підвищило продуктивність програмістів, приблизно в 10-ть раз. Нажаль, ці мови є мовами командного рядка і не є мовами програмування.
Приблизний перелік сучасних мов програмування:
0 to 9
2.PAK
Адресна мова програмування
A+
A++
ABAP
ABC
ABLE
ABSET
ABSYS
Accent
Acceptance, Test Or Launch Language
ACS
ActionScript
Actor
Ada
ADL
Alan
Aleph
Algol
AmigaE
APL
AppleScript
AREXX
ARS++
AspectJ
Assembly
Atlas Autocode
Autocoder
AutoLISP
AWK
BASIC
BCPL
Befunge
BETA
Bigwig
Bistro
BLISS
Blue
Bourne shell (sh)
Bourne-Again shell (bash)
Brainfuck
BUGSYS
BuildProfessional
C
C++
C#
Caché Basic
Caché ObjectScript
Caml, Categorical Abstract Machine Language
CeeBot
Ceicil
Cg
CHAIN
CHILL
ChucK
Clarion
Clipper
Clos
CLU
CMS-2
COBOL
CobolScript
мова програмування Cocoa
Cold Fusion
COMAL
Common Intermediate Language
Concurrent Clean
Context
CORAL66
Common Lisp
COWSEL
CPL
Csound
C shell (csh)
Cue
Curl
D
DASL
Databus
Dataflex
dBASE II
Delphi
Dibol
Dylan
E
Eiffel
ElastiC
Elf
Escapade (server-side programming)
Erlang
Etoys
Euphoria
Euclid
EXEC
EXEC2
F#
Flow-Matic
Focal
Forth
FORTRAN
FP
Frontier
GEMBASE
GENIE
Godiva
Gödel
HAL/S (real-time aerospace (мова програмування))
Haskell
HTMLScript
Hugo
HyperTalk
HQ9+
ICI
Icon
Interface description language (IDL)
Inform
INTERCAL
Information Processing Language (IPL)
Io
J
J#
Java
JavaScript
JCL
Joule
JOVIAL
Joy
Jython
K
Kid
Korn-shell
KRYPTON
Kvikkalkul
LabVIEW
Lagoona
LaTeX
Leda
Lexico
Limbo
LINC
LISP
LOGO
LSE
Lua
LYaPAS
m4
MAD
Malbolge
MATLAB
Miranda
Miva
Mercury
Mesa
Microcode
Modula-2
Modula-3
MOO
Moto
MUMPS
Mary
Nemerle
Nial
Nice
The Nosica (мова програмування)
Oberon
Object Pascal
Objective-C
Objective Caml
Obliq
Occam
OPS5
Oz
Pascal
Component Pascal
Perl
PHP
Pico
Pike
PILOT
PL-11
PL-SQL
PL/B
PL/C
Plankalkül
PL/I
PL/0
PL/M
Pliant
Poplog
POP-11
PORTRAN
PostScript
Powerbuilder
Prolog
Proteus
Python
Q
QuakeC
R
Rascal
Ratfor
REBOL
REFAL
Report Program Generator (RPG)
Revolution
REXX
Rigal
Ruby
S2
S-Lang
SAS
Sather
Scheme
Scratch
Sed
Self (or "SELF")
SETL
Simula
Sisal
Small
Smalltalk
Snobol
SPARK
SPITBOL
SQL
Squeak
SR language
SuperCollider
TADS
Tcl
teco
Tempo
TeX
Today
Tom
tpu
Trac
Turing
Ultra 32
Unicon
UnLambda
UML
Var'aq
VBA
VBScript
Verilog
VHDL
Visual Basic
Visual Basic .NET
Visual DataFlex
Visual DialogScript
Visual FoxPro
Water
Whitespace
Wirth
XOTcl
XSLT
X++
YAFL
Yorick
Z
ZZT-oop