Pregunta

Me interesan los compiladores, los intérpretes y los idiomas.

¿Cuál es el lenguaje más interesante, pero olvidado o desconocido que conoces? Y lo más importante, ¿por qué?

Me interesan los lenguajes compilados, interpretados y VM, pero no lenguajes esotéricos como Whitespace o BF.
El código abierto sería una ventaja, por supuesto, ya que planeo estudiar y espero aprender de él.

¿Fue útil?

Solución

Me encantan los compiladores y máquinas virtuales, y me encanta Lua.

Lua no es tan compatible como muchos otros lenguajes de secuencias de comandos, pero desde una mentalidad como la suya, estoy seguro de que también se enamorará de Lua. Quiero decir que es como lisp, (puede hacer cualquier cosa lisp que yo sepa), tiene muchas de las características principales de ADA, además tiene metamprogramación incorporada, con programación funcional y programación orientada a objetos lo suficientemente floja como para hacer que cualquier tipo del idioma de dominio que desee. Además, el código de la máquina virtual es un C simple, lo que significa que puede profundizar fácilmente en él para apreciarlo incluso a ese nivel.

(Y es una licencia MIT de código abierto)

Otros consejos

Soy un fan del lenguaje de programación D Aquí hay un artículo de Wikipedia y intro del sitio oficial .

Algunos fragmentos del artículo de Wikipedia:

  

El lenguaje de programación D, también conocido simplemente como D, es un lenguaje de programación de sistema multiparadigma orientado a objetos, imperativo por Walter Bright de Digital Mars. Se originó como una reingeniería de C ++, pero aunque está predominantemente influenciado por ese lenguaje, no es una variante de C ++. D ha rediseñado algunas características de C ++ y ha sido influenciado por conceptos utilizados en otros lenguajes de programación, como Java, C # y Eiffel. Una versión estable, 1.0, se lanzó el 2 de enero de 2007. Una versión experimental, 2.0, se lanzó el 17 de junio de 2007.

sobre características:

  

D está siendo diseñado con lecciones aprendidas del uso práctico de C ++ en lugar de desde una perspectiva teórica. Aunque utiliza muchos conceptos de C / C ++, también descarta algunos y, como tal, no es estrictamente compatible con el código fuente de C / C ++. Se agrega a la funcionalidad de C ++ al implementar también el diseño por contrato, pruebas unitarias, módulos verdaderos, recolección de basura, matrices de primera clase, matrices asociativas, matrices dinámicas, segmentación de matrices, funciones anidadas, clases internas, cierres [2], funciones anónimas, Ejecución de la función de tiempo de compilación, evaluación diferida y tiene una sintaxis de plantilla rediseñada. D conserva la capacidad de C ++ para hacer codificación de bajo nivel, y se suma a ella con soporte para un ensamblador en línea integrado. La herencia múltiple de C ++ se reemplaza por la herencia única de estilo Java con interfaces y mixins. La sintaxis de declaración, declaración y expresión de D coincide estrechamente con la de C ++.

Supongo que mucho depende de lo que quieras decir con 'no convencional'.

¿ lisp no se considerará convencional?

Yo sugeriría echar un vistazo a Erlang: se ha estado poniendo un poco de prensa recientemente, por lo que algunos de los recursos de aprendizaje son excelentes. Si ha usado OO y / o lenguajes de procedimiento, Erlang definitivamente va a concentrarse en nuevas y emocionantes formas.

Erlang es un lenguaje funcional puro, con soporte básico para programas concurrentes, distribuidos y tolerantes a fallas. Tiene una serie de características interesantes, incluido el hecho de que las variables no son realmente variables, no se pueden cambiar una vez declaradas y, de hecho, se entienden mejor como una forma de patrón.

Se habla un poco en la blogósfera sobre cómo construir sobre la plataforma Erlang (OTP) y el soporte de la máquina para otros idiomas como Ruby. Erlang se convertiría en un tipo de máquina virtual para ejecutar aplicaciones concurrentes, lo que sería bastante emocionante. posibilidad.

Recientemente me he enamorado de Ocaml y lenguajes funcionales en general.

Ocaml, por ejemplo, ofrece lo mejor de todos los mundos posibles. Obtiene código que se compila en lenguaje de máquina nativo ejecutable tan rápido como C, o código de byte universalmente portátil. Obtiene un intérprete para llevar la velocidad de REPL al desarrollo. Usted obtiene todo el poder de la programación funcional para producir estructuras perfectamente ortogonales, recursión profunda y verdadero polimorfismo. Encima de todo esto está el soporte para la Orientación a objetos, que en el contexto de un lenguaje funcional que ya proporciona todo lo que promete OOP (encapsulación, modularización, funciones ortogonales y reciclabilidad polimórfica), significa OOP que se obliga a demostrar su valía.

