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.

Comentarios

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.

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.

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.

S

#84 no se que eso de programción 2 o 3. Pero lo que dices, tipos nativos, bucles, sentencias condicionales, estructuras , punteros....eso se enseña en un par de tardes.
Si hay que dar una vision global de lo que es programar en un cuatrimestre como lo que estamos hablando, si o si te tienen que hablarde OOP

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.

S

#93 si, pero para tener en un curso una vision global, si no te enseñan OOP entonces te queda muchisimo.
No digo que solo haya eso, digo que es bastante importante como para decir que aun no te han enseñado nada.

D

#77 composition over inheritance

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.

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

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

D

#21 Pero si aprende que "aquí hay un bucle de 500 repeticiones" te da lo mismo que sea "for(int i=0;i

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.

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.

NapalMe

#14 Cierto, es como hacer el plano de una casa y los calculos de estructuras, en un plano no puedes vivir, es mejor hacer la casa directamente....

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

D

#42 "Estos cacharros aglutinan muchas palabras en una" -> "Lo que os hemos explicado en el curso anterior y que son varios pasos, estos lenguajes lo simplifican en un único paso porque han considerado que es más práctico"

NapalMe

#50 Los lenguajes son modas y productos de terceros, como te enseñen en JAVA o VB y luego no seas capaz de usar otros, en que por ejemplo, no gestione la memoria automaticamente, te vas a la mierda.

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.

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.

x

#60 pseudocódigo es pascal traducido

D

#6 ponles en proyectos, que sufran y explicales mientras tanto.

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.

D

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

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

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.

aironman

#64 No se a que universidad habrás ido, pero en la mía programabamos un monton. Desde las asignaturas de fundamentos de programacion (anual), en el primer cuatrimestre veíamos mucho pseudocódigo y pascal, en el segundo cuatrimestre todo pascal, laboratorio de programacion 1 (pascal) y 2 (c y c++), talf (programar un compilador de un lenguaje ficticio sencillito en c) , programacion concurrente (java), sistemas operativos (bash), bases de datos (sql), ensamblador 8086 (el juego de la vida, nunca se me olvidará) en fundamentos y estructuras de computadores, algunas más que eran optativas y otras que no recuerdo, eso si, recuerdo que las practicas eran implementar arboles b y demas estructuras de ese estilo.

Todas ellas tenían su parte teórica por la mañana y su parte practica por la tarde, mucho curro.

b

#64 No nos engañemos ... a trabajar se aprende trabajando. Ni Fp, ni universidad, ni autodidactas. Los profesores de FP, igual que los de la Uni no tienen pq haber trabajado como programadores en su vida, ni estar al dia de las ultimas tendencias en buenas practicas, o que tecnologias son mejores para este o este otro problema. Eso se aprende siendo un profesional, ejerciendo la profesion, y estableciendo rutinas de renovacion continua para no quedarse estancado.

Puedes tener suerte y que te toque un buen profesor, pero no se puede generalizar "FP es mejor o es peor" ... he trabajado con muchos FPs y, en general, el nivel con el que salen no es profesional ni se le acerca.

En cualquier caso habría que ver que significa "programar mejor" o "programar bien" ... pq conocer un lenguaje no es saber programar ... y la cantidad de tiempo dedicado a la comprension de las estructuras de datos, a la comprension de la gestion de la memoria, al funcionamiento de los compiladores, a la algoritmia, al algebra (q es basico para BBDDs), ... pues podemos decir lo que sea pero no es el mismo en un FP que en la universidad.

¿Es necesario entender el funcionamiento de los arboles binarios balanceados para ser un buen programador? ... pues si quieres entender y predecir ciertos comportamiento y problemas en tus bases de datos es bastante conveniente.

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.

b

#69 Cierto pero incompleto.

La gran diferencia con el "industrial" es que aqui los materiales cambian cada pocos años. El ingeniero en informatica tiene que ser capaz de analizar nuevas tecnologias e incorporarlas en su cartera de conocimientos y, de esa manera, ir construyendo su especializacion profesional. Es completamente inviable y sería contraproducente que en la facultad te enseñaran a construir con el ecosistema de Microsoft (por poner un ejemplo) o con el de Spring, o usar el Cloud de Amazon, o el de Google.

