Історія виникнення програмування найголовніше. Історія деяких мов програмування. Початок історії програмування

💖 Подобається?Поділися з друзями посиланням

Мова асемблера

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

Це означало перехід до «процедурної» парадигми із «низькорівневої» парадигми програмування. Ці процедурні мови застосовували поетапний підхід. Крім того, вони забезпечували переносимість та могли працювати на різних машинах. p align="justify"> Далі, програмісти прагнули знайти ще більш логічний підхід до створення програм, що викликало народження «об'єктно-орієнтованої» парадигми програмування.

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

Тепер, коли була потрібна ефективна програма, замість машинних мов використовувалися близькі до них машинно-орієнтовані мови асемблера. До таких належали, наприклад, Autocode, з 1954 р. – IPL (попередник мови LISP) та, з 1955-го р. – FLOW-MATIC (попередник мови COBOL). Тепер люди почали використовувати менімонічні команди замість машинних команд.

Парадигма процедурного програмування

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

Але навіть робота з асемблером досить складна і потребує спеціальної підготовки. Наприклад, для процесора Zilog Z80 машинна команда 00000101 наказує процесору зменшити на одиницю свій регістр B . На мові асемблера це буде записано як DEC B .

Мови високого рівня

Наступний крок був зроблений у 1954 році, коли була створена перша мова високого рівня – Фортран (англ. FORTRAN - FORmula TRANslator), а за ним і деякі інші, як LISP, ALGOL 58, FACT (ще один попередник мови COBOL). Мови високого рівня імітують природні мови, використовуючи деякі слова розмовної мови та загальноприйняті математичні символи. Ці мови більш зручні для людини, за допомогою них можна писати програми до декількох тисяч рядків завдовжки. Звісно, ​​це досягнення було дуже цінним. Умовними словами можна було, як звичайно людині, набагато простіше висловити складну програмну операцію з бітів. Однак, легко розуміється в коротких програмах, ця мова ставала нечитаною і важко керованою, коли справа стосувалася великих програм. Тобто простоти, як і раніше, не вистачало. Вирішення цієї проблеми прийшло після винаходу мов структурного програмування (англ. structured programming language ), таких як Алгол (1958), Паскаль (1970), Сі (1972).

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

Парадигма структурованого програмування

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

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

Парадигма функціонального програмування

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

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

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

Парадигма логічного програмування

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

Коротко, це досягнення у сфері програмування було дуже велике. Тепер програмування можна було розбити на класи та тестувати не всю програму, що складається з 10 000 рядків коду, а розбити програму на 100 класів та тестувати кожен клас. Це значно полегшило написання програмного продукту.

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

Об'єктно-орієнтована парадигма програмування

У наступному прикладі ми оголошуємо факти про деякий домен. Потім ми можемо ставити запитання про ці факти, наприклад, чи є брати та сестри брата та брата? Сиблінг: - Батько, батьківський Батько: - Батько батька: - Мати-мати. батько батька батька. Об'єктно-орієнтоване програмування - це найновіша і найпоширеніша парадигма. Це пропонує нові способи мислення для вирішення проблем, оскільки його методи точніше моделюють те, як люди вирішують проблеми. Традиційно програма розглядалася як логічна процедура, яка приймає вхідні дані. обробляє його та генерує вихідні дані.

Суть такого підходу полягає у можливості розбиття програми на складові елементи.

