Hace 5 años | Por --525300-- a genbeta.com
Publicado hace 5 años por --525300-- a genbeta.com

Si eres desarrollador o estás aprendiendo a programar y te interesa educarte en las bondades de JavaScript, uno de los lenguajes de programación más ampliamente utilizados más allá incluso del navegador, este manual te va a interesar.

Comentarios

PacoJones

#31 Yo estoy hasta los huevos de que reinventen tantas veces la rueda y quieran venderme la moto cada semana, lo malo es que hay empresas que se lo tragan.
No creo que que haya trabajos tan poco consistentes y cambiantes como ser desarrollador web (Front end en mi caso) y todos tenemos un límite.

pip

#33 pero esa es precisamente una de las cosas que lo hace abominable, que cambia constantemente.
¿Te imaginas tener una base de código de pongamos 1 millón de líneas de JavaScript? ¿Cómo estará dentro de 10 años? ¿Y de 30? ¿Cómo mantienes eso, con qué garantías?
El Kernel de Linux tiene 25 millones de líneas de código C que tienen casi 30 años, porque C es extremadamente estable y bien estandarizado.

Frezno

#19 *cof cof cof cof cof cof cof cof * perdón, me atragantaba con la caspa de tu comentario.

D

#19 Java es abobinable,pues nose ,ponte a programar en PHP algo con una complejidad elevada,o con C y olvídate de liberar memoria,Java rules,porque Java es fácil de aprender e implementar,y en eso no le gana nadie,luego ya no hablaremos de malas practicas de programadores,mala optimización del código,no usar el multithreading(o peor,usarlo mal)

pip

#47 mi trabajo diario es normalmente en C.

CortoCircuito

#61 anda que no se nota los que desarrollamos a diario C/C++... te lo noto en los comentarios a la legua. Deja a los niños con su JS y el framework de moda de la semana

No , ya en serio. Me preocupa quién va a programar cosas serias en el futuro, las nuevas generaciones cada vez están más lejos del hardware y todo lo que hay por ahí abajo, qué pena... Las empresas cada vez pagarán más por los que quedemos, eso sí 😂 😂

D

#61 #121 lo único que tengo que añadir,es que no hay curro de C para empezar como junior, todos los "nuevos" acaban haciendo programación de alto nivel,que es lo que tiene mas salida.

D

#c-47" class="content-link" style="color: rgb(227, 86, 20)" data-toggle="popover" data-popover-type="comment" data-popover-url="/tooltip/comment/3037976/order/47">#47 Y no se te olvide, sobre todo java (y c#) es muy fácil de reutilizar. El sistema de paquetes, el de herencia, ahora también el de módulos y el hecho de que sea multiplataforma es una cuestión a tener en cuenta.

Para aplicaciones de gestión con montones de tablas, montones de formas de interactuar (escritorio, formularios web, APIs REST, etc), y necesidad de generación de código a partir de diseños formales no hay hoy en día nada mejor.

borteixo

#19 lenguaje pensado para comprobar formularios lol lol
in yor feis

selina_kyle

#19 Eso de que la maquina virtual tiene mal rendimiento suena muy a principios del 2000. Creo que deberias actualizarte.

t

#1 Cada lenguaje para lo que es. Hay por ahí lenguajes en los que tienes que direccionar la memoria a mano, y no por ello se denostan (pero a día de hoy yo no usaría C para una web)

De todas formas, por eso el tiempo pasa: para que las cosas mejoren. Que algo fuese malo hace tiempo no implica que lo siga siendo ahora (excepción hecha de Windows, claro está)

alexwing

#13 no te digo que no, ahora mismo estoy haciendo una aplicación con react y electron, pero me parece un absurdo, cientos de megas de proyecto para una puta app de escritorio para 4 paginas de nada.

t

#21 Es que el tema de usar JS con todas esas librerías extra para una app de escritorio o móvil... pues tiene sentido cuando se quiere hacer un MVP con backend, pero una vez validado el MVP lo suyo es hacer la aplicación de verdad en escritorio y/o en móvil.

alexwing

#24 es para algo visual, la otra opción es Unity o Adobe Air con ActionScript pero están empeñados en matarlo, cuando es el mismo puto lenguaje, o al menos la sintaxis Emacs es la misma.

c

