angelines

En los 80 había un programa en TVE que se llamaba 3, 2,1 contacto (que por lo visto se basa en un programa inglés).
En uno de esos programas salía Suzanne Ciani explicando lo que eran los sintetizadores (y al final salía un Buchla Music Easel)

En Youtube está el fragmento de ese programa (en versión original)

angelines
angelines
angelines

Javascript, lenguaje maravillloso donde las cosas son tan obvias...:

![] es.... false
+[] es.... 0
+!+[] es... 1
!+[] es... true
[]+[0] es.... "0"
+[]+[0] es .... "00"
+[] es,... 0
[]+ es... "[object Object]"

etc, etc...

elpalleiro

#14 clap clap clap Totalmente cierto! .... Pero también permite pasar funciones como parametros y devolverlas

llorencs

#15 Pero que lenguaje moderno no te permite pasar funciones como parámetros?

elpalleiro

#16

squanchy

#16 Moderno de los últimos 30 años, añado.

mgm2pi

#15 hasta C te permite hacer eso

elpalleiro

#24 Vale, vale me habeis convencido... desde mañana hoy me pongo a aprender rust

m

#29: El problema de Rust es que mucha gente que te pueda ayudar lo tiene un poco oxidado.

D

#29 llegas tarde,el videojuego se fue a la mierda hace años...

D

#24 Sí pero la simplicidad que te da JavaScript es difícil de encontrar en otros lenguajes.

Poder meter funciones tal que así `foo => foo.bar || foo` junto con el funcionamiento peculiar de `&&` y `||` son dos cosas que me encantan

squanchy

#74 Hasta que te encuentras una expresión de varias líneas de código donde han metido 5 funciones así, unas que son parámetros, otras que son el cuerpo de la función que los recibe, y por supuesto nada de poner nombres legibles a variables y parámetros, como (baseImponible, iva) => baseImponible * (1.0+iva/100.0), mejor poner (b,i) => b*(1.0+i/100.0), que en este ejemplo es simple de ver, pero en la realidad te encuentras chorizos que no sabe leerlos ni quien los programó dos semanas antes.

llorencs

#116 Pero como se pueden saltar una de las normas básicas de la programación?

Y obviamente sin comentar.

Yo mas o menos intento hacer las variables lo mas claras posibles y aun así cuando veo mi código de hace unos meses no se exactamente que hacia o me lo tengo que mirar más detenidamente para entender porque coño hice eso.

squanchy

#120 Por lo general, los comentarios en código son contraproducentes, porque dicen que una función hace tal cosa, pero eso sólo era cierto cuando alguien puso ese comentario. Después se ha modificado 5 veces, y ya no hace eso. El comentario lo que hace es confundir.

D

#120 ¿Usas el debugger a diario? ¿O casi todos los días (que programas oviamente)?

D

#116 Las malas prácticas son cosa del lenguaje. Guarradas se ven en todas partes. Y en cuanto a lo que dices, parece que hablas de código minimizado, hay procesos que se dedican precisamente a sustituir todos los nombres de variables con a, b, ab, az...

a

#14 Entiendo que dices eso de manera sarcástica, ya que a eso se llama JsFuck, es un estilo de programación esotérica y educativa para escribir y ejecutar código, desarrollado principalmente por Martin Kleppe, donde el código se escribe utilizando un conjunto muy limitado de caracteres: (,), [,], +,!.

Aquí el listado completo: https://github.com/aemkei/jsfuck/blob/master/jsfuck.js
Y su explicación: https://github.com/denysdovhan/wtfjs

angelines

#53 'Qué bueno lo de wtfjs!.

a

#106 En el segundo enlace que puse este comentario #53 arroja mucha luz sobre esto, ya que JavaScript es un lenguaje débilmente tipado y dinámico, siempre que un operador o declaración espere un tipo de datos particular, convertirá automáticamente los datos a ese tipo (coerción), por lo tanto, con esto "==" / "!=" se obliga a JavaScript a la coerción y de esta manera "===" / "!==" (modo estricto) se cancela, entonces, si comparas diferentes tipos de datos primitivos, tienes que usar el modo estricto de comparación (las anteriores premisas funcionan muy bien excepto para objetos goo.gl/uUutwS ) y para no encontrarte con sorpresas, o en su caso, asegurarte que valor esperas, digo esto último porque también puede haber pros.

La ventaja de esto es comprobar al vuelo la existencia de un objeto mediante su valor:
var var1 = var1 || 0;

var element = document.getElementById("miId");
if(element)

Lo anterior son casi conceptos básicos del lenguaje, igualmente en esta entrada lo explica muy bien: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators

Para profundizar más:
https://medium.freecodecamp.org/js-type-coercion-explained-27ba3d9a2839
https://javascriptweblog.wordpress.com/2011/02/07/truth-equality-and-javascript/

Y esta página en español es muy recomendable:
http://www.etnassoft.com/2011/04/06/coercion-de-datos-en-javascript/

j

#14 si
0 == "0"
Y luego tenemos que
0 == []
entonces porque
"0" != []

angelines

En Medina de Rioseco tienen la piel de un caimán, algo deteriorada:
http://www.eldiadevalladolid.com/noticia/Z1FBC8693-0931-DB7F-D98AA9080090EE89/20140122/cocodrilo/orilla/sequillo.

Aparte de las leyendas, debió ser una ofrenda que realizó un nacido en Medina de Rioseco, que vívia en México.

angelines

Esto es un pollo sin plumas, tiene pinta de TRex (sin color verdoso, ni escamas). Bueno, y sin dientes feroces

E

#23 qué ha sido del pollosaurio que iban a crear activando y desactivando genes?

angelines

Me ha recordado a
- A ver, que es eso que tienes ahí?
- Nada, nada.
- No, nada nada No, es un libro
- Si bueno, es de un colega que me...

Segope

#16 Muy bueno!!

angelines

#27 Eso pienso yo también.