Hace 5 años | Por CrudaVerdad a computerhoy.com
Publicado hace 5 años por CrudaVerdad a computerhoy.com

Javascript se consolida como el lenguaje de programación más popular de los últimos años. En la encuesta a 71.000 desarrolladores de 100 países llevada a cabo por HackerRank, el 71% dominan Java, y el 73% Javascript, por lo que puede decirse que es el lenguaje de programación más popular de 2018. Curiosamente, solo el 42% de los estudiantes de informática lo dominan, indicando que es un lenguaje que se aprende en el trabajo, no en la Universidad.

D

¿Seguro que no es Python el más popular?

m

#1 Eso lo hacían, porque ahora mismo no lo sé... en la U.P.M en los exintos planes de Ingeniería Informática, gracias a eso te podías defender en cualquier lenguaje con tan sólo mirar la sintaxis.

m

#2 Popular no sé... pero en ioT es desde luego lo que más uso...

D

#3 En mi universidad igual [obviamente en la ingeniería informática], nos enseñaban pseudocódigo, después en algunas asignaturas, en las prácticas debías de programar en un lenguaje que normalmente se la soplaba al profesor [yo utilizaba java o c++]. Es que eso me hacía muy versátil, ya que aprendía a programar cualquier lenguaje, o incluso arreglar problemas con código fuente de otro lenguaje en poco tiempo... hasta que ví PHP en 2006 y dije "Que horror de lenguaje", aunque lo programé sin problemas.

t

#4 Hombre, justamente para IoT python tampoco es lo ideal, es demasiado tocho. Buena suerte programando python en un Arduino

t

Dudo mucho que el 73% de programadores de Javascript "dominen" Javascript. Es un lenguaje que parece una cosa (un lenguajillo sencillo con sintaxis tipo C), pero que es una bestia parda, que se parece más a un lenguaje funcional que a un C++/Java. Por no hablar de cómo ha evolucionado en los últimos años, y todas las filigranas que soporta hoy día.

D

#7 Pero es que va a la universidad para ser ingeniero, no programador. Para ser programador especialista en PHP + Mysql están los FP.

zentropia

#11 El pseudocódigo no se ejecuta. Es como aprender ofimaica haciendo dibujitos de que botón apretar.
Python o javascript ya son practicamente pseudocódigo, con la ventaja que lo puedes probar directamente

D

#14 Claro que sí, el pseudocódigo no se ejecuta, después el estudiante de la ingeniería tenía que irse a su casa o a la sala de prácticas, y poner en práctica eso que había aprendido, con el lenguaje de programación que más le gustara. Yo aprendí así, dándome hostias con los compiladores, entiendo cual era el mejor lenguaje de programación para cada caso, aprendiendo sintaxis en las bibliotecas [en aquel entonces no existía ni StackOverflow, ni tutoriales online de lenguajes, y faltaban años para que apareciera Youtube por primera vez], si llega un profesor y te dice lo que tienes que aprender, estás realmente jodido. En la universidad deberían de preparar a la gente para ser ingenieros, para ver los procesos por encima, para enseñarles como evaluar un sistema u otro y él después en su casa, aprende a programar lo que desea. Yo, como te digo, aprendí así, y no me arrepiento para nada, he aprendido un motón de lenguajes de programación porque tengo una base no especializada en un lenguaje, sino que sé como funcionan en general.

D

#13 #14 Claro que sí, el pseudocódigo no se ejecuta, después el estudiante de la ingeniería tenía que irse a su casa o a la sala de prácticas, y poner en práctica eso que había aprendido, con el lenguaje de programación que más le gustara. Yo aprendí así, dándome hostias con los compiladores, entiendo cual era el mejor lenguaje de programación para cada caso, aprendiendo sintaxis en las bibliotecas [en aquel entonces no existía ni StackOverflow, ni tutoriales online de lenguajes, y faltaban años para que apareciera Youtube por primera vez], si llega un profesor y te dice lo que tienes que aprender, estás realmente jodido. En la universidad deberían de preparar a la gente para ser ingenieros, para ver los procesos por encima, para enseñarles como evaluar un sistema u otro y él después en su casa, aprende a programar lo que desea. Yo, como te digo, aprendí así, y no me arrepiento para nada, he aprendido un motón de lenguajes de programación porque tengo una base no especializada en un lenguaje, sino que sé como funcionan en general.