#48 Psé, algo de razón sí que tiene #38 (aunque ha errado en las tecnologías mencionadas, el estándar de facto en GUI multiplataforma es Qt, no GTK). Un desarrollo en C++ y Qt va a ser menos propenso a errores que un proyecto en React por muchas razones, como que Qt es un framework más maduro, o que el paso de compilación ya da cierta garantía de la validez del código, cosa que en lenguajes interpretados y/o débilmente tipados no ocurre.

t

#72 A eso iba yo, no me supe explicar bien. Cierto, es PyQt, no GTK... hace muchos años que no toco nada de escritorio, se nota, ¿no? jejeje

D

#38 Yo creo que todos esos inventos vienen forzados por una industria que...
Y yo creo que vienen forzados por unos Illuminati que...

Ahora en serio, si por "Industria" entiendes grandes corporaciones, a ellos se la suda. De hecho cuanto más desarrolladores especializados y aplicaciones específicas para cada entorno se necesiten, más van a poder facturar.

Somos los pequeños desarrolladores autónomos los más beneficiados de estos sistemas unificados, ya que nos permite competir con la "Industria" al requerir menos recursos.

t

#80 Pues es otro punto de vista interesante...

Yo lo decía porque estoy harto de ver ofertas para "full stack developer", que lo que significa es que tú solito te tienes que currar el front dinámico con Angular o React, el back, la app móvil para dos o tres plataformas y si te descuidas, la app para smartTVs.

En los últimos años como freelance lo que he hecho ha sido colaborar con otros pequeños desarrolladores autónomos: en un proyecto yo me encargo del back, otro del front, y un diseñador de la maquetación; a veces alguien más si hace falta app. Al final el tiempo de desarrollo con tres especializados es inferior al de uno solo "full stack" ya que cada uno se especializa en lo suyo, por lo que la "cooperativa" es más eficiente que uno solo.

Pero como te digo, es solo mi experiencia actual, que puede perfectamente cambiar el mes que viene, y es cierto que la scene de desarrolladores full stack independientes es cada vez más fuerte y ahí tiene todo el sentido lo que propones...

f

#38 para eso existe Xamarin.Forms (con su bridge Ooui para navegador), pero nadie parece estar usandolo...

NapalMe

#38 La gente que no sabe programar se te va a quejar, e incluyo los que scriptean en javascript.
"No hay que reinventar la rueda" dirán los que no saben ni que forma tiene una rueda.

D

#34 ¿No os sirve Qt? Yo lo he usado mucho, y estoy encantado.

alexwing

#c-73" class="content-link" style="color: rgb(227, 86, 20)" data-toggle="popover" data-popover-type="comment" data-popover-url="/tooltip/comment/3037976/order/73">#73 Lo use hace mucho tiempo, QT 4 + C# una gozada aunque aún estaba algo verde.

D

#c-88" class="content-link" style="color: rgb(227, 86, 20)" data-toggle="popover" data-popover-type="comment" data-popover-url="/tooltip/comment/3037976/order/88">#88 Con C# no lo he probado, yo empecé directamente con Qt5 y C++ y me encanta. Una de las cosas que tengo pendiente es aprender QML, a ver si merece la pena.

D

#34 No son opciones similares. Adobe Air utiliza una máquina virtual.

Es cierto que requieres más recursos. Puedes usar kotlin para transcompilar a js y dentro de nada a nativo multiplataforma. Perfecto el proyecto es más grande...

Pero con un ordenador de 16gb y un i7 me importa un pepino el tamaño de las librerías. La tecnología está para hacerle la vida fácil a la gente, en este caso los desarrolladores.

D

#21 es que el interprete de javascript que usa tu app, con electron, es un browser completo. Creo que es chromium.

alexwing

#36 si si, pero aparte de chromium, tienes un nodeJs completo, más las librerías de react, más otras mierdas varias, lo increíble es que la aplicaciones van sorprendentemente bien, de hecho Unity lo tuvimos que descartar por rendimiento.

d

#21 Ese no es un problema de JS, es un problema de electron. Y sí, cualquier chorrada en electron son cientos de megas, pero es que desgraciadamente hacer una aplicación multiplataforma con interfaz gráfica sigue siendo muy complicado en 2018

d

#21 Cambiate a Vue.js
React es pasado! es tan poco ... cool

alexwing

#78 Joder macho, si me quedo dormido ya estoy desactualizado.

d

#84 A mi casi me pasa el tren por encima. En pocos meses en la empresa:
de React a Vue, Docker, Kafka, menos mal que el backend sigue siendo Rails

