Подтвердить что ты не робот

Языки программирования, которые компилируются в исходный код C/С++?

Я использую CoffeeScript, чтобы упростить разработку JavaScript. Это язык с чистым синтаксисом, который компилируется в JavaScript.

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

4b9b3361

Ответ 1

Язык Haxe может выводиться на С++, С#, Java, JavaScript, Python (экспериментальный), PHP, Flash и NekoVM.

Ответ 2

Vala и Genie - это языки, которые используют систему типа GObject и скомпилируются с C код. Я никогда не использовал их, но они выглядят интересными. GObject - это система типов, используемая GTK, но я считаю, что она отделяется от GTK.

Ответ 3

Здесь HipHop, который преобразует PHP-программы в С++.

Ответ 4

OOC - очень новый, но довольно приятный.

Ответ 5

GHC (компилятор Glasgow Haskell) использовал параметр (-fvia-c) для компиляции на C.

Я считаю, что, начиная с версии v7, LLVM используется для генерации собственного кода вместо перехода через внешний компилятор C.

Ответ 6

Цитата Qt документация:

Компилятор мета-объектов, moc, - это программа, которая обрабатывает расширения Qt С++. Средство moc считывает заголовочный файл С++. Если он находит одну или несколько деклараций классов, содержащих макрос Q_OBJECT, он создает исходный файл С++, содержащий метаобъектный код для этих классов. Между прочим, мета-объектный код необходим для механизма сигналов и слотов, информации типа времени выполнения и динамической системы свойств. Исходный файл С++, сгенерированный moc, должен быть скомпилирован и связан с реализацией класса.

Итак, это похоже на С++, превратившийся в С++, я не уверен, соответствует ли он тому, что вы ищете.

Ответ 7

Язык программирования IBM Informix 4GL проходит через многоэтапное преобразование в C-код, который затем скомпилирован и связан с его собственной библиотекой времени исполнения, библиотеками времени исполнения ESQL/C (Embedded SQL in C) и библиотеками системы C.

  • program.4gl - исходный код
  • program.4ec - код C со встроенными ESQL/C и расширенными операциями ввода
  • program.ec - код C со встроенным ESQL/C
  • program.c - чистый код C
  • program.o - код объекта
  • program - исполняемый файл

Фаза .4ec - это своего рода историческая авария; изначально компилятор ESQL/C обрабатывал как расширенные операции ввода, так и ESQL/C, но когда расширенные операции были удалены из компилятора ESQL/C (когда библиотека и компилятор ESQL/C была значительно переписана), расширенные операции ввода были обработаны путем вырезания кода, который обрабатывал это из исходного компилятора ESQL/C.

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

Ответ 9

Я полагаю, вы могли бы написать C backend для LLVM, тогда вы могли бы перевести почти что угодно до C, но более глубокий вопрос был бы "почему?". Причина в том, что нет никаких инструментов, которые делают это сегодня, заключается в том, что если вы собираетесь скомпилировать до C, почему бы не пройти весь путь и не указать на какой-то промежуточный язык машинного кода? (Например, LLVM или JVM)

Теперь в старые времена идея компиляции до С была немного более оправдана, поскольку отсутствовали достойные языки vm, но сегодня не так уж много веских причин для этого. Тем не менее, вы все равно можете найти множество проектов, вокруг которых можно взять определенные интерпретируемые языки и попытаться скомпилировать их на C/С++. Например, вот питон для компилятора С++:

http://shed-skin.blogspot.com/

Ответ 10

Я слышал, что clang может скомпилировать С++ в C. Я сомневаюсь, что это будет "упрощать" что-либо.

Ответ 11

Можно утверждать, что, поскольку большинство основных языков программирования Turing-complete, они фактически эквивалентны, и написанные в них программы могут быть переведены в каждый другие.

Тем не менее, как отмечали другие люди, существует немало языков, для которых существуют (или использовались ранее) их разработки, которые создают код C, поскольку это устраняет сложности, связанные с генерированием двоичного кода из языковая реализация. Это ни в коем случае не означает (ненамеренный каламбур), что указанный код действительно читаем - он был просто более читабельным, чем его скомпилированная форма.

Что касается моего вклада в список, lex и yacc "программы" (если их можно считать такими), как правило, преобразуются в C-код - ужасный, запутанный беспорядок, но C-код тем не менее...

Ответ 12

Большинство языков могут использоваться для генерации кода C, но это действительно зависит от того, что вы пытаетесь сделать. Вы действительно хотите, чтобы иметь возможность читать код? Вы просто пытаетесь создать приложения Windows?

Если вы ищете универсально полезный язык, который легко учится, Python всегда является хорошим выбором, и он может делать все, что может сделать C/С++.

Ответ 13

Oracle PRO * C/С++ - это встроенный язык SQL. Он позволяет включать SQL-запросы в C/С++, которые обрабатываются прекомпилером, который заменяет встроенные операторы SQL вызовами функций на необходимые библиотеки C/С++ SQL. Выход из прекомпилятора является стандартным C/С++, который затем может быть скомпилирован для исполняемого файла.

http://en.wikipedia.org/wiki/Pro*C
http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14407/toc.htm

Ответ 14

Подмножество Matlab (Embedded Matlab) может быть скомпилировано для C. Вам нужна панель инструментов встроенного кодера.