D

#12 Si a mi me dicen eso, entiendo que no es buen programador.

D

#9 ¿Te refieres al Callback Hell?

t

#18 No, el callback hell es más un problema de malas prácticas, y apenas rasca la superficie de lo que se puede hacer con Javascript.

D

#16 yo también aprendí así, pero me parece un método bastante ineficiente. En primer lugar porque se traslada una parte importante del aprendizaje a "la casa", que lo haga el alumno por su cuenta, desaprovechando recursos y conocimientos de las instituciones; y en segudo lugar porque ese aprendizaje "en casa" tampoco lo evalúa el profesor.

De todas formas creo que una cosa no debe quitar la otra, practicar con un lenguaje concreto no debería suponer limitarse a ese lenguaje y su paradigma y estilo.

zentropia

#16 El pseudocódigo iba bien cuando el acceso al ordenador estaba muy restringido. Ya no es el caso. Todo el mundo tiene un ordenador y puedes hacer todas las pruebas que quieras.

kelonic

#1 No estoy de acuerdo.
Yo estudié Cobol en los años 70 y posteriormente me sirvió de base para estudiar otros lenguajes.
Compilaba en tarjeta perforada y eso no fue impedimento para entender el funcionamiento en soporte magnético ni óptico.

Shotokax

#7 tienes toda la razón; sin embargo creo que el problema no es solo de los estudiantes, sino también de los empleadores.

Si sales de la universidad y no puedes poner "JavaScript" en el currículum, sino "Pascal" entienden que no cumples los requisitos para trabajar ahí y dificulta la búsqueda del primer empleo.

Muchos de los que toman decisiones en las empresas no tienen ni quieren tener conocimientos técnicos y van a lo fácil, y si pueden pagar poco mejor. ¿Para qué pagar a un universitario que no sabe JavaScript si tienes a uno que ha hecho un cursillo de JavaScript, cobra menos y ya sabe el lenguaje?

Shotokax

Java no se convierte a "lenguaje máquina", como dice el autor.

celyo

#9 En la encuesta no aclaran que es el concepto "dominar", ya que para cada programador será una cosa distinta, para unos será dominar los conceptos básicos y medios, y para otros conocer los entresijos del lenguaje.

Aún así es gracioso que la encuesta se hable de dominar un lenguaje, y de ahí el artículo deduzca que sea el más popular.

t

#23 Pues porque el universitario probablemente te haga ganar más dinero a medio plazo, porque el del cursillo seguramente hará desastres que te acabarán costando mucho más de lo que te ahorraste en esos 15-30 días que tardaría el universitario en ponerse al día.

Si eres empresario, no tienes conocimientos técnicos, y tomas decisiones técnicas sin asesorarte, te mereces todo lo que te pase, la verdad. Supongo que también ese empresario se preguntará por qué hace falta comprar una furgoneta de 15.000 eur, cuando mi cuñado me vende una con 200.000 km por 1.200 eur, y me ahorro un pastizal. O por qué hay que pagar 100 eur al mes por la fibra óptica, cuando poniendo una tarjetilla prepago con un router de los chinos tenemos internet igual, y las webs acaban cargando de todas formas.

La universidad, y la sociedad en general, no creo que tengan que pensar en proteger a los malos empresarios. Más bien deberían permitir y promover que los malos empresarios se peguen el batacazo cuanto antes, y dejen paso a otros que sepan gestionar mejor sus empresas.

t

#26 Una vez leí que la forma de saber que alguien no tiene idea de un tema es cuando dice que lo domina :-). Los verdaderos expertos normalmente son conscientes de todo lo que les falta por saber, y no van de ese palo.

No encuentro el enlace, pero recuerdo hace unos años que el creador de python reconocía que no entendía muy bien las implicaciones de alguna de las nuevas características que se estaban estudiando.

celyo

#28 Es el concepto de "Solo se que no se nada" de Sócrates.

Llevo un tiempo con javascript, ahora más con temas de Angular, pero realmente a la hora de plantear soluciones te das cuenta a partir de otros que uno tiene ni puta idea.

