Pregunta

¿Conoce algún ejemplo de lenguaje esotérico ¿Solías escribir algún programa de uso práctico en el mundo real?¿Existe algún dominio de la informática, por oscuro que sea, en el que un lenguaje esotérico haya demostrado ser útil para resolver un problema específico?

¿Fue útil?

Solución

aplicaciones del mundo real, ¿verdad?

El juego Lost Unido ganaron la aventura Competencia 2k texto Primer Clásico anual en 2004, y ha sido (re) escrita y mejorada por el autor original en brainfuck

¿Qué tal un bot de IRC rel="noreferrer"> o este editor de texto ? Y supongo que si te gusta escribir en lenguajes esotéricos, usted podría considerar un Befunge a C compilador o una brainfuck a C compilador muy útil ...

Otros consejos

No hay un uso práctico para un lenguaje de programación esotérico, casi por definición. Sin embargo, sólo porque no se puede utilizar ellos, no quiere decir que no son utilidad .

tl; dr:

Por ejemplo, cuando nos fijamos en los lenguajes de programación esotéricos, puede más o menos los dividen en categorías: algunos son creados como una broma, algunos son creados sólo por diversión, algunos son creados como tarpits Turing, pero también hay algunos que son creado para demostrar o ilustrar un punto. Y estos son realmente útil para exactamente eso: que ilustra un punto, tal vez en una clase de lenguajes de programación, tal vez para la comunidad o para la industria. A pesar de que son inútiles para los fines prácticos, son el uso ful con fines educativos.

Tome lenguajes de programación esotéricos no deterministas. Estos son los lenguajes de programación para el que la semántica de evaluación de ciertas expresiones no están definidas de forma determinista, pero por ejemplo probabilísticamente o en base a la fase de la luna o algo por el estilo. Si nos fijamos en la definición de un lenguaje tal, que va a pensar de inmediato: "Bueno, eso es una estupidez." ¡Y es! (Por ejemplo, el programa Hola Mundo en Java2k es casi una página de código, y ni siquiera está garantizado para imprimir "Hello World" cada vez, solamente la mayor parte del tiempo.) Y, sin embargo, la mayoría de los lenguajes de programación convencionales de hoy en día tienen modelos de concurrencia no deterministas. OIA: tan pronto como se inicie un hilo en Java, C #, Python, Ruby, Perl, incluso Erlang o Clojure, el programa vuelve tan al azar como en el lenguaje esotérico Java2k. Entonces, ¿por qué pensamos que uno es tonto y aceptar al otro como normal, a pesar de que son esencialmente la misma cosa? Al tomar no determinismo al extremo, y envasarlo en una forma divertida, esolangs nos permiten formular esa pregunta.

Otro ejemplo es tarpits Turing. Un tarpit Turing es un esolang la que casi no tiene características, pero todavía es Turing completo. Tal tarpit Turing se puede utilizar para demostrar dos cosas diferentes: se puede usar para demostrar qué es exactamente lo que hace que algunos idiomas más "poderoso" (en el sentido de la fuerza expresiva) que otros. Si usted busca alrededor de la web, se encuentran las personas preguntan "si Lisp es mucho mejor que el de Java, ¿por qué no me muestras un programa que se puede escribir en Lisp, pero no puede escribir en Java." Y, por supuesto, eso es estúpido: las dos lenguas son Turing completo, por lo que no existe tal programa. Sin embargo, mediante el contraste de Java con, digamos, Brainfuck, se puede demostrar que esto no es sólo cuestión significativa a preguntar.

Y la otra cosa se puede demostrar con tarpits de Turing es que nunca se puede hacer un lenguaje más potente (en ambos sentidos de la palabra: la potencia de cálculo y capacidad expresiva) mediante la eliminación de características. Suena obvio, pero hay personas que realmente creen que Microsoft debe simplemente eliminar el estado mutable de C #, y sería mágicamente ser más poderoso.

En general, tarpits Turing son buenos para demostrar la diferencia entre la potencia de cálculo y la fuerza expresiva de un lenguaje de programación.