dreierfahrer

#78 Otra de las cosas divertidas de JS:

La fiesta de los frameworks que son la ostia.

Tengo yogures en la nevera con fecha de caducidad mayor que el 90% de los frameworks de JS

d

#89 Agarraros los machos que REST también prehistoria.

D

#13 ¿Desde cuando en C se direcciona "a mano" la memoria?

musg0

#79 Un puntero sería una dirección de memoria puesta "a mano", no? Si pones un número al azar y sigues ese puntero te casca el programa casi con toda probabilidad.
También para recorrer un array de "objetos" (más bien structs) puedes guardar el puntero a la cabeza y vas sumándole el valor de lo ocupa el "struct" que contiene y así accedes a los diferentes campos que contiene.

PauMarí

#79 desde que aprendes a "jugar" con los punteros.... Aunque no tienes perquè hacerlo, claro.

D

#79 se dice que en un lenguaje la memoria se direcciona a mano, cuando el programador puede controlar a que dirección de memoria apunta una variable de forma arbitraria, e incluso usando aritmética en las direcciones de memoria.

Eso no solo es posible en C, sino que muy habitual y necesario para ciertos casos.

BodyOfCrime

#14 watman!

Martull

#14 Caray, mi primer vez. Buenísimo

D

#14 20 veces te votaba esto lol

D

#1 las bondades de js,y lo que te deja guarrear,seguro que eres un puritano de python, ensuciate en el barro con js!

alexwing

#c-43" class="content-link" style="color: rgb(227, 86, 20)" data-toggle="popover" data-popover-type="comment" data-popover-url="/tooltip/comment/3037976/order/43">#43 que va Python no lo he tocado en mi vida, mi lenguaje preferido es c#, pero la mayor parte de mi vida profesional se la ha llevado PHP, ActionScript, Java y JavaScript por ese orden.

D

#46 PHP da sida,sobretodo cuando es algo muy complejo....Js tiene sus cosas,pero bueno,no es tan malo.

D

#53 Yo los lenguajes dinámicos los veo todos igual de cancerígenos. Espero que WebAssembly prospere y podamos dejar atrás JavaScript.

D

#53 Discrepo, normalmente el problema no es el lenguaje sino el programador. Evidentemente PHP tiene sus limitaciones y sus usos concretos, no vale para todo, pero sida...

Por otro lado JS, hay que decirlo, hace unos pocos años estaba bastante jodido, pero ahora con el Ecmascript 6 y el Typescript consigue que el proceso de desarrollo no sea tan doloroso.

Nagash

#134 #53


PHP esta muy extendido debido en parte a la facilidad y bajo coste de deploy.

Si trabajas para una empresa, mediana+ no tendras problemas con los costos de infraestructura que supone tener servidores propios como Tomcat, WildFly, deploys en pyhton con o hasta ISS, pero si desarrrollas para pequeñas empresas o particulares, muchas veces no suelen tener infraestructura y pueden no querer pagar un VPS que ademas les va a requerir mas administracion.

Ahi es cuando PHP "brilla" ya que cualquier hosting berreta de dos duros soporta el lenguaje con toda su especificacion, mientras que si quieres hacer un desarrollo en J2EE o en Python tus alternativas son VPS o servidores propios.

Otro tema es que como PHP esta tan extendido hay bibliotecas de alto nivel para casi todo, entonces cuando te enfrentasa un problema especifico seguramente ya exista una solcion rapida para ello, por no mencinar las miles de aplicaciones que estan escritas en PHP y dispoibles gratuitamente.

Y ojo, no defiendo PHP, no lo suelo usar para casi nada y tengo la suerte de trabajar en Java y Python pro hay que reconocerle algunas cosas al pobre PHP

D

#53

PHP da sida,sobretodo cuando es algo muy complejo

Puedes argumentar esta respuesta, o es solo un comentario sin fundamento?

D

#1 #43 JS vs Python... Pelea de inválidos!

prejudice

#1 Para eso está TypeScript (Que se transpila a JavaScript)
Y con Google (angular) y Microsoft detrás, posiblemente sea un lenguaje con mucho futuro

alexwing

#45 lo probé con la librería JavaScript para juegos phaser, vi que tenía mejor tipado pero no le llegue a coger el punto. Eso sí solo por usar visual studio merece la pena.

prejudice

#55 Puedes seguir usando el VSCode para JavaScript.
La verdad es que hay que quitarse el sombrero. VSCode es una delicia (Aunque sea de Microsoft)

