Hace 8 años | Por --418333-- a xataka.com
Publicado hace 8 años por --418333-- a xataka.com

Hay más lenguajes de programación que botellines. Los tenemos de bajo o de alto nivel, declarativos, procedurales, orientados a objetos... y tenemos los llamados lenguajes esotéricos, lenguajes peculiares de sintaxis muy básicas y alfabetos reducidos que casi parecen una trolleada de sus creadores (aunque suelen ser Turing completos, ojo). En este artículo que tienes entre manos vamos a listar y reseñar diez de estos lenguajes esotéricos para tu diversión, asombro y sorpresa.

Comentarios

Nitros

¿No está Javascript?

cornholiox

#4 #6 ¿Por qué?

meneandro

#11 programa en c++ y luego usa emscripten

Mister_Lala

#13 Mola

meneandro

#14 O incluso duetto

Mister_Lala

#18 Por el culo te la meto

meneandro

#19 Menos mal que no dije nada acabado en cinc...

O incluso http://leaningtech.com/cheerp/

RFK80

#19 Hay Rima hay positivo lol

cornholiox

#11 Pero el potencial es grande, ¿no?
Jquery por ejemplo lo considero cojonudo o si conoces el mundo de los mapas, leaflet es una librería brutal.

kolme

#38 Estás confundiendo DOM (librerías) con el lenguaje en si.

jQuery es la prueba de que no es culpa del lenguaje, sino del engorroso API que se inventaron para manipular el documento.

En cualquier caso a mí jQuery me parece (también) aberrante como API. ¿"$" es el nombre de la función? ¿Y según qué parámetros le pases hace una u otra cosa? ¿WTF?

Trublux

#43 Me he logueado para decirte que deberías ser crucificado por meterte con jQuery.
Para cualquiera que haya usado javascript sabe que hay un antes y un después de jQuery. No creo que lo hayas usado mucho, la verdad.

Por cierto, siempre he pensado que el Trollscript era por Mr. Trololó

kolme

#51 ¡No le quito su mérito! Desde luego que hay un antes y un después con jQuery.

Para empezar porque limaba las diferencias entre navegadores y además porque ayudó a mucha gente a entender cómo es el lenguaje. En el "mainstream" se pasó de programar JS de manera procedural, a hacerlo de una manera más funcional e idiomática.

Mi crítica al API sigue en pie. ¿A quién se le ocurre nombrar "$" a una función? ¿A la gente se le caen las manos de escribir "jQuery('#button').on(...)"? Y lo de tener distintas funciones según el parámetro ya es de traca. Inexcusable.

Trublux

#53 Si quieres puedes escribir jQuery u otro carácter. Se usa tanto que "tiene" que ser corto.
Lo de funciones según el parámetro no sé a qué te refieres.

kolme

#56

$(".foo"); // Devuelve un NodeList con todos los elementos con la clase .foo

$("foo"); // Crea un HTMLDivElement con innerHTML = "foo"

$(function() ); // Cuando el documento entero se haya cargado, ejecuta la function anónima.

Además lo que me mata es que cada vez que le pasas una cadena, echa un vistazo para ver si tiene pinta de HTML. Para mí un WTF en toda regla.

Por si no me crees: https://api.jquery.com/jQuery/

Trublux

#57 Entiendo lo que quieres decir, aunque no entiendo el tercer ejemplo (quiero decir que no entiendo por qué lo pones, no que no sepa lo que significa).
Pero vamos que es muy sencillito saber diferenciar los dos primeros ejemplos.

kolme

#58 Lo que quiero decir: desde mi punto de vista, cada función debe realizar una sola cosa. Es un principio muy básico en arquitectura de software.

No supone ningún quebradero de cabeza, pero me parece una elección exótica, algo surrealista por parte del autor. ¿Por qué poner más de una funcionalidad en una función? ¿No hubiera sido más lógico usar tres funciones? Creo recordar que hasta el mismo Resig se arrepiente esto, pero ahora mismo no consigo encontrarlo.