Otras formas en las que esolangspuede ser útil es que pueden servir de inspiración para la investigación de lenguaje de programación. Piense en unlambda, que, como su nombre lo indica, es un lenguaje funcional que es no basado en el cálculo lambda. En otras palabras: se trata de un lenguaje funcional que no tiene funciones

.

Y por último pero no menos importante, esolangs se le obligan a mirar un problema desde un ángulo completamente diferente (sí, lo admito, es sobre todo un ángulo incómodo, pero bueno, algunos directores de cine (Hitchcock, por ejemplo) deben su totalidad carrera a ver las cosas desde ángulos poco habituales) y se burlan de su cerebro como un buen rompecabezas. Es decir, por ejemplo, toda la razón de la existencia y el nombre de Brainfuck.

seguridad en el trabajo !!!

Si hay un práctica el uso de un lenguaje no sería llamado esotérica . Los dos términos son mutuamente excluyentes.

máquina de Turing entendimiento, computabilidad y tener un sentido práctico de lo que está implícito en la teoría de la computación. Todos los beneficios prácticos se pueden recoger si se utiliza un lenguaje esotérico como **** cerebro.

Estoy seguro de que hay otros también.

Algunas clases de lenguajes de programación esotéricos tienen aplicaciones en la informática teórica.

Turing tarpits tener usos para ilustrar ciertos resultados en la teoría de la computabilidad y el problema de la parada. Véase, por ejemplo, el trabajo de Ianov (hay un resumen ligeramente más accesible hasta la mitad < a href = "http://rjlipton.wordpress.com/2009/04/22/fads-and-the-theory-of-computation/" rel = "noreferrer"> este artículo ).

Los resultados fundamentales para las clases de máquinas de Turing son otra aplicación práctica. Por ejemplo, Wikipedia señala que P '' fue "el primer 'GOTO-menos programación' imperativo estructurada idioma que se ha demostrado Turing completo ".

Binary combinatoria lógica es una herramienta útil para analizar la complejidad de Kolmogorov .

Inspirado por esta pregunta, y su respuesta, yo también he encontrado un uso práctico para dicho lenguaje: GolfScript, un lenguaje diseñado específicamente para code golf:

GolfScript es un lenguaje de programación esotérico orientado a la pila destinado a resolver problemas (agujeros) en la menor cantidad de pulsaciones de teclas como sea posible.También tiene como objetivo ser simple y fácil de escribir.

Ahí lo tienes, directamente de las personas que lo escribieron.Aunque podría ser discutible si Code Golf es un asunto práctico o no, mi creencia personal es que se acerca lo más que llega a algo que usted y yo podríamos escribir y encontrar, sin mencionar que es un ejercicio de programación divertido y una competencia. con muchos fanáticos.Entonces...si los juegos, el fútbol y todo tipo de actividades entretenidas son de una forma u otra...práctico...También me siento libre de incluir el código golf :)

El único beneficio práctico que veo, es que si usted escribió el código en un lenguaje esotérico, sería hacer que usted piensa acerca de los problemas de maneras nuevas e interesantes. El aprendizaje de nuevas formas de abordar los problemas se beneficiarán incluso cuando estás de vuelta de programación en un lenguaje corriente principal.

El año pasado leí 'Turing anotado' de Charles Petzold. Ciertamente tengo ninguna intención de programar alguna vez una máquina de Turing, al menos como lo describe. Pero pensando en la solución de problemas con su 'lenguaje' se extendía mi mente. Soy un mejor programador de C # para ello.

Claro; Fungot, el bot de IRC: http://zem.fi/~fis/fungot.b98. txt

El desarrollo del lenguaje esotérico es como crear Mandala . Después de terminaciones de trabajo se puede olvidar o incluso destruir.

Si se juzga únicamente por el enlace de Wikipedia :

  

Un lenguaje de programación esotérico   (A veces abreviado a esolang) es una   lenguaje de programación diseñado como una   prueba de los límites de equipo   el diseño de lenguajes de programación, como una   prueba de concepto, o como una broma. Ahí   es por lo general menor intención de la   lengua que se adopta para el mundo real   la programación.

A continuación, no , no hay ninguna aplicación práctica de un lenguaje de este tipo a un problema real.