Yo me plantearía en el nivel medio, y nunca en "domino" el lenguaje.

Shotokax

#27 precisamente por eso estoy diciendo que el problema es de las empresas también.

t

#30 Ya, yo lo que digo es que es un problema exclusivamente de las empresas, concretamente de las empresas malas. No me parece que sea un problema ni de la universidad ni de la sociedad en general, ni que haya que hacer algo al respecto para proteger a las pobrecitas empresas que no se saben gestionar

t

#25 Bueno, se convierte a un pseudo-lenguaje máquina, que luego se convierte a lenguaje máquina, por lo que está entre medias. No exactamente al 50%, sino más cerca de los interpretados que de los compilados.

celyo

#1 Una vez oí: "Un ingeniero puede trabajar de albañil, pero un albañil no puede trabajar de ingeniero".

El problema es que si las empresas requieren de albañiles, y no simples albañiles, sino con una cierta profesionalización, pues el ingeniero se puede encontrar en un pequeño problema, y más cuando los servicios de orientación laboral de las universidades son tan inútiles como para mostrarte el abanico de posibilidades que tienes como ingeniero y lo dejan todo a las visitas de empresas a la universidad que buscan albañiles.

Shotokax

#31 no solo de las malas. Yo estoy en una empresa "buena" y hay managers que tienen conocimientos técnicos limitaditos.

Shotokax

#32 llámalo como quieras, pero lenguaje máquina no es. Hay un middleware de por medio.

angelitoMagno

#1 No son cosas incompatibles. En la universidad hay clases teóricas y prácticas. En las primeras se puede enseñar a programar en pseudo código y en las segundas se pueden aplicar los conocimientos teóricos a un caso práctico "real".

Así es como mejor se aprende, de hecho. Y así es como se suele hacer.

D

#1 bueno, para cosas básicas eso funciona. Luego me dices como enseñar a programar en bajo nivel sin enseñar ensamblador o a manejar memorias y punteros sin pelearte con C.

D

#1 eso no lo he visto en la vida,he visto a gente sin tener ni puta idea,en ningún lenguaje.

Schrödinger_katze

#1 Es mucho más fácil aprender a programar cuando puedes, bueno, programar.
Y para eso hace falta un lenguaje de programación.

Y una vez aprendes uno, aprender el siguiente te lleva una tarde.

D

#37 Estos cacharros aglutinan muchas palabras en una y luego al darle este botón se hacen cosas por abajo y te aparece la pantallita esa en negra con Hola mundo.
Vaya nivelazo de lenguaje técnico...

NapalMe

#32 Ni de coña, lo ejecuta un interprete, el "lenguaje maquina" que se ejecuta al final no es "tu codigo", es el codigo del interprete.

RubiaDereBote

#1 En la universidad ya se enseña a programar, y a demás de eso, de enseñan varios lenguajes de programación. Como debe ser.
Si encuentras gente que si le sacas de su lenguaje se pierden es por otro motivo. De la misma manera que hay arquitectos incompetentes, médicos incompetentes, abogados incompetentes, profesores incompetentes, ...

LLort_II

#1 Eso es. 4 años dando pseudocódigo. Madre mía lo que hay que leer. Luego que salgan de facultad y las empresas se encuentren con "pseudodesarrolladores" que sólo saben hacer bucles y condicionales.

D

#25 Java se convierte a un lenguaje de una máquina, y esa máquina es la JVM. Que no sea práctico tener una implementación física de la JVM no quiere decir que su lenguaje no sea "lenguaje máquina", igual que el código máquina de ARM no deja de serlo porque lo ejecutes en un emulador sobre x64.

gelatti

Quien no lo conozca que pruebe Node.js

d

Javascript... ese lenguaje en el que una pera, puede ser al mismo tiempo un melón. alert('Probando 3, 2, 1...')

Schrödinger_katze

#11 con pseudo código no puedes darle a ejecutar y ver cuál es el resultado. Ni puedes cambiar esta variable o esta otra y comparar la ejecución o si ahora falla.
Dependes de un experto que tenga tiempo de leer tu pseudo código y sepa ver el resultado sin equivocarse.
Un desastre, vaya.

