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.

camvalf

Donde este el cobol

D

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

D

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

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....

pip

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

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

camvalf

#8 lo se, lo se

enrii.bc

El principio de pareto

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á)

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.

pip

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

D

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

BodyOfCrime

#14 watman!

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.

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

#3

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

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.

barni

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

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

#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.

D

No es mejor interesarse directamente por TypeScript?

barni

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

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.

abnog

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

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.

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

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

blid

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

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.

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.

Frezno

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

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.

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!

D

#17 seguro que no usan lotus notes.

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

#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

#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)

RubiaDereBote

#2 webasembly

borteixo

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

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.

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.

D

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

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)

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.

borteixo

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

pip

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

D

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

D

#2 Perdón, ¿y NodeJS?

m

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

pip

#47 mi trabajo diario es normalmente en C.

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).

alexwing

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

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

D

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

s

Yo es que no uso lenguajes para fracasados.

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.

D

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

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.

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.

D

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

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.

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.

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").

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

D

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

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.

Martull

#14 Caray, mi primer vez. Buenísimo

almeriensis2016

#3 Hotia, otro de los míos.

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.

alexwing

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

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

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

#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.

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.

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

#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

#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

m

#76 Coincido.

d

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

montaycabe

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

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.

K

#63 No.

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.

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

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

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.

1 2 3