s

#45 Typescript es ES6 con anotaciones para tipos.... nada más.
De hecho, puedes pasar de escribir los tipos y son prácticamente lo mismo.

prejudice

#74 Lo de los tipos es una diferencia muy gorda, sobre todo en aplicaciones empresariales donde necesitas que todo esté bien armado para evitar sorpresas a medio plazo. A parte, el tipado ayuda al IDE con el autocompletado.

f

#c-74" class="content-link" style="color: rgb(227, 86, 20)" data-toggle="popover" data-popover-type="comment" data-popover-url="/tooltip/comment/3037976/order/74">#74 Si obvias los decorators, la existencia de interfaces (lo cual hace que puedas hacer SOLID), el dependency injection, que tiene scope de clase y no solamente el global y local, los modificadores para public private protected y readonly, ... sí, efectivamente son prácticamente lo mismo, si consideras que C# y ES6 son prácticamente lo mismo, porque typescript está más cerca a nivel de lenguaje formal de C# que de ES6.

D

#1 ¿? Javascript siempre ha tenido variables globales y locales...

alexwing

#58 no, siempre han sido accesibles en el DOM ergo no son locales.

D

#63 mmm... no que yo recuerde. Si defines una variable en un constructor no es accesible en el DOM, a menos que lo hagas usando "this.[etc]". (Y diría que dentro de una función tampoco, solo que debes declararlas con "var").

m

#76 Coincido.

D

#76 Depende de si expones o no esas variables como miembros del objeto, o privilegiadas a través de funciones que te permitan obtener o cambiar el valor de las mismas.
También puede en un closure el hoisting te juegue una mala pasada (si no las declaras con var - o let en los casos que sean de aplicación).

K

#63 No.

K

#1 Es increíble que te voten positivo. Esto no hace más que demostrarme que la gente no sabe programar en JavaScript y después viene a Menéame a quejarse de cosas que simplemente no deberían hacerse en ese lenguaje.

Veo mucha ignorancia en los comentarios. Joder que triste.

PacoJones

#1 Javascript tiene variables locales desde siempre, ej. https://librosweb.es/libro/javascript/capitulo-4/ambito-de-las-variables.html

D

#1

Las bondades de JavaScript.... un lenguaje que hasta hace nada no tenía variables locales. Por lo demás interesante en los tiempos que corren no queda otra que usarlo.

¿Quien te ha dicho tal mentira?

If the variable statement occurs inside a FunctionDeclaration, the variables are defined with function-local scope in
that function, as described in section 10.1.3. Otherwise, they are defined with global scope, that is, they are created
as members of the global object, as described in section 0.


Eso está sacado de la primera versión de ecma 262, que puedes leer aquí:

https://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262,%201st%20edition,%20June%201997.pdf

Es la primera especificación formal del lenguaje, del año 1997

En serio, no se de donde sacáis esas cosas.

pip

#15 Amazon y Netflix usan muchas cosas que van de C incluso ensamblador a JavaScript.
Digamos que usan todo.

D

#17 seguro que no usan lotus notes.

RubiaDereBote

#17 ensamblador no usan y c tampoco (al barro no bajan porque hoy en día no es necesario, les sale más rentable escalar horizontalmente o verticalmente en infraestructura que meterse a programar algo que les durará meses, estará plagado de errores, se les complicará mantenerlo y el día que se vaya quienes lo hayan hecho... problemón). Netflix basa todo su rendimiento en la infraestructura de aws. Para la parte de negocio batallan como todo hijo de vecino con soluciones de alto nivel. Cada cierto tiempo sacan artículos de cómo han hecho un cambio en js que ha hecho mejorar la cosa y cosas del estilo. (hay varios publicados). Donde más tiempo gastan es en aws, incluso han liberado algun proyecto para automatizar procesos en aws.

pip

#52 si que usan ensamblador, poco pero hay. Los códecs de video en el lado del server no van en JavaScript

RubiaDereBote

#57 Los codecs van en binario, porque han sido compilados, pero no porque se hayan programado en ensamblador. Y los vídeos están almacenados en S3. Y por otro lado ni siquiera los han desarrollado ellos. Lee más sobre netflix porque te veo un poco perdido. Netflix solo ha tenido mucha suerte desde un punto de vista comercial, técnicamente es muy malo, desde un punto de vista de usabilidad también es muy malo, ... y consiguen el rendimiento gracias a la infraestructura y la ayuda de aws (donde tienen a varias personas asignadas para ellos).

