Керниган (автор UNIX) говорил: «Си — инструмент, острый, как бритва: с его помощью можно создать и элегантную программу, и кровавое месиво». Разработка Си стала результатом того, что его будущие авторы любили компьютерную игру, подобную популярной игре Asteroids (Астероиды). Они уже давно играли в неё на главном сервере компании, который был недостаточно мощным и должен был обслуживать около ста пользователей. Томпсон и Ритчи посчитали, что им не хватает контроля над космическим кораблём для того, чтобы избегать столкновений с некоторыми камнями. Поэтому они решили перенести игру на свободный PDP-7, стоящий в офисе. Однако этот компьютер не имел операционной системы, что заставило их её написать. В конце концов, они решили перенести эту операционную систему ещё и на офисный PDP-11, что было очень тяжело, потому что её код был целиком написан на ассемблере. Было вынесено предложение использовать какой-нибудь высокоуровневый портативный язык, чтобы можно было легко переносить ОС с одного компьютера на другой. Язык Би, который они хотели сначала задействовать для этого, оказался лишён функциональности, способной использовать новые возможности PDP-11. Поэтому они и остановились на разработке языка Си. Проведём аналогии языка Си с Паскалем.
Действие Паскаль Си начало программы begin { конец программы end } пустой оператор ; ; описание переменной var i:integer; int i; описание функции function name (i: int name (int i); integer): integer; описание процедуры procedure name void name (int i); (i: integer); блок операторов, begin { мыслимый как ; ; один оператор end } оператор присваивания := = включение модулей uses CRT; #include <conio.h>
Пример хэллоуворлда:
#include <stdio.h> int main () { printf ("Hello, world!\n"); return 0; }
gcc -c hello.c -o hello.o -Wall -Wextra -ansi -pedantic -O2 gcc hello.o -o hello -Wall -Wextra ./hello