Короткий огляд відомих мов програмування. Види мов програмування Три спеціалісти та три види напрямків програмування

04.03.2021 Програми

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

    процедурний,

    функціональний,

    логічний,

    об'єктно-орієнтований.

3.1. Процедурна (алгоритмічна) мова

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

Процедурні мови характеризуються такими особливостями:

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

    малою придатністю для символьних обчислень;

    відсутністю суворої математичної основи;

    високою ефективністю реалізації па традиційних ЕОМ.

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

До процедурних мов належать: мова Асемблера, С, Basic, Pascal.

3.2 Функціональна (аплікативна) мова

Першою мовою був LISP.

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

Аплікативна мова програмування включає такі елементи:

    класи констант, якими можуть маніпулювати функції;

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

    правила побудови нових функцій із базових;

    правила формування виразів з урахуванням викликів функцій.

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

3.3 Логічна (реляційна) мова

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

Мови логічного програмування характеризуються:

    високим рівнем;

    суворою орієнтацією на символьні обчислення;

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

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

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

Логічні та функціональні мови – це декларативні мови. У цих мовах немає поняття «оператор» («команда»).

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

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

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

У сучасних об'єктно-орієнтованих (ГО) мовами використовуються такі методи: успадкування, інкапсуляція, поліморфізм.

У деяких об'єктно-орієнтованих мовах усі методи класів є віртуальними.

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