Yo aún funciono de la misma forma: leo algo en el manual y tengo que trastear con ello para entenderlo realmente.

D

#1 Pues no entiendo lo que dices.
Creo que a la gente le falta mucha cultura a bajo nivel. No entienden bien como funciona la arquitectura sobre la que programan, el compilador etc por que cada vez hay más capas.
Por lo que creo que programar sobre el papel es absurdo y aburrido, sin embargo, tener una ruta de objetivos por niveles me parecería más correcto. Creo que existe un lenguaje más o menos "ideal" para enseñar a una persona según su conocimiento actual y dependiendo de lo que quiere aprender. Javascript, Pascal, Java, Python, LISP o C pueden ser todos buenas opciones.

No es lo mismo intentar explicar el funcionamiento de la memoria y la pila, que intentar explicar patrones o programación orientada a objetos
Pero la programación más básica es parecida en muchos lenguajes aunque cambie la sintaxis. Es que ser un buen programador/solucionador de problemas implica saber mucho para poder solventar problemas de entorno y no solo teclear código...

Me explico, cuando programas en C o en Java ( con la gran diferencia que hay entre ellos ), la gran mayoría de cosas importantes para un programador neófito son iguales. Variables, bucles, procedimientos, manejo de memoria etc. No vas a explicar el garbage collector o los punteros y esperar que te comprendan sin una base...

D

javascript, el lenguaje de los mariquitas

Am_Shaegar

#35 #32 Digamos que al lenguaje máquina de una máquina / arquitectura sintética.

Pasa como con el CLR de .NET.

Tienes incluso traductores a ensamblador y ensambladores de esa arquitectura.

Hace muchos años, cuando todavía existía SUN, había rumores de que querían sacar "chips Java", esto es, procesadores que implementaban en hardware físico esa arquitectura.

T

Mis intentos por hacer subir en la lista a Turbopascal 5.5 han sido en vano

D

#19 No es un problema de malas practicas, es un problema de diseño, Javascript se hizo asíncrono para no bloquear el renderizado de la web. Porque Javascript va bién para eso. Y bueno, virguerías se puede hacer hasta con Befunge, pero eso no significa que sea buena idea usar Befunge para hacer aplicaciones web.
Como con Darwin, la evolución de los lenguages de programación hace que siempre triumfe el más estúpido. Y no tengo mucha duda de que estaremos con Javascript hasta que alguien no invente algo peor.

Z

De JS puedo contar dos chistes: inserción automática de punto y comas y this

https://www.reddit.com/r/ProgrammerHumor/comments/621qrt/javascript_the_good_parts/

redscare

#1 En algún lenguaje tendrán que hacer las prácticas (que es con lo que más se aprende).

j

#6 Hmmm... Discrepo.

Se deberían enseñar lenguajes fuertemente estructurados para no permitir "triquiñuelas" y esas cosas que luego se convierten en malos hábitos.

Yo aprendí a programar "en serio" en Pascal. Y luego lenguajes orientados a objetos en Smalltalk. Luego pasar a C, C++ o Java era sencillo.

#11 El psudocódigo está bien, pero para aprender tienes que ejecutar lo que programas y corregir errores.

D

#35 Sabes que es JIT?
Despues de pasar un threshold configurado en la JVP, SI se convierte a lenguaje maquina

Schrödinger_katze

#16 Es decir, que al final aprendes un lenguaje en la universidad, la diferencia es que es posible que tu profesor no sepa cómo ayudarte cuando te quedes atascado.

No me parece algo muy atractivo, la verdad.

D

#5 Mi profesor de programación en primero de ingeniería informática nos dijo el primer día
"yo no tengo ni idea de C (que era el lenguaje de programación de la asignatura) pero les voy a enseñar a programar".

Y vaya si lo hizo. La verdad es que era un crack explicando. Y ni una línea de código echabas en sus clases, en las prácticas sí, pero eso era otro profesor.

ttestt

#12 yo he hecho ambos, (fp y uni) y no solo he aprendido a programar mejor en la fp, en la que se dedicaba más tiempo a programar y menos a diapositivas, sino que hay gente que sale de la carrera sin saber diferenciar bien c de c++.

D
d

