Контакти

Код програми мовами програмування розширення. Сучасна мова програмування високого рівня: приклади та порівняння. Список мов програмування

У п'ятдесяті роки ХХ століття з появою комп'ютерів на електронних лампах почався бурхливий розвиток мов програмування. Комп'ютери, які коштували тоді значно дорожче, ніж розробка будь-якої програми, вимагали високоефективного коду. Такий код розроблявся вручну мовою Асемблер. У середині 50-х років під керівництвом Джона Бекуса для фірми IBM було розроблено алгоритмічний мова програмування FORTRAN. Незважаючи на те, що вже існували розробки мов, що виконують перетворення арифметичних виразів у машинний код, створення мови FORTRAN (FORmula TRANslator), що надає можливість запису алгоритму обчислень з використанням умовних операторів та операторів введення/виводу, стало точкою відліку епохи алгоритмічних мов програмування.

До мови FORTRAN висувались вимоги створення високоефективного коду. Тому багато конструкцій мови спочатку розроблялися з урахуванням архітектури IBM 407. Успіх розробки цієї мови призвів до того, що виробники інших обчислювальних систем почали створювати свої версії трансляторів. З метою деякої можливої ​​на той момент уніфікації мови мова FORTRAN IV, розроблена в 1966 році, стала першим стандартом FORTRAN 66.

Як альтернатива мові FORTRAN, спочатку орієнтованої на архітектуру IBM, під керівництвом Пітера Наура наприкінці 50-х років була розроблена мова ALGOL (ALGOrithmic Language). Основною метою, яку переслідували розробники цієї мови, була незалежність від конкретної архітектури обчислювальної системи. Крім того, творці мови ALGOL прагнули розробити мову, зручну для опису алгоритмів і застосовуючи систему позначень, близьку до тієї, що прийнята в математиці.

Мови FORTRAN і ALGOL були першими мовами, орієнтованими програмуванняобчислень.

Мова PL 1, перші версії якого з'явилися на початку 60-х років, була спочатку орієнтована на IBM 360 і розширювала можливості мови FORTRAN деякими засобами мови COBOL, розробленої в ці ж роки. Незважаючи на певну популярність мови PL/I у програмістів, які працювали на комп'ютерах IBM та машинах серії ЄС, в даний час він представляє суто теоретичний інтерес.

Наприкінці 60-х років під керівництвом Найарда і Дала була розроблена мова Simula-67, що використовує концепцію типів користувача даних. Фактично це перша мова, яка застосовує поняття класів.

У середині 70-х років Вірт запропонував мову Pascal, яка відразу стала широко використовуватися. У цей же час з ініціативи Міністерства оборони США розпочалася робота зі створення мови високого рівня, що отримала назву Ada – на честь Ади Лавлейс, програмістки та дочки лорда Байрона. Створення мови почалося з визначення вимог та вироблення специфікацій. Над проектом працювали чотири незалежні групи, але всі вони використовували як основу мову Pascal. На початку 80-х був розроблений перший промисловий компілятор мови Ada.

Універсальний мова програмуванняС був розроблений у середині 70-х років Денисом Рітчі та Кеном Томпсоном. Ця мова стала популярною мовою системного програмування і свого часу використовувалася для написання ядра операційної системи UNIX. Стандарт мови С почав розроблятись робочою групою інституту стандартів ANSI у 1982 році. Міжнародний стандарт мови С прийнято у 1990 році. Мова С лягла в основу розробки мов програмування C++ та Java.

Поруч із алгоритмічними мовами паралельно розвивалися й мови, призначені обробки ділової інформації, і навіть мови штучного інтелекту. До перших належить мова COBOL (COmmon Business Oriented Language), а до других – мови LISP (LISt Processing) та Prolog. Мова LISP, розроблена в 60-х роках під керівництвом Дж. Маккарті, була першою функціональною мовою обробки списків, яка знайшла широке застосування в теорії ігор.

З появою персональних комп'ютерів мови стали складовими інтегрованих середовищ розробки. З'явилися мови, що застосовуються в різних офісних програмах, наприклад VBA (Visual Basic for Application).

У 90-х роках з поширенням мережі Інтернет розширюється можливість розподіленої обробки даних, що відбивається і розвитку мов програмування. З'являються мови, орієнтовані створення серверних додатків, такі як Java , Perl і PHP , мови опису документів – HTML і XML . Традиційні мови програмування С++ і Pascal також зазнають змін: під мовою програмування починає розумітися як функціональність самої мови, і навіть бібліотеки класів, надані середовищем програмування. Акцент зі специфікації самих мов програмування переноситься стандартизацію механізмів взаємодії розподілених додатків. З'являються нові технології – COM і CORBA, що специфікують взаємодію розподілених об'єктів.

Області застосування мов програмування

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

  • наукові обчислення (мови C++, FORTRAN, Java);
  • системне програмування (мови C++, Java);
  • обробка інформації (мови C++, COBOL, Java);
  • штучний інтелект (LISP, Prolog);
  • видавнича діяльність (Postscript, TeX);
  • віддалена обробка інформації (Perl, PHP, Java, C++);
  • опис документів (HTML, XML).

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

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

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

Сутність високорівневих мов написання програм

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

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

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

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

Транслятори

Найважливіші елементи, що входять до мов програмування високого рівня, — транслятори. Їхня функція може бути різною. Серед ключових областей застосування трансляторів — «переклад» команд, що формуються мовою програмування високого рівня, в машинний код, зрозумілий конкретному апаратному компоненту ПК, наприклад процесору. Транслятори, що виконують цю функцію, називаються також компіляторами. Є інший різновид відповідних компонентів — інтерпретатори. Вони призначені, у свою чергу, для «переведення» високорівневих команд у ті, що зрозумілі операційній системі чи програмі.

Класифікація високорівневих мов

Високорівневі мови програмування можуть бути класифіковані з різних підстав. Поширена схема, за якою вони поділяються на такі основні різновиди:

Процедурно-орієнтовані (задіяні як інструмент при обробці інформації на будь-якому етапі обчислень);

Проблемно-орієнтовані (використовуються як засіб вирішення галузевих та прикладних завдань, що формуються при розширенні областей застосування ПК);

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

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

Процедурно-орієнтовані мови

До таких можна віднести Фортран. Він вважається першою мовою програмування високого рівня, призначеною для широкого застосування. Характеризується простою структурою. До процедурно-орієнтованих мов також відноситься Бейсік. Вважається одним із найчастіше використовуваних при навчанні програмування. Приклад іншої процедурно-орієнтованої мови – СІ. Спочатку він створювався для ОС UNIX. На його основі згодом була створена мова C++, доповнена інструментами об'єктно-орієнтованого програмування. Ще одна мова, що відноситься до категорії, що розглядається, — Паскаль. Часто також задіюється під час навчання програмування. Можливості цієї мови дозволяють його використовувати як дуже потужний інструмент розробки професійних видів програмного забезпечення.

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

До них можна віднести Лисп, Пролог. Перша мова була розроблена в 1962 році - через кілька років після створення Фортрану. Розглядається таким чином як другий в історії. Активно задіявся як інструмент роботи програмістів із рядками символів. Насправді Лісп використовувався в системах, класифікованих як експертні, і навіть ті, що призначалися для аналітичних обчислень. Пролог знайшов широке застосування у сфері логічного програмування. Насправді найчастіше задіюється у керуванні алгоритмами штучного інтелекту у відповідних системах.