Las razones no son insultos a los idiomas, se centran en "práctico":

  1. En la práctica, si se está resolviendo un problema, tiene que ser capaz de convencerse de que usted ha resuelto. Si estás utilizando un lenguaje que está diseñado específicamente para que sea difícil de leer, que va a ser difícil de inspeccionar visualmente la solución y decir "Sí, esto es correcto."
  2. En la práctica, uno no trabaja en un vacío. En la vida real, siempre se está trabajando con un conjunto distinto de cero de otras personas (incluso si es sólo usted-en-el-futuro). Alguien más va a tener que mantener su solución, añadiendo una característica aquí, la fijación de un problema allí o, peor aún, tratando de documentar lo que hizo y por qué.
  3. Si ni 1 ni 2 se aplican, se ha creado una solución a un problema que es (a) trivialmente fácil de inspeccionar y (b) no requiere mantenimiento, ya que no se usa nunca en la práctica. Es, por lo tanto, un problema trivial / no-práctica.

colorforth es muy potente, y es práctico.

OKAD y GA4 en 290K

ofuscación de código es un :-p uso práctico muy común

Y no sé si la familia / J / K APL podría llamarse esotérica, pero que han sido utilizados en sistemas de producción de un largo tiempo.

Existe un lenguaje llamado piloto. Es un lenguaje interpretado escrita en Dartmouth BASIC (una lengua interpetive). Su uso inicial fue por falta de programación maestros para poder programar sus pruebas. Todos los comandos en el lenguaje son una sola letra y la letra utilizada define qué opciones están disponibles. Es antiguo, (I aprendido en 1976) y por lo que yo puedo decir, ya no tiene ningún uso.

Entre otros usos, el más mínimo podría ser utilizado como (cajas negras) / (idiomas algoritmo de espacio aislado) para las búsquedas algorítmicas, para la búsqueda utiliza como programación basada en restricciones y soluciones en evolución.

Esta respuesta se dirige a 3 tipos de lenguajes de programación esotéricos:

  • idiomas Golf
  • tarpits Turing
  • Idiomas en juegos

Golf idiomas son útiles cuando se necesita para hackear algo juntos para un uso de una sola vez. En lugar de la escritura de un programa Python de 100 líneas o ir a través de una ola de depuración porque cometió un error en algo que es una orden interna en un lenguaje de golf, sólo tiene que conectar un par de órdenes internas y hacer el trabajo más rápido.

tarpits de Turing son útiles para la creatividad. Usted tiene que pensar fuera de la caja con los pocos comandos los tarpits Turing tienen. En BF cómo haría usted para convertir los números enteros dados a usted a través del programa (que son sólo un montón de valores ASCII) a algo que se puede manejar (como un valor de la celda individual)? ¿Cómo te comprobar la igualdad? ¿Cómo se sumar dos números?

tarpits Turing también son útiles para la práctica de la organización del código. Cuando una tarea simple, como la adición de dos números que se necesita para hacer pseudo código y tienen un diseño de todo el programa, usted tiene que organizar su programa. En BF añadir dos valores de las celdas, que tendría que: 1. Disminuir el primer sumando 2. Incremento del segundo sumando 3. Loop hasta el primer sumando es vacío

.

Idiomas en juegos son útiles para mejorar la experiencia de los mundos / niveles para los jugadores de ese mundo / nivel. En Roblox (aunque yo no diría que es el lenguaje de scripting "esotérica"), si usted acaba de poner en algunas partes y modelos en el mundo, sería divertido? No. Si esos modelos mediante scripts para luchar contra usted y equiparse con un arma? Tal vez. En Geometría Dash que podría hacer que el nivel más difícil, exigiendo que haga clic en una cierta cantidad de veces en que es "lenguaje de programación", o hacer que use ataques pseudo-aleatorios en una lucha del jefe. lenguajes de programación esotéricos en los juegos pueden mejorar en gran medida el ámbito de posibilidades en un nivel / mundo.

Eiffel, Erlang, Ocaml, Haskell. Estos son todos los idiomas "nicho" para la mayoría de los programadores por ahí, sin embargo, son prácticos dentro de sus dominios. Su pregunta, simplemente no tiene sentido, podría ser bien preguntando "¿Hay buenas lenguas que no utilizamos en dominios de problema populares?"

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