Імперативне програмування

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

Імперативна програма схожа на накази (англ. 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 << "Ведіть a = ";
	cin >> a;
	cout << "Ведіть 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, що підтримував кілька мов програмування.

Див. також ред.