Об'єктно-орієнтовані мови

Вивчимо тепер приклади мов програмування високого рівня, які належать до категорії об'єктно-орієнтованих. Серед таких - Visual Basic, Delphi, Visual Fortran, зазначений вище C ++, а також Prolog ++. Фактично всі вони у своїй основі містять процедурно-орієнтовані мови. Однак передбачається суттєве їхнє доповнення візуальними елементами управління з метою подальшого освоєння необхідних алгоритмів розробниками, які звикли до інших інструментів. Так, перша мова програмування високого рівня – Фортран – може бути в оперативні терміни вивчена IT-фахівцями за допомогою можливостей Visual Fortran. Аналогічним методом можна швидко освоїти Бейсік або Пролог.

Здійснюється, своєю чергою, під час використання Delphi програмування мовою високого рівня Object Pascal. Існує велика кількість інших середовищ розробки програмного забезпечення, що класифікуються як об'єктно-орієнтована мова. Ця сфера технологій розробки програмного забезпечення активно розвивається.

Фортран і Лісп — перша та друга високорівневі мови

Докладніше вивчимо те, як з'явилася перша мова програмування високого рівня — Фортран, а також Лісп, що вважається другою. У 1954 року розробники з компанії IBM, очолювані Джоном Бекусом, створили мову, з якого програмісти отримали можливість істотно полегшити взаємодію Космосу з ПК, яке доти здійснювалося з допомогою машинних команд чи асемблера. Він отримав назву Fortran і незабаром став відомим і в СРСР під русифікованим найменуванням. Фортран став найпопулярнішим інструментом для наукових обчислень.

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

Прикладом досягнення практичних результатів у сфері розвитку концепцій, закладених у Фортран, вважатимуться створення Лисп. Ця мова була розроблена в 1958 році, проте широку популярність вона набула дещо пізніше — в 1960-му. Лісп був розроблений Джоном Маккарті та опублікований в одному з популярних журналів для IT-фахівців. Основне призначення мови - обробка списків. Лісп став популярним серед розробників систем штучного інтелекту. На його основі було створено такі мови, як Planner, Scheme, а також Common Lisp. Також Лісп вплинув на багато сучасних інструментів розробки ПЗ. Структура мов програмування високого рівня, популярних сьогодні, значною мірою базується на алгоритмах Фортран та Лісп.

Цікаво, однак, розглянути інші підходи до класифікації інструментів розробки засобів ПЗ, що розглядаються.

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

Так, сучасні експерти виділяють універсальні високорівневі мови. До них відносяться, зокрема, ті, що були розроблені у 60-ті роки. Ключові їх характеристики:

Орієнтація на широкий спектр завдань (насамперед, що належать до обчислювальних);

Велика кількість мовних конструкцій та алгоритмів;

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

Підтримка у відповідних мовах імперативної методології.

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

Унікальні мови

Деякі ІТ-експерти виділяють у самостійну категорію «унікальні мови». Серед таких: APL, Cobol, Forth, SETL, і навіть CLU. Яка їхня специфіка?

Найважливіший аспект APL — залучення масивів (векторів та матриць) як ключовий структурний тип. Специфіка мови Cobol — орієнтована на комерційну сферу. Так, його доцільно задіяти під час вирішення завдань, пов'язаних зі стандартизованим форматом подання результатів. Мова Forth характеризується використанням постфіксного запису програм, а також залученням стікової нотації. У мові SETL застосовуються сукупності значень як один із ключових типів даних. Мовою програмування високого рівня є CLU. Його основна особливість – задіяння концепції роботи з абстрактними типами даних. Багато IT-фахівців бачать логічною появу нових рішень, що базуються унікальними мовами — таких як, наприклад, Object-Oriented Cobol.

Засоби паралельного програмування

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

співпрограм;

Розгалужень;

Об'єднань;

Паралельних дужок;

Алгоритмів роботи з процесами.

Інша основа для класифікації мов аналізованого типу - методи синхронізації процесів. Відповідні рішення можуть таким чином включати:

Семафори;

монітори;

- «Рандеву»;

Критичні ділянки;

Дистанційний виклик процедур;

Транзакції, що належать до категорії атомарних.

До мов цього типу відносяться Modula-2, BLISS, Concurrent Pascal, DP, Argus.

Сімейство мов C

Вище ми розглянули як приклад мови високорівневого програмування таке рішення, як C. Насправді, воно формує ціле сімейство. Мови, що належать до нього, є приватними конструкціями C. Так, його доповнення різними об'єктно-орієнтованими компонентами спричинило розробку C++. Після суттєвої фільтрації ряду конструкцій C з'явилася мова Java. Можна відзначити, що Java створювався під впливом концепцій проекту Oberon, яким керує Ніклаус Вірт, творець мови Паскаль. Чи відноситься до високорівневих JavaScript? Безумовно, так, незважаючи на вузькість застосування - як інструмент розробки веб-сторінок. Але до мов програмування високого рівня не належать, зокрема, HTML, XML та SGML. Вони класифікуються як інструменти гіпертекстової розмітки.

Сімейство мов Pascal

Мови програмування високого рівня Pascal також утворюють окрему родину. На базі Паскаль був, власне, створений Oberon, що класифікується як мова об'єктно-орієнтованого типу. Ключова особливість Oberon – у можливості забезпечення безпеки типів. Крім Oberon, до мов сімейства Pascal можна віднести Modula-2, і навіть Component Pascal.

Сімейство мов Ada

Основний у відповідній категорії мов - замовлена ​​під потреби Міністерства оборони США Ada. Він був створений наприкінці 70-х – на початку 80-х років. Характеризується великою кількістю функцій, можливостей, універсальністю. Сімейство мов Ada включає такі рішення, як Cedar, Modula 3.

Сімейство мов Simula

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

Курсова робота

на тему: "Мови програмування"


Вступ

1. Мови програмування

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

2. Огляд сучасних мов програмування

2.1 Сі його різновиди

2.2 Паскаль

2.3 Фортран

2.4 Бейсік

Висновки та пропозиції

Список використаної літератури

Вступ

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

Актуальність цієї теми зумовлена ​​тим, що прогрес комп'ютерних технологій визначив процес появи нових різноманітних знакових систем запису алгоритмів – мов програмування.

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

Метою курсової є вивчення класифікації мов програмування та його розвитку.

Цілі дослідження:

1. Переглянути загальні відомості та рівні мов програмування.

2. Переглянути історію розвитку мов програмування.

3. Огляд сучасних мов програмування.

Завдання дослідження:

1. Ознайомлення з мовами програмування.

2. Розгляд розвитку мов програмування.

3. Огляд сучасних програмованих мов.

У першому розділі розглядаються загальні відомості про мови програмування та історія їх розвитку.

У другому розділі розглядається огляд сучасних мов програмування.

У цій роботі використовувався науково-дослідні методи.

Технічні засоби, що застосовуються: ПЕОМ: Core 2 DuoE6600 2.4 ГГц 2 x 4 Мб L2; 2 x 1024 Мб DDR3-1333МГц; NVIDIAGeForce 8600 GT 512 Мб; HDDHitachiDeskstar 7K1000 1 Тб; Принтер: Canon LBP3010.

Програмні засоби ОС WindowsXPPprofessionalSP3. Ця курсова робота виконана у програмі Microsoft Word 2003, а також були використані інші програми: Microsoft PowerPoint, Nero StartSmart.

1. Мови програмування

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

