Язык Си является результатом эволюционного развития языков BCPL и Би, использовавшихся для реализации операционных систем и языковых процессоров. Поскольку модель языка программирования, положенная в основу каждого из них, легко и эффективно отображается на архитектуру существующих аппаратных средств, эти языки программирования обеспечивают программисту эффективный интерфейс с аппаратными средствами. Основным достоинством языка Си по сравнению с языками BCPL и Би является введение в него типов данных.
Язык программирования Си был разработан и реализован Д. Ритчи в 1972 г., использовался в самых различных приложениях, в основном под управлением операционной системы UNIX, реализованной изначально для мини-ЭВМ семейства PDP-11. В 1977 г. была начата работа по созданию машинно-независимой версии транслятора с языка Си с целью облегчить его перенос в новые окружения. Эта работа завершилась созданием Мобильного Транслятора с языка Си. Результатом этого явилось появление совместимых по входному языку трансляторов с языка Си для 15 различных типов ЭВМ - от микроЭВМ до больших ЭВМ. В ходе работ по созданию Мобильного Транслятора с языка Си сам он был переработан для повышения мобильности написанных на нем программ. В настоящее время любая инструментальная операционная система не может считаться полной, если в ее состав не входит компилятор с языка Си.
Язык Си был разработан в качестве простого языка программирования, удобного для решения задач системного программирования. Одной из идей, лежащих в его основе, была идея максимального приближения программиста к уровню используемых аппаратных средств с сохранением всех преимуществ языка программирования высокого уровня, что обеспечивает, с одной стороны, мобильность программного обеспечения, создаваемого на таком языке программирования, а с другой -- эффективность этого программного обеспечения.
В некотором смысле язык Си - самый универсальный, так ка кроме набора средств, присущих современным языкам программирования высокого уровня (структурность, модульность, определяемые типы данных), в него включены средства для программирования почти на уровне ассемблера (использование указателей, побитовые операции, операции сдвига). Большой набор операторов и операций позволяет писать компактные и эффективные программы. Однако такие мощные средства требуют от программиста осторожности, аккуратности и хорошего знания языка со всеми его преимуществами и недостатками.
//М.И. Болски. Язык программирования Си; А. Фьюэр, П. Джехани. Сравнение языков программирования Си и Паскаль.