¿El lenguaje de programación más alucinante? [cerrado]

45

De un lenguaje de programación razonablemente común, ¿cuál es el más alucinante?

He estado escuchando muchos podcasts de programación y tomándome algo de tiempo para aprender algunos idiomas nuevos que se consideran próximos e importantes. No estoy necesariamente hablando de BrainFuck , pero ¿qué lenguaje considerarías que desafía los paradigmas de programación comunes?

Para mí, hice algo de programación funcional y lógica (por ejemplo, Prolog ) en la década de 1990, así que no puedo decir que encuentre algo especial allí.

Estoy lejos de ser un experto en ello, pero incluso hoy el lenguaje de programación más alucinante para mí es Perl . No porque "Hello World" sea ​​difícil de implementar, sino que hay tanta flexibilidad léxica que algunas de las soluciones más difíciles pueden descomponerse tan poéticamente que tengo que salir de mi terminal para despejar mi cabeza. No estoy diciendo que probablemente venda una implementación de software comercial, solo que hay una razón clara por la que Perl es tan (in) famoso. Basta con mirar la lista básica de libros que contiene.

Entonces, ¿cuál es su lenguaje alucinante que promueve su mejor programación y prácticas ?

Xepoch
fuente
¿No puede ser alucinante y dejarlo así?
44
¡Cualquier idioma donde el espacio en blanco importe!
mootinator
@mootinator - Pero Python es realmente divertido trabajar con él siempre que su editor de texto no le cause dolor.
rjzii
1
@Thorbjorn ¿Alguien va a agregar INTERCAL? APL es un proyecto de escuela secundaria en comparación con ese gran papá.
Mark C el
Perl no está cerca del más difícil. Tengo 12 años y puedo programar Perl con bastante facilidad.
Dinámico

Respuestas:

73

APL

Este lenguaje es muy potente y muy concisa, que va a hacerle daño a su cerebro.

Para empezar, es difícil de usar sin un teclado personalizado, o al menos una superposición de teclado para mostrar todos los símbolos oscuros que usa.

APL Keyboard

Entonces el lenguaje es del paradigma basado en vectores / matrices y se especializa en álgebra lineal compleja. La versión original ni siquiera tenía construcciones de bucle, todo se hacía encadenando operadores de matriz bastante inusuales.

  • strip_tags()¿cualquiera? (tomado de Wikipedia)

strip_tags () ala APL

Orbling
fuente
18
+1 por mostrar el teclado
tcrosley
55
@tcrosley: Es bueno si tienes uno real: wickensonline.co.uk/apl/unicomp-apl-top-large.jpg
Orbling
44
Y si aún no era lo suficientemente alucinante, había algunos operadores que requerían usar la tecla de retroceso / sobrecarga. Por ejemplo, la matriz inversa era el cuadro cuadrado (sobre la tecla L) sobredimensionado con un signo de división (el que está al lado de la tecla de flecha hacia atrás en la esquina superior derecha de la imagen del teclado).
Tangurena
2
Tengo flashbacks a principios de la década de 1980 cuando hice APL para hacer un análisis de regresión estadística de alto nivel, ¿la gente todavía usa eso? Estremecimiento.
HLGEM
2
Una vez hice un montón de APL, todavía tiene un lugar nostálgico para mí ... Me encantó en ese momento.
rápidamente_ahora
56

Haskell . Está muy cerca de ser puramente funcional, a lo que la mayoría de la gente no está acostumbrada; muy exigente, lo cual es útil una vez que sabes lo que estás haciendo pero frustrante hasta entonces; tiene una sintaxis bastante críptica, altamente simbólica, que es genial una vez que la conoces, pero opaca antes de eso ... la lista continúa.

Además, es simplemente imposible formatear las cosas de una manera que me parezca bien.