Також створювалися функціональні(аплікативні) мови (Приклад: Lisp - англ. .ООП поєднує найкращі принципиструктурного програмування з новими потужними концепціями, базові з яких називаються

Навпаки, парадигма об'єктно-орієнтованого програмування фокусується на проблемах моделювання в термінах об'єктів, які називаються об'єктами, які мають атрибути та поведінку, та які взаємодіють з іншими об'єктами, які використовують передачу повідомлень.

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

Однією з найреволюційніших ідей, що призвели до створення автоматичних цифрових обчислювальних машин, була висловлена ​​в 20-х роках 19 століття Чарльзом Бебіджем думка про попередній запис порядку дії машини для подальшої автоматичної реалізації обчислень - програмі. І хоча використана Бебіджем запис програми на перфокартах, придумана для управління такими верстатами французьким винахідником Жозефом Марі Жаккаром, технічно не має нічого спільного з сучасними прийомами зберігання програм в ПК, принцип тут по суті один. З цього моменту розпочинається історія програмування.
Аду Левлейс, сучасника Бебіджа, називають першим у світі програмістом. Вона теоретично розробила деякі прийоми управління послідовністю обчислень, що використовуються у програмуванні і зараз. Нею була описана і одна з найважливіших конструкцій практично будь-якої сучасної мови програмування – цикл.

Революційним моментом історії мов програмування стала поява системи кодування машинних команд з допомогою спеціальних символів, запропонований Джоном Моучлі Система кодування, запропонована ним, надихнула одну із його співробітниць Грейс Мюррей Хоппер. Працюючи на комп'ютері «Марк-1», їй та її групі довелося зіткнутися з багатьма проблемами і все, що ними придумано, було вперше. Зокрема, вони вигадали підпрограми. І ще одне фундаментальне поняття техніки програмування вперше запровадили Хопер та її група – «налагодження».
Наприкінці 40-х Дж. Моучлі створив систему під назвою «Short Code», яка була примітивною мовою програмування високого рівня. У ній програміст записував вирішуване завдання у вигляді математичних формул, а потім, використовуючи спеціальну таблицю, переводив символ за символом, перетворював ці формули на дволітерні коди. Надалі спеціальна програма комп'ютера перетворювала ці коди на двійковий машинний код. Система, розроблена Дж. Моучлі, вважається одним із перших примітивних інтерпретаторів.

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

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

Парадигма паралельного програмування

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

Парадигма програмування на основі подій

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

У 1954 році група під керівництвом Г. Хоппер розробила систему, що включає мову програмування та компілятор, яка надалі отримала назву Math-Matic. Після вдалого завершення робіт зі створення Math-Matic Хоппер та її група взялися за розробку нової мови та компілятора, який дозволив би користувачами програмувати мовою, близькою до звичайної англійської. 1958 р. з'явився компілятор Flow-Matic. Компілятор Flow-Matic був першою мовою для обробки комерційних даних.
Розробки у цьому напрямку призвели до створення мови Кобол (COBOL – Common Business Oriented Language). Він був створений у 1960 році. У цій мові порівняно з Фортраном і Алголом, слабше розвинені математичні засоби, проте добре розвинені засоби обробки текстів, організація виведення даних у формі необхідного документа. Він замислювався як основна мова для масової обробки даних у сферах управління та бізнесу.

Зрушення між програмуючими парадигмами

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

Середина 50-х характеризується стрімким прогресом у сфері програмування. Роль програмування у машинних командах стала зменшуватися. Стали з'являтися мови програмування нового типу, які у ролі посередника між машинами і програмістами. Першим і одним із найпоширеніших був Фортран (FORTRAN, від FORmula TRANslator – перекладач формул), розроблений групою програмістів фірми IBM у 1954 році (перша версія). Ця мова була орієнтована на науково-технічні розрахунки математичного характеру і є класичною мовою програмування при вирішенні на ПК математичних та інженерних завдань.
Для перших мов програмування високого рівня предметна орієнтація була характерною рисою.
p align="justify"> Особливе місце серед мов програмування займає Алгол, перша версія якого з'явилася в 1958 році. Одним із розробників Алгола був «батько» Фортрана Джон Бекус. Назва мови ALGOrithmic Language підкреслює те, що він призначений для запису алгоритмів. Завдяки чіткій логічній структурі Алгол став стандартним засобомзаписи алгоритмів у науковій та технічній літературі.

Це називається висхідним підходом, і переважно використовується парадигмою об'єктно-орієнтованого програмування. Крім того, деякі складні проблеми легше вирішувати, коли вони розкладаються на багато простих підзавдань. Це підхід зверху вниз, за ​​яким йдуть більшість структурованих парадигм програмування.

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

У середині 60-х років Томас Курц та Джон Камені (співробітники математичного факультету Дартмунтського коледжу) створили спеціалізована мовапрограмування, який складався з простих слів англійської мови. Нову мову назвали «універсальним символічним кодом для початківців» (Beginner All-Purpose Symbolic Instruction Code, або, скорочено, BASIC). Роком народження нової мови можна вважати 1964. Сьогодні універсальна мова Бейсік (що має безліч версій) набула великої популярності і набула широкого поширення серед користувачів ПК різних категорій у всьому світі. Значно цьому сприяло те, що Бейсик почали використовувати як вбудовану мову. персональних комп'ютерів, широке поширення яких розпочалося наприкінці 70-х років. Однак Бейсік є неструктурною мовою, і тому він погано підходить для навчання якісному програмуванню. Заради справедливості слід зауважити, що останні версіїБейсика для ПК (наприклад, QBasic) стали структурнішими і за своїми образотворчими можливостями наближаються до таких мов, як Паскаль.

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

Розробники орієнтували мови на різні класи завдань, тією чи іншою мірою прив'язували їх до конкретної архітектури ПК, реалізовували особисті уподобання та ідеї. У 60-ті роки було зроблено спроби подолати цю «різноголоску» шляхом створення універсальної мови програмування. Першим дітищем цього напряму став PL/1 (Programm Language One), розроблений фірмою IBM у 1967 році. Ця мова претендувала на можливість вирішувати будь-які завдання: обчислювальні, обробки текстів, накопичення та пошуку інформації. Однак він виявився занадто складним, транслятор з нього недостатньо оптимальним і містив низку невиявлених помилок.
Проте лінію на універсалізацію мов було підтримано. Старі мови модернізували в універсальні варіанти: Алгол-68 (1968 р.), Фортран-77. Передбачалося, що подібні мови розвиватимуться і вдосконалюватимуться, витіснятимуть усі інші. Однак жодна з цих спроб не мала успіху.

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

Мова ЛІСП з'явилася 1965 року. Основним у ньому є поняття рекурсивно певних функцій. Оскільки доведено, що будь-який алгоритм може бути описаний за допомогою деякого набору рекурсивних функцій, то ЛІСП є універсальною мовою. З його допомогою ПК може моделювати досить складні процеси, зокрема інтелектуальну діяльність людей.
Пролог розроблено у Франції 1972 року для вирішення проблем «штучного інтелекту». Пролог дозволяє у формальному вигляді описувати різні твердження, логіку міркувань та змушує ПК давати відповіді на задані питання.
Значною подією історії мов програмування стало створення 1971 року мови Паскаль. Його автор – швейцарський вчений Ніклаус Вірт. Вірт назвав його на честь великого французького математика і релігійного філософа XVII століття Блеза Паскаля, який винайшов перший підсумовуючий пристрій, саме тому нової мови було присвоєно його ім'я. Ця мова спочатку розроблялася як навчальна мова структурного програмування, і, справді, зараз вона є однією з основних мов навчання програмуванню у школах та вишах.

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

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

У 1975 році дві події стали віхами в історії програмування - Білл Гейтс і Пол Аллен заявили про себе, розробивши свою версію Бейсіка, а Вірт і Єнсен випустили класичний опис мови Pascal User Manual and Report.

Не менш вражаючою, у тому числі й фінансової, успіху досяг Філіп Кан, француз, який розробив у 1983 році систему Турбо-Паскаль. Суть його ідеї полягала у поєднанні послідовних етапів обробки програми – компіляції, редагування зв'язків, налагодження та діагностики помилок – в єдиному інтерфейсі. Турбо-Паскаль - це не тільки мова та транслятор з нього, але ще й операційна оболонка, що дозволяє користувачеві зручно працювати на Паскалі. Ця мова вийшла за рамки навчального призначення та стала мовою професійного програмування з універсальними можливостями. У силу названих переваг Паскаль став джерелом багатьох сучасних мовпрограмування. З того часу з'явилося кілька версій Турбо-Паскаля, остання – сьома.
Фірма Borland/Inprise завершила лінію продуктів Турбо-Паскаль та перейшла до випуску системи візуальної розробки для Windows – Delphi.

Великий відбиток на сучасне програмування наклав мову Сі (перша версія – 1972 рік), що є дуже популярною серед розробників систем програмного забезпечення (включаючи операційні системи). Ця мова створювалася як інструментальна мова для розробки операційних систем, трансляторів, баз даних та інших системних та прикладних програм. Сі поєднує у собі як риси мови високого рівня, і машинно-орієнтованої мови, допускаючи програміста всім машинним ресурсам, чого забезпечують такі мови як Бейсик і Паскаль.
p align="justify"> Період з кінця 60-х до початку 80-х років характеризується бурхливим зростанням числа різних мов програмування, що супроводжував кризу програмного забезпечення. У січні 1975 року Пентагон вирішив навести лад у хаосі трансляторів і заснував комітет, якому було наказано розробити одну універсальну мову. У травні 1979 року був оголошений переможець – група вчених на чолі із Жаном Іхбіа. Перемогли мову охрестили Ада, на честь Огасти Ади Левлейс. Ця мова призначена для створення і тривалого (багаторічного) супроводу великих програмних систем, Допускає можливість паралельної обробки, управління процесами в реальному часі.

Протягом багатьох років програмне забезпечення будувалося на основі операційних та процедурних мов, таких як Фортран, Бейсік, Паскаль, Ада, Сі. У міру еволюції мов програмування набули широкого поширення та інші, принципово інші, підходи до створення програм.
Існує велика кількість класифікацій мов програмування за різними ознаками. Найбільш поширеними є такі класифікації:
 мови програмування високого (Паскаль, Бейсік) та низького рівня(Ассемблер);
 строго типізовані (Паскаль) та нестрого типізовані (Бейсік);
 з підтримкою об'єктно-орієнтованого програмування (Сі++) і без тощо.

Розглянемо іншу класифікацію. Мови програмування поділяються на:
1) Машинно-орієнтовані мови:
 машинні мови;
 мови символічного кодування;
 автокоди;
 макрос.
