Імперативне програмування
Імперати́вне програмува́ння — парадигма програмування(стиль написання вихідного коду комп'ютерної програми), згідно з якою описується процес отримання результатів як послідовність інструкцій зміни стану програми.
Імперативна програма схожа на накази (англ. imperative — наказ). Подібно до того, як за допомогою наказового способу в мовознавстві перелічується послідовність дій, що необхідно виконати, імперативні програми є послідовністю операцій комп'ютера для виконання. Поширений синонім імперативному програмуванню є процедурне програмування.
Для імперативного програмування характерні наступні риси
- у вихідному коді програми записуються інструкції(команди);
- інструкції повинні виконуватися по черзі;
- дані, отримані при виконанні попередніх інструкцій, можуть читатися з пам'яті наступними інструкціями;
- дані, отримані при виконанні інструкцій можуть записуватися в пам'ять.
Імперативні мови програмування протиставляються функційним і логічним мовам програмування. Функційні мови, наприклад, Haskell, не є послідовністю інструкцій і не мають глобального стану. Логічні мови програмування, такі як Prolog, зазвичай визначають що треба обчислити, а не як це треба робити.
При імперативному підході до складання програми(на відміну від функціонального підходу, що відноситься до декларативної парадигми) широко використовується присвоєння. Наявність операторів присвоєння збільшує складність обрахункової моделі і робить імперативні програми схильні до специфічних помилок, які не зустрічаються при функціональному підході.
Обгрунування та основи імперативного програмування
Апаратне забезпечення є обов'язковим для всіх комп'ютерів і призначене для виконання машинного коду. Машинний код є інтегрований для апаратної частини(далі hardware) комп'ютера і написаний в особливому імперативному стилі. З точки зору низькорівневих команд стан програми визначається заповненістю пам'яті, а вирази — це інструкції, що написані інтегрованою низькорівневою мовою для hardware. Імперативні мови вищого рівня використовують змінні та складніші вирази, але все ж слідують тій же парадигмі. Засоби і списки процесів хоч і не є комп'ютерними програмами та вони також схожі за стилем із імперативним програмуванням. Кожен крок — команда.
Основні особливості імперативних мов програмування
- використання іменованих змінних;
int main() { int number = 1; }
- використання оператора присвоєння;
int main() { int number = 1; int b += a; //присвоєння }
- використання складних виразів;
//Приклад обрахунку складного виразу sin(4*x); #include<iostream> #include<cmath> using namespace std; int main() { double x; double res = 0.0; cin >> x; res = sin(1 * x); cout << res << endl; system("pause"); return 0; }
- використання підпрограм;
//Викорисатння підпрограм на прикладі знаходження найбільшого числа
#include<iostream>
using namespace std;
int main()
{
int a, b, c;
cout << "Ведiть a = ";
cin >> a;
cout << "Ведiть b = ";
cin >> b;
c = max(a, b); // виклик підпрограми
if (c == (a + b))
cout << "Числа рівні" << endl;
else cout << "Максимальне число = " << c << endl;
system("pause");
return 0;
}
int max(int x, int y) //код підпрограми
{
if (x > y)
return x;
else return y;
if (x == y)
{
int s = x + y;
return s;
}
}
- та інші.
Історія
Першими імперативними мовами були машинні інструкції (коди) — команди, готові до виконання комп'ютером одразу (без будь-яких перетворень). Пізніше були створені асемблери (assembler), програми стали записувати на мовах асемблерів. Асемблер — комп'ютерна програма призначена для перетворення машинних інструкцій, записаних у вигляді тексту на мові зрозумілій людині (мові асемблера) в машинні інструкції, зрозумілі комп'ютеру (машинний код). Одній інструкції на мові асемблера відповідала одна команда в машинному коді. Різні комп'ютери підтримували різні набори інструкцій. Програми, записані для одного комп'ютера, довдилося заново переписувати для переносу на інший комп'ютер. Були створенні нові мови програмування високого рівня і відповідні компілятори для них — програми, що перетворювали текст з мови програмування на машинний код. Одна інструкція мови високого рівня відповідала одній або кільком інструкціям машинної мови і для різних машин ці інструкції були різними. Першою розповсюдженою високорівневою мовою програмування, що отримала застосування на практиці, стала мова Fortran, розроблена Джоном Бекусом в 1954 році. Fortran є компільованою мовою програмування і дозволяє використовувати іменовані змінні, складові вирази, підпрограми і багато інших елементів, що поширені в імперативних мовах. Для написання операційних систем для деяких моделей комп'ютерів. Мови COBOL (1960 рік) і Basic (1964 рік) стали першими мовами розробники яких намагалися зробити ці мови схожими на англійську. В1970-тих роках Ніклаус Вірт розробив мову Pascal. Деніс Рітчі створив мову C. В 1978 році команда розробників з компанії Honeywell розпочала розробку мови Ada, а вже через чотири роки опублікували вимоги для її роботи. Специфікація мови вийшла в 1983 році, була оновлена в 1995 і 2005—2006 роках.
В 1980-тих роках зріс попит на об'єктно-орієнтоване програмування (ООП). В 1980 році працівники дослідницького центра Xerox PARC на основі мови Smalltalk, розробленого Аланом Кеєм в 1969 році, творили мову Smalltalk-80. Б'ярн Страуструп на основі мови С і по зразку мови Simula (можливо, першої с світі ООП мови програмування, розробленой ще в 1960-тих роках) розробив мову С++. Перша реалізація С++ була створена в 1985 році. В 1987 році Ларі Уолл випустив мову Perl і інтерпритатор для неї. В 1990 році Гвідо ван Россум випустив мову Python. В 1994 році в компанії Sun MIcrosystems була розроблена мова Java. В 1995 році Расмус Леодорф створив мову PHP. Мова Ruby була випущена 1995 році. Мова С# була випущена в 2002 разом з програмною платформою (фреймворком) .NET Framework, що підтримував кілька мов програмування.
Див. також
- Програмування
- Імперативні мови програмування
- Функціональне програмування
- Парадигма програмування
- Історія мов програмування
- Мова програмування
- Функціональне програмування