2012-03-20 4 views
6

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

два наиболее перспективных таких языков, я споткнулся в течение последних нескольких дней являются:

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

  2. Lisaac - Он поддерживает дизайн по контракту, который очень крут и имеет относительно низкие эксплуатационные издержки. Тем не менее, веб-сайт мертв, с 2008 года не было новой версии, и, как правило, кажется, что язык мертв.

Я хотел бы также отметить, что это не означает для системы реального времени, поэтому GC или, как правило, не детерминизм (в том смысле, в реальном масштабе времени), это не является проблемой.

Проект включает в основном обработку звука, хотя он должен быть кросс-платформенным.

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

EDIT: Я должен уточнить, что я имею в виду межплатформенную и кросс-архитектуру. Вот почему я рассматриваю только языки, скомпилированные с C в первую очередь, но если вы можете указать мне на другой пример, я был бы благодарен :)

+6

Вы посмотрели на C++? Это (может быть) язык систем высокого уровня. –

+2

Да, но сложность, введенная C++, я чувствую, не стоит лишних неприятностей. Кроме того, каждый компилятор на этой земле поддерживает другую часть языковых стандартов и имеет, например, исключений, является беспорядком. То же самое касается RTTI и вообще каждой функции, которая делает C++ более высокий уровень. –

+0

Если вам действительно не нравится C++, вы можете взглянуть на D, который имеет GC среди прочего и менее сложный, чем C++. Это намного менее популярно, хотя и не так много библиотек, но он может взаимодействовать с C-кодом, например C++. Ни один из этих языков на самом деле не компилируется на C, они компилируются в машинный код. –

ответ

3

Я думаю, вас может заинтересовать ATS. Он компилируется в C (на самом деле он выражает и объясняет многие идиомы и шаблоны C с формальной теоретико-теоретической точки зрения, даже было предложено подготовить книгу, чтобы показать это, если бы у нас было больше времени ...).

Проект включает в основном обработку звука, хотя он должен быть кросс-платформенным.

Я не очень разбираюсь в обработке аудио, я в основном занимаюсь некоторыми материалами компьютерной графики (в основном основные вещи, просто чтобы попробовать).

Кроме того, я не уверен, работает ли ATS в Windows (никогда не пробовал это).

(Отказ от ответственности: Я работаю с ATS в течение некоторого времени. Это громоздкий и большой язык, а иногда и сложный в использовании, но мне очень понравилось качество программ, которые я смог произвести с ним, например, см подкаталог TEST в GLES2 bindings для некоторых реалистичных программ)

+0

+1 Это самый близкий ответ на то, что мне нужно, однако с первого взгляда кажется, что сгенерированный код C требуется скомпилировать только GCC, который, хотя и работает на многих платформах, не является повсеместно доступным. –

+0

@ K.Steff, если вам действительно нужен язык, который компилируется в C, который может быть скомпилирован * любым компилятором * C, тогда это проблема. Тем не менее, я думаю, вы могли бы решить некоторые конкретные компиляторы (например, GCC и Clang), которые подойдут вашим потребностям на данный момент. Затем мы могли бы работать вместе, чтобы сделать ATS компилируемым через Clang (я помню, что файлы C * * * компилировались с Clang в прошлый раз, когда я пытался, но были некоторые «отсутствующие» заголовки, поэтому ...). Если вам нужна экзотическая платформа/компилятор, то, пожалуйста, будьте более конкретными; может быть, мы тоже с этим справимся. –

2

следующая не строго придерживаться требований, но я хотел бы отметить, это в любом случае, и это слишком долго для комментариев:

PyPy-х RPython можно перевести на C. Here's a nice talk about it. Он используется для реализации Smalltalk, JavaScript, Io, Scheme, Gameboy (с различной степенью полноты), но вы можете писать в нем автономные программы. Он известен в основном за его реализацию языка Python, который runs on Intel x86 (IA-32) and x86_64 platforms.

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

Если вы знаете как Python, так и C, вы можете использовать cython, который преобразует синтаксис типа Python в C. Он используется для записи расширений CPython.

+0

Спасибо, это что-то полезное, я посмотрю его :) –

Смежные вопросы