Язык Си был разработан в 1972 г. Денисом Ритчи как средство реализации новой операционной системы (ОС) UNIX. Ранние ОС почти полностью разрабатывались на языке низкого уровня - ассемблере. Так приходилось делать не только для повышения производительности ОС, но также и из-за несоответствия средств существующих языков высокого уровня задачам создания ОС. Большинство этих языков программирования были ориентированы на определенный класс задач: FORTRAN (первая замена для ассемблера) - научные расчеты; COBOL - обработка экономической информации; APL - обработка числовых последовательностей-массивов; LISP - обработка списков; SNOBOL - обработка строк;
Basic (упрощенный FORTRAN) - для обучения основам программирования. Существовали и универсальные языки программирования (PL/I, Algol, Pascal), но они, с одной стороны, не имели аналогов многих машинных операций, а с другой - вводили не имеющие машинного аналога типы данных (строки, десятичные числа с фиксированной точкой).
Можно указать на следующие особенности языка Си, обеспечившие ему популярность во многих областях и использование вместо ассемблера в системном программировании.
1. Язык Си поддерживает структурное программирование, модульность и определяемые типы данных, что делает его универсальным языком программирования.
2. В качестве стандартных типов данных в языке Си используются только типы данных, поддерживаемые аппаратно на большинстве современных компьютеров. Любые операции с данными такого типа могут быть реализованы с помощью одной-двух машинных команд.
3. Для всех основных машинных команд существуют соответствующие операции в языке Си, например:
||.draw||Машинная команда|Назначение| Операция в Си |
----------------|--|:-------------:|
``inc a`` | увеличение ячейки памяти a на 1| ``++a`` |
``add a,b`` | добавление к ячейке памяти a значения b| ``a+=b`` |
``and a,b`` | поразрядная операция И | ``a&b`` |
4. Язык Си позволяет использовать любой из видов памяти компьютера для хранения данных и полноценно работать с указателями.
5. Лаконичность синтаксических конструкций, что ускоряет написание программы.
Максимальное приближение программиста к уровню используемых аппаратных средств с сохранением всех преимуществ языка программирования высокого уровня обеспечивает мобильность и эффективность создаваемого программного обеспечения. При создании ОС UNIX 90% кода было написано на языке Си.