Язык С, созданный Денисом Ритчи в начале 70-х годов в Bell Laboratory американской корпорации АТ&Т, является одним из универсальных языков программирования. Язык С считается языком системного программирования. Правильнее сказать, что он наиболее эффективен при решении задач системного программирования, хотя он, безусловно, удобен и при написании прикладных программ. Среди преимуществ языка С можно отметить переносимость программ, написанных на нём на компьютеры различной архитектуры и из одной операционной системы в другую, лаконичную запись алгоритмов, логическую стройность и удобочитаемость программ, возможность получить эффективный программный код, сравнимый по скорости с кодом, написанным на ассемблере.
Удобство языка С основано на том, что он является языком высокого уровня, имеющим полный набор конструкций структурного программирования, поддерживающим блочную структуру программ, возможность раздельной компиляции модулей. В то же самое время язык С имеет набор низкоуровневых средств, позволяющих иметь удобный доступ к аппаратным средствам компьютера, в частности позволяющих добраться до каждого бита памяти. Гибкость и универсальность языка С обеспечивает его широкое распространение.
Первое описание языка было дано в книге Б. Кернигана и Д. Ритчи и оно долгое время являлось стандартом, однако ряд моментов допускали неоднозначное толкование, что породило множество трактовок языка С. Для исправления этой ситуации при Американском национальном институте стандартов (АNSI) был образован комитет по стандартизации языка С и в 1983 году был утвержден стандарт языка С, получивший название АNSI С.
В то же время в Bell Laboratory Бьёрном Страуструпом (Bjarne Stroustrup) в результате дополнения и расширения языка С был создан новый по сути язык, получивший название "С с классами". Впоследствии это название было заменено на С++.
Большинство доработок, которые Страуструп внес в С, предназначены для поддержки объектно-ориентированного программирования. При этом были сохранены изначальная гибкость и эффективность языка С.