La universidad enseña los conceptos generales y tu luego aprendes los conceptos concretos a medida que vas adquiriendo experiencia.

Por tanto ... "un Ingeniero en informatica que no sabe programar no vale para nada". Cierto. Solamente con los conocimientos de la universidad no vales para nada, pero tienes un potencial de crecimiento importante ... que es de lo que se trata.

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?

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.

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

Shotokax

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

crateo

#34 Es que un manager no tiene porque tener conocimientos tecnicos. Es mas, normalmente cuanto mas seria sea la empresa, menos conocimientos tecnicos tendrá un manager. He visto demasiados equipos yendose a la mierda por poner al arquitecto como manager.

b

#23 Oye, nada impide al universitario tomar el cursillo de javascript. De hecho sería muy recomendable que lo hiciera para complementar sus estudios universitarios y, precisamente, mejorar su empleabilidad.

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.

D

#22 Tarjetas perforadas? Mis respetos por tu dilatada trayectoria.

D

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

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.

llorencs

#75 No es imperativo. En la carrera había una asignatura específica de Liso.

b

#24 "Si aprendes un lenguaje entrar en otro es sumamente fácil"

Si aprendes los fundamentos de la programacion independientes de los lenguajes te puedo asegurar que, no solo es mas facil, sino que ademas tienes un conocimiento mucho mas profundo de como funciona tu codigo y porqué.

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.

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.

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

#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

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

redscare

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

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.

D

#1 eso... que lleguen a la empresa y te digan "dónde escribo los pseudocódigos y los diagramas de flujo que necesitas? También sé UML"

D

#1 Se debe enseñar lenguajes de bajo nivel para que conozcan como funcionan las implementaciones de alto nivel de otros lenguajes. Lo que no tiene sentido es por ejemplo enseñar Java y tirar de colecciones como un campeon, y no saber como funciona la reserva de memoria o la ordenacion porque no se ha implementado nada parecido a mas bajo nivel, por ejemplo en C.

crateo

#1 Falso dilema. Es perfectamente posible (Y completamente necesario) hacer ambas cosas. Cualquier alumno despues de salir de la universidad tiene que conocer (no dominar, pero si conocer) al menos un lenguaje de programación imperativa, declarativa, otro orientado a objetos y otro funcional. En mi caso fue C, SQL, Java y OCaml. Esto te permite no solo aprender pero tambien internalizar esos paradigmas.

koki142

#1 Hombre, esa frase queda guay, claro, yo estudié ingeniería informática y por algún lenguaje se tenía que empezar y tendrías que practicar en un ordenador, ¿no?, una cosa es que estudies estructuras de datos, algoritmos y tal y te pongas a escribir pseudocódigo en un cuaderno y otra es ponerse a escribir código de verdad que tiene que compilar, que tiene que seguir unas estructuras, que tiene una sintaxis...

Yo diría que al revés: en la universidad tenían que enseñar un lenguaje, digamos, "básico" estilo C con punteros, y luego al menos dar pinceladas de todos los lenguajes que se pueda del estilo de: este lenguaje tiene estas características que este no tiene y tal y cual. Este tiene que compilar, este no hace falta, este tiene debugger y se hace así...

En mi caso las prácticas se hicieron en Pascal, C y C++, y el lenguaje principal que se dio más en profundidad fue Java.

Si sabes programar bien en un lenguaje, normalmente no tienes problema para adaptarte a otros. Yo empecé a trabar en Go hace tres meses y ya estoy ahí como un tigre sin demasiado problema, pero si que tienes que saber ciertas cosas y coger cierta práctica (echo muchísimo de menos Ruby porque hacías cosas en dos líneas que en Go tienes que escribir siete párrafos).

El "problema" de los lenguajes no son los lenguajes en sí, la sintaxis no suele ser difícil y es bastante limitada siempre, sino la infraestructura que lo rodea. Por ejemplo: programas en javascript, pero tienes que controlar cómo se llevan las dependencias ahora (webpack), si entras en un proyecto, aprender el framework que se esté utilizando (cada uno es de su padre y madre)...

Cada lenguaje tiene una infraestructura detrás que suele ser donde está el meollo y ahí es donde se necesita tiempo de aprendizaje y adaptación. Yo cada vez que tengo que elegir empezar algo en Javascript, me pierdo ya con la cantidad de movidas nuevas que hay de un día para otro.

