Загальний алгоритм створення програми
1. Класифікація мов програмування за семантикою, за призначенням, за рівнем використання, за способом компіляції
Мови програмування можна класифікувати за декількома параметрами. Найбільш поширеними є класифікація за семантикою, за призначенням, за рівнем використання та за способом компіляції. Отже, розглянемо їх:
1. За семантикою мови поділяються на імперативні та декларативні. Імперативні мови програмування є детальним викладенням якогось процесу обчислення або дій, які повинен виконати процесор або периферійний пристрій, або ж програмний засіб. Прикладом імперативних мов може слугувати будь-яка сучасна мова програмування, наприклад, C чи Assembler. На відміну від них, декларативні мови передбачають насамперед формулювання мети, тобто кінцевого результату. До декларативних мов належать спеціалізовані мови, такі як Prolog або Occam, але найбільш поширеними мовами цього типу є так звані "оболонки", себто командні інтерпретатори, які існують у кожній сучасній операційній системі, і в яких користувач дає операційній системі виконати певні дії над ресурсом.
2. За призначенням мови поділяються на алгоритмічні, математичні, логічні, функціональні, об’єктно-орієнтованіта спеціалізовані. До алгоритмічних належать всі мови, головним завданням яких є виконання певних задач, які піддаються формалізації. Такі мови містять ключові слова для утворення основних елементів алгоритмів – розгалужень, точок вибору, циклів, функцій тощо та відповідних структур даних. Це знову ж таки С, C++, Pascal, Ada тощо. До математичних мов належать такі мови, головною задачею в яких визнається формалізація та розв'язок математичних рівнянь. Чисто математичною мовою прийнято вважати мову Fortran. Ця мова містить виключно засоби для створення складних математичних виразів, але не містить жодного елементу алгоритму. Однак на сьогодні, більшу популярність набули так звані мішані мови, які також увібрали в собі елементи алгоритмічних мов, зберігаючи засоби для відображення математичної нотації. До таких мов належить, зокрема, MathLab. Логічні мови сконцентровані на відображенні логічних тверджень та автоматичному доказі висновків з цих тверджень. Прикладом такої мови може слугувати Prolog, створений для автоматичного доведення теорем. Функціональні мови призначені для моделювання процесів, і хоч вони містять елементи алгоритмічних мов, але їх основною задачею все-таки є процеси фактично без звертання до даних. Прикладом такої мови є Haskell - університетська розробка. Об'єктно-орієнтовані є протилежними за архітектурою. Подібно до концентрації функціональних мов на функціях та процесах, ці мови концентруються на маніпуляції даними та відносинами між ними, до яких прив'язуються відповідні дії. Класичними об'єктно-орієнтованими мовами є SmallTalk та C++. Спеціалізовані мови можуть містити будь-які конструкції та засоби, відповідно до специфіки сфери, для яких їх призначено. Так, мови розмітки документів XML та HTML містять способи вказання способу відображення даних у Web-браузері, а мова APL – методи для обробки векторних даних.
3. За рівнем використання мови поділяються на низькорівневі, високорівневі, надвисокорівневі та мішані. Низькорівневі мови працюють на рівні операційної системи та команд процесора. Найчастіше це асемблери різних типів. Високорівневі мови – на рівні так званого інтерфейсу програміста, написаного на низькорівневих мовах для забезпечення виконання певних типових задач, як, наприклад, звертання до файлової системи за допомогою більш універсальних засобів, ніж переривання або функції ОС. До цих мов можна віднести C++, Perl, Ada або Pascal. Надвисокорівневі мови, як правило, розширюють можливості певного комплексного програмного засобу, або ж побудовані на бібліотеках так званих компонентів – готових "цеглинок" для побудови кінцевого продукту. Такі мови (а точніше – діалекти, оскільки чистих мов такого типу на сьогодні не існує) – Object Pascal, Visual C++. Мішаними називають такі мови, які здатні працювати на кількох рівнях у межах однієї програми. Класичною мовою такого типу є C, яка містить засоби роботи як на низькому, так і високому рівнях.
4. За типом компіляції мови поділяються на інтерпретовані, трансльованіта мішані. Інтерпретовані мови, як вже здавалося вище, існують у вигляді відкритого програмного коду, який при виконанні рядок за рядком перетворюється в машинний код проміжною програмою-інтерпретатором. Прикладом такої мови є Rexx, Objective (діалект мови З) та Forth. Трансльовані мови цілком перетворюються в машинний код після аналізу програмного коду. Прикладами таких мов можуть слугувати більшість алгоритмічних мов на сьогодні. Мішаними називаються такі мови, які поєднують у собі кращі риси обох цих типів. Першою такою мовою була створена Sun Microsystems мова Java, яка компілюється в кросплатформений байт-код, а потім інтерпретується віртуальною машиною, яка транслює цей проміжний код у машинний код для поточного процесора. На сьогодні існує ще дві такі мови: C# та Python.
2. Поняття "транслятор", "компілятор", "інтерпретатор", "компоновщик"
Транслятор – програма, яка перетворює програмний код, викладений на певній мові програмування, у машинний код.
Компілятор – програма, яка аналізує програмний код, проводить аналіз помилок, якщо їх не знайдено, оптимізує його, себто вирізає зайві шматки коду, або неефективні фрагменти замінює їх більш ефективними аналогами, і покращенний таким чином код передає транслятору. У сучасних системах розробки ПО компілятор та транслятор часто об’єднані в один модуль.
Інтерпретатор – програма, яка виконує програмний код, рядок за рядком перетворюючи його на льоту в машинний код за певною таблицею відповідності.
Компоновщик – програма, яка виконує зборку виконуваного модуля з одного чи кількох так званих двійкових модулів, які містять чистий машинний код, трансльований з певної мови програмування.