Jon Purdy
fuente
77
También habría dicho Haskell, pero no porque sea críptico. Si bien puede ser difícil de entender, lo alucinante es la teoría detrás de esto. Monad y Arrows siguen siendo un dominio que no he conquistado :)
Matthieu M.
11
¿Por qué "Muy cerca de ser puramente funcional"? Es puramente funcional.
dan_waterworth
44
Quisiera citarme y añadir cómo Haskell va a cambiar su mente: "Haskell le impide empujar cosas debajo de la alfombra, lo obliga a lidiar con la estructura de su programa explícitamente y le enseña un lenguaje para describir estas estructuras. : el lenguaje de los tipos. Entender los tipos, particularmente los tipos ricos como es Haskell, te hará un mejor programador en cualquier idioma ". programmers.stackexchange.com/questions/28950/…
Waquo
14
Haskell es un lenguaje de programación puramente funcional. El código que escriba en Haskell es puramente funcional (siempre que no utilice unPerformIO inseguro y similares). IO-Monad es puramente funcional, si cree lo contrario, no comprende cómo se utilizan las mónadas para modelar el flujo de control de una manera puramente funcional. Piense en su programa como una lista de compras de acciones de E / S, con una lista de compras que es solo una estructura de datos pura, sin efectos secundarios, y el tiempo de ejecución del lenguaje es el comprador que realiza los efectos secundarios.
Waquo
8
@ Jon, ¿qué tal si estamos de acuerdo en que: Haskell, el lenguaje, es puramente funcional, pero su sistema de tiempo de ejecución no lo es? La ejecución de un programa haskell es impura, pero el programa en sí mismo es puro.
dan_waterworth
30

Prólogo. Era tan diferente a cualquier otro idioma que había usado cuando me expuse por primera vez. Me gusta, así que no odio la sintaxis ni nada.

Matt H
fuente
2
Me acerqué a Prolog como programación inversa, queriendo saber mis respuestas y luego programar para obtener las preguntas :)
Jé Queue
1
@ Xepoch: Creo que puede estar allí, Prolog está formulando la pregunta. Uno de los únicos lenguajes 5GL adecuados en uso.
Orbling
En general, creo que Prolog es siempre muy interesante y excepcionalmente poderoso, pero tengo grandes problemas para entender completamente la colocación del corte ( !).
Orbling
+1 para Prolog, tuve un curso de inteligencia artificial que usaba Prolog y ese es solo el único curso de informática que he tenido mal.
rjzii
Sin embargo, Prolog no es un lenguaje de programación funcional. Ser agotado en funcional por Prolog es como ser agotado en programación procesal por Lisp.
SOLO MI OPINIÓN correcta
24

Estaré de acuerdo contigo en Perl. Es la sintaxis más fea que he visto. Dicen que incluso los desarrolladores de Perl no pueden recordar lo que escribieron al día siguiente.

Sorantis
fuente
2
Def +1 en Perl. Siempre me gustaron especialmente las variables 'implícitas' (creo que se llaman). Es un excelente código de solo escritura.
GrandmasterB
2
Todos escriben Perl de manera tan diferente que también podrían estar escribiendo diferentes idiomas: no solo tiene que aprender cómo funciona Perl para recoger el código de otra persona, sino que también debe aprender cómo lo usó esa persona en particular.
glenatron
3
Bah a esta respuesta y ambos comentarios al respecto. Perl bien escrito es fácil de leer y escribir. Baby-perl escrito por novatos es simple, si es detallado. El único perl "ilegible" se ofusca a propósito o se crea un guión.
Sean McMillan
22

Tendría que decir Forth . La notación de que todas las operaciones son manipulaciones de pila. En su forma pura, no hay variables locales para usar.