pip

#62 mírate el código fuente de los códecs de video en Internet, por ejemplo los de FFMPEG (que usa Netflix) o GStreamer, busca tu mismo el ensamblador, y mira tu mismo los comits de parches y verás si son "un estándar" o se cambian constantemente.

RubiaDereBote

#64 Netflix no ha desarrollado ningún codec y mucho menos en ensamblador. Usa VP9 y H264

pip

#65 #75 las "APIs" hay que adaptarlas y mantenerlas para usos serios. Tú no tienes la infraestructura de Netflix con los códecs mainstream de ffmpeg. Os equivocáis mucho. Probablemente hasta adapten el Kernel también.

D

#83 Los "probablemente" no tienen cabida en programación, o lo hacen o no lo hacen. Y si no hay artículos x ahí o algo que lo demuestre, "probablemente " sea falso.

pip

#65 aquí tienes el código fuente ensamblador de codecs H264 y VP9 entre otros, de FFMPEG



Son todos los *.asm .

D

#64 Que yo sepa ffmpeg ya existía décadas antes que Netflix... Que usen una API existente no tiene nada de especial. Todo lo contrario, demuestra que es una empresa "del montón" tecnológicamente hablando, que se aprovecha del open source a la chita callando para llevarse el mérito.

barni

#17 #15 Dejando de lado las plataformas de dispositivos (Alexa/Echo, Kindle, FireTV), Amazon es mayormente Java, diría que en un 90%. Luego hay una cantidad considerable de JavaScript y TypeScript, y scripting en Python y Ruby. En resumidas cuentas, hay de todo menos PHP.

t

#2 Please, elaborate.

Lo que es una abominación es usar cosas como Java, con su VM, para ejecutarse en un servidor. O el monstruo que era (es) .Net antes de Core, parcheando un lenguaje/framework orientado a escritorio para usarse en web.

Edito: ojo, que yo no soy desarrollador JS (soy de backend, y por ahora no me tocó lidiar aún con Node más que para cosas sencillitas) pero lo que he usado de JS no me parece tan malo.

D

#16 Referente a JS: tan solo su implementación asincrona ya es para darle de ostias a quien lo inventara.
Y por el leve tipado dos ostias más.

Por la cantidad de mierdas y problemas de JS salió TypeScript.

Es más, es tan a boleo lo que hacen que se han pasado años añadiendo la necesitad de punto y coma a final de sentencia y luego quitándola, en 2014 debías finalizar con punto y coma, pero no en 2016, luego si, pero a día de hoy no. Es una casa de putas.

Referente a Java si, mi problema con Java es su JVM pero también es su principal virtud. Y parece que con la incursión de .Net-Core Oracle ha decidido darle vida al lenguaje y liberar su desarrollo mejorarlo, el principal problema de Java se llamaba Oracle.

dreierfahrer

#27 Javascript es TAN MIERDERO que cuando mas aceptacion tiene es cuando se inventan lenguajes que se pueden 'compilar' a javascript para NO programar en javascript lol

d

#27 que hay de malo en usar libuv? El tipado estricto es sólo una herramienta más; tiene sus ventajas y desventajas. Erlang tampoco lo tiene y no creo que nadie se atreva a calificarlo como lenguaje inferior.

D

#90 no hablo de usar una librería para dotar de asíncronía a la implementación si no que la implementación de JavaScript(ECMAScript6 ) es por defecto asíncrona y no controlas la ejecución de eventos a no ser que implementes el event.preventDefault() y personalmente creo que debería ser al revés, por defecto sincronía y si lo necesitas asíncrono.

Otro ejemplo y quizás patino es que por defecto la carga de scripts no es en paralelo y como pete uno se lleva a toda la página por delante.

blid

#16 Por curiosidad, ¿con qué tecnologías tienes experiencia y cuánto en backend en un entorno profesional?

t

#37 He trabajado con .Net, .Net Core, PHP (Laravel y CodeIgniter), Java (Hibernate, Struts... hace ya bastante de eso), Perl (para web, ¡nunca más!) y C++. También, en el principio de mis tiempos laborales, con ASP-a-secas (VBScript). Actualmente trabajo con PHP-Laravel.

En total unos 15 años en la industria, los tres últimos como freelance.

