C--

Поделись знанием:
Перейти к: навигация, поиск

C-- (читается как Си минус минус) — название для нескольких независимо развитых языков программирования. Цель этих языков состоит в том, чтобы заменить язык программирования C другим портируемым языком, который ближе привязан к компьютерным аппаратным средствам. Его создатели, исследователи функционального программирования Саймон Пейтон Джонс (Simon Peyton Jones) и Норман Рамси (Norman Ramsey), спроектировали его так, чтобы код на нём преимущественно генерировался компиляторами сверхвысокоуровневых языков программирования, а не программистами. В отличие от других промежуточных языков, сгенерированный результат представляется в виде обычного текста, а не в виде байткода или в двоичном формате.





Проектирование языка

К:Википедия:Статьи без источников (тип: не указан)

C-- является «портируемым языком ассемблера», спроектированным для облегчения задачи реализации компиляторов, которые генерируют высококачественный машинный код. При этом результат работы таких компиляторов делегируется компилятору C--, который уже, в свою очередь, занимается более сложной задачей генерации низкоуровневого кода и его оптимизации.

Работа над C-- началась в конце 1990-х. Поскольку написание кодогенератора само по себе является довольно сложной задачей, а бэкенды, которые были доступны исследователям тех годов, были сложными и плохо документированными, было создано несколько проектов компиляторов, которые генерировали код на C (например, был создан компилятор языка Модула-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, который может быть типом результата выражения, а также может использоваться для управления выполнением программы и не может быть сохранён в регистре или в памяти.

См. также

Напишите отзыв о статье "C--"

Ссылки

  • [web.archive.org/web/20080822062234/www.cminusminus.org/ Домашняя страница C-- (из архива)]  (англ.)

Sphinx C--

Название «C--» также использовалось для языка программирования, разработанного в 1990-х годах Питером Селликом (Peter Cellik) для компьютеров на платформе x86. Sphinx C-- является низкоуровневым языком программирования (по сути, ассемблером x86), но с некоторыми мнемоническими и синтаксическими элементами языка C.

Ссылки

  • [c--sphinx.narod.ru/ Sphinx C-- (рус., англ.)]
  • [www.goosee.com/cmm/ О Sphinx C-- в Windows и MenuetOS]  (англ.)
  • [www.cs.utexas.edu/users/tbone/c--/ Неофициальная страница о Sphinx C--]  (англ.)
  • [sourceforge.net/projects/c--/ Проект Open Sphinx C-- на SourceForge.Net]  (англ.)
  • [democoder.ru/article/6 Статья о Sphinx C-- на Democoder.Ru]  (рус.)
  • [habrahabr.ru/company/kolibrios/blog/303582/ Sphinx C-- в блоге KolibriOS на Хабре]  (рус.)


К:Википедия:Статьи без источников (тип: не указан)

Отрывок, характеризующий C--

Несвицкий, отдуваясь, поднялся и, улыбаясь, подошел к генералу.
– Не угодно ли закусить вашему превосходительству? – сказал он.
– Нехорошо дело, – сказал генерал, не отвечая ему, – замешкались наши.
– Не съездить ли, ваше превосходительство? – сказал Несвицкий.
– Да, съездите, пожалуйста, – сказал генерал, повторяя то, что уже раз подробно было приказано, – и скажите гусарам, чтобы они последние перешли и зажгли мост, как я приказывал, да чтобы горючие материалы на мосту еще осмотреть.
– Очень хорошо, – отвечал Несвицкий.
Он кликнул казака с лошадью, велел убрать сумочку и фляжку и легко перекинул свое тяжелое тело на седло.
– Право, заеду к монашенкам, – сказал он офицерам, с улыбкою глядевшим на него, и поехал по вьющейся тропинке под гору.
– Нут ка, куда донесет, капитан, хватите ка! – сказал генерал, обращаясь к артиллеристу. – Позабавьтесь от скуки.
– Прислуга к орудиям! – скомандовал офицер.
И через минуту весело выбежали от костров артиллеристы и зарядили.
– Первое! – послышалась команда.
Бойко отскочил 1 й номер. Металлически, оглушая, зазвенело орудие, и через головы всех наших под горой, свистя, пролетела граната и, далеко не долетев до неприятеля, дымком показала место своего падения и лопнула.
Лица солдат и офицеров повеселели при этом звуке; все поднялись и занялись наблюдениями над видными, как на ладони, движениями внизу наших войск и впереди – движениями приближавшегося неприятеля. Солнце в ту же минуту совсем вышло из за туч, и этот красивый звук одинокого выстрела и блеск яркого солнца слились в одно бодрое и веселое впечатление.


Над мостом уже пролетели два неприятельские ядра, и на мосту была давка. В средине моста, слезши с лошади, прижатый своим толстым телом к перилам, стоял князь Несвицкий.
Он, смеючись, оглядывался назад на своего казака, который с двумя лошадьми в поводу стоял несколько шагов позади его.
Только что князь Несвицкий хотел двинуться вперед, как опять солдаты и повозки напирали на него и опять прижимали его к перилам, и ему ничего не оставалось, как улыбаться.
– Экой ты, братец, мой! – говорил казак фурштатскому солдату с повозкой, напиравшему на толпившуюся v самых колес и лошадей пехоту, – экой ты! Нет, чтобы подождать: видишь, генералу проехать.
Но фурштат, не обращая внимания на наименование генерала, кричал на солдат, запружавших ему дорогу: – Эй! землячки! держись влево, постой! – Но землячки, теснясь плечо с плечом, цепляясь штыками и не прерываясь, двигались по мосту одною сплошною массой. Поглядев за перила вниз, князь Несвицкий видел быстрые, шумные, невысокие волны Энса, которые, сливаясь, рябея и загибаясь около свай моста, перегоняли одна другую. Поглядев на мост, он видел столь же однообразные живые волны солдат, кутасы, кивера с чехлами, ранцы, штыки, длинные ружья и из под киверов лица с широкими скулами, ввалившимися щеками и беззаботно усталыми выражениями и движущиеся ноги по натасканной на доски моста липкой грязи. Иногда между однообразными волнами солдат, как взбрызг белой пены в волнах Энса, протискивался между солдатами офицер в плаще, с своею отличною от солдат физиономией; иногда, как щепка, вьющаяся по реке, уносился по мосту волнами пехоты пеший гусар, денщик или житель; иногда, как бревно, плывущее по реке, окруженная со всех сторон, проплывала по мосту ротная или офицерская, наложенная доверху и прикрытая кожами, повозка.
– Вишь, их, как плотину, прорвало, – безнадежно останавливаясь, говорил казак. – Много ль вас еще там?
– Мелион без одного! – подмигивая говорил близко проходивший в прорванной шинели веселый солдат и скрывался; за ним проходил другой, старый солдат.
– Как он (он – неприятель) таперича по мосту примется зажаривать, – говорил мрачно старый солдат, обращаясь к товарищу, – забудешь чесаться.
И солдат проходил. За ним другой солдат ехал на повозке.
– Куда, чорт, подвертки запихал? – говорил денщик, бегом следуя за повозкой и шаря в задке.
И этот проходил с повозкой. За этим шли веселые и, видимо, выпившие солдаты.
– Как он его, милый человек, полыхнет прикладом то в самые зубы… – радостно говорил один солдат в высоко подоткнутой шинели, широко размахивая рукой.
– То то оно, сладкая ветчина то. – отвечал другой с хохотом.
И они прошли, так что Несвицкий не узнал, кого ударили в зубы и к чему относилась ветчина.
– Эк торопятся, что он холодную пустил, так и думаешь, всех перебьют. – говорил унтер офицер сердито и укоризненно.