Можна сформулювати низку вимог до мов програмування та класифікувати мови за їх особливостями.

Основні вимоги до мов програмування:

наочність - використання у мові наскільки можна вже існуючих символів, добре відомих і зрозумілих як програмістам, і користувачам ЕОМ;

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

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

модульність - можливість опису складних алгоритмів у вигляді сукупності простих модулів, які можуть бути складені окремо та використані у різних складних алгоритмах;

однозначність – недвозначність запису будь-якого алгоритму. Відсутність її могла б призвести до неправильних відповідей під час вирішення завдань.

В даний час у світі існує кілька сотень мов програмування, що реально використовуються. Для кожного є своя сфера застосування.

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

За цим критерієм можна виділити такі рівні мов програмування:

· Машинні;

· Машинно-орієнтовані (ассемблери);

· Машино-незалежні (мови високого рівня).

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

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

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

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

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

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

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

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

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

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

Таким чином можна сформулювати основні переваги мов високого рівня перед машинними:

алфавіт мови високого рівня значно ширший за алфавіт машинної мови, що істотно підвищує наочність тексту програми;

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

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

необхідні операції задаються за допомогою загальноприйнятих математичних позначень;

Перш ніж ви захочете вивчати якусь мову програмування треба знати трохи про їхню історію і де вони застосовуються.

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

Перш ніж приступити до вивчення мов програмування, рекомендую вам вивчити курс .

1. JavaScript

Прототипно-орієнтована сценарна мова програмування. JavaScript спочатку створювався для того, щоб зробити web-сторінки «живими». У браузері вони підключаються безпосередньо до HTML і, як тільки завантажується сторінка - відразу виконуються.

Коли створювалася мова JavaScript, у нього спочатку була інша назва: LiveScript. Але тоді була дуже популярна мова Java, і маркетологи вирішили, що подібна назва зробить нову мову більш популярною.

Планувалося, що JavaScript буде таким собі «молодшим братом» Java. Однак, історія розпорядилася по-своєму, JavaScript сильно виріс, і зараз це абсолютно незалежна мова, зі своєю специфікацією і Java не має ніякого відношення.

2. Java


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

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

Спочатку мова називалася Oak («Дуб») розроблявся Джеймсом Гослінг для програмування побутових електронних пристроїв. Згодом він був перейменований на Java і став використовуватися для написання клієнтських програм та серверного програмного забезпечення.

3. PHP


Є поширеною мовою загального призначення, що інтерпретується, з відкритим вихідним кодом (скриптова мова). PHP створювався спеціально для ведення web-розробок, і код на ньому може впроваджуватися безпосередньо в HTML-код. Синтаксис мови бере початок з C, Java та Perl, і є легким для вивчення.

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

4. Python

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

5. C#


Об'єктно-орієнтована мова програмування. Розроблений у 1998-2001 роках групою інженерів під керівництвом Андерса Хейлсберга в компанії Microsoft як мова розробки програм для платформи Microsoft .NET Framework. C# відноситься до сім'ї мов з C-подібним синтаксисом, їх синтаксис найбільш близький до C++ і Java.

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

6. З++


Компілювана, статично типізована мова програмування загального призначення. Є однією з найпоширеніших мов у світі. Google Chrome, Mozilla Firefox, Winamp та лінійка продуктів Adobe були розроблені за допомогою C++. Крім того, деякі сучасні ігри та операційні системи були розроблені на С++ через швидкий процесінг та компіляцію.

7. Ruby


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

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

8. CSS


Cascading Style Sheets (каскадні таблиці стилів) - формальна мова опису зовнішнього вигляду документа, написаного з використанням мови розмітки.
Переважно використовується як опис, оформлення зовнішнього вигляду веб-сторінок, написаних за допомогою мов розмітки HTML і XHTML, але може також застосовуватися до будь-яких XML-документів.

9. C


Компільована статично типізована мова програмування загального призначення. Мова Сі була розроблена Деннісом Рітчі в 1972 році в Bell Labs. Він є попередником таких мов програмування як С++, Java, C#, JavaScript та Perl. З цієї причини вивчення цієї мови веде до розуміння та інших мов. Мова З використовується розробки низькорівневих додатків, оскільки вважається найближче до апаратного.

10. Objective-C


Компілюється об'єктно-орієнтована мова програмування, використовувана корпорацією Apple, побудована на основі мови Сі та парадигм Smalltalk. Мова Objective-C є надмножиною мови Сі, тому Сі-код повністю зрозумілий компілятору Objective-C. Мова використовується в першу чергу для Mac OS X (Cocoa) та GNUstep – реалізацій об'єктно-орієнтованого інтерфейсу OpenStep. Також мова використовується для iOS (Cocoa Touch).

11. Shell

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

12. R


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

13. Perl


Високорівнева інтерпретована динамічна мова програмування загального призначення. Назва мови є абревіатуру, яка розшифровується як Practical Extraction and Report Language - «практична мова для вилучення даних та складання звітів». Основною особливістю мови вважаються її багаті можливості для роботи з текстом, у тому числі робота з регулярними виразами, вбудована у синтаксис. На даний момент він використовується для виконання широкого спектра завдань, включаючи системне адміністрування, веб-розробку, мережне програмування, ігри, біоінформатику, розробку графічних інтерфейсів.

14. Scala


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

15. Go


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

16. SQL

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

17. Haskell


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

18. Swift


Відкрита мультипарадигмальна компілювана мова програмування загального призначення. Створений компанією Apple в першу чергу для розробників iOS та OS X. Swift працює з фреймворками Cocoa та Cocoa Touch та сумісний з основною кодовою базою Apple, написаною на Objective-C. Swift замислювався як більш легкий для читання і стійкий до помилок програміста мову, ніж попередній Objective-C. Swift запозичив багато з Objective-C, проте він визначається не покажчиками, а типами змінних, які обробляє компілятор. За аналогічним принципом працює багато скриптових мов.

19. Matlab


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

20. Visual Basic


Мова програмування, а також інтегроване середовище розробки програмного забезпечення, яке розробляється корпорацією Microsoft. Мова Visual Basic успадкувала дух, стиль і синтаксис свого предка - мови BASIC, яка має чимало діалектів. У той же час Visual Basic поєднує процедури та елементи об'єктно-орієнтованих і компонентно-орієнтованих мов програмування.

Visual Basic також є добрим засобом швидкої розробки RAD додатків баз даних для операційних систем сімейства Microsoft Windows. Безліч готових компонентів, що поставляються разом із середовищем, покликані допомогти програмісту відразу ж почати розробляти бізнес-логіку програми, не відволікаючи його на написання коду запуску програми.

21. Delphi


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

На сьогоднішній день, поряд з підтримкою розробки 32 і 64-розрядних програм для Windows, реалізована можливість створювати додатки для Apple Mac OS X, а також для Android Android (безпосередньо виконувані на ARM-процесорі).

22. Groovy


Об'єктно-орієнтована мова програмування, розроблена для платформи Java як доповнення до мови Java з можливостями Python, Ruby та Smalltalk. Groovy використовує Java-подібний синтаксис з динамічною компіляцією в JVM байт-код і працює з іншим Java кодом і бібліотеками. Мова може використовуватися в будь-якому Java-проекті або як скриптова мова.

23. Visual Basic .NET