Siempre hice backend. Puedo tocar HTML, CSS (y sus cositas asociadas tipo SASS, Bootstrap, etc) y JS (y las típicas librerías, y algo de React y de Meteor) pero mi creatividad es nula así que siempre me centré en el back.

borteixo

#42 si no pones foto de perfil no te van a llamar para la oferta.

s

#56 A lo mejor se postula para una oferta de trabajo de fuera de España.

borteixo

#70 esperemos, porque sin "proactivo" y palabras molonas no tiene ningún futuro.

t

#56 Estoy demasiado bueno para hacer eso, me contratarían sin siquiera leer el resto y luego serían acusados de discriminación

#70 de hecho actualmente estoy "en el mercado" fuera de España

D

#16 El rendimiento de la JVM está a años luz de cualquier lenguaje dinámico como JavaScript, Python o PHP. Para aplicaciones de escritorio si que es un cagarro y aún no he visto ninguna escrita en Java que sea medianamente aceptable, pero en servidores es precisamente donde Java brilla.

sixbillion

#16 O el monstruo que era (es) .Net antes de Core, parcheando un lenguaje/framework orientado a escritorio para usarse en web.
Te refieres al famoso WebForms ... Si, Microsoft aprendió duramente de esa aberración, que es la que le ha dado mala fama y con razón.
Pero antes de Core ya se puso las pilas con MVC5, DataAnotation, Razor, Entity Framework... podías hacer una buena web de gestión en pocas semanas.

barni

#2 te has dejado algún argumento por el camino. Bueno, mas bien todos los argumentos.

Avengis

#c-2" class="content-link" style="color: rgb(227, 86, 20)" data-toggle="popover" data-popover-type="comment" data-popover-url="/tooltip/comment/3037976/order/2">#2 La gente que criticais tan duramente a javascript seguramente no habéis probado las últimas versiones del lenguaje, especialmente a partir de la especificación ECMAScript6 el lenguaje dió un salto cuántico y a estas alturas compararlo con antiguas versiones es basicamente como comparar lenguajes distintos.

Sin contar además que a día de hoy han aparecido lenguajes de mas alto orden como Typescript, fuertemente tipado que recuerda a java o C#, que compilan en javascript, por lo que poco tiene que ver el panorama con lo que era hace tan solo unos pocos años.

Además lo que hace fuerte a javascript ahora mismo es la enorme comunidad y ecosistema que tiene detrás, la mayor seguramente de todos los lenguajes de programación.

D

#30 A mi modo de ver lo que más fuerte hace a JavaScript es la comunidad de Node.JS, además de ser un lenguaje con una curvatura de aprendizaje fácil y un entorno de ejecución muy plug & play. No necesitas un servidor para empezar a programar ya que es lado cliente (excepto librerías de lado servidor). Esa rapidez hacen de Javascript un lenguaje muy versátil y como bien dices el salto desde ECMAScript6 ha sido muy bueno. Mi crítica en otro comentario viene dado pro la falta de estandarización y consenso de los desarrolladores y como bien dices, el leve tipado trae mucho de cabeza ya que es a mi modo de ver un sinsentido.

D

#30 Me ha gustado tu comentario, el único fallo que le veo es que me chirría mucho de lo de compilar en javascript. ¿No querrás decir traducir o convertir?

RubiaDereBote

#2 webasembly

D

#2 Perdón, ¿y NodeJS?

f

#2 ¿Sabes cómo sé que las películas de 50 sombras de grey son una chusta? Porque me las he visto todas. Lo mismo para Lars Von Trier, aguanté como un campeón anticristo, dancer in the dark, melancolía, ...
Soy de la opinión de que no se puede criticar algo sin conocerlo lo suficiente.
12 años, 12 años enteros de mi vida estuve con Java certificándome como arquitecto, 8 con .NET con MSCD pero sin certificarme como arquitecto. He programado en COBOL, C++, ensamblador, Delphi, Ruby, ... y de ninguno he dicho jamás que sea una abominación.
A día de hoy casi todo lo que hago es NodeJS y Python. Y estoy contento con ello. Seguramente el primer día que escuché hablar de NodeJS me chocaba y tenía mis reticencias, ¿sabes cómo las superé? Usándolo.

Así que te recomendaría que lo usaras antes de emitir un juicio de valor tan negativo.

anv

Alguien me podría explicar a quién le puede parecer mejor o más intuitivo cambiar:

const foo = function foo()

por esto?

const foo = () => doSomething()

O peor aún, por esto?