Veo mucha gente despistada por aquí. En la universidad deben enseñar a programar, pero parte de ese aprendizaje es llevarlo a la práctica y encontrarse con problemas que surgen en el mundo real, desde problemas instalando un ide, problemas con librerias/modulos, debug, compilados, lo que sea, y esta parte práctica lo lógico es hacerlo con lenguajes que se usan en la actualidad.

Rasban

#44 eso es muy de java en los 90. Hay un compilador JIT que traduce al código máquina en tiempo de carga que aporta que no haya que compilar en cada S.O. como habría que hacer en un compilador tradicional. El único código máquina que es "tú código" es el que escribas en assembler o en hexadecimal pero no están hablando de eso.

D

#35 En realidad es así como se compila hoy en día cualquier cosa. Tanto GCC como LLVM compilan cualquier lenguaje a una especie de "ensamblador genérico", con infinitos registros y demás, y luego sobre ese ensamblador aplican optimizaciones y sólo al final eso se convierte en código máquina "de verdad" para el procesador concreto que tengas, pero se trata de un paso interno. En el caso de Java, en lugar de darte el fuente o el binario final, te dan el "ensamblador genérico" intermedio, y luego tú lo conviertes al código máquina final con un compilador JIT.

redscare

#10 La informática no es una ingeniería clásica. Si esperas que un ingeniero informático sea capaz de diseñar una arquitectura, eligiendo las tecnologías apropiadas para cada capa sin tener ni idea de programar... lo llevas clarinete. Un industrial puede empollarse y consultar las resistencias de distintos materiales y diseñar un cacharro. No necesita saber montarlo él mismo. Un ingeniero informático que no sabe programar no vale ni pa tomar por culo y lo que diseñe va a ser una mierda con problemas por todas partes.

D

#54 Que apropiado: soy "mariquita" y he programado hasta en ensamblador

t

#65 Está muy bien, pero eso requiere una placa bastante tocha (y cara) en comparación con un Arduino o similar. Por no hablar de que implementa un subconjunto del lenguaje.

A ver, que al final casi todo se puede programar casi con cualquier cosa. Total el toolchain de GCC está portado a prácticamente cualquier arquitectura, y si quieres programar un Arduino en C++ o en Java, seguramente puedes hacerlo. La cuestión es si es la herramienta más adecuada a la tarea, o es un pelín matar moscas a cañonazos.

D

#71 Era más bien por seguir con mi lema: "¿De qué se habla, que me opongo?"

t

#64 No estoy diciendo que la FP sea peor ni mucho menos, de hecho es verdad que igual aprendes mejor a programar en una FP que en la carrera, que se orienta (además de a programar) a otras cosas que no son programación. Yo hablaba más bien de autodidactas que se venden como expertos en el lenguaje tal a partir de cuatro vídeos de Youtube o unos fascículos. Esos sí que tienen mucho peligro.

Pero bueno, que hablo en términos generales, hay autodidactas que son los putos amos, universitarios que son unos patanes totales y todos los puntos medios que quieras. Pero estadísticamente unos son más escasos que otros.

D

#24 Hasta que te encuentras un LISP o remasterizado en Clojure. roll

Rasban

Javascript es un lenguaje para milenials. Lo quiero aquí y ahora aunque no se lo que quiero.

t

#57 Javascript se hizo asíncrono, pero puedes usar esa asincronicidad de muchas maneras. Lo del callback hell es la forma cutre de hacerlo, porque escala como el culo. Y a la vista está cómo, con el tiempo, han aparecido formas mucho mejores y más razonables de hacer las cosas, dentro del mismo lenguaje. Como las promesas, o más recientemente los asyncs.

D

#25 Ahora sí. GraalVM con el compilador AOT. tinfoil

D

#76 Aun estoy por ver Clean Code en Javascript o Python. La gente no dedica tiempo a pensar en el diseño antes de teclear por la excesiva flexibilidad.

O

¿Por qué existiendo C la gente usa mierda para programar?

t

#44 Hombre, al final lo único que sabe ejecutar la CPU es lenguaje máquina

