Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИВТ 21-30.doc
Скачиваний:
55
Добавлен:
17.09.2019
Размер:
283.14 Кб
Скачать

30. Языки программирования Си. Элементы языка Си. Типы данных. Константы. Функции. Компиляторы и интерпретаторы.

Си (англ. C) — стандартизированный процедурный язык программирования, разработанный в начале 1970-х годовсотрудниками Bell Labs Кеном Томпсоном и Деннисом Ритчи как развитие языка Би. Си был создан для использования воперационной системе UNIX. С тех пор он был портирован на многие другие операционные системы и стал одним из самых используемых языков программирования. Си ценят за его эффективность. Он является самым популярным языком для создания системного программного обеспечения. Его также часто используют для создания прикладных программ. Несмотря на то, что Си не разрабатывался для новичков, он активно используется для обучения программированию. В дальнейшемсинтаксис языка Си стал основой для многих других языков.

Для языка Си характерны лаконичность, стандартный набор конструкций управления потоком выполнения, структур данных и обширный набор операций.

Система типов в Си подобна типам в других потомках Алгола, таких, как Паскаль. В Си имеются типы целых чисел различных размеров (short int, long int), со знаком (signed) и без (unsigned), чисел с плавающей запятой (float, double), символов, перечисляемых типов (enum) и записей-структур (struct). Кроме того, язык Си предлагает тип объединение (union), с помощью которого можно либо хранить в одном месте памяти разнородные данные, не пересекающиеся по времени существования (это позволяет экономить память), либо обращаться к содержимому участка памяти, как к данным разных типов (что позволяет менять тип-интерпретацию данных, не меняя сами данные).

В языке возможно преобразование типов, но оно не всегда происходит автоматически. Только разные типы числовых данных полностью совместимы друг с другом. При таком преобразовании компилятор может выдать только предупреждение. Чтобы полностью обезопасить себя от ошибок такого рода, можно использовать программуlint.[1]

Известные компиляторы:

  • BDS C

  • Borland C++

  • C++ Builder

  • Clang

  • Decus C

  • Digital Mars

  • DJGPP

  • GNU Compiler Collection

  • Intel C++ compiler

  • LCC

  • Microsoft Visual Studio

  • MinGW

  • Open Watcom

  • Pelles C

  • Portable C Compiler

  • Oracle Solaris Studio

  • Topspeed JPI C

  • Tiny C Compiler

Компиляторы на динамические языки и платформы

Иногда, в целях переноса тех или иных библиотек, функций и инструментов, написанных на Си, в иную среду, требуется компиляция Си-кода на язык более высокого уровня или в код виртуальной машины, предназначенной для такого языка.

Следующие проекты предназначены для этих целей:

  • Clue[9] — компилятор из ANSI Си в LuaJavaScriptPerlJavaCommon Lisp.

  • Alchemy[10] — компилятор из Си/C++ в ActionScript Virtual Machine (AVM2). Позволяет использовать Си-библиотеки в Flash- и Adobe AIR-приложениях.

  • AMPC[11] — компилятор из Си в виртуальную машину Java.

  • Emscripten[12] — компилятор из LLVM-байтокода (например, полученный из C++) в JavaScript.

Вот некоторые особенности других языков программирования, которых не имеет Си:

  • автоматическое управление памятью;

  • поддержка объектно-ориентированного программирования (при этом первые версии C++ генерировали код программы на языке Си);

  • замыкание;

  • вложенные функции (существуют компиляторы языка Си реализующие эту функцию, например компилятор GNU);

  • полиморфизм функций и операторов;

  • встроенная поддержка многозадачности и сети

  • функции высшего порядка

  • карринг.