Си (англ. C) — универсальный процедурный язык программирования высокого уровня, разработанный Денисом Ричи в начале 1970-х годов на базе языка BCPL; используется для написания программ для миникомпьютеров и персональных компьютеров. Си создавался изначально не как универсальный язык, а для системного программирования, однако приобрел популярность в связи с компактным синтаксисом, эффективностью и переносимостью. Язык Си оказал большое влияние на языки программирования, позднее вышло много языков с Си-подобным синтаксисом, расширяющих его возможности (C++, Concurrent C, Objective C, Java, C#). Си является базовым языком операционной системы Unix, однако применяется и вне этой системы, для написания быстродействующих и эффективных программных продуктов, включая операционные системы. Для IBM PC имеется ряд популярных версий языка Си, в том числе — Turbo C (фирмы Borland), Microsoft C и Quick C (фирмы Microsoft), Zortech C (фирмы Symantec).
Расширенной версией языка Си, реализующей принципы объектно-ориентированного программирования, является язык Си++ (англ. C++, язык Си с классами), созданный Бьярном Страустрапом. Си++ используется для создания сложных программ. Для IBM PC наиболее популярной является система Turbo C++ американской фирмы Borland. В 2000 году фирма Microsoft объявила о разработке объектно-ориентированного языка программирования C# (C Sharp, Си Шарп). По своему характеру он напоминает языки C++ и Java, предназначен для разработчиков программ, использующих языки C и С++, в целях эффективного создания Интернет-приложения.
В 1969 году сотрудник AT&T Bell Telephone Laboratories Кен Томпсон начал разрабатывать новую операционную систему, которая впоследствии получила название UNIX. Язык PL/1, на котором была написала предшественница UNIX — Multics, был слишком громоздким и Томпсон разработал новый язык под названием B (Би), основанный на языке BCPL. Язык Би был ограничен по своим возможностям и в него были добавлены понятия типов, определения структур, дополнительные операторы. Новый язык стал известен как Cи. На языке Си UNIX была переписана в 1973 году.
В 1970-е годы интерес к языку Си возрос в связи с популярностью операционной системы UNIX — история Си и UNIX неразрывны на начальном этапе их развития. Впоследствии популярность Си вышла за пределы этой операционной системы, например, MS-DOS 3.0 была почти полностью переписана на Си. В 1982 году рабочая группа ANSI начала работать над стандартом Си, который был опубликован в 1989 году и был принят ISO в качестве международного в 1990 году.
ISO три раза дополняла этот стандарт (один раз в 1994 и два раза в 1995), в 1999 году вышел новый стандарт ISO Си — Си-99. Новый стандарт добавлял в язык такие возможности, как массивы переменной длины, ограниченные указатели, неполную инициализацию структур. Многое пришло из C++ — комментарии в стиле C++, комплексные числа, булевский тип данных, смешивание объявлений и операторов, inline-функции.
Несмотря на принадлежность языка Си к классу высокоуровневых языков программирования, он содержит развитые низкоуровневые средства, что позволяет его использовать для для написания ядер операционных систем и драйверов (ядро и модули операционной системы Linux написаны на Си). Этот язык используется в UNIX и UNIX-подобных операционных системах для написания утилит сетевого назначения. С появлением в 1983 году C++ популярность языка Си снизилась, поскольку Си, в сущности, является подмножеством C++, и C++ поддерживает процедурное программирование в стиле Си. Однако, в силу принципиальных особенностей компиляторов, есть области, где C++ не применяется, и Си сохраняет лидирующие позиции. Одна из таких областей — кросс-системы программирования (когда сама система программирования находится на одном компьютере (хост), а код генерируется на другом компьютере), применяемые, например, при управлении полетом ракеты с Земли. Другой пример — программирование программных интерфейсов (API).
Поскольку Си является подмножеством C++, компиляторы и среды разработки на C++ поддерживают оба языка. Один из самых мощных пакетов, работающих с Си — Microsoft Quick C для DOS. Существуют трансляторы языков, промежуточных между Си и языком ассемблера — так называемого C--, позволяющего создавать программы для DOS и Windows. Си и C++ тесно связаны с Linux и UNIX. В любом дистрибутиве этих систем содержится компилятор с языка Си, полностью соответствующий стандарту ISO.
Программы на Си эффективны — будучи более наглядными и простыми в сопровождении, они не уступают аналогичным программам, написанным на языке ассемблера. Многие операции Си соответствуют машинным командам, и поэтому допускают прямую трансляцию в машинный код. Си — гибкий, но небезопасный язык. Он предъявляет высокие требования к квалификации программиста. При изучении Си желательно иметь представление о структуре и работе компьютера, минимальное знание языка ассемблера. Вместе с тем, Си проще и лаконичнее таких языков, как Ада, где надежность и безопасность ставятся на первое место.