Smalltalk (vea la discusión que se encuentra aquí) . Una especie de abuelo de los lenguajes dinámicos (con la posible excepción de Lisp y SNOBOL). Muy agradable para trabajar y tristemente pisoteado por Java y ahora los nuevos lenguajes como Python y Ruby.

FORTH fue un lenguaje diseñado para código de bajo nivel en las primeras CPU. Su característica más notable fue RPN basado en operaciones matemáticas. El mismo tipo de matemática utilizada en las primeras calculadoras HP. Por ejemplo, 1 + 2 + 3 + 4 = se escribiría como 1, 2, 3, 4, +, +, +

Haskell y REBOL son lenguajes fascinantes, por razones muy diferentes.

Haskell realmente puede abrir los ojos como desarrollador, con conceptos como mónadas, aplicación parcial, coincidencia de patrones, tipos algebraicos, etc. Es una mezcla heterogénea para el programador curioso.

REBOL tampoco se queda atrás. Es engañosamente simple al principio, pero cuando empiezas a profundizar en conceptos como contextos, dialectos PARSE y Bindology, te das cuenta de que hay mucho más de lo que se ve a simple vista. Lo bueno de REBOL es que es mucho más fácil comenzar con él que con Haskell.

No puedo decidir cuál me gusta más.

Boo se dirige al marco .NET y es de código abierto. Inspirado en Python.

Pruebe colorForth .

PROLOG es un lenguaje basado en reglas con funcionalidad back-track. Puede producir código muy legible para los humanos (como en prosa).

Encuentro interesantes los lenguajes de restricción, pero es difícil saber qué constituye olvidado o desconocido. Aquí hay algunos idiomas que conozco (ciertamente esta no es una lista exhaustiva de ningún tipo):

  • Ciao , YAP , SWI-Prolog , y GNU Prolog son todas implementaciones de Prolog. Creo que todos son de código abierto. Ciao, gnu prolog, y probablemente los otros también, como es común en las implementaciones de Prolog, soportan otros tipos de restricciones. Programación de enteros por ejemplo.
  • Mozart y Mercury son, según tengo entendido, lenguajes de programación de lógica alternativa.
  • Alice es más en la familia ML, pero admite la programación de restricciones usando el GECODE biblioteca de C ++.

Derivando un poco del tema ...

  • Maude es un término interesante para reescribir el lenguaje.
  • HOL y COQ son sistemas de prueba mecanizados que se utilizan comúnmente en la comunidad de idiomas.

Lambda-the-Ultimate es un buen lugar para hablar y aprender más sobre los lenguajes de programación .

Tendría que decir Scheme, especialmente en su R6RS encarnación.

Modula-2 es el lenguaje no convencional que he encontrado más interesante. Parece convencional, pero no funciona como a lo que estamos acostumbrados. Hereda mucho de Pascal y, sin embargo, es lo suficientemente diferente como para proporcionar interesantes posibilidades de aprendizaje.

Eche un vistazo a Io en http://www.iolanguage.com/ o Lisaac en: https://gna.org/projects/isaac/ o Self en: http://self.sourceforge.net/ o Sather (ahora absolutamente olvidado) o Eiffel http://www.eiffel.com

Por qué aquí hay algunas razones. Io es absolutamente minimalista y ni siquiera tiene "elementos de flujo de control". como entidades sintácticas. Lisaad es un seguimiento de Eiffel con muchas simplificaciones AFAIKT. Self es un seguimiento de Smalltalk e Io también ha tomado bastante de Self. Lo básico es que se ha abandonado la distinción entre Clase y Objeto. Sather es una respuesta a Eiffel con algunas otras reglas y un mejor soporte para la programación funcional (desde el principio).

Y Eiffel es definitivamente un sello distintivo para los idiomas OO tipificados estáticamente. Eiffel fue el primer lenguaje con soporte para diseño por contrato, genéricos (también conocido como plantillas) y una de las mejores formas de manejar la herencia. Fue y es uno de los lenguajes más simples aún. Por mi parte, encontré las mejores bibliotecas para Eiffel .....

El creador solo tiene un problema, no aceptó otras contribuciones al campo OO .....

Saludos

Recientemente aprendí de el existencia del Icon de esta pregunta . Desde entonces lo he usado en respuestas a varias preguntas. ( 1 , 2 , 3 , 4 )

Es interesante debido a su estrategia de evaluación: es el único lenguaje imperativo que conozco que soporta el retroceso. Permite un buen código sucinto para muchas cosas :)

Aprender cualquier lenguaje que requiera que reconsideres tus hábitos de programación es imprescindible. Una señal segura es el ritmo al que hojea la documentación del núcleo de un idioma (no la biblioteca). Significado rápido infructuoso aquí.