const foo = param => doSomething(param)


O por ejemplo, esto:


setTimeout(function() , 1000)
}, 1000)

Que es cierto.. un timeout dentro de otro timeout puede parecer un poco enrevesado pero se entiende, pero... ¿habrán inventado una forma mejor de hacerlo?

const wait = () => new Promise((resolve, reject) => )
wait().then(() => )
.then(() => console.log('I promised to run after 2s'))


Pues no, no sólo es más largo sino que es ilegible a no ser que lo conozcas bien.

R

#39 para los que estamos acostumbrados y avezados a la programación funcional, foo = param => doSomething(param) nos parece claro y conciso (expresiones lambda de una sola línea.

El const por eso me sobra. De hecho algo guay que tiene python es que no puedes definir lambdas de más de una línea por diseño (y una vez entiendes el por qué... Lo ves como una bendición y buena praxis)

anv

#54 Yo lo que estoy viendo es que nos estamos alejando cada vez más de lo que se buscaba en un principio, que era que las cosas sonaran más o menos naturales.
Si me pones:
foo = param => doSomething(param)
yo intuitivamente pienso "foo = param" ? quiere decir que están asignando el valor de param a foo? Entonces foo es una variable? y después leo "implica o señala" doSomething(param), aja... pareciera llamar a la función do something con el parámetro param... pero entonces por qué lo asignaro a foo? A no ser que no lo estuvieran asignando. Tal vez estaban "afirmando" que foo equivalía a param. ¿o sería una comparación?

Por otro lado, cuando pones:

function foo(param)

queda clarísimo que estás creando una función llamada foo, que recibirá un parámetro y que ese parámetro se transferirá a la función doSomething().

A mi me gustó cuando aprendí hace muchos años Pascal. Un lenguaje que cualquiera que sepa programación, sin saber nada del lenguaje, puede leer y entender a demás de ser un lenguaje de nivel bastante alto pero con funciones de bajo nivel si hacen falta. Que no necesita punteros como el C pero los tiene si los quieres usar. Donde el compilador valida cada tipo de datos y no te deja cometer errores y a demás que compila en una sola pasada así que la compilación es increíblemente rápida. Pero sobre todo lo que mejor me parece de ese lenguaje era la legibilidad. Hay que teclear más pero a cambio el programa se puede entender y mantener fácilmente.

En ese sentido me sinpatiza bastante Python aunque tengo pendiente hacer algo en serio con él para aprender de verdad.

K

#68 Te suena raro porque no estás acostumbrado a leer código de un lenguaje del paradigma funcional, que es totalmente diferente del imperativo. La forma de programar en un paradigma es muy diferente respecto al otro. En cualquier caso, JS no es funcional sino imperativo y aunque hay gente que intenta usarlo como tal se encuentra con situaciones que lo que hacen es complicarse la vida de mala manera. Esa sintaxis está pensada para solucionar otros problemas que la sintaxis anterior tenía con el "contexto actual" (this).

Sobre lo de las Promises, discrepo muchísimo. El callback hell de JS es desafortunadamente una realidad y un horror.

DISCLAIMER: Que esa sintaxis sea común en los lenguajes funcionales no hace a JavaScript funcional. Hay gente que confunde paradigma funcional con "usar funciones" y eso simplemente muestra un desconocimiento profundo de ambos mundos.

M

#85 Es una de las cosas buenas que tiene usar las "arrow functions" que te ahorra cosas del tipo "var me = this" o usar bind/call/apply para cambiar el contexto de la función. Lo que dice #68 de que si lees "foo = param => doSomething(param) " asumas que a foo le asignas el valor de param... lo veo bastante erróneo. Es como si ves "var a = 3 + 2" y piensas que a vale tres. No lo haces porque sabes que primero tienes que evaluar la parte derecha de la expresión y en el otro caso la parte derecha "param => doSomething(param)" sabes que devuelve una función. Pero vamos, que estoy de acuerdo en que Javascript muchas veces es para pegarse un tiro en los cojones de las cosas tan raras que hace.

D

#54 Pues que quieres que te diga, Haskell es uno de mis lenguajes favoritos y foo = param => doSomething(param) me parece una mierda ilegible.

t

#39 No es mejor o peor, es distinto
La función flecha (=>) no cambia el contexto, así que "this" sigue siendo lo mismo que fuera de la función, mientras que en la definición clásica cambia. Para muchas cosas es mejor.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions

