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
¿No está Javascript?
#4 #6 ¿Por qué?
#10 Es un lenguaje donde tienes que hacer mil pirulas y retorcerlo sobre sí mismo, para emular lo que hacen otros lenguajes, como por ejemplo la herencia entre clases, tener atributos públicos y privados (los protegidos, no hay manera), el carecer de tipado de datos es un arma de doble filo, etc. A mí, al menos, no me gusta.
#11 programa en c++ y luego usa emscripten
#13 Mola
#14 O incluso duetto
#18 Por el culo te la meto
#19 Menos mal que no dije nada acabado en cinc...
O incluso http://leaningtech.com/cheerp/
#19 Hay Rima hay positivo
#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.
#36 Es verdad que esas librerías aportan un gran potencial, pero en mi opinión, nacieron por la necesidad de poder acceder a los objetos de la interfaz de usuario sin tener que recurrir a usar directamente el DOM, que es un coñazo. Es decir, son una ñapa que se hizo para facilitarle la vida a los programadores, dado que el lenguaje javascript en sí, era engorroso en esas tareas. ¿Que Jquery es cojonudo? Eso no te lo discuto.
También hay múltiples librerías para usar plantillas, algo que visual basic ya tenía por los años 90... Pero no dejan de ser eso, "añadidos", módulos de alguien que estaba hasta los cojones de las limitaciones de javascript, e hizo una librería genérica que le facilitase la vida.
Al menos esa es mi impresión.
#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?
#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ó
#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.
#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.
#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/
#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.
#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.
#60 Vaya lío tienes.
#62 ¿Serías tan amable de explicarme el lío que tengo?
#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/
#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.
#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.
#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.
#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...
#64 Acabo de encontrar a mi alma gemela en meneame! Haskell, Scala, sistemas estáticos de tipos avanzados 💘
#68 lástima que seamos todos tíos, ¿verdad?
#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.
#79 Error 444: reading comprehension not found.
#11 ¿Realmente necesitas emular la herencia clásica en javascript?
#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/
#6 Tampoco la familia de los LeWaS (que encima son españoles): http://www.proyectoewa.com/wiki/LeWaS
ITS SHOW TIME
BECAUSE I'M GOING TO SAY PLEASE meneoDeGatos YOU ARE NOT YOU YOU ARE ME NO PROBLEMO
meneo GET DOWN
YOU HAVE NO RESPECT FOR LOGIC
YOU HAVE BEEN TERMINATED
#5 El ArnoldC es todo un hallazgo.
Eduard Khil seal of approval (para el primer lenguaje de la lista, TrollScript)
gallir, necesitamos un icono para los sellos de aprobación de menéame
#1 #SealOfApproval 👍
Falta en las primeras posiciones .NET y Java
#2 Yo en el primer puesto del ranking pondría javascript
#2 Ajá, así que .NET es un lenguaje de programación...
#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 ???
¿otra vez?
Lenguajes de programación complicados
Lenguajes de programación complicados
emezeta.comLenguajes de programación esotéricos
Lenguajes de programación esotéricos
es.wikipedia.orgPrecisamente estoy buscando un informático para mi empresa que posea un mínimo de 10 años de experiencia en Shakespeare, ArnoldC, Piet, Whitespace, Malbolge, Chef y Ook! Experiencia demostrable en proyectos en GitHub. El sueldo son 600 euros más un bocadillo semanal. Negociable. Razón aquí
#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.
#20 Yo trabajo sólo por el bocadillo. ¿A qué correo envío mi CV?
falta prolog, una troleada de los 70 que algunos se empeñan en usar.
#27 Yo cursé una asignatura de Prolog y he de decir que era bastante interesante. No sé cómo estará el tema ahora.
#85 como lenguaje académico bien. Para producción no tan bien.
Saludos.
Los tres primeros son el mismo lenguaje pero con distintas palabras reservadas.
Así yo invento también en TurboRajoy++
:
#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
#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
#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.
#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
#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 \)
#72 Su puta madre. Me ha pasado lo mismo, no me reconoce la \ en mi comentario #71
#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.
Mira que no tengo ni puta idea de programación, pero alguno me ha hecho gracia.
Estos articulos son ciclicos. Cada X tiempo salen con el mismo contenido.
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.
Echo en falta Chicken(http://torso.me/chicken)
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
#7 http://www.hodor-lang.org/
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.
#66 No funciona
#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.
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!
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.
Ya olvidaron a Perl
Por eso nunca quise ser informático para no tener de compañeros a frikis.
#12 Espero que no seas escritor entonces (más de uno se inventa sus propias palabras, y alguno que otro su propia lengua)
#54. Exacto, con Luis Carabías y Mª LUisa Seco. Veo que no soy el único que peina canas aquí enmedio de tanto pollo.
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 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).
#23 Te falta el "RUN". Creo que era "cantidubidubidubi-cantidubidubida".l
A todo esto. jQuery no es un lenguaje de programación.
JQuery es esto:
#70 http://substack.net/images/dnode-slides/fuck_yeah.png
Sale hasta el número de teléfono de chuache
http://i.blogs.es/57ea51/650_1200-12/650_1200.jpg
Que raro ¿no sale C#?
Perdón, que este es no es para reír, es para llorar...
#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#?
Yo usé una vez uno hiper-conciso llamado (creo) EPL y que tenía una pinta muy parecida al Malbolge que aparece ahí.
#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.
#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.
#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.
#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.
#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.
#89 Al final es una cuestión de gustos.
#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.
#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.
Qué banda de frikis los que se dedican a hacer esto . Me ha encantado el de los espacios y los tabuladores... programa ilegible donde los halla!
Grandísimo artículo. No es de interés general. Pero lo que nos partimos el culo los del interés particular, lo compensa.
Esto no puede ser verdad...
Así os entretenéis los onanistas?
...
#26 No, los onanistas pierden el tiempo haciendose pajas.
Los que pierden el tiempo en estas cosas se llaman geeks y más te vale que si algún día tu vida depende de algún sistema informático lo haya escrito uno de ellos, en lugar de uno de los primeros.
#26 Yo no.
Los que consideran Javascript un lenguaje de broma a lo mejor deberían de darse cuenta de que la necesidad agudiza el ingenio y que gracias a esa necesidad es uno de los lenguajes interpretados más utilizados y más versátiles de la historia de la informática (gracias en parte a dialectos como TypeScript, revisiones del estándar ECMAScript y a que desde hace unos años corre en el lado del servidor).
#30 es de pringados aprovechar la mínima para "lucirse"
esta web tendría que llamarse Pedantéame.
#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!
#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.