Mi lista breve sería, en mi orden de exposición y cuáles fueron los conceptos que aprendí de ellos:

  • Asamblea, C: ideal para aprender punteros y su aritmética.
  • C ++: igual que C con una introducción a los genéricos, siempre que pueda soportar la sintaxis increíblemente verbosa.
  • Ruby / Lua: lenguajes de script, escritos dinámicamente, escribiendo enlaces para las bibliotecas de C existentes.
  • Python / C # / Java: omitido, estos lenguajes me parecen una repetición de nociones que se originan en otros lugares con una enorme biblioteca estándar. Seguro que todos los paquetes son buenos, pero aquí no aprenderás nuevos conceptos.
  • OCaml: tipo infererence hecho a la derecha, aplicación parcial, genérico inferido por el compilador, inmutabilidad por defecto, cómo manejar los nulos con elegancia.
  • Haskell: pereza por defecto, mónadas.

Mi € .02.

No puedo creer que Logo esté tan olvidado. Ok, es logo. Algo así como lisp, pero con una sintaxis un poco más fea. Aunque se trabaja con listas en Logo, uno se encuentra con las deliciosas operaciones 'butfirst' y 'butlast'. = P

ML. Aprenderlo y usarlo te obliga a pensar de manera diferente sobre los problemas de programación de manera diferente. También otorga una paciencia, en la mayoría de los casos. La mayoría.

¿Qué te parece go ? Es completamente nuevo, por lo que es desconocido y no es corriente (todavía).

Es interesante porque la sintaxis se parece a lo que sucede después de poner C y pascal en un frasco y hacer que luchen.

Bueno, una vez se llamó MUMPS pero ahora se llama InterSystems Caché http://www.intersystems.com/cache/

Primera respuesta - Esquema. No se usa demasiado, pero definitivamente parece ser un lenguaje sólido para usar, especialmente considerando la robustez de DrScheme (que de hecho compila programas Scheme a código binario nativo).

Después de eso - Haskell es increíblemente interesante. Es un lenguaje que hace una evaluación perezosa, y las consecuencias son increíbles (incluyendo cosas como una definición de una línea de la secuencia de fibonnaci).

Yendo más en general, Python aún no es ampliamente aceptado en los círculos de negocios, pero definitivamente debería serlo, a estas alturas ...

ToonTalk de Ken Kahn, un lenguaje de dibujos animados con fundamentos teóricos fundamentales: http://www.toontalk.com/

Prograph: http://en.wikipedia.org/wiki/Prograph .. Parece que Prograph vive como Marten:    http://andescotia.com/products/marten/

El IDE de Self era / es una cosa hermosa, habla sobre Flow (en el sentido de Cs & # 237; kszentmih & # 225; lyi) ...

Sin embargo, en general, debo decir que Haskell es el más interesante, por los posibles avances en informática que representa.

Harbour para el tipo dinámico. Gran opción para aplicaciones empresariales.

Reia!

  

http://wiki.reia-lang.org/wiki/Reia_Programming_Language

Es que Erlang tiene sentido, es precioso y estoy enamorado. ¡Es tan desconocido que ni siquiera tiene una página de wikipedia!

El primer idioma principal (no BÁSICO) que aprendí fue Dream Maker, de http: //www.byond. com . Es algo similar a C ++ o Java, pero está en gran parte preconstruido para diseñar juegos en línea multijugador. Se basa mucho en la herencia. Es un lenguaje interesante, especialmente como un idioma de inicio, obtiene resultados gratificantes más rápido y, seamos honestos, la mayoría de las personas que están aprendiendo a programar por primera vez están interesadas en una cosa ... juegos.

Encuentro Factor , Oz y OCaml bastante interesante. De hecho, he comenzado a usar Factor para proyectos personales.

Rebol por supuesto! Es tan simple pero tan poderoso. Apréndelo en http://reboltutorial.com

Recientemente he buscado mucho sobre Windows PowerShell .

Aunque no necesariamente solo un idioma. Es un shell increíble que tiene un lenguaje de script incorporado. Básicamente es un shell de línea de comandos súper reforzado.

A diferencia de los shells de Unix, donde todo es texto de cadena (que definitivamente tiene sus beneficios), los comandos de PowerShell (cmdlets) usan objetos. Se basa en el marco .Net, por lo que los que están familiarizados con eso probablemente ya se habrán dado cuenta de que todo lo que devuelve PowerShell se puede canalizar y se pueden usar las propiedades y los métodos de ese objeto. ¡Es divertido decir "todo es un objeto"! nuevamente como cuando OOP se estaba haciendo grande.

Cosas muy ordenadas. Por primera vez, Windows está implementando algunas de las herramientas de interfaz de línea de comandos de Unix similares a grep y todo el grupo.

Si estás interesado en máquinas virtuales, deberías consultar Parrot ... Hay un montón de idiomas compatibles y eso es bastante bueno ...

O'caml es un buen lenguaje si quieres aprender cómo implementar un compilador ...

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