Об'єктно-орієнтована мова програмування, яку можна розглядати як черговий виток еволюції Visual Basic, реалізований на платформі Microsoft .NET. VB.NET не має зворотної сумісності з більш ранньою версією (Visual Basic 6.0). Розвиток проектів старих версій (*.vbp) можливий лише після попередньої конвертації їх у формат VB.NET спеціальним майстром (Migration Wizard); однак, після конвертації потрібне суттєве ручне доопрацювання текстів.

24. D

Мультипарадигмальна компілювана мова програмування створена Уолтером Брайтом з компанії Digital Mars. Спочатку D був задуманий як реінжиніринг мови C++, проте, незважаючи на значний вплив С++, не є його варіантом. Також мова зазнала впливу концепцій з мов програмування Python, Ruby, C#, Java, Eiffel.

25. Assembler


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

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

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

1.1 Microsoft Visual Studio C++

Microsoft Visual Studio - лінійка продуктів компанії Майкрософт, що включають інтегроване середовище розробки програмного забезпечення та низку інших інструментальних засобів.

Visual Studio включає один або кілька компонентів з наступного:

Visual Basic .NET, а до появи - Visual Basic;

Visual C++;

Visual C#.

Багато варіантів поставки також включають:

Microsoft SQL Server чи MSDE;

Visual Source Safe – файл-серверна система управління версіями;

У минулому, до складу Visual Studio також входили продукти:

Visual InterDev;

Visual J++;

Visual J#;

Visual FoxPro.

Найбільш значущі версії пакета:

Visual Studio 97 - перша випущена версія Visual Studio, в ній вперше були зібрані різні засоби розробки ПЗ. Вона була випущена у двох версіях Professional та Enterprise. Вона включала Visual Basic 5.0, Visual C++ 5.0, Visual J++ 1.1, Visual FoxPro 5.0, вперше з'явилося середовище розробки ASP - Visual InterDev. Visual Studio 97 - була першою спробою Microsoft створити єдине середовище для розробки різними мовами програмування: Visual C++, Visual J++, Visual InterDev, і MSDN використовували одне середовище, що називається Developer Studio. Visual Basic і Visual FoxPro використовували окремі середовища розробки.

Visual Studio 6.0 - випущена в червні 1998 - остання версія Visual Studio, що працює на платформі Win9x. Як і раніше, популярна серед програмістів, які використовують Visual Basic. Ця версія була основним середовищем розробки програм під Windows від Microsoft, до появи платформи .NET.

