Історія розвитку мов програмування 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Історія розвитку мов програмування



У 1930-1940 роках, А. Черч, А. Тьюринг, А. Марков в СРСР розробили математичні абстракції (лямбда-числення, машину Тьюринга, нормальні алгоритм) відповідно - для формалізації алгоритмів.

В цей же час, в 1940-і роки, з'явилися електричні цифрові комп'ютери і був розроблена мова, яку можна вважати першим високорівневим мовою програмування для ЕОМ - «Plankalkül», створений німецьким інженером К. Цузе в період з 1943 по 1945 роки.

Програмісти ЕОМ початку 1950-х років, особливо таких, як UNIVAC і IBM 701, при створенні програм користувалися безпосередньо машинним кодом, запис програми на якому складалася з одиниць і нулів і який прийнято вважати мовою програмування першого покоління (при цьому різні машини різних виробників використовували різні коди, що вимагало переписувати програму при переході на іншу ЕОМ).

Незабаром на зміну такому методу програмування прийшло застосування мов другого покоління, також обмежених специфікаціями конкретних машин, але більш простих для використання людиною за рахунок використання мнемонік (символьних позначень машинних команд) і можливості зіставлення імен адресами в машинній пам'яті. Вони традиційно відомі під найменуванням мов асемблера і автокодом. Однак, при використанні асемблера ставав необхідним процес перекладу програми на мову машинних кодів перед її виконанням, для чого були розроблені спеціальні програми, також отримали назву асемблери.

З середини 1950-х почали з'являтися мови третього покоління, такі як Фортран, Лісп і Кобол. Мови програмування цього типу більш абстрактні (їх ще називають «мовами високого рівня») і універсальні, не мають жорсткої залежності від конкретної апаратної платформи і використовуваних на ній машинних команд. Програма на мові високого рівня може виконуватися (принаймні, в теорії, на практиці зазвичай є ряд специфічних версій або діалектів реалізації мови) на будь-який ЕОМ, на якій для цієї мови є транслятор (інструмент, що переводить програму на мову машини, після чого вона може бути виконана процесором).

У період 1960-х - 1970-х років були розроблені основні парадигми мов програмування, використовувані в даний час, хоча в багатьох аспектах цей процес представляв собою лише поліпшення ідей і концепцій, закладених ще в першому мовами третього покоління.

Мова APL вплинула на функціональне програмування і стала першою мовою, що підтримував обробку масивів.

• Мова ПЛ / 1 (NPL) був розроблений в 1960-х роках як об'єднання кращих рис Фортрана і Кобола.

• Мова Симула, що з'явився приблизно в цей же час, вперше включала підтримку об'єктно-орієнтованого програмування. У середині 1970-х група фахівців представила мову Smalltalk, яка була уже цілком об'єктно-орієнтованою.

• У період з 1969 по 1973 роки велася розробка мови Сі, популярного й донині і став основою для безлічі подальших мов, наприклад, таких популярних, як С ++ і Java.

У 1972 році був створений Пролог - найбільш відомий (хоча і не перший, і далеко не єдиний) мова логічного програмування.

У 1973 році в мові ML була реалізована розширена система поліморфной типізації, що поклала початок типізований мовам функціонального програмування.

В 1980-ті роки важливим напрямком робіт стають візуальні (графічні) мови програмування, в яких процес «написання» програми як тексту замінюється на процес «малювання» (конструювання програми у вигляді діаграми) на екрані ЕОМ.

У 1990-х роках у зв'язку з активним розвитком Інтернету поширення набули мови, що дозволяють створювати сценарії для веб-сторінок - головним чином Perl, який розвинувся з скриптового інструменту для Unix-систем, і Java.

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

Категорії мов програмування

• Функціональні
• Процедурні (імперативні)
• Стекові
• Аспектно-орієнтовані
• Декларативні
• Динамічні
• Навчальні
• Описи інтерфейсів
• прототипна
• Об'єктно-орієнтовані
• Рефлексивні (тобто підтримують відображення)
• Логічні
• Скриптові (сценарні)
• Езотеричні

Мови низького рівня

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

Транслятори поділяються на:

- компілятори - перетворюють текст програми в машинний код, який можна зберегти і після цього використовувати вже без компілятора (прикладом є виконувані файли з розширенням *.exe).

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

Прикладом мови низького рівня є асемблер. Мови низького рівня орієнтовані на конкретний тип процесора і враховують його особливості, тому для перенесення програми на асемблері на іншу апаратну платформу її потрібно майже повністю переписати.Певні відмінності є і в синтаксисі програм під різні компілятори. Правда, центральні процесори для комп'ютерів фірм AMD і Intel практично сумісні і відрізняються лише деякими специфічними командами.

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

Асемблер - мова низького рівня, широко застосовується дотепер.

Мови програмування високого рівня

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

Зараз у середовищі розробників вважається, що мови програмування, які мають прямий доступ до пам'яті і регістрів або мають асемблерні вставки, потрібно вважати мовами програмування з низьким рівнем абстракції.

• Фортран
• Кобол
• Алгол
• Pascal
• Pascal ABC
• Java
• C
• Basic
• C ++
• Objective-C
• Smalltalk
• C #
• Delphi

В основному мови високого рівня використовуються для розробки програмного забезпечення комп'ютерів і пристроїв, які мають великий обсяг пам'яті.

Обєктно-орієнтовані мови програмування їх характеристика

Об'єктно-орієнтована мова програмування (ГО-мова) - мова, побудована на принципах об'єктно-орієнтованого програмування. В основі концепції об'єктно-орієнтованого програмування лежать поняття об'єкта - якоїсь субстанції, яка об'єднує в собі поля (дані) і методи (виконувані об'єктом дії).

Наприклад, об'єкт "людина" може мати поля "ім'я", "прізвище" і мати методи "є" і "спати". Відповідно, ми можемо використовувати в програмі оператори Людина. Ім'я: = "Іван" і Людина. Є (їжа).

Об'єктно-орієнтоване програмування (ООП) - парадигма програмування, в якій основними концепціями є поняття об'єктів і класів. У разі мов з прототипування замість класів використовуються об'єкти-прототипи.

ООП виникло в результаті розвитку ідеології процедурного програмування, де дані і підпрограми (процедури, функції) їх обробки формально не пов'язані.

Основні поняття ООП

Абстракція

Абстрагування - це спосіб виділити набір значущих характеристик об'єкта, виключаючи з розгляду незначущі. Відповідно, абстракція - це набір всіх таких характеристик.

Інкапсуляція

Інкапсуляція - це властивість системи, що дозволяє об'єднати дані і методи, які працюють з ними, в класі, і приховати деталі реалізації від користувача.

Спадкування

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

Поліморфізм

Поліморфізм - це властивість системи використовувати об'єкти з однаковим інтерфейсом без інформації про тип і внутрішній структурі об'єкта. При використанні терміну «поліморфізм» в співтоваристві ООП мається на увазі поліморфізм підтипів; а використання параметричного поліморфізму називають узагальненим програмуванням.

Клас

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

Об'єкт

Сутність в адресному просторі обчислювальної системи, що з'являється при створенні екземпляра класу або копіювання прототипу (наприклад, після запуску результатів компіляції і зв'язування вихідного коду на виконання).

Прототип

Прототип - це об'єкт-зразок, за образом і подобою якого створюються інші об'єкти. Об'єкти-копії можуть зберігати зв'язок з батьківським об'єктом, автоматично наслідуючи зміни в прототипі; ця особливість визначається в рамках конкретної мови.

Як правило, об'єктно-орієнтована мова (ООЯ) містить наступний набір елементів:

• Оголошення класів з полями (даними - членами класу) і методами (функціями - членами класу).

• Механізм розширення класу (успадкування) - породження нового класу від існуючого з автоматичним включенням всіх особливостей реалізації класу-предка до складу класу-нащадка. Більшість ООЯ підтримують тільки одиничне успадкування.

• Поліморфні змінні і параметри функцій (методів), що дозволяють привласнювати однієї і тієї ж змінної екземпляри різних класів.

• поліморфна поведінка примірників класів за рахунок використання віртуальних методів. У деяких ООП всі методи класів є віртуальними.



Поделиться:


Последнее изменение этой страницы: 2016-09-13; просмотров: 1116; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.133.119.66 (0.019 с.)