D

#29 no es inclusivo? vull dir, aprendiendo TypeScript no aprendes también las bases de JavaS?

K

#66 Es parecido, pero no es lo mismo por lo tanto no. En mi opinión Typescript fue interesante hace unos años. Hoy en día ya no tiene tanta utilidad y es mejor directamente utilizar es6+lintern+transpiler.

#66 No todas las bases. Hay cosas de JS que TS "esconde" (para alegría de muchos... )

D

No es mejor interesarse directamente por TypeScript?

barni

#28 para entender TypeScript tienes que entender JS si o si.

montaycabe

Logo es el futuro, el concepto de la tortuga es revolucionario y no lo tiene ningun otro lenguaje

PauMarí

#94 bk 100

camvalf

Donde este el cobol

D

#3 Mejor el Basic de toda la vida...

camvalf

#4 eres un viejuno

D

#6 lol lol lol lol lol Imagínate que trabajé con diskettes de 8 pulgadas .... y que los primeros ordenadores con los que trabajé no tenían sistema operativo... Pero aquí estoy dando guerra....

camvalf

#7 no jodas y yo pensando que por haber extrenado un Spectrum 16 kb, que lo conservo con su caja y "to" ya estaba cerca del jurásico tinfoil

D

#10 Yo empecé bastante antes, hice algunas cositas con el Spectrum, era bastante divertido....

D

#7

Los primeros OS son de los años 60 ... ¿no estarás exagerando un poco?

Otra cosa es que el OS fuera rústico de narices.

D

#26 El ordenador tenía 48kb de ram y diskettes de 136 kb

D

#26 No dice que no hubiese, si no que los PCs venían sin ellos instalados. De hecho antiguamente era muy normal que la gente editase 4 tonterías de los sistemas antes de instalarlos para tener su "custom OS".

pip

#3 pues déjate...que los que quedan cobran fortunas por mantener legacy de la banca

camvalf

#8 lo se, lo se

D

#8 esos son los privilegiados,que han pillado un buen sitio,hay miles igual en cárnicas,cobrando igual que cualquier currito de otro lenguaje.

m

#51 Y sin posibilidad de escapatoria,más que a otra cárnica similar

PauMarí

#8 no me jodas! Y yo, sabiendo cobol, haciendo webs cual adolescente acabado de salir del horno....

EternoViajero

#8 ejem, ejem.... aquí un picador de Cobol que no gana una fortuna...

D

#3

El lenguaje del futuro. Todos los demás quedarán obsoletos y seguirán los mainframes de IBM.

almeriensis2016

#3 Hotia, otro de los míos.

D

#3 ¿el COBOL es esa cosa moderna que quier desbancar a Fortran?

abnog

Yo desde que me he familiarizado con la programación funcional veo JavaScript de forma muy diferente, y me ha empezado a gustar.

s

Yo es que no uso lenguajes para fracasados.

enrii.bc

El principio de pareto

Mubux

#12 Mal aplicado. No puedes aprender 80% de cantidad en 20% de tiempo, no tiene sentido, a no ser que aprendas solo las chorradas inutiles y dejes todo lo complejo y útil.

Querran decir que han seleccionado el 20% del lenguaje mas util y te permite hacer el 80% de las cosas.

D

#12 Yo prefiero la regla del 90-90. Aprender el 90% te llevará el 90% del tiempo. Aprender el 10% restante te llevará el otro 90%

https://es.wikipedia.org/wiki/Regla_del_noventa-noventa

R

El documento en general está bien para aprender rápidamente la sintaxis y constructs de javascript, aunque he echado de menos cosas que realmente te enseñan y son necesarias para el día a día (y que es lo realmente difícil): testing frameworks como Jasmine o Protractor (demasiados programadores sin conocer el concepto de unit testing...), arquitectura y buenas prácticas de código limpio.

En ese aspecto relacionado con Python, the Hitchhiker guide to python ha hecho mejor trabajo (para mí).

D

Joder menudo spam, no? Anda que no hay manuales en Internet no me jodas. Negativo al canto

#5 Vaya, te he votado positivo sin querer, en realidad no quería votar nada. Solo iba a decir que no me parece spam en absoluto... No te voy a compensar votando negativo en otro comentario porque estaría feo, pero vamos, no quiero que creas que esoy de acuerdo con tu comentario...
Por otra parte, he leído una parte del manual y me parece bien escrito, y "straight to the point".

1 2 3