Peter Mortensen
fuente
10
FORTH es un lenguaje maravilloso. Cuando aprendí a programar por primera vez a principios de los años 80, tenía un Atari 400 y mis elecciones fueron interpretadas BASIC, Assembly y FORTH. Usé los tres ampliamente, pero FORTH más que cualquier otro. Todavía tengo los libros ultraclásicos de FORTH y Thinking FORTH de Leo Brodie. De hecho, si me pidieran crear un lenguaje de alojamiento propio desde cero en un nuevo sistema de hardware, elegiría FORTH sin dudarlo.
Adam Crossland
3
@Adam Crossland: Pensando en FORTH es un gran libro, puede que te interese este enlace: thinking-forth.sourceforge.net
Orbling
1
@Orbling: grandes mentes piensan igual. No hace más de 10 minutos, puse el PDF en mi Kindle.
Adam Crossland
1
@ Adam Crossland: un buen lugar para ello. Ese libro es generalmente útil para los programadores, debe estar en la lista de lectura para las personas, interesadas en FORTH o no.
Orbling
1
Estoy totalmente de acuerdo. Tiene mucho que decir sobre cómo pensamos en la resolución de problemas en general. Brodie es un pensador lúcido y un escritor claro. Sus obras son una alegría para mí.
Adam Crossland
21

Rubí .

Esto me da ganas de suicidarme:

1.month.from.now()

(Podría tener la sintaxis exacta incorrecta, pero entiendes el punto).

