Язык Си относится к семейству алгоритмических языков, реализующих процедурную парадигму программирования.


Процедурное (императивное) программирование отражает архитектуру традиционных ЭВМ, которая была предложена фон Нейманом в 1940-х годах. Теоретической моделью процедурного программирования служит алгоритмическая система под названием Машина Тьюринга.

Выполнение программы сводится к последовательному выполнению операторов с целью преобразования исходного состояния памяти, то есть значений исходных данных, в заключительное, то есть в результаты. Таким образом, с точки зрения программиста имеются программа и память, причем первая последовательно обновляет содержимое последней.


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


Процедурный язык обеспечивает удобство применения структурного стиля программирования.


Язык Си имеет следующие важные особенности:

  • минимальное число ключевых слов;
  • области действия имён;
  • простую языковую базу, обеспечивающую максимальную платформенную независимость, достигающуюся за счет вынесения в библиотеки многих существенных возможностей (математические функции, ввод-вывод, управление файлами);
  • систему типов, предохраняющую от бессмысленных операций;
  • использование препроцессора для, например, определения макросов и включения файлов с исходным кодом;
  • непосредственный доступ к памяти компьютера с помощью указателей;
  • передачу параметров в функцию по значению, а не по ссылке (при этом передача по ссылке эмулируется с помощью указателей);
  • указатели на функции и статические переменные
  • структуры и объединения — определяемые пользователем собирательные типы данных, которыми можно манипулировать как одним целым;