Visual Studio .NET (кодове ім'я Rainier; внутрішня версія 7.0) - випущена у лютому 2002 (включає .NET Framework 1.0). Service Pack 1 для Visual Studio .NET (2002) випущений у березні 2005 року.

Visual Studio .NET 2003 (кодове ім'я Everett; внутрішня версія 7.1) - випущена у квітні 2003 (включає .NET Framework 1.1). Service Pack 1 для Visual Studio .NET 2003 випущено 13 вересня 2006 року.

Visual Studio 2005 (кодове ім'я Whidbey; внутрішня версія 8.0) - випущена наприкінці жовтня 2005 року (включає .NET Framework 2.0). На початку листопада 2005 року також вийшла серія продуктів у редакції Express: Visual C++ 2005 Express, Visual Basic 2005 Express, Visual C# 2005 Express та ін. 19 квітня 2006 року редакція Express стала безкоштовною. Service Pack 1 для VS2005 та всіх Express-редакцій випущено 14 грудня 2006 року. Додатковий патч для SP1, що вирішує проблему сумісності з Windows Vista випущено 3 червня 2007 року.

Visual Studio 2008 (кодове ім'я Orcas) - випущена 19 листопада 2007 року, одночасно з.NET Framework 3.5. Націлена на створення програм для Windows Vista (але підтримує і XP), Office 2007 та веб-застосунків. Включає LINQ, нові версії мов C# і Visual Basic. До студії не увійшов Visual J#. З 28 жовтня 2008 року вперше доступна версія російською мовою.

Продукт-наступник Visual Studio 2008 має кодове ім'я Hawaii. 29 вересня 2008 року з'явився анонс, який представляє деякі нововведення, які з'являться у Visual Studio 2010 та .NET Framework 4.0.

Розробник додатків, що вирішив скористатися послугами Visual Studio.Net 7.0, отримує у своє розпорядження досить багато нових технологій та інструментів, які дозволяють йому швидко та ефективно створювати звичайні Windows-програми, які тепер прийнято називати настільними - desktop applications, а також web-додатки та Web-послуги (Web Services). Компанія Microsoft додала в арсенал програміста нову мову С# (вимовляється «Сі шарп»), яка, як обіцяють фахівці, здатна у кілька разів прискорити цикл розробки складних проектів.

Головною новиною, яка має привернути вашу увагу, є те, що Visual C++, Visual Basic і C# використовують одне й те саме середовище розробки IDE (Integrated Development Environment), що дає можливість створювати комплексні проекти з використанням різних мов (mixed-language solutions) ). Багатомовне середовище розробки.Net (.Net Framework) є сумою трьох складових:

загальна для розглянутого набору мов бібліотека виконання (Common Language Runtime);

уніфікована бібліотека класів розробника (Unified Programming Classes);

модель розробки веб-застосунків (Active Server Pages.Net).

Перша складова – бібліотека часу виконання (Common Language Runtime, скорочено CLR), функціонує як на етапі виконання, так і на етапі розробки. Під час виконання коду вона стежить за динамікою багатопотокових додатків, забезпечує взаємозв'язок процесів, підтримує їхню безпеку, автоматизує процедури виділення та звільнення пам'яті. На етапі розробки CLR автоматизує типові завдання, які вирішує програміст, значно спрощуючи використання нових технологій. Особливо відзначаються переваги, одержувані під час створення компонентів стандарту COM (Component Object Model, скорочено COM - Модель багатокомпонентних об'єктів).

Друга складова (Unified Programming Classes) надає розробнику уніфіковану, об'єктно-орієнтовану бібліотеку класів, що розширюється, яка спільно з іншими ресурсами є частиною програмованого інтерфейсу додатків API (Application Programming Interface). Вона об'єднує елементи MFC (Microsoft Foundation Classes), WFC (Windows Foundation Classes) та частину API, що використовується Visual Basic.

Третя складова (ASP.Net) є надбудовою на.д класами, яка дає можливість користуватися об'єктно-орієнтованою технологією при розробці типових елементів HTML-інтерфейсу. Фактично виконувані на стороні сервера, ці елементи проектують функції інтерфейсу користувача у вигляді HTML-коду. Однак при розробці сервера можна використовувати потужний апарат, що надається об'єктною моделлю програмування. Результат – різке спрощення процесу побудови web-додатків. На додаток до цього, ASP.Net підтримує досить нову концепцію або модель розробки програм. Ви, напевно, чули про неї як про технологію «тонкого» клієнта. Основна суть цієї моделі - надання коду користувачу не у вигляді продукту, що інсталюється, а у вигляді тимчасової послуги (service).

Код, який створений на основі середовища розробки. Net Framework, має назву керованого коду (managed code)на відміну від звичайного, некерованого коду (Unmanaged code).У режимі.Net компілятори розглянутих мов виробляють метадані (metadata),які супроводжують сам код. Це означає, що вони генерують додаткову інформацію, яка описує типи даних, об'єкти та посилання. Бібліотека часу виконання (Common Language Runtime) використовує метадані для пошуку та завантаження об'єктів, запуску функцій, передачі параметрів, розміщення об'єктів у пам'яті.

Важливою функцією, яку виконує бібліотека часу виконання, є автоматичне звільнення пам'яті, яку займають об'єкти, які більше не використовуються. Це нововведення покликане підвищити надійність як окремих компонентів, так і всього додатка, що розробляється. Дані, час життя яких керується таким чином, називаються керованими даними (Managed data).Якщо ваш код є керованим (managed code),Ви можете користуватися керованими даними, але можете і не використовувати їх. Більше того, ви можете і не знати, чи ваші дані є керованими.

Загальна бібліотека часу виконання (CLR) спрощує створення додатків та їх складових, які розроблені різними мовами та налаштовані (target) на використання CLR. Ці модулі можуть бути інтегровані в одному проекті та взаємодіяти між собою так, ніби вони були створені однією мовою. Наприклад, ви можете декларувати клас, а потім створити похідний від нього клас вже іншою мовою. Можна й просто скористатися методами класу в рамках модуля, написаного іншою мовою. Така інтеграція стала можливою тому, що компілятори та інструменти різних мов користуються загальною системою типів, визначеною CLR, а також новими правилами гри, прийнятими при її розробці.

1.2 C++ Builder

Borland C++ Builder — випущений нещодавно компанією Borland засіб швидкої розробки додатків, що дозволяє створювати програми мовою C++, використовуючи при цьому середовище розробки та бібліотеку компонентів Delphi. У цій статті розглядається середовище розробки C++ Builder і основні прийоми, що застосовуються при проектуванні інтерфейсу користувача.

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


Рис.1. Середовище розробки C++ Builder

Форми є основою програм C++ Builder. Створення інтерфейсу програми полягає в додаванні у вікно форми елементів об'єктів C++ Builder, званих компонентами. Компоненти C++ Builder розташовуються на палітрі компонентів, виконаної як багатосторінкового блокнота. Важлива риса C++ Builder полягає в тому, що він дозволяє створювати власні компоненти та налаштовувати палітру компонентів, а також створювати різні версії палітри компонентів для різних проектів.

Компоненти поділяються на видимі (візуальні) та невидимі (невізуальні). Візуальні компоненти з'являються під час виконання так само, як і під час проектування. Прикладами є кнопки та редаговані поля. p align="justify"> Невізуальні компоненти з'являються під час проектування як піктограми на формі. Вони ніколи не видно під час виконання, але мають певну функціональність (наприклад, забезпечують доступ до даних, викликають стандартні діалоги Windows 95 та ін.)


Мал. 2. Приклад використання видимих ​​та невидимих ​​компонентів

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

Кожен компонент C++ Builder має три різновиди характеристик: властивості, події та методи.

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

Властивості є атрибутами компонента, що визначають його зовнішній вигляд та поведінку. Багато властивостей компонента в колонці властивостей мають значення, яке встановлюється за умовчанням (наприклад, висота кнопок). Властивості компонента відображаються на сторінці властивостей (Properties). Інспектор об'єктів відображає опубліковані (published) властивості компонентів. Крім published-властивостей, компоненти можуть і найчастіше мають загальні (public), опубліковані властивості, які доступні лише під час виконання програми. Інспектор об'єктів використовується для встановлення властивостей під час проектування. Список властивостей розміщується на сторінці властивостей інспектора об'єктів. Можна визначити властивості під час проектування або написати код для зміни властивостей компонента під час виконання програми.

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

1.3 Delphi

Delphi - середовище розробки, використовує мову програмування Delphi (починаючи з 7 версії мова серед називається Delphi, раніше - Object Pascal), розроблений фірмою Borland і спочатку реалізований у її пакеті Borland Delphi, від якого й отримав у 2003 році свою нинішню назву. Object Pascal насправді є спадкоємцем мови Pascal з об'єктно-орієнтованими розширеннями.

Delphi - це середовище швидкої розробки, в якому як мову програмування використовується мова Delphi. Мова Delphi - строго типізована об'єктно-орієнтована мова, в основі якої лежить добре знайома програмістам Object Pascal.

Delphi - це комбінація кількох найважливіших технологій:

    високопродуктивний компілятор у машинний код;

    - Об'єктно-орієнтована модель компонент;

    - Візуальна (а, отже, і швидкісна) побудова додатків з програмних прототипів;

    - Масштабні засоби для побудови баз даних.

    Borland Delphi 8 Studio дозволяє створювати різні програми: від найпростіших одновіконних додатків до програм управління розподіленими базами. До складу пакету включено різноманітні утиліти, що забезпечують роботу з базами даних, XML-документами, створення довідкової системи, вирішення інших завдань. Відмінною особливістю сьомої версії є підтримка технології.

    Основний упор моделі в Delphi робиться на те, щоб максимально продуктивно використовувати код. Це дозволяє дуже швидко розробляти програми, тому що вже існують заздалегідь підготовлені об'єкти. А так само ви можете створювати власні об'єкти, без будь-яких обмежень. Мова Delphi - строго типізована об'єктно-орієнтована мова, в основі якої лежить добре знайома програмістам Object Pascal.

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

    Перша версія повноцінного середовища розробки Delphi для .NET - Delphi 8. Вона дозволяла писати програми лише для .NET. В даний час, Delphi 2006, можна писати програми для .NET, використовуючи стандартну бібліотеку класів .NET, VCL для .NET. Середовище також дозволяє створювати.NET-програми на C# і Win32-програми на C++. Delphi 2006 містить функції для написання звичайних програм з використанням бібліотек VCL і CLX. Delphi 2006 підтримує технологію MDA за допомогою ECO (Enterprise Core Objects) версії 3.0.

    У березні 2006 року компанія Borland ухвалила рішення про припинення подальшого вдосконалення інтегрованих середовищ розробки JBuilder, Delphi та C++ Builder через збитковість цього напряму. Торішнього серпня 2006 року Borland випустив полегшені версію RAD Studio під назвою Turbo: Turbo Delphi, Turbo Delphi for .NET, Turbo C#, Turbo C++. У березні 2008 року було оголошено про припинення розвитку цієї лінійки продуктів.

    У березні 2007 року CodeGear порадувала користувачів оновленою лінійкою продуктів Delphi 2007 for Win32 і виходом нового продукту Delphi 2007 for PHP. У червні 2007 року CodeGear представила свої плани на майбутнє, тобто опублікувала так званий roadmap, з яким можна ознайомитись тут

    25 серпня 2008 року компанія Embarcadero, новий господар CodeGear, опублікувала прес-реліз на Delphi for Win32 2009. Версія принесла безліч нововведень у мову

    – повна підтримка Юнікоду за умовчанням у всіх частинах мови, VCL та RTL;

    - Узагальнені типи, вони ж generics.

    - Анонімні методи.

    Серед багатьох поширених програмних продуктів, виготовлених на Delphi, можна знайти:

    1.Продукція Borland: Borland Delphi, Borland C++ Builder, Borland JBuilder 1 та 2 версії.

    2. Адміністрація/розробка баз даних: MySQL Tools (Administrator, Query Browser), IBExpert, TOAD

    3. Інженерне ПЗ: Altium Designer/Protel (проектування електроніки).

    4.Переглядачі графіки: FastStone Image Viewer, FuturixImager, Photofiltre.

    5.Відео та аудіо програвачі: KMPlayer (відео- та аудіопрогравач), X-Player (аудіопрогравач).

    6.Доставка інформації в Інтернеті: Skype (VoIP та IM), QIP, QIP Infium та R&Q, (ІМи), The Bat! і si.Mail (клієнти електронної пошти), PopTray (засіб для перевірки пошти), FeedDemon (перегляд RSS/Atom груп новин), XanaNews (читання груп новин), Xnews (читання груп новин).

    7. Створення музики: FL Studio (раніше FruityLoops).

    8. Розробка програмного забезпечення: Dev-C++, Dev-PHP, Maguma Open Studio та Open Perl IDE (IDE), DUnit (юніт-тестування), Jedi Code Format (форматування програмного коду), Game Maker (створення ігор) Help & Manual (Система авторингу довідки), Inno Setup (двигун для інсталяції).

    9.Веб-розробка: Macromedia HomeSite (HTML-редактор), TopStyle Pro (CSS-редактор), Macromedia Captivate (захоплення екрану), Quick Page (2008) (Середовище розробки Web-сайтів).

    10. Веб-браузери (оболонки для MSIE): Avant Browser, Netcaptor.

    11.Утиліти: Spybot - Search & Destroy, Ad-Aware (антишпигунське ПЗ), jv16 PowerTools, FDK (багатофункціональна утиліта для оптимізації системи), Total Commander та Frigate (файлові менеджери), DarkCrypt TC/GUI (програмний комплекс для ImageSpyer та StegoTC (програмний стеганографічний комплекс), Copernic Desktop Search, PowerArchiver та PeaZip (архіватори), MCubix (інтелектуальний аналіз даних), Download Master [менеджер завантажень], ACProtect (програма для пакування та захисту EXE-файлів).

    12.Текстові редактори: SynEdit, Bred2, KeyNote, cEdit Professional, Programmer's Notepad, UniRed, gleditor.

    13. Редактори двійкових файлів (HEX-редактори): Hexapad

    14.Бухоблік та оподаткування: Intuit's Lacerte Professional Tax Software, включаючи всі підсистеми, такі як QuickBooks/EasyACCT Trial Balance Utility, Document Management System та Client Database Repair Utility.

    15. Програми для читання та каталогізації електронного тексту: DarkLib (каталогізатор та мультиформатний букридер), IxReader (букридер).

    2 Порівняльний аналіз можливостей (переваги) недоліки сучасних об'єктно-орієнтованих мов та засобів розробки на їх основі

    2.1 Object Pascal

    Object Pascal – повністю об'єктно-орієнтований діалект мови Pascal, розроблений фірмою Apple Computer спільно з Ніклаусом Віртом. У 1986 компанія Borland додала подібне розширення Паскаля продукт Turbo Pascal for Macintosh; з випуском Turbo Pascal 5.5 розширення стало доступним для DOS. Починаючи з Delphi 7 Borland почала офіційно називати свою мову Delphi. Проте Object Pascal підтримується та розвивається іншими розробниками. Найбільш серйозні реалізації Object Pascal (крім Delphi) - це TMT Pascal, Virtual Pascal та Free Pascal.

    Будь-яка програма Delphi складається з файлу проекту (файл з розширенням dpr) і одного або декількох модулів (файли з розширеннями pas). Кожен із таких файлів описує програмну одиницю Object Pascal.

    У вікні коду жирним шрифтом виділяються так звані зарезервовані слова, а курсивом - коментарі (так само виділяються зарезервовані слова та коментарі у книзі). Як бачимо, текст програми починається зарезервованим словом program та закінчується словом end з точкою за ним. Зауважу, що поєднання end з наступною за нею точкою називається термінатором програмної одиниці: як тільки в тексті програми зустрінеться такий термінатор, компілятор припиняє аналіз програми і ігнорує частину тексту, що залишилася.

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

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

    ($R *.RES)

    насправді не є коментарем. Цей спеціальним чином написаний фрагмент коду називається директивою компілятора (у разі — вказівка ​​компілятору необхідність підключення до програми так званого файлу ресурсів). Директиви починаються символом $, який стоїть відразу за фігурною дужкою, що відкриває.

    Оскільки мова зайшла про коментарі, зауважу, що в Object Pascal як обмежувачі коментаря можуть використовуватися пари символів (*, *) і //. Дужки (*…*) використовуються подібно до фігурних дужок тобто коментарем вважається фрагмент тексту, що знаходиться в них, а символи // вказують компілятору, що коментар розташовується за ними і триває до кінця поточного рядка:

    (Це коментар)

    (*Це теж коментар*)

    //Всі символи до кінця цього рядка складають коментар

    Слово Program з наступним за ним іменем програми та точкою з комою утворюють заголовок програми. За заголовком слідує розділ описів, у якому програміст (або Delphi) описує використовувані в програмі ідентифікатори. Ідентифікатори позначають елементи програми, такі як типи, змінні, процедури, функції (про елементи програми ми поговоримо трохи згодом). Тут же за допомогою пропозиції, яка починається зарезервованим словом uses (використовувати) програміст повідомляє компілятор про ті фрагменти програми (модулі), які необхідно розглядати як невід'ємні складові програми і які розташовуються в інших файлах. Рядки

    uses

    Forms, Unit1 in 'Unitl.pas' (fmExample);

    вказують, що крім файлу проекту у програмі повинні використовуватися модулі Forms та Unit1. модуль Forms є стандартним (тобто вже відомим Delphi), а модуль Unit1 - новим, раніше невідомим, і Delphi у цьому випадку вказує також ім'я файлу з текстом модуля (in 'uniti.pas') та ім'я пов'язаного з модулем файлу опису Форми (fmExample).

    Власне, тіло програми починається зі слова begin (почати) і обмежується термінатором end з точкою. Тіло складається з кількох операторів мови Object Pascal. У кожному операторі реалізується деяка дія — зміна значення змінної, аналіз результату обчислення, звернення до підпрограми тощо. У тілі нашої програми — три оператори, що виконуються:

    Application.Initialize;

    Application.CreateForm(TfmExample, fmExample);

    Application.Run;

    Кожен із них реалізує звернення до одного з методів об'єкта Application

    Об'єктом називається спеціальним чином оформлений фрагмент програми, що містить дані та підпрограми для їх обробки. Дані називаються полями об'єкта, а підпрограми його методами. Об'єкт загалом призначений на вирішення будь-якої конкретної завдання і сприймається у програмі як неподільне ціле (іншими словами, не можна з об'єкта «висмикнути» окреме поле чи метод). Об'єкти відіграють важливу роль у сучасних мовах програмування. Вони придумані для того, щоб збільшити продуктивність праці програміста і одночасно підвищити якість програм, що розробляються ним. Дві головні властивості об'єкта — функціональність і неподільність — роблять його самостійною або навіть самодостатньою частиною програми та дозволяють легко переносити об'єкт з однієї програми до іншої. Розробники Delphi придумали для нас із вами сотні об'єктів, які можна розглядати як цеглинки, з яких програміст будує багатоповерхову будівлю програми. Такий принцип побудови програм називається об'єктно-орієнтованим програмуванням (ООП). В об'єкті Application зібрані дані та підпрограми, необхідні для нормального функціонування Windows-програми загалом. Delphi автоматично створює об'єкт-програму Application для кожного нового проекту. Рядок

    Application.Initialize;

    означає звернення до методу Initialize об'єкта Application. Прочитавши цей рядок компілятор створить код, який змусить процесор перейти до виконання деякого фрагмента програми, написаного для нас розробниками Delphi. Після виконання цього фрагмента (програмісти кажуть: після виходу з підпрограми) керування процесором перейде до наступного рядка програми, в якій викликається метод CreateForm і т.д.

    Модулі — це одиниці програм, призначені для розміщення фрагментів програм. За допомогою програмного коду, що міститься в них, реалізується вся поведінкова сторона програми. Будь-який модуль має таку структуру: заголовок секція інтерфейсних оголошень секція реалізації термінатор Заголовок відкривається зарезервованим словом Unit за яким слідує ім'я модуля та точка з комою. Секція інтерфейсних оголошень відкривається зарезервованим словом Interface, а секція реалізації словом implementation. Термінатор модуля, як і термінатор програми, є end з точкою. Наступний фрагмент програми є синтаксично правильним варіантом модуля:

    unit Unit1;

    interface

    // Секція інтерфейсних оголошень

    implementation

    // Секція реалізації

    end.

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

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

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

    TfmExample = class (TForm)

    у якій за зарезервованим словом class у дужках зазначається ім'я батьківського класу. Термін «породжений» означає, що клас TfmExample успадкував усі можливості батьківського класу TForm і додав до них власні у вигляді додаткових компонентів, вставлених у форму fmExample. Перелік вставлених нами компонентів становить значну частину опису класу.

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

    Об'єкт fmExampie формально відноситься до елементів програми, які називаються змінними. Саме тому перед оголошенням об'єкта стоїть зарезервоване слово var (від англ. variables — змінні).

    Елементи програми - це мінімальні неподільні її частини, що ще несуть у собі певну значущість для компілятора. До елементів відносяться:

    зарезервовані слова;

    ідентифікатори;

    типи;

    константи;

    змінні;

    мітки;

    підпрограми;

    коментарі.

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

    Ідентифікатори — це слова, якими програміст означає будь-який інший елемент програми, крім зарезервованого слова, ідентифікатора або коментаря. Ідентифікатори в Object Pascal можуть складатися з латинських літер, арабських цифр та символу підкреслення. Будь-які інші символи або спеціальні знаки не можуть входити до ідентифікатора. З цього простого правила випливає, що ідентифікатори не можуть складатися з декількох слів (не можна використовувати пробіл) або включати символи кирилиці (російського алфавіту).

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

    Константи визначають області пам'яті, які можуть змінювати свого значення під час роботи програми. Як і будь-які інші елементи програми, константи можуть мати власні імена. Оголошення імен констант має передувати зарезервоване слово const (від англ. Constants - константи). Наприклад, можна визначити константи const

    Kbyte = 1024;

    Mbyte = Kbyte * Kbyte;

    Gbyte = 1024 * Mbyte;

    щоб замість довгих чисел

    1048576 (1024*1024) та 1073741824

    (1024*1024*1024) писати, відповідно, Mbyte та Gbyte. Тип константи визначається способом її запису і легко розпізнається компілятором у тексті програми, тому програміст може використовувати іменовані константи (тобто. не оголошувати в програмі явно).

    Змінні пов'язані з областями пам'яті, що змінюються, тобто з такими її ділянками, вміст яких буде змінюватися в ході роботи програми. На відміну від констант, змінні завжди оголошуються в програмі. Для цього після ідентифікатора змінної ставиться двокрапка та ім'я типу, за образом якого має будуватися змінна. Розділу оголошення змінної (змінних) має передувати слово var. Наприклад:

    var

    inValue: Integer;

    byValue: Byte;

    Тут ідентифікатор inValue оголошується як змінна типу integer, а ідентифікатор byValue - як змінна типу Byte. Стандартний (тобто заздалегідь визначений Object Pascal) тип integer визначає чотирибайтний ділянку пам'яті, вміст якого розглядається як ціле число в діапазоні від -2 147 483 648 до +2 147 483 647, а стандартний тип Byte - ділянка пам'яті довжиною 1 байт , В якому розміщується беззнакове ціле число в діапазоні від 0 до 255 4 . Всі відомості щодо діапазону можливих значень і обсягу пам'яті стандартних типів відносяться до Delphi 32. Для 16-розрядної версії 1 ці величини мають інші значення, наприклад, тип Integer у версії 1 займає 2 банта і має діапазон значенні від -32 768 до +32 767.

    Мітки – це імена операторів програми. Мітки використовуються дуже рідко і тільки для того, щоб програміст зміг вказати компілятор, який оператор програми повинен виконуватися наступним. Мітки, як і змінні, завжди оголошуються у програмі. Розділу оголошень міток передує зарезервоване слово label (мітка).

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

    У Object Pascal є два сорти підпрограм: процедури та функції. Функція відрізняється від процедури тільки тим, що її ідентифікатор можна поряд з константами та змінними використовувати у виразах, тому що функція має вихідний результат певного типу. Якщо, наприклад, визначено функцію

    Function MyFunction: Integer;

    та змінна var

    X: Integer;

    то можливий такий оператор присвоєння:

    Х: = 2 * MyFunction-l;

    Ім'я процедури не можна використовувати у виразі, тому що процедура не має пов'язаного з нею результату:

    Procedure MyProcedure;

    :

    X:= 2*MyProcedure-l; // Помилка!

    2.2 С++

    C++ – розширення мови С – був розроблений співробітником науково-дослідного центру AT&T Bell Laboratories (Нью-Джерсі, США) Б'єрном Строустропом у 1979 році. З + + містить у собі все, що є в С. Але, крім того, він підтримує об'єктно орієнтоване програмування (Object Oriented Programming, OOP). Спочатку С++ було створено у тому, щоб полегшити розробку великих програм. Об'єктно-орієнтоване програмування це новий підхід до створення програм.

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

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

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

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

    extern double sqrt(double);

    extern instream cin;

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

    #include

    //…

    x = sqrt (4);

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

    У команді включення include ім'я файлу, укладене в кутові дужки, наприклад, відноситься до файлу з цим ім'ям у стандартному каталозі (часто це /usr/include/CC); на файли, що знаходяться в будь-яких інших місцях, посилаються за допомогою імен, укладених у подвійні лапки.

    Наприклад:

    #include "math1.h"

    #include «/usr/bs/math2.h»

    включить math1.h з поточного користувача каталогу, а math2.h з каталогу /usr/bs.

    Тут наводиться дуже маленький закінчений приклад програми, у якому рядок визначається одному файлі, та її друк виробляється у іншому. Файл header.h визначає необхідні типи:

    // header.h

    extern char* prog_name;

    extern void f();

    У файлі main.c знаходиться головна програма:

    // main.c

    #include «header.h»

    char* prog_name = "добрий, але повний";

    main()

    {

    f();

    }

    а файл f.c друкує рядок:

    // f.c

    #include

    #include «header.h»

    void f()

    {

    cout<< prog_name << «\n»;

    }

    Скомпілювати та запустити програму ви можете наприклад так:

    $ CC main.c f.c -o silly

    $ silly

    хороший, але повний

    $

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

    бути реалізованим на традиційних ЕОМ;

    Виконуватися серед традиційних операційних систем;

    бути конкурентоспроможним з традиційними мовами програмування з ефективності при виконанні програм;

    Підходити для більшості можливих додатків.

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

    У таблиці 1 показані переваги та недоліки об'єктно-орієнтованих мов.

    Таблиця 1 – Переваги та недоліки об'єктно-орієнтованих мов

    Плюси

    Мінуси

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

    Необхідно розуміти базові концепції, такі як класи, спадкування та динамічне зв'язування

    Дані та операції разом утворюють певну сутність і вони не розмазуються по всій програмі, як це нерідко буває у разі процедурного програмування

    Багаторазове використання вимагає від програміста познайомитися з великими бібліотеками класів

    Локалізація коду та даних покращує наочність та зручність супроводу програмного забезпечення

    Проектування класів - завдання набагато складніше, ніж їх використання

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

    Дуже важко вивчати класи, не маючи можливості їх помацати.

    Дає можливість створювати розширювані системи

    Неефективність у сенсі розподілу пам'яті

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

    використання об'єктів як основні моделі дозволяє користувачеві моделювати складні системи реального світу;

    гнучкість об'єктно-орієнтованих текстів виливається у швидке реагування на зміни вимоги користувача;

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

    простота ПЗ робить його більш гнучким та знижує витрати на експлуатацію.

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

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

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

    Наприклад, у вимірювальній системі, розробленій Combuston Engineering (Columbus, Ohio), група датчиків відображається класом Sensor, що задає загальні властивості всіх датчиків. Підкласи задаються кожного типу датчика системи, наприклад, для оптичних чи інфрачервоних. Вони успадковують загальні процедури, які застосовуються до всіх датчиків, і містять додаткові процедури, які застосовуються тільки до оптичних або інфрачервоних датчиків.

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

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

    Гнучкість об'єктно-орієнтованих систем є незаперечною перевагою для користувачів у мінливих середовищах, наприклад, у технології програмування. Наприклад, Computer Science Corporation використовував об'єктно-орієнтовану мову Smalltalk для розробки продукту Design Generator. Компанія зазначає, що завдяки використанню об'єктно-орієнтованої технології розробники програм мають можливість швидко реагувати на нові течії ринку в умовах зростаючої конкуренції.

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

    У минулому бібліотеками підпрограм користувалися розробники програмного забезпечення для вирішення стандартних завдань типу математичних обчислень. Об'єктно-орієнтовані системи дають ширший спектр багаторазового використання текстів програм. Один із перших користувачів, Cadre Technologies, підрахував, що обсяг текстів програм для нового прикладного завдання зменшується щодо 5:1 у разі використання об'єктно-орієнтованих програм.

    Бібліотеки об'єктів також можна придбати від незалежних постачальників. В даний час найбільш активно купують такі бібліотеки класів для створення інтерфейсів користувача з піктограмами. Розробка та написання таких інтерфейсів з нуля – завдання нелегке. Компанії типу Apple та Whitewater Group постачають інструментарії для швидкої побудови таких інтерфейсів на основі кількох базових класів типу Window, Menu, ScrollBar та Icon. Користувачі можуть використовувати як ці класи, так і їх підкласи, що додають в інтерфейс, наприклад, спеціальні піктограми.

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

    Відомо, що на супровід становлять до 80% вартості життєвого циклу системи програмування. Розробники великих складних систем, які часто стикаються з необхідністю їх модифікації, схиляються до використання ООС як одного зі способів зниження витрат на супровід та підвищення надійності їх продуктів. Наприклад, Wild Leitz (Торонто, Канада) використовував об'єктно-орієнтовану мову Objective-C для розробки географічної інформаційної системи. Компанія вважала вихідні тексти цією мовою легшими у супроводі, оскільки вони коротше, є ізольованими «мовами в собі», що знижує вплив зміни одного модуля на частину системи, що залишилася.

    Правильно розроблені програми повинні не тільки задовольняти своїм функціональним вимогам, але й мати такі властивості, як:

    повторне використання;

    розширюваність;

    стійкість до неправильних даних;

    системність.

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

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

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

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

    обмежений доступ на ряді стандартних платформ;

    необхідність інтеграції з існуючими системами та базами даних;

    нестача програмного забезпечення для програмування широкомасштабних систем.

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

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

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

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

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

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


    Мал. 3. Спрощена схема організації багатомодульної системи роботи з геометричними об'єктами

    Багатомодульна структура системи має такі переваги.

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

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

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

    Можливість застосування конвеєрного методу виробництва, «розпаралелювання» процесу розробки ПЗ.

    Є кілька причин, які дозволяють вважати С++ динамічною мовою програмування.

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

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

    Статичний контроль типів.

    При розборі виразу p->f() компілятор повинен бути впевнений, що об'єкт, на який посилається покажчик p, дійсно містить метод f(). Навіть шаблони (template) не завжди допомагають створити код, що обробляє різнотипні об'єкти: на етапі компіляції та складання необхідно знати, які з них потрібно інсталювати, який застосовується у кожному конкретному випадку. Спробуйте виконати завдання з лістингу 1, не змінюючи класів і не використовуючи конструкції if-then-else + dynamic_cast.

    /*

    Лістинг 1. Статичний контроль типів обмежує можливості використання поліморфізму

    */

    class baseclass();

    class A:public baseclass

    {

    public:

    A();

    // клас A містить метод void f()

    virtual void f();

    };

    class B:public baseclass

    {

    public:

    B();

    // клас B не містить методу void f()

    };

    class C:public baseclass (…);

    /*

    Потрібно написати

    (не змінюючи вищеописаних класів і не використовуючи if-then-else + dynamic_cast):

    */

    bool CallF(baseclass *p)

    {

    /*

    якщо визначено p->f(), викликати цю функцію та повернути true,

    інакше – повернути false

    */

    }

    C + + пропонує три способи реалізувати функцію CallF. Перший (найбільш уживаний) – додати у baseclass метод bool f(), у тих підкласах, де має сенс – виконувати необхідні дії і повертати true, в інших – повертати false. Другий – створити клас baseclass_f:public baseclass, успадкувати від нього всі класи, що містять f(), та використовувати dynamic_cast< baseclass_f *>. Третій – горезвісне if-then-else + dynamic_cast у CallF. Перший варіант призводить до засмічення базового класу, до того ж базовийклас може бути недоступний (наприклад, утримуватися в «закритому» модулі). Другий вимагає перепроектувати всю систему об'єктів. А якщо потім потрібно написати CallG, CallH? Звісно, ​​С++ підтримує множинне успадкування, але ієрархія класів за такого підходу сильно ускладниться, та й не діло змінювати її «туди-сюди». Недоліки третього методу обговорювалися неодноразово: функцію CallF доведеться переписувати щоразу, коли з'являється новий клас, що підтримує f().

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

    Висновок

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

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

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

    Класи об'єктів часто зручно будувати те щоб вони утворювали ієрархічну структуру.

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

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

    Список використаної літератури

  1. Архангельський А. Програмування у Delphi для Windows. Версії 2006, 2007, Turbo Delphi + CD. -М.: Біном. Лабораторія знань, 2006.

    Архангельський А. Мова C++ в С++Builder. Довідковий та методичний посібник. - М.: Біном. Лабораторія знань, 2008.

    Бакнелл Дж. Фундаментальні алгоритми та структури даних у Delphi. Бібліотека програміста. - СПБ.: Пітер, DiaSof, 2006.

    Галісєєв Г.В. Компоненти в Delphi 7. Професійна робота.-М.: Вільямс, 2006.

  2. Гама Е. Прийоми об'єктно-орієнтованого проектування. Патерни проектування. С.Петербург: Пітер, 2006.
    Розв'яжіть завдання на основі тексту Законів Хаммурапі Удосконалення обліку основних засобів сільськогосподарського підприємства Якими є терміни проведення інвентаризації основних засобів?

    2014-05-28


Сподобалася стаття? Поділіться їй