Pregunta

Me preguntaba si hay un lenguaje de programación que compila a código de máquina / binaria (no código de bytes y luego ejecutado por una máquina virtual, que es algo completamente diferente al considerar la tipificación) que cuenta con dinámica y / escribir o débil, por ejemplo:

Piense en un lenguaje compilado donde:

  • Las variables no necesitan ser declarados
  • Las variables se pueden crear en tiempo de ejecución
  • funciones pueden devolver valores de diferentes tipos

Preguntas:

  • ¿Hay un lenguaje de programación tal?
  • (Por qué) no?

Creo que un tipo dinámico, pero fuerte, lenguaje compilado haría muy sentido, pero ¿es posible?

¿Fue útil?

Solución

Creo que encaja en esa descripción Lisp.

http://en.wikipedia.org/wiki/Common_Lisp

Otros consejos

Objetivo-C podría tener algunas de las propiedades que usted busca. Las clases pueden ser abiertos y alteradas en tiempo de ejecución, y se puede enviar cualquier tipo de mensaje a un objeto, ya sea por lo general responde a él o no. De esta manera, se puede implementar la tipificación de pato, al igual que en Ruby. El id tipo, más o menos equivalente a una void*, puede estar dotado de interfaces que especifica un contrato que el tipo (por lo demás desconocido) se adhiere a.

C # 4.0 tiene muchas, si no todas estas características. Si realmente quiere código máquina nativo, puede compilar el código de bytes hacia abajo a código de máquina mediante una utilidad.

En particular, el uso de la palabra clave dynamic permite que los objetos y sus miembros para estar unidos dinámicamente en tiempo de ejecución.

Salida de vídeo de Anders Hejlsberg, El futuro de C #, para una imprimación:

http://channel9.msdn.com/pdc2008/TL16/

Objetivo-C tiene muchas de las características que mencionas: se compila a código máquina y está efectivamente tipos dinámicos con respecto a las instancias de objeto. El tipo id puede almacenar cualquier mensaje de instancia de clase y los usos de Objective-C en lugar de pasar las llamadas a funciones miembro. Los métodos pueden ser creados / añadido en tiempo de ejecución. El tiempo de ejecución de Objective-C puede también variables de instancia de clase sintetizan al tiempo de ejecución, pero las variables locales todavía tienen que ser declaradas (al igual que en C).

C # 4.0 tiene muchas de estas características, excepto que se compila a IL (bytecode) y se interpreta usando una máquina virtual (CLR). Esto nos lleva a un punto interesante, sin embargo: si el código de bytes es justo-a-tiempo compilado a código máquina, hace que el recuento? Si es así, se abre la puerta, no sólo para cualquiera de los lenguajes .NET, pero Python (ver PyPy o Unladed Swallow o IronPython ) y Ruby (ver MacRuby o IronRuby ) y muchos otros lenguajes de tipado dinámico, no menciona las variantes de muchos LISP.

Sí, es posible. Ver Julia . Es un lenguaje dinámico (se puede escribir programas sin tipos), pero nunca se ejecuta en una máquina virtual. Se compila el programa a código nativo en tiempo de ejecución (compilación JIT).

En una vena similar a Lisp, hay Factor , una lengua por concatenación con * ninguna variable por defecto, tipado dinámico, y un sistema de objetos flexibles. Factor código se puede ejecutar en el intérprete interactivo, o compilado a un ejecutable nativo usando su función deploy.

*-punto libre basado en pila funcional

VB 6 tiene la mayoría de que

No sé de cualquier lenguaje que tiene exactamente esas capacidades. Se me ocurren dos que tiene un subconjunto significativo, sin embargo:

  • D tiene la inferencia de tipos, la recolección de basura, y poderosas instalaciones de metaprogramación, sin embargo, se compila a código de máquina eficiente. No tiene tipado dinámico, sin embargo.
  • C # puede ser compilado directamente a código de máquina a través del proyecto mono. C # tiene un conjunto de características similares a D, pero de nuevo sin necesidad de escribir dinámico.

Python a C probablemente necesita estos criterios.

  1. Escribir en Python.

  2. Compilar Python para ejecutable. Ver para convertir simple script en Python a Windows ejecutable . También vea de Python a C?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top