Matthew Read
fuente
23
DIOS MIO. ¿Quién pensó alguna vez que era una buena idea?
EpsilonVector
8
La alucinación no es con la lectura, es con la escritura. Proponer estas tonterías es difícil, y tener que memorizar / buscar todas las funciones / propiedades incorporadas es ridículo.
Matthew leyó el
55
¿Soy solo yo quien piensa que esto se ve increíble, y es posiblemente una buena razón para aprender Ruby?
Orbling
99
Es asombroso leer, sí. Pero, ¿significa esto que puedo escribir 3.meses.desde.los.mes.mes.si.está.un.año.aproximadamente? No. O al menos, no lo creo . Si puedo ... RoR puede ser el primer lenguaje telepático de la historia.
morganpdx
15
Lo que está mal DateTime.Now.AddMonths(1);? Estas características apenas hacen que el código sea más legible. (No estoy diciendo que C # tiene la mejor sintaxis que puede cambiarlo a cualquier convención idiomas y de él todavía aplicar..)
ChaosPandion
18

Brainfuck

Cualquiera que honestamente pueda escribir esta burla de un idioma ni siquiera debería necesitar un hilo como este.

Hola Mundo (punteros, izquierda; explicación, derecha):

+++++ +++++             initialize counter (cell #0) to 10
[                       use loop to set the next four cells to 70/100/30/10
    > +++++ ++              add  7 to cell #1
    > +++++ +++++           add 10 to cell #2 
    > +++                   add  3 to cell #3
    > +                     add  1 to cell #4
    <<<< -                  decrement counter (cell #0)
]                   
> ++ .                  print 'H'
> + .                   print 'e'
+++++ ++ .              print 'l'
.                       print 'l'
+++ .                   print 'o'
> ++ .                  print ' '
<< +++++ +++++ +++++ .  print 'W'
> .                     print 'o'
+++ .                   print 'r'
----- - .               print 'l'
----- --- .             print 'd'
> + .                   print '!'
> .                     print '\n'
Scott Stamp
fuente
2
¿O qué tal el espacio en blanco? Todo el mal de Brainfuck combinado con código invisible.
Loren Pechtel
17

Lisp es mi último lenguaje alucinante.

He llevado las mónadas y la programación funcional de Haskell conmigo, y ahora tengo macros para trabajar. Acabo de entrar en CLOS y no he tocado el sistema de condición en absoluto.

Larry Coleman
fuente
Ni siquiera me gusta el Lisps (con la posible excepción de Clojure, todavía no me he decidido allí) y te di un +1. La parte alucinante ciertamente está allí y lo que aprendí de Lisp, aunque no lo uso, informó mucho de lo que hago en otros idiomas.
SOLO MI OPINIÓN correcta
14

PAPERAS

Este es un lenguaje que aparece de vez en cuando en las historias en línea y tiene el honor adicional de estar en uso real de producción almacenando información crítica de seguridad de la vida (es decir, registros de pacientes). Sin embargo, este también es un lenguaje en el que se aprecia la brevedad y funciones como las siguientes pueden aparecer en el código de producción (ejemplo del artículo de Wikipedia sobre el tema):

s A="String" F i=1:1:$L(A) W $c($S($A($E(A,i))<91:$A($E(A,i))-52#26+65,1:$A($E(A,i))-84#26+97))
robo
fuente
wow, no estás bromeando verdad? No me dormí y de repente es el 1 de abril? Nada con tantos paréntesis y signos de dólar debe estar cerca de mis registros de pacientes.
dan_waterworth
1
¡Mi primer trabajo de programación fue con una compañía especializada en MUMPS! Lamentablemente, hice un curso universitario sobre desarrollo web, por lo que me pusieron en el equipo ASP recién formado de la compañía en lugar de hacerlo con las viejas manos, pero MUMPS fue el idioma en el que nos capacitamos durante nuestras primeras semanas. Tal vez tenía un escape afortunado ...
thesunneversets
1
¿Alguien que publicó aquí desde Madison Wisconsin? Verona, de verdad?
Hans Passant
1
Creo que thedailywtf.com tiene una sección completa dedicada a MUMPS. No parece un idioma que me gustaría tocar.
Tyanna
1
Recuerdo haber aprendido M en la academia y pensar que era interesante como lenguaje de propósito especial. La brevedad que permite es como un tipo perverso de minificación. En mi ingenuidad, pensé que el código de producción contendría poco de la taquigrafía extrema del lenguaje. La primera y única vez que vi una base de código de producción M mi intestino se apretó ... se parecía a tu ejemplo. ¡Oh, el horror!
ajk
13

Yo diría que Coq , u otra implementación de la teoría del tipo dependiente. El sistema de tipos de Haskell no es muy expresivo comparativamente. Pasar a un sistema de tipos más expresivo (por ejemplo, el cálculo de construcciones (CoC)) le permite hacer algunas cosas interesantes, como probar las propiedades de los programas dentro del lenguaje e incorporar invariantes fuertes en sus tipos que se pueden verificar de forma estática.

Peter Mortensen
fuente
2
Cualquier sistema / prover / idioma de tipo dependiente probablemente calificaría más confuso que los idiomas regulares, por lo que +1.
Orbling
1
La verificación formal de los programas es algo que recién estoy comenzando. Ciertamente dobla la mente y se está volviendo cada vez más útil en el mundo real. +1
dan_waterworth
7

Objetivo-C . Para ser justos, solo lo estudié muy brevemente y no me gustó tanto la sintaxis a primera vista que me di por vencida.

Dado que es un lenguaje tan (relativamente) común (principalmente para el desarrollo de Mac / iPhone / iPad ), estoy seguro de que en realidad es algo decente una vez que te acostumbras.

Peter Mortensen
fuente
2
Bueno, probablemente califique como un poco alucinante, pero me gusta. Podría ser útil si se da cuenta de que [foo bar]es solo azúcar sintáctico para el objc_sendMsg(foo, "bar");que a su vez busca el puntero de función (es una "barra" especial, no genérica). ¿Te diste cuenta de que está completamente tipeado?
Por Johansson el
Objective-C es solo un enorme azúcar sintáctico en torno a las funciones de tiempo de ejecución. Una vez que te acostumbras, [receiver doStuff:arg]se parece bastante a un Java dinámico
toasted_flakes
6

Yo escojo mercurio .

Mercurio se inclinó al mostrarme que incluso los lenguajes puros pueden hacer E / S .

La forma en que esto funciona es que las funciones de E / S en Mercurio toman un valor de "estado del mundo" y devuelven un nuevo valor de "estado del mundo". Entonces, las funciones de E / S en Mercurio transforman el mundo y, por lo tanto, se mantiene la pureza.

dan_waterworth
fuente
3
+1 "... el mercurio transforma el mundo y, por lo tanto, se mantiene la pureza". - Me gusta eso fuera de contexto. ;-)
Orbling
Estoy luchando a través de la curva de aprendizaje con Mercurio en este momento. Ha sido una lucha digna hasta ahora. Me gusta mucho.
SOLO MI OPINIÓN correcta
Lo único que me quitó el mercurio fue que su tipo de cadena tiene terminación NULL.
dan_waterworth
6

Tiene que ser Scheme , seguramente. Intentar explicar call-with-current-continuationsiempre me duele el cerebro, pero una vez que lo entiendes, puedes hacer soluciones increíblemente elegantes.

¿Quiere detenerse a medio camino a través de un algoritmo y control manual para otra persona? ¡Seguro!

¿Quiere reanudar la misma continuación varias veces? ¡Por supuesto!

¿Desea pausar la ejecución de un algoritmo, redefinir una función y luego reanudar la ejecución con la pila original pero con un estado global actualizado? ¡No hay problema! ¿Y esto varias veces con diferentes cambios en el estado global pero el mismo punto de reingreso de la pila? ¡Para usted, señor, cualquier cosa!

Cameron Skinner
fuente
+1 LOL + "¡Para usted, señor, cualquier cosa!" Además de casi ser una línea en una canción en Oliver !, también es una buena aspiración que tenga un idioma.
Orbling
1
Scheme no es el único lenguaje con continuaciones explícitas. Haskell , por ejemplo, lo soporta perfectamente y de manera alucinante.
SOLO MI OPINIÓN correcta
44
Podría decirse que es más alucinante en Haskell, ya que (call / cc) se implementa como una biblioteca y no como una función de lenguaje. Pero tal vez eso lo hace menos complicado.
Logan Capaldo
Creo que es a la vez más y menos alucinante. Mantener esa contradicción en mi cabeza dobla mi mente. Entonces, al final, Haskell es más alucinante. :)
SOLO MI OPINIÓN correcta
Lo bueno de las continuaciones de Scheme (y Ruby !) Es que están integradas en el lenguaje. Haskell básicamente solo agrega su sintaxis monádica en torno al estilo de paso de continuación ordinario, que también puede hacer en Scheme. Pero tener call / cc integrado en todas partes sin tener que integrar todo en una construcción monádica definitivamente permite muchas construcciones alucinantes.
Dario
4

Solía ​​usar un antiguo editor llamado TECO (Text Editor and COmparator), que era un lenguaje de modificación de texto muy poderoso, con todo tipo de capacidad macro. No recuerdo exactamente la famosa cita al respecto, pero la esencia era "cualquier colección aleatoria de 20 caracteres es casi siempre un programa TECO legítimo, y cambiará su archivo (es un editor) de una manera fundamentalmente impredecible. Recuerdo haber escrito un convertidor de Fortran a PL1 en aproximadamente una página de código TECO.

Omega Centauri
fuente
55
"Uno de los juegos más entretenidos para jugar con TECO es escribir su nombre como línea de comando e intentar adivinar lo que hace. Casi cualquier posible error de escritura mientras habla con TECO probablemente destruirá su programa, o peor aún: introducir errores sutiles y misteriosos en una subrutina que alguna vez funcionó ". Hombre, esos fueron los días!
SOLO MI OPINIÓN correcta
1
TECO también fue la base original de EMACS. ¡EMACS comenzó como una colección de macros TECO!
Gabe
@ Omega: es necesario decir a qué TECO te refieres. DEC TECO, como se envía con TOPS-10, o MIT TECO, el escrito en MIDAS. Este último TECO es en lo que se escribió EMACS. También es cómo se extendió EMACS. Solía ​​hackear EMACS en lugar de pasar clases.
John Saunders
Solo usé DEC TECO. Y sí, esos eran los días (para ser joven otra vez) ...
Omega Centauri
1
Me hace recordar a escribir en modo comando de Vim
ron
3

El montaje ha sido lo más "alucinante" para mí, pero recién lo estoy comenzando.

Peter Mortensen
fuente
lo que lo empeora es que depende del sistema operativo y el hardware
Dave
¿Qué hay de eso lo hace así? Instrucciones directas sin orden de agrupación explícito? ¿algo más?
Jé Queue
bueno, en particular, no me gusta lo poco claro que resulta el flujo del programa. No es fácil de leer rápidamente.
Anto
2
Ah, el Cincinnati Milacron 2200B: longitud de palabra variable combinada con modificación en tiempo de ejecución de la dirección de un JMP. Hizo que el LSD pareciera manso.
Peter Rowell
3

Lisp . Aprenderlo es una serie de pequeñas epifanías, cada una de las cuales cambiará totalmente tu forma de pensar sobre la resolución de problemas de programación.

Peter Mortensen
fuente
3

REBOL

Está construido alrededor de la noción de código como datos, como lo es Lisp . Los seguidores del lenguaje tienen dificultades para explicar cuáles son sus beneficios únicos sobre otros enfoques en esa familia, y generalmente terminan encogiéndose de hombros y diciendo algo como "Bueno, el tipo que diseñó el AmigaOS se le ocurrió, la biblioteca estándar está incluida y es microscópica, y una vez que lo consigas, será como tomar la píldora roja de Matrix y nunca querrás volver ".

El problema con esto es en parte que es peculiar y no ha definido con precisión qué programadores son su mercado. Pero también en parte porque muchas de las personas que lo defienden simplemente apestan al explicar . :)

Pero Douglas Crockford solía ser un fanático, se inspiró en él con la creación de JSON y sugirió que la gente lo investigara tan recientemente como octubre de 2010:

"Ted Neward hizo un muy buen trabajo moderando el panel sobre 'El futuro de los lenguajes de programación'. Al final del panel, Ted preguntó a los panelistas qué idiomas deberían aprender las personas para obtener nuevas ideas. La lista incluía Io (Bruce Tate), Rebol (Douglas Crockford) , Forth and Factor (Alex Payne), Scheme and Assembler (Josh Bloch) y Clojure (Guy Steele) ".

Fuente: sauria.com

Creo que vale la pena mirar para cualquiera que quiera ampliar su forma de pensar sobre el diseño y la extensibilidad del lenguaje. Ahora que es de código abierto (después de 18 años de desarrollo patentado), las advertencias habituales que solía dar para mantenerlo al alcance de la mano ya no se aplican ... ¡vale la pena echarle un vistazo! La comunidad incluso salió de su programa patentado de mensajería basado en Rebol y comenzó a chatear en Stack Overflow (¡para mi sorpresa!)

HostileFork
fuente
1
Evito REBOL porque su única implementación práctica es una pieza de software no estandarizada y no abierta que se cambia a gusto de su corporación propietaria. (Rebol 2 vs. Rebol 3 ...) Si alguna vez se estandariza o abre, volveré a echar un vistazo, pero hasta ese día Rebol permanece fuera de mi cinturón de herramientas.
SOLO MI OPINIÓN correcta
1
¡@JUSTMYcorrectOPINION quizás haya llegado el día de echar otro vistazo! Rebol 3 ahora es un software con licencia Apache2 . Incluso tenemos un RebolBot aquí en la sala de chat Rebol y Red en StackOverflow para ayudarnos con la demostración del idioma. (El rojo es otra variante de Rebol de código abierto que muestra una promesa muy interesante como una versión compilada híbrida).
HostileFork
2

Diría por lo que hacen muchas personas para evitar tener que escribirlo directamente, que los desarrolladores consideran que SQL es alucinante. Supongo que muchas personas simplemente no piensan naturalmente en términos de conjuntos.

Peter Mortensen
fuente
SQL ciertamente inclina la mente, pero no me ayuda a escribir un mejor código.
dan_waterworth
44
SQL es tan natural para mí como BASIC, solo para mí. Es sorprendente lo fácil que puede ser una aplicación respaldada por DB cuando comprenda el manejo completo de datos en SQL.
Jé Queue
@dan_waterworth, creo que SQL puede ayudarlo a escribir código más pequeño y conciso al poner más lógica en SQL en lugar de manejar la mayoría de los condicionales y las consultas posteriores en la aplicación.
Jé Queue
@Xepoch, creo, si hay algo que el aumento de ORM nos ha enseñado, es que a las personas no les gusta escribir en SQL si pueden evitarlo. Prefieren escribir en su propio idioma.
dan_waterworth
Supongo que usar cualquier cosa que pueda escribir mejor código que tú es algo bueno.
JeffO
2

Puro

Pure es un lenguaje funcional basado en la reescritura de términos. Me gusta, es escaso y expresivo, aunque un poco subestimado.

Aliud Alius
fuente
+1 Funcional significa vector, lenguaje excepcionalmente poderoso que. Como descendiente de q (que debe un poco a APL) y tomando prestada una tonelada de Haskell et al. Ciertamente merece mención.
Orbling
2

Puede que no sea lo más alucinante, pero ha sido con mucho lo más difícil de aprender (¡pensé que Haskell y el lenguaje ensamblador eran más fáciles!)

Ese es el conjunto de lenguajes HDL , en particular, VHDL (y Verilog en menor medida)

Superar el hecho de que cada "función" se ejecuta al mismo tiempo es increíblemente difícil y no se puede evitar el cambio a paralelizar absolutamente todo. Por supuesto, esto es solo un lenguaje de programación límite.

Peter Mortensen
fuente
Hice un poco de VHDL una vez. Tuve un verdadero momento de epifanía cuando de repente me di cuenta de que, a medida que agregaba código, parecía que cada vez más hardware implementaba ese código y todo se ejecutaba simultáneamente. Al igual que la programación multiproceso con hilos de ejecución simultánea verdaderamente ilimitados; tal vez las personas con acceso a nodos ilimitados en EC2 o clústeres de reducción de mapas obtienen un zumbido similar. (Pero poco después, llegué a apreciar lo doloroso que es implementar algo no trivial en estos idiomas, y me escapé).
Timday
1
Como ingeniero eléctrico, no tuve muchos problemas con la simultaneidad, de hecho fue una gran liberación. En cuanto al dolor de la implementación, bueno, el uP es una solución de nicho para clases específicas de problemas que transforman el problema en una solución que puede describirse como algoritmos, un concepto tomado originalmente de las matemáticas. Un problema con el paralelismo inherente es uno de los problemas fáciles de resolver y VHDL y FPGA son útiles en ese momento.
Sí, VHDL es extraño si aún no eres programador y estás acostumbrado a trabajar con múltiples bloques simultáneos.
medivh
1

Tcl

Empecé a aprenderlo una vez, pero como aprendí lo suficiente como para tener sentido, realmente no me gustó la forma en que me hizo sentir el cerebro. Eso parecería calificar como alucinante.

David Thornley
fuente
1
Hice mucha programación Tcl alrededor de 1995-1997 sin una razón particularmente buena. Cuando comencé a buscar un nuevo trabajo en 1998, cada reclutador en toda el Área de la Bahía trató de hacerme entrevistar para conciertos de VIGNETTE mal pagados y de alta presión. Rápidamente lo eliminé de mi currículum. Pensé en molestarte por esto, ya que recordaba que Tcl era realmente fácil, pero desearía haber aprendido Python en retrospectiva.
Adam Crossland
Tcl es definitivamente un gusto adquirido. Personalmente, creo que el diseño del lenguaje es genial: no hay otro lenguaje que se adapte a mi cerebro tan bien como Tcl, pero sé que estoy en minoría. Lo ames o lo odies, aprenderlo requiere que reconsideres cómo deberían funcionar los idiomas.
Bryan Oakley
1

Turing lenguaje máquina , obviamente. Es extremadamente poderoso, probablemente superior a todos los demás lenguajes de programación que existen, y garantiza que dañará su cerebro si intenta usarlo.

Peter Mortensen
fuente
66
Tengo que objetar a afirmar que es demostrablemente superior. El término superior sugiere tener en cuenta cuestiones subjetivas. Además, si ejecutamos C en una computadora con memoria infinita (lo cual es justo porque una máquina de Turing funciona con memoria infinita) son equivalentes en potencia.
Winston Ewert
2
@ Winston: La cinta de una máquina de turing no tiene que ser infinita. Solo necesita tener una fábrica de cintas en cada extremo que pueda fabricar cintas adicionales según sea necesario :)
Mike Dunlavey
"Probablemente superior" es, por definición, un término objetivo. Significa que cualquier idioma puede implementarse en una máquina de Turing, pero no todos los idiomas pueden implementar una máquina de Turing. Por supuesto, eso también es cierto para lenguajes como C, siempre que tenga memoria infinita y pila infinita.
user12667
BrainFuck como ya se mencionó en la pregunta, y es más o menos el lenguaje de máquina de Turing.
Mchl
1
Eso demuestra que una máquina de Turing es más poderosa. El problema es que, al menos como usaría el término, afirmar que un idioma es superior también tendría en cuenta la facilidad de uso, la disponibilidad, etc.
Winston Ewert
1

C

Los punteros, la gestión de la memoria y la conversión de tipos requieren mucha atención y es fácil equivocarse. La falta de estructuras de datos integradas, como tablas o listas hash, significa que debe idear la suya o buscar una biblioteca de terceros y aprender su API.

david4dev
fuente
Perdóneme. C es un lenguaje ensamblador. Por supuesto que no tiene esas cosas.
Peter Rowell
2
Los lenguajes de ensamblaje son alucinantes.
david4dev
-1

JESS (Java Expert System Shell). Integrada en un entorno Java, esta adaptación de CLIPS es un lenguaje de sistema experto basado en reglas funcionales. Intentar mapear objetos Java reales como hechos y encontrar las preguntas correctas para obtener los resultados que espera es un verdadero desafío. Menos si está familiarizado con la teoría de sistemas experta, pero cuando proviene de una mentalidad pura de OOP, no encaja bien. NOTA: CLIPS no es Lisp, pero lo parece. Otra dobladora mental.

Una vez que pasa la curva de aprendizaje inicial, es bastante poderoso y muy rápido encontrar las respuestas.

revs Berin Loritsch
fuente
Jess es una versión moderna de CLIPS que también se puede incorporar como una especie de motor de secuencias de comandos / lógica para sus propias aplicaciones.
Tangurena
Ok, estoy corregido. haskel.com/corp/details/0,10294,CLI1_DIV139_ETI9759,00.html Sin embargo, requiere una mentalidad muy diferente del idioma en el que está incrustado.
Berin Loritsch
-1

TeX cuenta como un lenguaje, ya que es Turing completo , y lo considero bastante alucinante. Un lenguaje para la composición tipográfica de matemáticas (y libros sobre programación) ...

Peter Mortensen
fuente
-1

CIL

CIL, el lenguaje intermedio común con el que compilan todos los programas .NET , una especie de ensamblaje orientado a objetos. Es interesante para mí intentar escribir o leer código en él y comparar sus construcciones con las de C # que ya conozco. Es una buena manera de aprender más sobre lo que hace .NET detrás de escena. Y puede ser útil para cosas como la generación dinámica de código o la reescritura de código compilado existente usando Mono Cecil .

Peter Mortensen
fuente
2
o bytecode para el caso también?
Jé Queue
Si te refieres al código de bytes de Java, entonces no tengo ninguna experiencia con él, por lo que no estoy en condiciones de recomendarlo como alucinante.
svick
Realmente no compararía Java-Bytecode y CIL, ya que Java-Bytecode ya está compilado y CIL se compilará en tiempo de ejecución (compilador Just-In-Time de .net)
basti
@chiffre En la mayoría de los casos, Java Bytecode y CIL funcionan exactamente igual. En ambos casos, tiene un código fuente (C # o Java) que se compila en un lenguaje intermediario binario en "tiempo de compilación" (CIL o Java Bytecode), que luego se compila al código de máquina real en "tiempo de ejecución", mediante un JIT compilador.
svick