14
которые будут компилироваться только с определенной версией компилятора и
на определенную платформу (Windows, Linux или Mac).
Любая программа, написанная только на стандартном языке
программирования C будет компилироваться без изменений на любой платформе,
которая имеет соответствующие C реализации компилятора.
Хотя C обычно называется языком высокого уровня, это только язык
«высокого уровня» по сравнению с ассемблером, но значительно ниже уровнем,
чем большинство других языков программирования. [8, c.107]. Но в отличии от
большинства он дает программисту возможность полностью управлять
содержимым памяти компьютера. С не дает инструментов для проверки границ
массива или автоматической сборки мусора.
Руководство управления памятью обеспечивает программисту большую
свободу в настройке производительности программы, что особенно важно для
таких программ, как драйверы устройств. Однако, она также легко позволяет
случайно создать код с ошибками, вытекающих из ошибочных операций с
памятью, таких как переполнение буфера. Некоторые инструменты были созданы,
чтобы помочь программистам избежать этих ошибок, в том числе библиотеки для
проведения проверки границ массива и сбор мусора, и библиотеки проверки
исходного кода. Преднамеренное использование программ, написанных на С с
нуля и содержащих механизм переполнения буфера очень распространено во
многих компьютерных вирусов и очень популярно у хакеров, разрабатывающих
компьютерные черви.
Некоторые из выявленных недостатков С были рассмотрены и учтены в
новых языках программирования, полученных из Си. Язык программирования
Циклон имеет особенности, для защиты от ошибочных операций с памятью. C++
и Objective C обеспечивает конструкции предназначены для облегчения объектно-
ориентированного программирования. Java и C # добавили конструкции
объектно-ориентированное программирование, а также более высокий уровень
абстракции, например, автоматическое управление памятью.
Язык программирования С по стандарту ANSI, с небольшими изменениями
был принят в качестве стандарта ИСО за номером ISO 9899. Первое издание ISO
этого документа был опубликовано в 1990 (ISO 9899:1990).