Си (язык программирования): различия между версиями

[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
уточнение
→‎Обзор: уточнение
Строка 21:
Язык программирования Си отличается минимализмом. Авторы языка хотели, чтобы программы на нём легко компилировались с помощью однопроходного [[компилятор]]а, чтобы каждой элементарной составляющей программы после компиляции соответствовало весьма небольшое число машинных команд, а использование базовых элементов языка не задействовало [[библиотека (программирование)|библиотеку]] времени выполнения. Однопроходный компилятор компилирует программу, не возвращаясь назад, к уже обработанному тексту. Поэтому использованию [[функция (программирование)|функции]] и переменных должно предшествовать их объявление. Код на Си можно легко писать на низком уровне [[абстракция (программирование)|абстракции]], почти как на [[язык ассемблера|ассемблере]]. Иногда Си называют «универсальным ассемблером» или «ассемблером высокого уровня», что отражает различие языков ассемблера для разных платформ и единство стандарта Си, код которого может быть скомпилирован без изменений практически на любой модели [[компьютер]]а. Си часто называют языком ''среднего уровня'' или даже ''низкого уровня'', учитывая то, как близко он работает к реальным устройствам. Однако, в строгой классификации, он является языком высого уровня.
 
Компиляторы Си разрабатываются сравнительно легко благодаря относительно низкому уровнюпростоте языка и скромномумалому размеру наборустандартной элементовбиблиотеки. Поэтому данный язык доступен на самых различных платформах (возможно, круг этих платформ шире, чем у любого другого существующего языка). К тому же, несмотря на свою низкоуровневую природу, язык позволяет создавать переносимые программы и поддерживает в этом программиста. Программы, соответствующие стандарту языка, могут компилироваться на самых различных компьютерах.
 
Си (как и ОС [[UNIX]], с которой он долгое время был связан) создавался программистами и для программистов, круг которых был бы ненамного шире круга разработчиков языка. Несмотря на это, область использования языка значительно шире задач системного программирования.
Строка 33:
* непосредственный доступ к [[компьютерная память|памяти компьютера]] через использование [[указатель (тип данных)|указателей]];
* минимальное число ключевых слов;
* передачу [[параметр]]ов в функцию по значению, а не по ссылке (при этом передача по ссылке выполняетсяэмулируется с помощью указателей);
* указатели на функции и статические [[переменная|переменные]]
<!-- , позволяющие реализовать [[замыкание (программирование)|замыкание]] и простой [[полиморфизм]] -->;
Строка 39:
* [[Запись (тип данных)|записи]] — определяемые пользователем собирательные типы данных (структуры), которыми можно манипулировать как одним целым;
 
Вот некоторые особенности других языков программирования, которых '''не''' имеет Си:
* автоматическое [[управление памятью]];
* поддержка [[объектно-ориентированное программирование|объектно-ориентированного программирования]] (при этом первые версии [[C++]] генерировали код программы на языке Си);