Y sobre lo de que es corto de escribir, pues vamos a aplicar esto a todo, a ver qué es lo que pasa. console.log -> §, console.info -> _. Por lo menos podría haber usado abreviaturas como en unix query -> q, parse -> p. Pero no, tuvo que ser $. -- En su defensa, Resig tomó esta idea de Prototype, la precursora de jQuery.

No deja de ser meritorio escribir un selector CSS compatible con todos los navegadores, etc. Pero las decisiones en cuanto a API son, cuanto menos, cuestionables.

Trublux

#60 Vaya lío tienes.

kolme

#62 ¿Serías tan amable de explicarme el lío que tengo?

D

#11 #38 #57 ¿Por qué absolutamente nadie se acuerda de Node.js/io.js cuando habla de Javascript? Menos mal que al menos ha habido una mención al ES6.

Tomad: http://babeljs.io/

kolme

#11 Es simplemente porque estás intentando hacer algo para lo que el lenguaje no tiene soporte de forma nativa: orientación a objetos basada en clases.

Del mismo modo se podría uno quejar de que Java no tiene prototipado dinámico.

O que mierda que los barcos que no puedan ir por carretera.

P

#11 Por fortuna están corrigiendo todo eso con la implementación del estándar ECMAScript 6, que incluye clases, módulos, constantes, entre otras mejoras. Y en camino viene la versión 7 que lo volverá un lenguaje muy potente. De hecho, el ECMAScript 5 ya incluía bastantes mejoras como los getters y setters, pero casi nadie las conoce. El problema con Javascript es a veces una mezcla de desconocimiento y demora en la implementación por parte de los navegadores.

Capitan_Centollo

#52 Javascript se adoptó en los navegadores, entre otras cosas, porque permitía escribir funcionalidad muy potente con pocas líneas de código, que se quedan en casi nada al minimizar el código. Algo muy necesario hace años cuando las conexiones no tenían el ancho de banda y la velocidad actuales.

Lo que ocurre es que cada vez van apareciendo cosas más grandes y auténticas APIS y librerías sumamente complejas, como las de Sencha, angularjs, etc, por lo que se decidió incorporar también en próximas versiones funcionalidades más típicas de otros lenguajes, para hacer más sencilla y clara la implementación y el uso de librerías grandes, complejas y robustas.

Por mi parte me parece estupendo que javascript pueda utilizar más paradigmas de programación directamente, eso sí, hay que aprender a usarlos correctamente y cuando realmente son necesarios.

vazana

#11 porque sólo los lenguajes orientados a objetos son buenos. C, Lisp y Haskell a la basura, junto con todo lo que no sea orientado a objetos o al menos multi-paradigma (como Scala).

En lo del tipado dinámico, estoy de acuerdo contigo, salvo que no es de doble filo, sólo tiene un filo y es hacia ti. Está demostrado científicamente que el tipado estático es mejor, pero es más fácil hacer lenguaje sin sistema de tipos y decir que es dinámico o duck typing que hacer un sistema de tipos decente, con tipos de orden superior (genéricos), verificaciones por parte del compilador, herencia, varianza y contravarianza, etc. Entre eso y el horror que es el sistema de tipos de Java el resultado ha sido una explosión de lenguajes sin verificación de tipos en compilación y programadores que piensan que eso es bueno.

Ahora le quieren poner anotaciones de tipos a Python, pero el daño ya está hecho...

peperojoizquierdo

#64 Acabo de encontrar a mi alma gemela en meneame! Haskell, Scala, sistemas estáticos de tipos avanzados 💘

vazana

#68 lástima que seamos todos tíos, ¿verdad?

khel_mva

#64 Curiosamente todo se reduce a ensamblador y luego a código máquina. Pero sólo los lenguajes orientados a objetos son buenos. Buena suerte con tu dogma.

vazana

#79 Error 444: reading comprehension not found.

Capitan_Centollo

#11 ¿Realmente necesitas emular la herencia clásica en javascript?

khel_mva

#11 Pero es que JS no se usa así... Para eso tienes la cadena de prototipado y todo eso. No todos los lenguajes son iguales, ni se usan igual.
http://wildlyinaccurate.com/understanding-javascript-inheritance-and-the-prototype-chain/