Quiero decir: puedes saber programar de puta madre y aún así vas a necesitar siempre bastante tiempo para adaptarte a nuevos entornos de desarrollo y lenguajes. No es tan fácil.

T

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

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

#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

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

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

#57 Un repasito al GoF a ver si encuentras un patrón que te permita evitar el callback hell. Te doy una pista: empieza por "C".

drwatson
s

#18 async, await, promises...

D

#96 jajaja, ya, pero es que no puedo dejar de hacer el chiste.

i

#18 Ese esta superada ya con async/await

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

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

x

#9 yo creo que más que javascript es node.js, angular, react o vue.js

Vamos, que si pero no.

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.

NapalMe

#67 ¿Y porque no estoy hablando de eso?
En el visual studio, almenos para c++, hay un bonito boton, el debugger, que te muestra el codigo en ASM resultante, por si no te gusta.

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.

gelatti

Quien no lo conozca que pruebe Node.js

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

gelatti

#85 me has pillado, acabo de descubrirlo

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.

b

#55 No es lenguaje maquina por mas vueltas que le des.

Shotokax

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

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.

Shotokax

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

D

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

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.

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.

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.

NapalMe

#83 Si, pero nunca serà tan eficiente como un lenguaje compilado, en igualdad de condiciones. Y dependes del interprete, que de una version a otra puede cambiar.

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.

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

#94 ¿Cuál es la diferencia entre el "middleware" y el "hardware emulado"? ¿Basta con que exista una implementación física de una máquina para que pase a ser "hardware emulado"? Supongamos que tengo un programa que traduce Lisp a un bytecode determinado, y luego lo interpreta. Entonces construyo una máquina Lisp que usa ese bytecode como código máquina. ¿Mi programa ha pasado mágicamente de ser un compilador a bytecode + intérprete a ser un compilador a código máquina + emulador?

NapalMe

#48 Con codigo compilado, programas para un microprocesador, eres cliente de INTEL, AMD.... dependes de ellos
Con codigo interpretado, programas para una VM, eres cliente de Oracle, dependes de ellos.
No digo que sea bueno o malo, digo que programando en java, no programas un ordenador, scripteas un software.

D

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

dreierfahrer

#25 lol.

Ahora mismo ya SI.

Como te quedas? No puedes hacer reflection pero... si quieres lo paas a maquina...

O

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

m

#82 Buena suerte programando una webapp en C

eldelshell

#88 En teoria ya se puede gracias a WebAssembly... ahora, que se pueda y se deba, son dos cosas distintas.

m

#88: Siempre puede programar un navegador que acepte código en C.

j

#82 Por la existencia del maldito Mundo Real ™

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/

D

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

D
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

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

m

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

t

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

m

#8: Siempre nos quedará J5: http://johnny-five.io/

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.

D

#2 A mí me ocurre al revés, me extraña verlo tan arriba.

Creo que no conozco absolutamente a nadie que trabaje en Python. De hecho para mí es como Ruby, suenan pero no sé ni para qué se utilizan.

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

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

Nodens

#92 Lo adulto es dejarme lanzar excepciones cuando me salga de las narices y no obligarme por que sí. Java es un lenguaje molestamente ceremonioso.

Es imposible seguir guías sin usar un IDE completo (monstruoso) por que se supone como algo ya totalmente intrínseco al uso de Java.
Java se usa por que va muy bien para tener a mucha gente controlada y que te salga código "fácil" de mantener, de ahí su uso en gran empresa. Pero si quieres ser ágil es una peste.

A mí javascript me encanta y si sabes usarlo quedan unos flujos asíncronos preciosos. Entiendo que no es el lenguaje adecuado para un novato que tiene que ser medianamente productivo, pero eso no significa que no sea "adulto".

Arlequin

#92 PHP 7 tiene tipado fuerte de serie si lo declaras, Python no.

d

#92 buena suerte con tipado fuerte en sistemas distribuidos

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

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

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.

llorencs

#81 A que Te refieres con clean code o código limpio?

barni

#81 Puedes leer "Fluent Python". Y para JS tienes "Eloquent Javascript".

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.

d

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

s

#51 Se llama Duck Typing.

D

javascript, el lenguaje de los mariquitas

D

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

m

#54: Creo que #070 te acaba de pwnear. lol

1 2 3