C--
C--, (читается как Cи минус минус), — название для нескольких независимо развитых языков программирования. Цель этих языков состоит в том, чтобы заменить язык программирования C другим портируемым языком, который ближе привязан к компьютерным аппаратным средствам. Его создатели, исследователи функционального программирования Simon Peyton Jones и Norman Ramsey, спроектировали его так, чтобы код на нём преимущественно генерировался компиляторами сверхвысокоуровневых языков программирования, а не программистами. В отличие от других промежуточных языков сгенерированный результат представляется в виде обычного текста, а не в виде байткода или в двоичном формате.
Проектирование языка
C-- является «портируемым языком ассемблера», спроектированным для облегчения задачи реализации компиляторов, которые генерируют высококачественный машинный код. При этом, результат работы таких компиляторов делегируется компилятору C--, который уже в свою очередь занимается более сложной задачей генерации низкоуровневого кода и его оптимизации.
Работа над C-- началась в конце 1990-х. Поскольку написание кодогенератора само по себе является довольно сложной задачей, а бек-енды, которые были доступны исследователям тех годов, были сложными и плохо документироваными, было создано несколько проектов компиляторов, которые генерировали код на C (например, был создан компилятор языка Modula-3). Однако, язык C является плохим выбором для функциональных языков программирования: в нём нет поддержки хвостовой рекурсии, сборки мусора и эффективной обработки исключительных ситуаций. C-- является более простой альтернативой языку C, в котором присутствует поддержка всех этих возможностей. Самой инновационной особенностью в нём является интерфейс для времени исполнения, который позволяет создавать переносимые сборщики мусора, системы поддержки исключений и другие свойства, которые будуть работать с любым компилятором C--.
Синтаксис языка позаимствован в основном из языка C. C-- исключает или меняет использование некоторых стандартных возможностей C, таких как функции с переменным числом аргументов, синтаксис указателей, а также аспекты системы типов C, поскольку это препятствует неотъемлемым возможностям языка C--, а также простоте, с которой инструменты кодогенерации могут их использовать. Так, например, в C-- не требуется явного объявления типа переменных, в нём отсутствуют структуры и указатели.
Название языка является в некотором роде шуточным, указывая на то, что C-- является уменьшенной формой C, точно так, как C++ является расширенной формой C. (В языках C и C++ операции «--» и «++» обозначают уменьшение или увеличение переменной на 1.)
C-- является целевой платформой для Glasgow Haskell Compiler. Некоторые из разработчиков C--, включая Simon Peyton Jones, João Dias и Norman Ramsey, работают или принимали участие в разработке Glasgow Haskell Compiler. Кодовая база и разработка GHC базируются в Microsoft Research в Кембридже, хотя это не проект Microsoft.
Система типов
Система типов в C-- преднамеренно спроектирована так, чтобы отображать ограничения, налагаемые аппаратным обеспечением компьютера, а не традициями систем типов более высокоуровневых языков. В C-- значение, хранимое в регистрах или памяти, может быть только одного типа — битовый вектор. Однако, битовый вектор является полиморфным типом и может быть разного размера: например, 8-битный или 32-битный. Кроме того, кроме битового вектора C-- также предоставляет булевский тип bool, который может быть типом результата выражения, а также может использоваться для управления выполнением программы и не может быть сохранён в регистре или в памяти.
Sphinx C--
Название «C--» также использовалось для языка программирования, разработанного в 1990-х годах Питером Келликом (Peter Cellik) для компьютеров на платформе x86. Sphinx C-- является низкоуровневым языком программирования (по сути ассемблером x86), но с некоторыми мнемоническими и синтаксическими элементами языка C.
См. также
Ссылки
- Домашняя страница C-- (англ.)
- Sphinx C-- (рус., англ.)
- О Sphinx C-- в Windows и MenuetOS (англ.)
- Неофициальная страница о Sphinx C-- (англ.)
- Проект Open Sphinx C-- на SourceForge.Net (англ.)
- Статья о Sphinx C-- на Democoder.Ru (рус.) (Ссылка
неработает)
SQL | Это незавершённая статья о компьютерных языках. Вы можете помочь проекту, исправив и дополнив её. |
Если вам нравится SbUP.com Сайт, вы можете поддержать его - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 и ещё....