La gracia del pseudocódigo de Java, y lo que lo hace estar en un paso intermedio entre los lenguajes interpretados y los compilados, es que hay una fase de compilación. Que es a un código que no es el real, vale, pero la cuestión es que hay un compilador que puede tomarse su tiempo en optimizar. Luego, lo que se ejecuta en tiempo de ejecución es la interpretación de un código, sí, pero mucho más cercano al de la máquina, por lo que es algo bastante más eficiente.

En cambio, con un lenguaje interpretado puro y duro, todo el proceso (compilación, traducción a lenguaje máquina) hay que hacerlo al vuelo, con lo que por fuerza, si quieres que la cosa no se eternice, se pueden hacer menos optimizaciones.

alephespoco

#77 La orientación a objetos es importante, pero en un ámbito más avanzado de la programación. Programación 2, o 3. Es mucho mas importante enseñar la estructura básica de los lenguajes (tipos nativos, bucles, sentencias condicionales, estructuras, punteros... y sobre todo algoritmia). Si tienes una base de todo eso, ya puedes entender que significa public void static main (Object[]) que lleva el hola mundo de un lenguaje orientado a objetos como Java.

tamat

#49 lo dices como si fuera algo muy novedoso... que tiene ya 10 años y si está javascript arriba de todo es precisamente por eso, todos el mundo desarrolla webs en nodejs ahora

j

#75 Insisto, la mayoria de las asignaturas de programación parten de lenguajes imperativos. Luego si te interesa, y se te da bien, te metes en declarativos o en funcionales o en bajo cualquier otro paradigma, eso ya es trabajo personal o una enseñanza más especializada.

m

#82 Buena suerte programando una webapp en C

h

#1 En la universidad deben enseñar un lenguaje, pero no como algo principal, sino como un componente secundario. Un ingeniero informático no debería llegar a ser programador, es un derroche de tiempo y recursos. Los ingenieros informáticos son los que diseñan sistemas, protocolos y los propios lenguajes. Si un ingeniero decide incluir un componente en su sistema que requiere programación, entonces se contrata un programador. Un buen programador es un artista. Y no todo el mundo vale, por mucho que estudie.

gelatti

#85 me has pillado, acabo de descubrirlo

D

Mierda, otra vez que llego tarde a decir que javascript es una puta mierda y que lo que mola es el lenguaje que salió ayer por la tarde que solo conozco yo y mis tres amigos imaginarios.

f

De javascript puedo decir lo mismo que de PHP: son lenguajes traicioneros.

El tipado fuerte y la declaracion explicita es algo que deberia ir de serie en todo lenguaje serio y adulto. Tan solo Python me parece decente en Scripting, y de lenguajes compilados, frente a Java, la verdad es que me gusta mas C#, pero no tengo problemas con ninguno de los dos.

eldelshell

#77 tío, hay mucho más que OOP y puedes basar toda tu carrera y jubilarte dentro de 40 años, solo programando con C.

Shotokax

#48 una cosa es que ejecutes código máquina en un hardware emulado y otra llamar "código máquina" a un middleware. No creo que sea comparable. Eso no lo he visto nunca salvo en este artículo (y en tu comentario).

D

#46 Yo tuve un profesor en la Universidad de Deusto que decía que si dependiese de él, no tocabamos un ordenador hasta 4º de carrera (eran 5 años). Daba estadística y no recuerdo qué otra asignatura matemática.

Sí, los que hayáis estudiado allí sabéis a quien me refiero roll

s

#18 async, await, promises...

eldelshell

#2 creo que es uno de los que más estan creciendo en popularidad dado el crecimiento de ML y que no está siendo usado solo por programadores, sino por data scientists, cientificos, estadistas, matematicos, etc. En SO veo muchas preguntas sobre Python, pero muy especificas a Pandas, Numpy y cosas por el estilo desde hace algun tiempo ya. Ahora, sobre el uso de Python, no llega ni de lejos a Javascript, que es basicamente, todo Internet y muchos otros dispositivos: consolas, TVs, smartphones.

s

#51 Se llama Duck Typing.

Mister_T

Más usado != popular
En la universidad difícilmente se aprende nada a nivel de "dominar"

Es todo lo que tengo que decir sobre éste tema.

eldelshell

#92 por eso la tendencia con JS es hacia Typescript.

1 2 3