Важливою особливістю мов високого рівня є їх відносна незалежність від машини. Це означає, що правила запису програм не залежать або мало залежать від особливостей конкретної машини. Тоді для перенесення програми на іншу машину програму не обов'язково переписувати заново, достатньо лише віддтранслювати її в коди, специфічні для цієї машини. В крайньому разі, зміни в програмі повинні бути мінімальними. Кожна мова високого рівня повинна мати формальний опис. У цьому описі повинні бути визначені правила запису програмних конструкцій (синтаксис) і те, яким чином ці конструкції виконуються (семантика). Транслятори пишуться у відповідності до цього формального опису
Мови програмування мають свій алфавіт і фіксований словник, а також певні правила (синтаксис), які використовуються під час написання команд. Алфавіт складається звичайно з латинських літер, наприклад, у Бейсіку всі літери великі (А, B,…Z), а в Паскалі можливе використання як малих (a, b,… z), так і великих літер. До алфавіту обов'язково входять цифри 0,1,… 9, знаки арифметичних операцій (+, - тощо), знаки логічних операцій (not, and, or тощо), знаки операцій порівняння (=,<,> тощо), а також спеціальні символи (дужки, роздільники тощо). Синтаксис - це система правил, за якими із символів створюються конструкції мови програмування. Саме слово "синтаксис" походить від грецького συνταξιζ (будівля) і означає правила будови компонентів мови: слів, операторів, команд. Наприклад, символи в слові не можна випускати або міняти місцями. Якщо ви напишете службове слово begin як begn або beign, це вважатиметься помилкою.
Інтегроване середовище програмування. Сучасні мови програмування - це не тільки мова програмування з компілятором. Мови програмування як програмні продукти комплектуються інструментами для створення програм. Такий комплект називається інтегрованим середовищем програмування. Він призначений не тільки для полегшення процесу складання програм, а й для професійної розробки додатків.
До складу інтегрованого середовища програмування входять, як правило, такі інструменти:- текстовий редактор для набору і редагування програми;- мова програмування з компілятором;- компонувальник;- система усунення синтаксичних помилок; покроковий наладчик;- бібліотека готових програмних модулів;- довідкова система з питань розробки програм у даному середовищі. Прикладами інтегрованих середовищ програмування є Turbo Pascal, Delphi, Visual Basic і безліч інших. Використання цих середовищ під час розробки додатків дозволяє користувачам докладати набагато менше зусиль, ніж при написанні програм мовами низького рівня.
Види мов програмування. МП бувають: Низького рівня. - машинні (запис команд у двійковому виді); - асемблерні (ASSEMBLER).2. Високого рівня (BASIC, PASCAL, C, PROLOG).3. Візуального програмування (об’єктно-орієнтовані) (VISUAL BASIC, VISUAL C, DELPHI, C++). МП високого рівня діляться на: процедурні (точно вказуються дії щодо рішення задачі), дескриптивні (описується логічний або функціональний зв’язок понять, що являють собою базу даних програми).
Машинна мова передбачає запис інструкцій та операндів у вигляді послідовностей нулів та одиниць. Кажуть, що машинна мова є мовою низького рівня. Програма в машинних кодах являє собою послідовність команд, які процесор може сприйняти і виконати безпосередньо. Кожний тип машин має свою машинну мову
Асемблери. Мовою асемблеру прийнято називати машинно-орієнтовану мову низького рівня (хоча і більш високого, ніж машинний код). Мова асемблеру має такі характерні особливості:* одна команда асемблеру відповідає одній машинній команді. Певні послаблення цього принципу пов'язані з використанням макрокоманд, які на етапі підготовки програми автоматично замінюються деякою послідовністю машинних команд;* на відміну від машинного коду, в мові асемблеру використовуються символічні позначення команд. Це робить програми, написані мовою асемблеру, придатними для сприйняття людиною, а сам процес програмування - більш простим і більш захищеним від помилок.
Аспекти програмування: програма є деяка послідовність операцій.· програма є відображенням f: X → Y, яке ставить у відповідність елементам деякого простору вхідних даних X елементи з простору вихідних даних; · програма є кібернетичною системою, яка існує в певному середовищі і взаємодіє з цим середовищем
Основні відмінності мови програмування високого рівня від машинно-орієнтованої :алфавіт алгоритмічної мови значно ширше алфавіту машинно-орієнтованої, що істотно підвищує наочність тексту такої програми;набір допустимих в алгоритмічній мові операцій не залежить від набору машинних операцій, а вибирається із міркувань зручності формулювання послідовності дій;формат речень у алгоритмічній мові досить гнучкий, що дозволяє за допомогою одного речення задати досить змістовний етап обробки даних;необхідні операції в алгоритмічній мові задаються в зручному для людини вигляді, наприклад, за допомогою загальноприйнятих математичних позначень;в алгоритмічній мові може бути передбачений значно більший набір типів даних у порівнянні з набором машинних типів даних.
Алгоритмічними мовами програмування високого рівня, наприклад, є: Fortran (Фортран). Створена у IBM під керівництвом Дж. Бекуса (1954-57 р.р.). По суті це перша широко застосовувана мова високого рівня, орієнтована на науково-інженерні і чисельні задачі. Для цієї мови було створено величезну кількість бібліотек, починаючи від статистичних комплексів і закінчуючи пакетами управління супутниками, тому до цих пір Фортран продовжує активно використовуватися в деяких організаціях.
Ваsic (Бейсик). Багатоцільова мова символічних інструкцій, розроблена у 1965 р.. Створена як учбова мова для початківців. Згідно концепціям, закладеним у Basic, ця мова в сенсі строгості і стрункості є антиподом мови Pascal. Зокрема, в ній широко поширені різні правила умовчання, що вважається поганим тоном в більшості мов програмування подібного типу. Існує багато діалектів цієї мови, мало сумісних між собою.
Раsсаl (Паскаль). Створена Н. Віртом у 1970 р. спеціально для вивчення програмування. Пред'являє жорсткі вимоги до структури програми, підтримує велику кількість призначених для користувача типів даних. Крім того, в мові реалізована концепція визначення нових типів даних на основі вже наявних.
С. Створена Д. Рітчі на початку 1970-х років для розробки операційної системи UNIX. Має засоби для прямої роботи з пам'яттю. Була задумана як мова системного програмування для заміни асемблера, щоб мати можливість створювати такі ж ефективні і короткі програми, але не залежати від конкретного процесора. Вона є найпопулярнішою мовою для створення системного програмного забезпечення. Однак великий набір операцій і типів даних, сучасне оформлення і висока ступінь машинонезалежності зробили її привабливою мовою програмування загального призначення. Незважаючи на те, що С не розроблялася для новачків, вона активно використовується для навчання програмуванню. Надалі синтаксис мови С став основою для багатьох інших мов. На мові С написана безліч прикладних і системних програм і ряд відомих ОС (зокрема, UNIX).
Подальшим розвитком ідеї алгоритмічної мови стали мови програмування більш загального, не обов'язково алгоритмічного характеру. Як і алгоритмічні мови, такі мови, зрештою, теж націлені на отримання машинних програм, але в багатьох випадках їх тексти допускають певну свободу у виконанні і, як правило, дають лише матеріал для синтезу шуканих алгоритмів, а не самі ці алгоритми. Такими мовами , наприклад, є: С++. Об'єктно-орієнтоване розширення мови. С, створене Б. Страуструпом в 1980 р. Поєднує властивості як високорівневих, так і низькорівневих мов. Заснована на використанні класів і об'єктів. При створенні мови С++ прагнули зберегти її синтаксис, сумісний з мовою С. Більшість програм, написаних мовою С, справно працюють і з компілятором мови С++
Нововведеннями мови С++ порівняно з мовою С підтримка об'єктно-орієнтованого програмування через класи і об'єкти, підтримка узагальненого програмування через шаблони, доповнення до стандартної бібліотеки, додаткові типи даних, обробка виключень (виключних ситуацій), простори імен, вбудовані функції, перевизначення операторів та імен функцій, посилання та оператори управління вільно розподіленою пам'яттю.
C# (читається як “сі шарп”) – проста, потужна, статично типізована, об’єктно орієнтована мова програмування від компанії Microsoft. C# входить до сімейства мов програмування C, синтаксис мови буде знайомим програмістам, що працювали з C, C++, Java та Java. Script. Перша версія мови C# була створена в 1998-2001 роках, групою інженерів Microsoft під керівництвом Андреса Гейлсберга та Скотта Вільтаумота. C# увібрав в себе найкращі властивості попередників – мов C, C++, Modula, Object Pascal. В багатьох відношеннях мова C# дуже схожа на Java, це відображено в синтаксисах та основних поняттях цих мов програмування.
Javа. Створена компанією Sun. Microsystemsна початку 90-хроків на основі С++. Покликана спростити розробку застосувань на С++ шляхом виключення із нього низькорівневихможливостей. Головна особливість мови – те, що вона транслює програму не в машинний код, а вплатформно незалежний байт-код (кожна команда займає один байт). Цей байт-код може виконуватися за допомогою інтерпретатора- віртуальноїJavа–машини. JVM(Javа Virtual Масhine), версії якої створені для будь-яких апаратних платформ. Завдяки цьому програми на. Javаможна переносити не лише на рівні вихідних текстів, але і на рівні двійковихбайт-кодів. Це дозволяє створювати незалежні програмні модулі, здатні працювати на серверах в глобальних і локальних мережах з різними. ОС.
Perl.Інтерпретована високорівнева мова програмування загального призначення. Головною особливістю мови вважаються її можливості для роботи з текстом, у тому числі реалізовані за допомогою регулярних виразів. Python. Мова програмування загального призначення з акцентом на продуктивність розробника і читаність коду. Синтаксис ядра. Pythonмінімалістичний. У той же час стандартна бібліотека включає великий обсяг корисних функцій.
Ruby.Інтерпретована високорівнева мова програмування для швидкого і зручного об'єктно-орієнтованого програмування. Мова має незалежну від операційної системи реалізацію багатопоточності і багатоіншихможливостей. Rubyблизька за особливостями синтаксису до мови. Perl, за об'єктно-орієнтованим підходом - до. Smalltalk. Також деякі риси мови взяті з. Python,Lispта інших.
Мови програмування також можна поділити на універсальні і спеціалізовані: універсальні мови використовуються для вирішення різних завдань; спеціалізовані - призначені для вирішення завдань одного або декількох видів. Наприклад, роботаз базами даних,web-програмування,написання скриптів для адміністрування операційних систем. Прикладами таких мов програмування є: PHP. Скриптова мова програмування загального призначення, інтенсивно застосовується для розробки веб-додатків. У даний час підтримується переважною більшістю хостинг-провайдерів і є однією з лідерів серед мов програмування, що застосовуються для створення динамічних веб-сайтів.
Action. Script. Об'єктно-орієнтована мова програмування, яка додає інтерактивність, обробку даних і багато чого іншого до вмісту Flash-додатків. Action. Scriptвиконується віртуальною машиною (Action. Script Virtual Machine), яка є складовою частиною. Flash Player. Action. Scriptкомпілюється в байт-код, який включаєтьсядоswf-файлу.
Lazarus — середовище розробки програмного забезпечення для компілятора Free Pascal і Object Pascal. Надає можливість багатоплатформової розробки застосунків:вільно поширюване з джерела;парадигми програмування: імперативна, структурна, об'єктно-орієнтована;платформи: Windows, Linux, Free. BSD, Mac OS X;cфера застосування: навчання (переважно), створення програмного забезпечення.
Програма являє собою певну модель, яка описує з деяким наближенням закономірності реального світу;· програма є сукупністю правил, які дозволяють отримувати різноманітні наслідки (вихідні дані) з відомих передумов (вхідні дані);· програма є засобом для вирішення конкретних практичних задач.
Існують різні парадигми програмування, тобто різні принципи, за якими будуються програми. Виділяють чотири основні парадигми програмування:1. Процедурне програмування. В основі програми, побудованої за процедурними принципами, лежить послідовна зміна вхідних даних, поки не буде отриманий результат, причому кожна операція розписується в явному вигляді. Дані, з якими оперує програма, зберігаються в іменованих ділянках оперативної пам'яті, які називаються змінними. Найбільш відомими процедурними мовами є Паскаль і Сі в їх авторських варіантах.
2. Функціональне програмування. Виконання програми розглядається як виклик деякої функції, яка, в свою чергу, може викликати інші функції. Найбільш відомим представником цієї парадигми є Лісп.3. Логічне програмування. В основі виконання програми лежить механізм автоматичного доведення теорем на основі логічного виведення. Найбільш відомий представник - Пролог
4. Об'єктно-орієнтоване програмування. Ця парадигма є на сьогодні найбільш популярною і стрімко розвивається. Об'єктна програма розглядається як сукупність паралельно існуючих сутностей (об'єктів), які взаємодіють між собою. Кожний об'єкт вміє виконувати певні операції та характеризується певною поведінкою. Історично першою об'єктною мовою вважається Smalltalk. Найбільш відомими представниками цієї парадигми є C++; Object Pascal, що лежить в основі системи візуального програмування Delphi; Java. Як окремий напрямок слід виділити мови програмування баз даних, призначені для маніпуляції великими централізованими масивами даних і отримання з них інформації. Багато з цих мов (Access, Fox. Pro, 4 GL та ін.) мають розвинені процедурні елементи. Фактичним стандартом стала мова запитів до баз даних SQL.
Програми, що написані на мовах програмування високого рівня (алгоритмічних мовах програмування), комп'ютер "не розуміє". Для того, щоб він міг виконати програму, її потрібно перекласти на машинну мову. Для такого перекладу використовують спеціальні програми, що мають назву - транслятори.
Можна виділяти такі вимоги до програм:1. Правильність. Програма повинна видавати правильні результати для будь-яких даних з заздалегідь визначеного припустимого діапазону. Це звучить банально, але з цим пов'язана дуже серйозна проблема. Якщо програма є достатньо складною, навіть найкваліфікованіший програміст навряд чи зможе з першого разу написати її без помилок
Загальноприйнятою є така класифікація програмних помилок:* синтаксичні, які пов'язані з порушенням формальних граматичних правил написання програм. Синтаксичні помилки виявляються на етапі компіляції;* помилки часу виконання. Ці помилки знову ж-таки поділяються на такі категорії:o аварійні зупинки. Пов'язані з операціями, які неможливо виконати (ділення на нуль, звернення до неіснуючих файлів тощо). У таких випадках програма зупиняється;o програма не доходить до кінця. Вона працює нескінченно довго або зависає;o програма видає неправильні результати.
Помилки повинні бути виявлені та виправлені (цей процес називається відлагодженням). Крім того, необхідно переконатися, що програма працює правильно на деяких тестових прикладах (цей процес називається тестуванням). Відомо, що саме на відлагодження і тестування припадає левова частина роботи над програмою. Деякі приховані помилки так і залишаються невиправленими і час від часу проявляють себе уже в процесі експлуатації програми. Це можуть бути несподівані повідомлення на екрані, зависання і т.п. Але наслідки програмних помилок можуть бути і значно більш серйозними. Відповідальність за виявлення і знешкодження помилок повністю лежить на авторі програми.
3. Надійність. Користувач повинен довіряти програмі і не боятися її використовувати. Надійна програма повинна бути правильною; якщо ж залишаються помилки, вони не повинні призводити до серйозних програм. Самої лише правильності програми замало. Якщо користувач вводить неправильні дані, програма повинна повідомити його про це. Якщо програма сприймає неправильні дані і видає неправильні результати - це набагато гірше, ніж якщо вона взагалі не працює. За будь-яких умов використання програми не повинно призводити до фатальних, невиправних або важковиправних наслідків.
6. Зручність у використанні. Програма повинна бути зручною в засвоєнні і використанні, а програмний інтерфейс повинен бути інтуїтивно зрозумілим. Відомо, що за останні десять років був зроблений величезний крок у цьому напрямку.7. Стандартизованість. Різні програмні продукти повинні мати однотипні засоби керування і однотипний інтерфейс для того, щоб користувач, який має досвід роботи з однією програмою, мав якнайменше незручностей при переході до іншої.
8. Переносимість. Повинна забезпечуватися можливість перенесення програм з однієї машини на іншу без змін або з мінімальними змінами.9. Читабельність. Тексти програм повинні бути максимально простими для сприйняття і розуміння людиною.10. Модифікованість. Програма повинна передбачати можливість для змін і доповнень.
На зміну традиційній каскадній моделі приходить спіральна модель життєвого циклу програм, яка передбачає ітераційну розробку програмного забезпечення. Спочатку розробляється прототип – найпростіший варіант програми, який ілюструє основні можливості інтерфейсу та основні функціональні можливості. Прототип використовується для дослідження якості проекту та доцільності його подальшого розвитку.