redewa

#6 Tampoco la familia de los LeWaS (que encima son españoles): http://www.proyectoewa.com/wiki/LeWaS

harapo

#5 El ArnoldC es todo un hallazgo.

faelomx
G

Falta en las primeras posiciones .NET y Java

G

#c-40" class="content-link" style="color: rgb(227, 86, 20)" data-toggle="popover" data-popover-type="comment" data-popover-url="/tooltip/comment/2430985/order/40">#40 weno todo lo que engloba .NET, C# y demás mierda salida del mismo sitio.

#20 Has puesto tu anuncio en infojobs ???

D

#20 Si tanto pagas algo raro debe haber ahí, me huele a timo.

La próxima vez no vayas de listo ofreciendo sueldos tan altos para la media como engaňabobos.

P

#20 Yo trabajo sólo por el bocadillo. ¿A qué correo envío mi CV?

ur_quan_master

falta prolog, una troleada de los 70 que algunos se empeñan en usar.

khel_mva

#27 Yo cursé una asignatura de Prolog y he de decir que era bastante interesante. No sé cómo estará el tema ahora.

ur_quan_master

#85 como lenguaje académico bien. Para producción no tan bien.
Saludos.

faelomx

Los tres primeros son el mismo lenguaje pero con distintas palabras reservadas.


Así yo invento también en TurboRajoy++ lol lol lol
:
#include


#define BUENA int
#define GESTION main() #define VIVA ; return 0;
#define ESPANA ">



BUENA GESTION

MIRE USTE "ESPAÑA VA BIEN"
LOS CHUCHESH

VIVA ESPANA

D

#61 A lo mejor es que como lo he "compilado" de cabeza se me ha pasado, pero, por que haces un printf("n")? Aparte, PAUSE puede que no resuelva a ningun programa segun que entornos. En mi Unix no al menos.

Creo que la salida del programa seria:

ESPAñA VA BIENn (La ñ la pongo en minuscula porque no la puedo hacer de otra forma en mi teclado)

Y no se si saldria algo adicional por invocar el PAUSE, pero se me hace raro invocar un comando en mayusculas. Es un gran ejemplo de lo que en clase de programacion en C me definieron como "hacer una guarreria en C". Es como el include. Si lo usas bien esta genial, pero he visto hacer includes de .c. No es que no sea util en situaciones (hay casos en que tiene sentido por lo que dice una de las respuestas), pero creo que es una practica en muchas situaciones:

http://stackoverflow.com/questions/232693/including-one-c-source-file-in-another
http://stackoverflow.com/questions/10448047/include-c-file-in-another

faelomx

#67
Los #define lo que hace que el sustituir una palabra por un trozo de código, un constante. Lo que es una 'macro'.

BUENA GESTION --> int main() printf("ESPAÑA VA BIEN"
LOS CHUCHESH --> ); printf("n"); system("PAUSE");

VIVA ESPANA --> ; return 0;">



Tabulado y bien puesto sería:


int main() printf("n");
system("PAUSE");
return 0;
">


__

Creo que debe sustituir el system("PAUSE"); por 'pause' o por tu comando de parada en terminal.

D

#69 Si, en eso estoy de acuerdo, pero no veo lo de la n suelta. Si querias poner un salto de linea deberia ser n

faelomx

#71 Meneame peta

Obviamente mi intención es hacer un salto de línea con la barra invertida y la n, pero no sale .
(Solo si se pone \\ sale \)

D

#72 Su puta madre. Me ha pasado lo mismo, no me reconoce la \ en mi comentario #71

editado:
Lo raro es que en este comentario me la ha reconocido al menos la primera vez sin duplicarla. Que raro

Pijus_Magnificus

#37 Sí, tú ya te has lucido, macho.

Ahora resulta que dar tu opinión, tan válida como otra cualquiera, es ser un pedante, un pringao o aprovechar la mínima ocasión para lucirse. Viva la libertad de expresión.

davidx

Mira que no tengo ni puta idea de programación, pero alguno me ha hecho gracia.

