2012-03-20 11 views
6

Estoy buscando un lenguaje de sistema de nivel superior, si es posible, adecuado para la verificación formal, que se compila en C estándar, de modo que se pueda ejecutar multiplataforma con (relativamente) poca sobrecarga.Lenguaje de sistema de alto nivel que compila a c?

Los dos más prometedores tales lenguajes He tropezado durante los últimos días son:

  1. BITC - Si bien los objetivos de diseño de este lenguaje se ajustan a mis necesidades (que incluso soporta el paradigma funcional), se está en un estado muy inestable, la documentación está desactualizada y, en general, parece una posibilidad muy remota para un proyecto del mundo real.

  2. Lisaac - Es compatible con el diseño por contrato, que es muy bueno y tiene una sobrecarga de rendimiento relativamente bajo. Sin embargo, el sitio web está muerto, no ha habido una nueva versión desde '08 y, en general, parece que el idioma está muerto.

También me gustaría señalar que no está destinado para un sistema en tiempo real, por lo que un GC o, en general, no determinismo (en el sentido en tiempo real), no es un problema.

El proyecto implica principalmente el procesamiento de audio, aunque tiene que ser multiplataforma.

Supongo que alguien me indicará la respuesta obvia: "plain ol 'C". Si bien es verdaderamente multiplataforma y muy efectiva, la cantidad de código probablemente sea mayor.

EDITAR: Debo aclarar que me refiero a cross-platform AND cross-architecture. Es por eso que considero solo los idiomas, compilados para C en primer lugar, pero si me puede señalar otro ejemplo, estaría agradecido :)

+6

¿Has mirado C++? Es (puede ser) un lenguaje de sistemas de alto nivel. –

+2

Sí, pero la complejidad introducida por C++ es, creo, no vale la pena el problema adicional. Además, cada compilador de esta tierra admite una parte diferente de los estándares de idioma y tiene, por ejemplo, excepciones, es un desastre. Lo mismo aplica para RTTI y generalmente cada característica que hace que C++ tenga un nivel superior. –

+0

Si realmente no te gusta C++, puedes echar un vistazo a D que tiene un GC entre otras cosas y es menos complejo que C++. Sin embargo, es mucho menos popular y no tiene tantas bibliotecas, pero puede interoperar con código C como C++. Ninguno de estos lenguajes compila en realidad a C, sino que compilan en código máquina. –

Respuesta

3

Creo que puede interesarme en ATS. Compila a C (en realidad expresa y explica muchos modismos y patrones en C desde una perspectiva formal de teoría de tipos, incluso se ha propuesto preparar un libro para mostrarlo, si tuviéramos más tiempo ...).

El proyecto implica principalmente el procesamiento de audio, aunque tiene que ser multiplataforma.

No sé mucho sobre el procesamiento de audio, he estado haciendo principalmente algunas cosas de gráficos de computadora (principalmente las cosas básicas, solo para probarlo).

Además, no estoy seguro de si ATS funciona en Windows (nunca lo intenté).

(Descargo de responsabilidad: He estado trabajando con ATS durante un tiempo. Es un lenguaje voluminoso y extenso, y algunas veces es difícil de usar, pero me gustó mucho la calidad de los programas que he podido producir con él, por ejemplo, véase el subdirectorio TEST en GLES2 bindings para algunos programas realistas)

+0

+1, esta es la respuesta más cercana hasta ahora a lo que necesito, sin embargo, desde un primer vistazo parece que el código C generado se requiere para ser compilado solo por GCC, que, aunque se ejecuta en muchas plataformas, no está disponible de forma ubicua. –

+0

@ K.Steff, si realmente necesita un lenguaje que se compila en C y que puede ser compilado por * any * C compiler, entonces es un problema. Sin embargo, creo que podría establecer algunos compiladores específicos (por ejemplo, GCC y Clang) que se ajusten a sus necesidades en este momento. Entonces podríamos trabajar juntos para hacer que ATS compilable a través de Clang (recuerdo que C files * did * compiló con Clang la última vez que lo intenté, pero había algunos encabezados "faltantes", así que ...). Si necesita alguna plataforma/compilador exótico, sea más específico; tal vez podamos resolverlo también. –

2

El siguiente no se adhieren estrictamente a los requisitos, pero me gustaría hablar de todos modos y que es demasiado largo para un comentario:

PyPy de RPython se puede traducir a C. Here's a nice talk about it. Se ha utilizado para implementar Smalltalk, JavaScript, Io, Scheme, Gameboy (con varios grados de integridad), pero puede escribir programas independientes en él. Es conocido principalmente por su implementación del lenguaje Python que runs on Intel x86 (IA-32) and x86_64 platforms.

El proceso de traducción requiere un compilador de C capaz.La cadena de herramientas proporciona medios para inferir varias cosas sobre el código (utilizado por el proceso de traducción en sí) que puede reutilizar para la verificación formal.

Si conoces tanto Python como C, puedes usar cython que traduce la sintaxis similar a Python a C. Se usa para escribir extensiones de CPython.

+0

Gracias, esto es algo útil, lo buscaré :) –

Cuestiones relacionadas