Частина мов (іноді званих «чисто об'єктними» - Java чи Ruby) цілком побудована навколо об'єктних засобів - у яких будь-які дані є об'єктами, будь-який код - методом будь-якого класу і неможливо написати програму, де б не використовувалися об'єкти. Інші мови («гібридні») включають ООП-підсистему у початкову процедурну мову. Вони існує можливість програмувати, не звертаючись до об'єктним засобам. Класичні приклади - C++ та Delphi (Object Pascal).

Підручник і двох розділів: теоретичного і практичного. У теоретичній частині підручника викладено основи сучасної інформатики як комплексної науково-технічної дисципліни, що включає вивчення структури та загальних властивостей інформації та інформаційних процесів, загальних принципівпобудови обчислювальних пристроїв, розглянуто питання організації та функціонування інформаційно-обчислювальних мереж, комп'ютерної безпеки, подано ключові поняття алгоритмізації та програмування, баз даних та СУБД. Для контролю отриманих теоретичних знань пропонуються питання для самоперевірки та тестування. Практична частина висвітлює алгоритми основних дій під час роботи з текстовим процесором Microsoft Word, табличним редактором Microsoft Excel, програмою для створення презентацій Microsoft Power Point, програмами-архіваторами та антивірусними програмами. Як закріплення пройденого практичного курсу наприкінці кожного розділу пропонується виконати самостійну роботу.

Книга:

Розділи на цій сторінці:

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

Види програмувань

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

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

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

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

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

Машинозалежні мови програмування

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

Машинонезалежні мови програмування

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

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

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

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

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

До мов програмування високого рівня можна віднести такі: Fortran, Cobol, Algol, Pascal, Basic, C, C++, Java, HTML, Perl та інші.

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

Існує два основних види трансляторів (рис. 8.4): інтерпретатори, які сканують та перевіряють вихідний код в один крок, та компілятори, що сканують вихідний код для виробництва тексту програми машинною мовою, яка потім виконується окремо.


Малюнок 8.4. Види трансляторів

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

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

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

Процес створення програми називається програмуванням.

Вирізняють кілька різновидів програмування.

Алгоритмічне чи модульне

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

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

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

Структурне програмування

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

Можливість застосування підпрограм відносить мову програмування до класу мов.

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

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

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

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

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

Підпрограми вирішують три важливі завдання:

Позбавляють необхідності багаторазово повторювати в тексті програми аналогічні фрагменти;

Поліпшують структуру програми, полегшуючи її розуміння;

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

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

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

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

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

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

Об'єктно-орієнтована мова програмування характеризується трьома основними властивостями:

1. Інкапсуляція - поєднання даних з методами в одному класі;

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

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

Типи програмування

Умовимося одразу: типів буде шість. Це досить докладний поділ. Зазвичай виділяють 3-4, але оскільки перед нами стоїть завдання вибору шляху для новачків, воно цілком виправдане.

Процедурне програмування, воно імперативне.

Воно ставить завдання створення коду мовою, зрозумілою машині, що використовується. Найвідоміший випадок – машина Тьюринга, з відомих мов програмування – С/C++, Ада, Паскаль, Go. Завдання тут вирішуються планомірно: спочатку оголошується об'єкт, потім визначається і потім виконується з нею дію:

var
S: String;

S:= 'Hello!';

Декларативне програмування.

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

Функціональне програмування.

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

Функціональне програмування позбавлене цього недоліку: тут ви оперуєте функціями - вихідними, прирощеннями та результативними, - але не конкретними значеннями. Серед популярних представників – Lisp, Clojure, Haskell. Функціональне програмування вважається складним і надмірним більшість прикладних завдань. Звідси невисокий попит на фахівців, але від цього високі зарплати і справді цікава робота.

Логічне програмування.

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

Динамічне програмування.

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

Графічне програмування, воно ж візуальне.

Воно пропонує розробнику працювати з графічними зображеннями, а не текст. Виражатися це може по-різному - є спеціальні мови, на зразок Scratch або BluePrint, є мови схем або діаграм (LD або FBD), є просто розділи програмування, пов'язані із взаємодією з формами та графікою. У разі це може бути будь-яку мову, візуалізація здійснюється засобами розробки (Borland Delphi/C++, Visual Studio, Adobe Dreamweaverта ін.). Таке графічне програмування у чистому вигляді зустрічається вкрай рідко, без розуміння мови та структури коду створити щось серйозне неможливо.

Решта

Програмування ділять за безліччю типів, і про деякі новачки навіть не здогадуються: синхронне/асинхронне/подійне, послідовне/паралельне, різне за розв'язуваними завданнями та задіяністю ІІ та статистики.

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

1. Введення

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

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

2. Що таке мова програмування

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

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

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

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

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

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

3. Етапи розв'язання задачі на ЕОМ.

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

Постановка задачі.Цей етап полягає у змістовній (фізичній) постановці задачі та визначенні кінцевих рішень.

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

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

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

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

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

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

Аналіз результатів.Результати розрахунків ретельно аналізуються, оформляється науково-технічна документація.

4. Для чого потрібні мови програмування

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

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

Багато мов програмування можна розділити на дві групи: мови низького рівняі мови високого рівня.

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

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

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

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

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

До процедурних мов програмування відносяться: Ada, Basic (версії починаючи з Quick Basic до появи Visual Basic), Сі, КОБОЛ, Фортран, Модула- 2, Pascal, ПЛ/1, Рапіра, REXX.

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

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

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

Важливо виділити такі три основні властивості об'єктів.

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


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

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

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

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

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

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

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

Запитання для самоперевірки

1. Що таке програма? Що розуміють під виконавцем?

2. Що таке машинний код?

3. Що таке транслятор? Перерахуйте типи трансляторів.

4. Як працює інтерпретатор? У чому його переваги?

5. У чому полягає перевага компіляторів?

6. Які компоненти входять до складу інтегрованої системи програмування?

7. Що розуміється під структурою даних, яка класифікація структури даних?

8. Що розуміється під масивами даних та які операції можна з ними проводити?

9. Які існують алгоритми сортування масивів?

10. Яке призначення підпрограм?

11. Навіщо потрібна бібліотека підпрограм?

12. Які види програмування?

Література

1. Ставровський А.Б., Карнаух Т.А. Перші кроки до програмування. Самовчитель. – М.: Вільямс, 2006. – 400 с.

2. Окулов З. Основи програмування Видавництво: Бином. Лабораторія знань, 2008. – 383 с.

3. Канцедал С.А. Основи алгоритмізації та програмування. – К.: Форум, 2008. – 351 с.

4. httn//www myfreesoft ru/default-windows-nroprams html - стандартні програми Windows

5. httn//khni-iin mink kharkiv edu/lihrary/datastr/hook/nrt01 html#lb11 - моделі та структури даних

6. httn://www.intuit.ru/denartment/se/nhmsu/11/3.html#sect5 - моделі та структури даних

7. http://inf.1sentemher.ru/2007/15/00.htm - енциклопедія вчителя інформатики

8. http://www.delnhi.int.ru/articles/119/ - підпрограми.

9. httn//inroc ru/narallel-nroPramminP/lection-5/ - сортування купою.