RojoVelasco

Estos articulos son ciclicos. Cada X tiempo salen con el mismo contenido.

Penetrator

Siempre que hay una noticia de estas echo en falta INTERCAL (https://en.wikipedia.org/wiki/INTERCAL), el primer lenguaje de programación Turing completo específicamente diseñado para ser inmantenible. No tiene ifs, ni whiles... ni siquiera gotos. Pero tiene algo mucho peor: el comefrom.

ahoraquelodices

Echo en falta Chicken(http://torso.me/chicken)

Calomar

Pd: Yo sólo tengo controlado otro personaje de ficción con un vocabulario tan escueto: Groot de 'Los Guardianes de la Galaxia'. Y claro, también tiene su lenguaje de programación.

Pues me pondré a hacer un lenguaje de programación que llamaré Hodor

treintaitantos

Y como no, como siempre sale una noticia de estas en portada de meneame, aprovechó para postear el código en brainfuck de mi calculadora de la letra del DNI

http://pastebin.com/w3ZWbThA.

C

#66 No funciona

treintaitantos

#94 Para que vaya el final tiene que ser un salto de línea (eso es porque cuando el programa funciona en tiempo real, va calculando el valor conforme se van introduciendo dígitos y cuando se le da al enter, es cuando se muestra el resultado y termina el programa).

Prueba otra vez terminando el input con un enter y veras como ahora si.

p

Dios mío, nos ha descubierto lenguajes de programación esotéricos y de coña. ¡Nadie a quien le guste el tema sospecharía siquiera que existen semejantes cosas!

cyrus

En un capitulo de Elementary hablaban de uno de estos, pensaba que era inventado, pero resulta que existe. Que sorpresas te da la vida oiga.

P

Ya olvidaron a Perl cry

D

Por eso nunca quise ser informático para no tener de compañeros a frikis.

meneandro

#12 Espero que no seas escritor entonces (más de uno se inventa sus propias palabras, y alguno que otro su propia lengua)

a

#54. Exacto, con Luis Carabías y Mª LUisa Seco. Veo que no soy el único que peina canas aquí enmedio de tanto pollo.

D

Vine a ver los comentarios hablando de JavaScript y no me habéis defraudado.
Hace poco hice un tres en raya en LOLCODE, fue una experiencia interesante.

a

A mi gusta el Luisricardo. -Luis Ricardo, coge la pelota. -Luis Ricardo, tira la pelota al cesto. -Imbécil, la has tirado fuera!

(Nota: este lenguaje sólo lo entenderán los que ya peinen canas).

AlphaFreak

#23 Te falta el "RUN". Creo que era "cantidubidubidubi-cantidubidubida".l

faelomx

A todo esto. jQuery no es un lenguaje de programación.

JQuery es esto:

soundnessia

Sale hasta el número de teléfono de chuache

http://i.blogs.es/57ea51/650_1200-12/650_1200.jpg

D

Que raro ¿no sale C#?

Perdón, que este es no es para reír, es para llorar...

D

#c-41" class="content-link" style="color: rgb(227, 86, 20)" data-toggle="popover" data-popover-type="comment" data-popover-url="/tooltip/comment/2430985/order/41">#41 Qué tiene de malo C#?

a

Yo usé una vez uno hiper-conciso llamado (creo) EPL y que tenía una pinta muy parecida al Malbolge que aparece ahí.

vazana

#78 no permitas que la realidad te estropee una buena historia.

Si tardó más de 10 días, peor para él, el lenguaje sigue siendo lo que es, una gran basura, que tuvo una adopción muy importante como lenguaje para cosas pequeñas por estar en los navegadores y por el desarrollo y peso actual de la web ha pasado a ser uno de los más usados, también para cosas no-tan-pequeñas, para las que no está preparado.

khel_mva

#81 El lenguaje está diseñado para lo que está diseñado. Si la gente lo usa para cosas que no se puede usar es otro tema. La pintura no está para comer y hay gente que se la come. Cada loco con su tema. Como lenguaje tiene cosas muy buenas y cosas muy malas, pero si sabes usarlo es un pelotazo de lenguaje que te deja hacer prácticamente de todo.

vazana

#84 bueno, es un lenguaje Turing completo, pero eso es dejar el listón un poco bajo.

Un buen lenguaje no "te deja hacer prácticamente todo", un buen lenguaje te deja hacer todo y además te ayuda a hacer lo que deberías (entre lo que está no repetirte) y a no hacer lo que no deberías, bien por legibilidad, reusabilidad, mantenibilidad, errores, bugs, etc. Además de colaborar con más gente.

Lo de no tener los tipos de retorno de la función que ha hecho Paco, es una putada, lo mires por donde lo mires.

khel_mva

#86 Pero es una putada porque estás acostumbrado a un paradigma de programación de tipado fuerte. Alguien que esté acostumbrado a otra cosa dirá lo otro.

vazana

#88 no, lo mires por donde lo mires, es lo mismo.

A los que les gusta el tipado dinámico lo que no les gusta es definir los tipos, pero que Paco los defina le parece bien a todo el mundo, menos a Paco. Pero lo que diga Paco no le importa a nadie, porque es un paquete.

Ahora, si en lugar de decirle a la gente que definas los tipos, lo que haces es inferencia de tipos, con tipado estático, entonces les parece bien.

A quien no le parece bien es a los que tienen que desarrollar el lenguaje, la inferencia de tipos, etc. Pero tal vez si los lenguajes se hicieran mejor tendríamos mejores lenguajes, y menos lenguajes, win-win.

khel_mva

#89 Al final es una cuestión de gustos.

vazana

#90 no, qué va.

http://blog.jooq.org/2014/12/11/the-inconvenient-truth-about-dynamic-vs-static-typing/

Pero es inútil hablar por hablar. Con el tiempo unos lenguajes tendrán más éxito y otros menos. Antes o después se unirá el trabajo de TypeScript, Dart, Flow, CoffeeScript, y demás para mejorar JavaScript, y antes o después se verá que es absurdo intentar mejorar lo que está roto, se dejará por imposible y se iniciará un lenguaje nuevo, como Martin Odersky abandonó Java después de muchos años intentando mejorarlo.

O no.

khel_mva

#91 Hombre, esta claro que cuando un lenguaje deje de servir se eliminará. Piensa que la informática está en pañales. En 50-60 años mira donde estamos. Vamos a toda velocidad y por el camino hay que probar muchas cosas hasta dar con la tecla. Mira la arquitectura. Al principio casas de una planta y con suerte y mira ahora. Para llegar a hacer un rascacielos la de casas que se habrán caído.

D

Qué banda de frikis los que se dedican a hacer esto lol. Me ha encantado el de los espacios y los tabuladores... programa ilegible donde los halla!

OviOne

Grandísimo artículo. No es de interés general. Pero lo que nos partimos el culo los del interés particular, lo compensa.

Sofa_Knight

Esto no puede ser verdad...

chencho12

D

Así os entretenéis los onanistas?
...

D

#30 es de pringados aprovechar la mínima para "lucirse"
esta web tendría que llamarse Pedantéame.

vazana

#30 sí, la necesidad agudiza el ingenio y se han hecho grandes progresos en JavaScript, hasta el punto de hacerlo un lenguaje utilizable. Útil ya era, y casi imprescindible si querías hacer algo en un cliente web, porque los applets de Java y el Flash es para

Lástima que sea un lenguaje hecho en una semana para hacer Netscape más molón, sin grandes aspiraciones ni recursos ni perspectiva para hacerlo un lenguaje decente. Eso lo lastrará por siempre. Además, ahora no hay dios que lo cambie, salvo que se unan Google, Microsoft, Apple y las demás grandes para hacer un lenguaje decente de una vez y librarse de esa lacra. Y eso no va a pasar, Google ya ha hecho Dart, y lo ha hecho fijándose en Java, ¡en Java!

khel_mva

#65 Lástima no encontrar el slideshare de Brendan Eich en el que pone que lo de JS en 10 días es una gran mentira. Y te lo dice el propio creador en la presentación.