2) Машинно-незалежні мови:
 проблемно-орієнтовані мови;
 універсальні мови;
 діалогові мови;
 непроцедурні мови.

Машинно-орієнтовані мови

Машинно-орієнтовані мови - це мови, набори операторів та образотворчі засоби яких суттєво залежать від особливостей ПК (внутрішньої мови, структури пам'яті тощо). Машинно-орієнтовані мови мають такі особливості:
висока якість створюваних програм(компактність та швидкість виконання);
 можливість використання конкретних апаратних ресурсів;
 передбачуваність об'єктного коду та замовлень пам'яті;
 для складання ефективних програм необхідно знати систему команд та особливості функціонування цього ПК;
 трудомісткість процесу складання програм (особливо машинними мовами та ЯСК), погано захищеного від появи помилок;
 низька швидкість програмування;
 неможливість безпосереднього використання програм, складених цими мовами, на ЕОМ інших типів.
Машинно-орієнтовані мови за рівнем автоматичного програмування поділяються на класи.

Машинна мова

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

Мови Символічного Кодування

Мови Символічного Кодування (далі ЯСК), як і, МЯ, є командними. Однак коди операцій та адреси в машинних командах, що є послідовністю двійкових (у внутрішньому коді) або вісімкових (часто використовуваних при написанні програм) цифр, в ЯСК замінені на символи (ідентифікатори), форма написання яких допомагає програмісту легше запам'ятовувати змістовий зміст операції. Це забезпечує суттєве зменшення кількості помилок під час складання програм.
Використання символічних адрес – перший крок до створення ЯСК. Команди ПК замість справжніх (фізичних) адрес містять символічні адреси. За результатами складеної програми визначається необхідна кількість осередків для зберігання вихідних проміжних та результуючих значень. Призначення адрес, що виконується окремо від складання програми в символічних адресах, може проводитися менш кваліфікованим програмістом або спеціальною програмою, що значно полегшує працю програміста.

Автокоди

Існують мови, що включають всі можливості ЯСК, за допомогою розширеного введення макрокоманд - вони називаються автокоди.

У різних програмах зустрічаються деякі досить часто використовуються командні послідовності, які відповідають певним процедурам перетворення інформації. Ефективна реалізація таких процедур забезпечується оформленням їх у вигляді спеціальних макрокоманд і включенням останніх у мову програмування, доступну програмісту. Макрокоманди переводяться в машинні команди двома шляхами - розстановкою та генеруванням. У постановочній системі містяться «кістяки» - серії команд, що реалізують необхідну функцію, позначену макрокомандою. Макрокоманди забезпечують передачу фактичних параметрів, які в процесі трансляції вставляються в «кісток» програми, перетворюючи її на реальну машинну програму.
У системі з генерацією є спеціальні програми, що аналізують макрокоманду, які визначають, яку функцію необхідно виконати та формують необхідну послідовність команд, що реалізують цю функцію.
Обидві вказані системи використовують транслятори з ЯСК та набір макрокоманд, які також є операторами автокоду.
Розвинені автокоди отримали назву асемблери. Сервісні програмита ін., як правило, складені мовами типу асемблер.

Макрос

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

Машинно-незалежні мови

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

Проблемно-орієнтовані мови

З розширенням областей застосування обчислювальної технікивиникла необхідність формалізувати подання постановки та розв'язання нових класів завдань. Необхідно було створити такі мови програмування, які, використовуючи у сфері позначення і термінологію, дозволили б описувати необхідні алгоритми рішення поставлених завдань, ними стали проблемно-ориентированные мови. Ці мови орієнтовані на вирішення певних проблем, повинні забезпечити програміста засобами, що дозволяють коротко і чітко формулювати завдання та отримувати результати у потрібній формі.
Проблемних мов дуже багато, наприклад:
- Фортран, Алгол – мови, створені на вирішення математичних завдань;
- Simula, Сленг – для моделювання;
- Лісп, Снобол – до роботи з списковими структурами.

Універсальні мови

Універсальні мови були створені для широкого кола завдань: комерційних, наукових, моделювання і т. д. Першу універсальну мову було розроблено фірмою IBM, що стала послідовністю мов PL/1. Друга за потужністю універсальна мова називається Алгол-68.

Діалогові мови

Поява нових технічних можливостей поставило завдання перед системними програмістами – створити програмні засоби, які забезпечують оперативну взаємодію людини з ПК, їх назвали діалоговими мовами.
Ці роботи велися у двох напрямках. Створювалися спеціальні керуючі мови для забезпечення оперативного впливу на проходження завдань, які складалися будь-якими раніше нерозробленими (не діалоговими) мовами. Розроблялися також мови, які, крім цілей управління, забезпечували б опис алгоритмів розв'язання задач.
Необхідність забезпечення оперативної взаємодіїз користувачем вимагала збереження в пам'яті ЕОМ копії вихідної програми навіть після отримання об'єктної програми машинних кодах. При внесенні змін до програми з використанням діалогової мови система програмування за допомогою спеціальних таблиць встановлює взаємозв'язок структур вихідної та об'єктної програм. Це дозволяє здійснити потрібні редакційні зміни в об'єктній програмі.
Одним із прикладів діалогових мов є Бейсік.

Непроцедурні мови

Непроцедурні мови складають групу мов, що описують організацію даних, що обробляються за фіксованими алгоритмами (табличні мови та генератори звітів), та мов зв'язку з операційними системами.
Дозволяючи чітко описувати як завдання, так і необхідні для її вирішення дії, таблиці рішень дають можливість у наочній формі визначити, які умови повинні бути виконані, перш ніж переходити до будь-якої дії. Одна таблиця рішень, що описує деяку ситуацію, містить усі можливі блок-схеми реалізацій алгоритмів розв'язання.
Табличні методи легко освоюються фахівцями будь-яких професій. Програми, складені табличною мовою, зручно описують складні ситуації, що виникають при системному аналізі.
Мови програмування служать різним цілям, та його вибір визначається зручністю користувача, придатністю для даного комп'ютерата даної задачі. А завдання для комп'ютера бувають найрізноманітніші: обчислювальні, економічні, графічні, експертні тощо. буд. Така різнотипність розв'язуваних комп'ютером завдань визначає різноманіття мов програмування. У програмуванні найкращий результат досягається при індивідуальному підході, що виходить із класу завдання, рівня та інтересів програміста.

Історія створення мови програмування Basic та Visual Basic

Мова програмування Basic була створена в 1964 році двома професорами з Dartmouth College - Джоном Кенемі та Томасом Куртцом для навчання студентів навичкам програмування. Мова вийшла настільки простою і зрозумілою, що через деякий час її почали застосовувати і в інших навчальних закладах. У 1975 році, з приходом перших мікрокомп'ютерів, естафету Basic прийняли Білл Гейтс і Пол Аллен, засновники Microsoft. Саме вони створили нову версію Basic для перших комп'ютерів Альтаїр (MITS Altairs), здатну працювати в 4КБ оперативної пам'яті. Згодом саме ця версія і перетворилася на одну з найпопулярніших мов програмування у світі. На шляху до вершини слави у Basic було безліч труднощів, які він завжди з честю долав, і коли з'явилися перші персональні комп'ютери IBM PC, він став стандартом у програмуванні, але вже у вигляді GW-Basic. Потім був Turbo Basic, QuickBasic, Basic PDS, але завжди під час розробки нової версіїмови зберігалася сумісність з колишніми версіямиі програма, написана практично для першого Basic, цілком (з незначними змінами) могла б працювати і в наступних версіях цієї мови. Але настали нові часи, і на початку 90-х з'являється операційна система Microsoft Windows із новим графічним інтерфейсом користувача (GUI).

Життя програмістів перетворилося на пекло. Щоб створити просту програму, Доводилося писати кілька сторінок коду: створювати меню та вікна, змінювати шрифти, очищати пам'ять, "малювати" кнопки і т.д. Однак переваги нового інтерфейсу були настільки незаперечними, що вже третя версія цієї операційної системистала фактичним стандартом для персонального комп'ютера. У цей час у надрах Microsoft велося кілька паралельних проектів створення нової мови програмування для Windows. І в 1991 році під гаслом "тепер і програмісти-початківці можуть легко створювати програми для Windows" з'явилася перша версія нового інструментального засобу Microsoft Visual Basic. У той момент Microsoft досить скромно оцінювала можливості цієї системи, орієнтуючи її насамперед на категорію початківців і непрофесійних програмістів. Основним завданням тоді було випустити на ринок простий і зручний інструментрозробки тоді ще досить нової середовищі Windows, Програмування в якій представляло проблему і для досвідчених фахівців. Система програмування, створена розробниками Visual Basic, дозволяла "усунути" від складної внутрішньої структури Windows і створювати програми з "кубиків", як у дитячому конструкторі. Меню, вікна, списки, кнопки, поля введення тексту та інші елементи інтерфейсу Windowsдодавалися до програми за допомогою найпростіших операцій drag&drop.

Свою першу програму VB-програмісти створювали вже за кілька хвилин після початку вивчення цієї мови! Більше того, Visual Basic дозволяв розробникам створювати нові об'єкти-кубики, які також могли використовуватися в програмах нарівні зі стандартними. І хоча багато С-програмістів тихо посміювалися над спробами Microsoft зробити простий і зрозумілий інструмент розробки Windows-програм, Visual Basic почав свою переможну ходу світом, і ніщо не могло зупинити цей процес. Останні бар'єри впали 1994 року з випуском Visual Basic for Applications. Саме в цей час, після включення VBA до складу Microsoft Office, Basic починає перетворюватися на один з основних стандартів програмування для Windows. Для фірми Microsoft мова Basic має особливе значення, свого часу розробка варіанта Basic для комп'ютера Altair 8800 започаткувала трудовий програмістський шлях її засновників, Білла Гейтса і Пола Аллена. Тому свого часу - в 1989 році, коли настав час розподілити основні напрямки створення середовищ розробки різними мовами програмування між різними фірмами, Microsoft залишила за собою QuickBasic - середовище розробки програм на Basic'і, відмовившись, наприклад, від подальшої роботи над мовою програмування Pascal, Залишивши його фірмі Borland, яка, у свою чергу, зупинила роботи над своєю версією Basic"а (згодом Pascal став мовою Delphi).

Visual Basic від Microsoft, що спочатку замислювався як іграшка, неймовірно швидко завоював програмістський світ. Його популярність обумовлена ​​двома причинами: відносною простотою та продуктивністю. Програми на VB працюють повільніше своїх аналогів на C/C++, але все ж таки вони досить швидкі для багатьох ділових цілей і вимагають набагато менше часу на розробку. Форми були тією абстракцією, що заощаджує зусилля, яку запропонував VB програмістам Windows. IDE VB дозволила розробляти вікна графічно, перетягуючи елементи керування, такі як кнопки та списки, з панелі інструментів у форму. Отримавши задовільний зовнішній виглядформи, можна було переходити до кодової частини та писати обробники подій для кожного елемента управління форми.

Розробка програми в VB, таким чином, складалася зі створення декількох форм, які спілкувалися один з одним і, можливо, зверталися до бази даних за необхідною інформацією. В результаті форма виявилася вікном, яке пропонувало використовувати віконні методи набагато більше. зручним способом. VB зменшив кількість помилок шляхом видалення деяких прихованих елементів синтаксису C/C++. Крім спеціальних випадків, вирази обмежувалися одним рядком коду, а змінні мали оголошуватися та ініціалізуватися в окремих рядках коду. Оператори присвоєння та порівняння використовували один і той самий символ, проте граматика VB вимагала, щоб ці оператори застосовувалися таким чином, щоб їхні наміри були чітко позначені.

Можливо, найважливішим було те, що були відсутні покажчики - вимога Білла Гейтса, починаючи з перших версій Microsoft BASIC. Хоча покажчики корисні, оскільки дозволяють прямий доступом до пам'яті за будь-якою адресою, їх використання пов'язані з помилками у разі, якщо вони застосовуються неакуратно. Вимога граматичної простоти BASIC походить від того факту, що спочатку вона була створена як мова для навчання: "Beginner"s All-purpose Symbolic Instructional Code" (Багатоцільова символьна командний коддля початківців). VB версії 6 – це вже потужна мова, який можна використовувати для створення розподілених програм із застосуванням компонентів СОМ і Microsoft Transaction Server. Microsoft запропонувала трирівневий підхід для архітектур "клієнт-сервер", в якому "тонкі" інтерфейси користувача взаємодіяли з віддаленими компонентами VB для отримання даних з бази даних або з іншої машини.

За допомогою VBScript та VBA (VB для додатків) можна писати сценарії для web-браузерів та автоматизувати програми Microsoft Office. Більш того, VB6 можна використовувати для створення елементів керування Active-X, що працюють разом з Internet Explorerхоча це робиться вкрай рідко, оскільки потрібно, щоб на машині клієнта, що працює в Інтернеті, була встановлена ​​бібліотека часу виконання DLL VB. Починаючи з VB5 програми VB компілювалися в машинний код, але вони були засновані на застосуванні DLL, що надає повсюдно використовувані функції і реалізує об'єктні можливості VB. Цікаво те, що компілятор VB для трансляції використовує багатопрохідний режим, а зрештою покладається на компілятор Microsoft C++ для отримання вихідного машинного коду після компіляції в проміжну мову. У цьому вся властивості VB - використання бібліотеки часу виконання і внутрішнього інтерфейсу C++ - видно зародки.NET.

Історія створення мови програмування C#

Мова C# з'явилася на світ у червні 2000 р. внаслідок копіткої роботи великої групи розробників компанії Microsoft, очолюваної Андерсом Хейлсбергом (Anders Hejlsberg). Ця людина відома як автор однієї з перших компілюваних мов програмування для персональних комп'ютерів IBM - Turbo Pascal. Напевно, на території колишнього Радянського Союзу багато розробників зі стажем, та й просто люди, які навчалися в тій чи іншій формі програмування у вузах, зазнали чарівності та зручності використання цього продукту. Крім того, під час роботи в корпорації Borland Андерс Хейлсберг уславився створенням інтегрованого середовища Delphi (він керував цим проектом аж до виходу версії 4.0).
Поява мови C# та ініціативи.NET аж ніяк не випадково припала на початок літа 2000 р. Саме до цього моменту компанія Microsoftпідготувала промислові версії нових компонентних технологій та рішень у галузі обміну повідомленнями та даними, а також створення Internet-додатків (COM+, ASP+, ADO+, SOAP, Biztalk Framework). Безперечно, найкращим способомпросування цих новинок є створення інструментарію для розробників з їхньою повноцінною підтримкою. У цьому полягає одне з головних завдань нової мови C#. Крім того, Microsoft не могла більше розширювати ті самі інструменти та мови розробки, роблячи їх все більш і більш складними для задоволення конфліктуючих між собою вимог підтримки. сучасного обладнаннята забезпечення зворотної сумісності з тими продуктами, що були створені на початку 1990-х років. під час першого появи Windows. Настає момент, коли необхідно почати з чистого аркуша для того, щоб створити простий, але набір мов, середовищ і засобів розробки, які мають складну структуру, які дозволять розробнику легко створювати сучасні програмні продукти.

С# і.NET є тією самою відправною точкою. Якщо говорити спрощено, то.NET є новою платформою, новий API для програмування в Windows, а С# е нова мова, Створений з нуля, для роботи з цією платформою, а також для отримання всіх вигод з прогресу середовищ розробки та нашого розуміння принципів об'єктно-орієнтованого програмування протягом останніх 20 років.
Слід зазначити, що зворотна сумісність не втрачено. Існуючі програмибудуть виконуватися, а платформа.NET була спроектована таким чином, щоб вона могла працювати з наявним програмним забезпеченням. Зв'язок між компонентами в Windows зараз майже повністю здійснюється за допомогою СОМ. З урахуванням цього. .

Автори C# прагнули створити мову, що поєднує простоту і виразність сучасних об'єктно-орієнтованих мов (на зразок Java) з багатством можливостей та потужністю C++. За словами Андерса Хейлсберга, C# запозичив більшість своїх синтаксичних конструкцій із C++. Зокрема, у ньому є такі зручні типи даних, як структури і перерахування (інший нащадок C++ -- Java -- позбавлений цих елементів, що створює певні незручності під час програмування). Синтаксичні конструкції С# успадковані як від C++, а й від Visual Basic. Наприклад, С#, як і Visual Basic, використовуються властивості класів. Як C++, С# дозволяє перевантажувати операторів для створених вами типів Java не підтримує ні ту, ні іншу можливість). С# - це власне гібрид різних мов. При цьому С# синтаксично не менше (якщо не більше) чистий, ніж Java, так само простий, як Visual Basic, і має практично ту ж потужність і гнучкість, що і C++.

Особливості С#:

Повний та добре визначений набір основних типів.
- Вбудована підтримка автоматичного створення XML-документації. Автоматичне звільнення динамічно розподіленої пам'яті.
- Можливість позначки класів та методів атрибутами, що визначаються користувачем. Це може бути корисним при документуванні та здатним впливати на процес компіляції (наприклад, можна позначити методи, які повинні компілюватися тільки в режимі налагодження).
- Повний доступ до бібліотеки базових класів.NET, а також легкий доступ до Windows API (якщо це дійсно потрібно).
- Вказівники та прямий доступ до пам'яті, якщо вони необхідні. Однак мова розроблена таким чином, що практично завжди можна обійтися і без цього.
- Підтримка властивостей та подій у стилі VB.
- Просте зміна ключів компіляції. Дозволяє отримувати файли або бібліотеки компонентів.NET, які виконуються, які можуть бути викликані іншим кодом так само, як елементи керування ActiveX (компоненти СОМ).
- Можливість використання C# для написання динамічних web-сторінок ASP.NET.

Однією з областей, для яких не призначена ця мова, є критичні за часом і високопродуктивні програми, коли має значення займати виконання циклу 1000 або 1050 машинних циклів, і звільняти ресурси потрібно негайно. C++ залишається в цій галузі найкращою мовою низького рівня. У С# відсутні деякі ключові моменти, необхідні створення високопродуктивних додатків, зокрема підставлювані функції і деструктори, виконання яких гарантується певних точках коду. Також ця мова активно використовується для створення сучасних відеоігор, наприклад, гра Battlefield 3 частково написана на C#, і повністю на технології.NET



Розповісти друзям