Hace 5 años | Por bonobo a tiobe.com
Publicado hace 5 años por bonobo a tiobe.com

Los cinco lenguajes de programación más populares en la actualidad son Java, C, C++, Python y Visual Basic .NET. La lista de los lenguajes de programación más utilizados de cada año se elabora según el Índice TIOBE , que es elaborado por una empresa de software holandesa que se especializa en la evaluación y seguimiento de la calidad de los programas informáticos. Actualmente, la empresa revisa en tiempo real más de 300 millones de códigos de diversos programas informáticos por día actualizando mes a mes su índice.

Comentarios

rob00die

#8 COBOL y la eterna muerte que no llega. lol

zhensydow

#8 Si, COBOL sigue presente año tras año, al igual que el virus de la gripe.

Z

#3 Podrías dar algún argumento? A mi me parece un lenguaje bastante claro.

d

#10 Era un idea buena llevada a la degeneración lo bueno que cuando los procesadores binarios sean sustituidos se ira a la mierda.

D

#18 Amen.
Cuando solo conoces un martillo , todo te parece un clavo.

rojo_separatista

#18, qué es eso de los procesadores binarios, qué otra arquitectura hay a la vista? No me digas que los cuánticos por favor.

d

#24 Biológicos/neuronales y cuánticos que este en pañales no implica que no se siga desarrollando estamos en esos temas como en 1970.
Aparte de FPGA esta en pleno boom eso de 1m de capas de sofware y hardware le sientan fatal a la latencias.

superplinio

#10 Más bien era un lenguaje de capa caída porque Sun, su dueño, iba de capa caída y no era capaz de mantener el ritmo de novedades que la programación actual requiere.

Ahora Oracle sí se ha tomado más en serio el mundo de Java.

Eso no quita que también Android ha ayudado a su popularidad en los últimos tiempos

D

#14 Nivel intermedio, como de inglés, pero sí

D

#7 La objeción "principal" que pones no es contra el lenguaje en sí, ¿me equivoco? Bajo ese punto de vista hay muchas cosas malísimas cuyo fallo consiste en que la gente no sabe usarlas.

superplinio

#7 Pues leo tu crítica y me parece injustificada.

- Gestión de la memoria horrible: según como lo veas, a mí me parece horrible un lenguaje como C que no tiene recolector de basura. Y los "garbaje collectors" no son hoy en día lo ineficientes que eran en el pasado.

- Una máquina virtual es lo que hace que un mismo código pueda ejecutarse en hardwares diferentes. Si la MV está optimizada el código puede ser tan rápido como el nativo. Además ahora la MV está modularizada y te puedes bajar solo las partes que te interesen.

- La verbosidad es cuestión de gustos. A mi me gusta que el código exprese claramente su intención y no sea una jerga indescifrable pero que solo gasta un línea de código. Ni que cobraran por líneas. En cada versión de Java sacan nuevos casos en los que hay "inferencia de tipos" lo cual reduce mucho la verbosidad innecesaria.

- La seguridad era un problema sobre todo de los applets que ya se han eliminado de la JVM

- Lo del hardware ya te lo han dicho, Java no es para eso.

- No sé qué problema le ves al control de errores.

Resumiendo. Java es un gran lenguaje, por eso está de primero. No quiere decir que sea el mejor ni que valga para todo. Pero la gente de Oracle se está esforzando en mantenerlo actualizado y mantenido (ahora con versiones cada 6 meses) y por eso, por muchos haters que tenga, se sigue manteniendo de número 1

Penetrator

#35 Si la MV está optimizada el código puede ser tan rápido como el nativo.

superplinio

#44 A ver, me refiero a compiladores Just In Time, HotSpot y cosas de esas. Al final estás ejecutando código "casi" nativo.

Penetrator

#48 A no ser que estés ejecutando un código extremadamente simple, es difícil que el rendimiento sea el mismo por un motivo: la caché. En Java, si mal no recuerdo (hace tiempo que no lo toco), los objetos no se pueden crear en la pila, siempre se crean en el heap. Y eso es algo que jode bastante el rendimiento, tanto por la caché como por el hecho de tener que usar siempre memoria dinámica.

pip

#35 el recolector de basura es una mala solución a un problema inexistente. La mejor solución de momento es la del C++ moderno: no hace falta recolectar basura porque no se genera basura.

Si se programa correctamente con RAII y smartpointers, la gestión de memoria en C++ es automática y al mismo tiempo predecible, no se generan picos de limpieza porque los recursos se liberan en el mismo punto donde de forma manual se haría un delete, solo que insertado automáticamente por el compilador.

superplinio

#53 Pero estás perdiendo de vista que Java es un lenguaje de más alto nivel que C++ y la recolección de basura sí resuelve un problema que existe y es que gestionar la memoria es complicado y, en vez de dejar que la gestionen los programadores la gestiona la propia JVM. Si el recolector de basura es suficientemente bueno (y los modernos lo son), es un proceso prácticamente transparente.

Si tienes que andar diciendo que un puntero es smart o no ya tienes que andar jugando con cosas "ajenas" a la lógica del programa como es la gestión de la memoria. Para eso en Java también puedes jugar con referencias weak, soft o phantom.

pip

#74 si soy consciente de que Java es de más alto nivel, pero igualmente, el GC es un concepto con sus problemas de base. Estás diciendo: yo voy dejando por ahí objetos sin referenciar y de vez en cuando paso un recolector que libere todo eso.
La aproximación de C++ al problema es: inmediatamente que un objeto queda sin referencias, se llama a su destructor.

No es una cuestión de alto o bajo nivel, es una cuestión de especificaciones del lenguaje. Perfectamente podría haberse hecho así en Java, de hecho puedes hacerlo si pones el objeto a null y llamas a System.gc() a continuación. Solo que no está diseñado para funcionar así y no es eficiente, ni tan siquiera se te garantiza que efectivamente se libere nada en ese punto.

Este pequeño detalle hace a Java muy arisco para determinadas aplicaciones dónde necesitas un comportamiento determinista, no que de forma random te salte el GC y te de un tironcillo de rendimiento.

superplinio

#c-75" class="content-link" style="color: rgb(227, 86, 20)" data-toggle="popover" data-popover-type="comment" data-popover-url="/tooltip/comment/3052164/order/75">#75 Ojo que un objeto puede tener referencias y aún así ser basura (referencias circulares por ejemplo).
La idea primigenea de Java fue liberar al programador de aspectos de bajo nivel, y la gestión de la memoria es uno de ellos.

Si tienes que andar destruyendo objetos explícitamente, o gestionando el tipo de referencia que usas para esos objetos puede que tu código haga un uso más eficiente de la memoria, a cambio de hacer perder el tiempo al programador a la hora de gestionar aspectos de bajo nivel.

Yo lo veo más como un tema de filosofía de trabajo y de a quién va dirigido el lenguaje de programación. Por lo general cuanto más de alto nivel es el lenguaje de programación más probable es que incluya GC entre sus características: Java, C#, los lenguajes funcionales, etc.

Tannhauser

#35 ¿El recolector de basura sigue ejecutándose cuando le viene bien al sistema o puedes forzarlo de forma eficiente como un delete de C++?

superplinio

#78 No puedes ejecutarlo cuando tu quieras, todo lo más puedes llamar a System.gc() para sugerirle al sistema que lo ejecute, pero el sistema puede decidir no hacerlo.

La idea es que el sistema tiene más claro que tú cuando debería liberarse memoria. Por eso en Android siempre desaconsejaban usar "task managers" que trataban de eliminar aplicaciones de memoria cuando no eran necesarias. Siempre fue mejor dejar esa tarea al sistema

Tannhauser

#79 "La idea es que el sistema tiene más claro que tú cuando debería liberarse memoria. "
No puedo estar más en desacuerdo.

s

#7 Tus argumentos son un poco pobres Si pudieses eleborarlos un poco más estaría bien para intentar entenderlos. Llevo programando en Java (y otros muchos lenguajes de programación) más de 15 años y aunque no es la plataforma perfecta (ninguna lo es) las críticas que más veo son las basadas en carencias y limitaciones que tuvo la plataforma en sus inicios. Carencias iniciales lógicas ya que en su día supuso un cambio muy importante de paradigma (JVM) que se ha ido afinando con el tiempo y que le ha permitido colocarse en la posición mencionada en el artículo año tras año.

El ecosistema Java a nivel de herramientas, frameworks, comunidad, soporte, etc. no tiene parangón todavía en ninguna otra plataforma actual.

EspañoI

#7 ya hacía falta el Vox de la programación. Basta ya de alienación Java en las universidades y empresas.

Java te enseña a ser mal programador.

Omóplato

#7 Vamos, que Java es malo para programar a "bajo nivel". Es que intentar utilizarlo para eso, es de idiotas (ojo no es mi intención insultarte, de verdad).

Para otras cosas, por ejemplo para una aplicación web en backend, me parece una opción más que digna. ¿Hay cosas mejores? Sí. Claro. Ahora bien, no solo hay que valorar un lenguaje, también hay que valorar a sus programadores. Si efectivamente, hay una gran cantid de programadores con un nivel bueno de Java, lo normal es que se apueste por Java.

Otra cosa es que hablemos de Java nivel cárnica, con plazos de entrega de mierda y tirar código como un mandril. Pero claro, haz eso con C o con python.

Vamos, que Java tiene sus cosas, pero decir que el mundo se va a la mierda...

D

#7 pero si no has dicho nada.

"Gestion de memoria horrible" Explica esto, si puedes.
"Introduces codigo que ralentiza la ejecucion, sumale el tema de la maquina virtual y ya te meas" Codigo que ralentiza la ejecucion? pero sabes de lo que hablas?
"La famosa "verbosidad" Lo que?
"A nivel de seguridad...en fin...igual que lo otro" Lo cualo?
"Intenta controlar el hw con JAVA y luego me lo cuentas" Controlar hardware con Java? pero tu sabes de lo que estas hablando?
"y ya del control de errores no hablamos..." pero si no has dicho nada, que dices que no hablas. Explica el "control de errores" anda, que veamos tu sabiduria sobre java.

No digo que haya mejorado muchiiiiiiisimo pero que no tienes ni pajolera, ya lo creo. Has sido javero, ya, si. He conocido muchos que se autodeclaran conocedores de java... de la sintaxis de java y ya.

D

#7 JAVA es como el COBOL. Hay tantas cosas programadas en JAVA que a las empresas les resulta más barato mantener el lenguaje que reprogramarlo todo.

D

#7 Espero que los mismos que decis que Java es una mierda porque la maquina virtual es lenta luego no ireis diciendo que Python es la polla en otros sitios lol

zhensydow

#c-5" class="content-link" style="color: rgb(227, 86, 20)" data-toggle="popover" data-popover-type="comment" data-popover-url="/tooltip/comment/3052164/order/5">#5
C# - Java = Argumentos en contra de Java

Y no estoy diciendo que C# sea mi lenguage favorito.

D

#c-12" class="content-link" style="color: rgb(227, 86, 20)" data-toggle="popover" data-popover-type="comment" data-popover-url="/tooltip/comment/3052164/order/12">#12 Son lenguajes con filosofías muy parecidas. De hecho diría que C# es un JAVA un poco mejorado, pero no mucho más.

zhensydow

#3 si hemos sobrevivido a COBOL, Basic, PHP, ...

x

#3 a mí me parece que se va a la mierda porque se usa más Python que C++...

Joya

#11 Al revés, es esperanzador.

T

Que no digo que no, pero me parece raro ver PHP tan abajo con todo el que hay por ahí en los frontend/backend de páginas web.

m

#4 En España...

cosmonauta

#4 Al php le tenemos mucho aprecio en Europa en general y España en particular, pero es un lenguaje que va para abajo. Python le ha ganado la carrera en el scripting.

En Barcelona, la mitad de ofertas de trabajo son Php.. En Berlín es java, Python o lenguajes nuevos como Go o Rust.

D

#29 Ya que lo mencionas, ¿cómo ves Rust? En general, el lenguaje, utilidad, futuro...

Yo estoy ahora con Python y quiero agregar uno o dos lenguajes diferentes más. Algo heterogénea de estilos Python-Rust-Lisp o Python-Haskell-Elixir.

cosmonauta

#50 Pues no lo he usado pero me llama la atención. Hasta ahora solo he leído un poco y he ido a algún meetup.

Desde hace dos años trabajo en go y es una maravilla y, especialmente en programación de servidores.

Rust es el siguiente lenguaje en el que me estoy metiendo. Creo que es más aburrido que go, pero muy, muy robusto. Probablemente se quedará como lenguaje empresarial para grandes sistemas.

D

#4 El PHP se sigue utilizando pero la mayoría de la gente que diseña páginas web no necesita saber el lenguaje porque hay aplicaciones que te hacen todo el trabajo de generar el código.

D

#4 Aun guardo esperanzas que remonte un poco. La salida de la versión 7.x es un revulsivo muy interesante.

J

#19 Lo es. Es fácil y tienes 200 millones de librerías y funciones. Es un código sencillo y fácil de leer. Después, cuando te guste te puedes pasar a Java o C++ y ahí lo mandarás todo a la mierda y verás la vida de forma pesimista.

PasaPollo

#23 No creo que dé ese salto. Es más bien curiosidad por el proceso. Además según me dijo un compañero va bien para bases de datos y programas de gestión y a eso le puedo sacar partido. Gracias por la respuesta.

J

#30 Si es para cosas relacionadas con datos python es un must. Luigi, airflow, numpy, pandas y la mayoria de las API de cloud son o tienen version en python. Después si quieres ir más allá iría por scala o java. Yo aprendí a programar en C que también es muy bueno para aprender pero python tiene mucha más salida para usarlo ahora. Un placer

dphi0pn

#19 Python es bueno tanto para iniciarte, como para consagrarte. La filosofía de Python intenta liberar al programador de todas las cosas malvadas que inventaron C++ y Java.

diskover

Yo sigo usando C, y mucho, y es un lenguaje que sorprendentemente me enseña cada vez más cosas.

drone

#65 Por ahí iba yo jejeje... Hay muchos investigadores que usan python como herramienta, y porque no necesitan ser programadores para preparar y probar una teoría.

D

Aunque Python sube, js baja. Aún hay esperanzas.

borteixo

#2 quiero pensar que gran parte de lo que js baja es pq suben Typescript y similares.

celyo

#2 Yo lo que no se es si dentro de lo que conceptualizan como Js están incluidos los frameworks que aunan Js junto con Typescript.

V

Visual Basic . Net el 4°? Pero si es una mierda!!!

daaetur

#16 Millones de moscas no pueden estar equivocadas

D

#16 Visual Basic ha sido el estandar de Microsoft para hacer aplicaciones para Windows. Claro que si te preocupa la portabilidad te vas a otras plataformas, pero con VB lo haces en dos patadas y lo otro puede llevar meses.

drone

Python en tercera posición... Excelente.

PasaPollo

#1 Quería aprender a programar por mi cuenta y me han dicho que Python es bueno como lenguaje iniciático. ¿Es eso cierto? ¿Tenéis otras opiniones?

xyria

#19 Pascal es un lenguaje diseñado especifícamente para el aprendizaje aunque hoy en día se utiliza para multitud de cosas (sistema, aplicaciones de escritorio, aplicaciones de base de datos, aplicaciones cliente servidor, internet, móviles, etc.).

Te recomiendo Delphi (pascal + orientación a objetos), pero es caro, bastante caro, mucho más que la competencia. No obstante, hay una versión "starter" o así.

Hay otro potentísimo IDE clon de Delphi, Lazarus. Este es open source y es terrorífico -por lo potente que es --, puedes programar con él casi lo que se te antoje.

Saludos.

hispar

#34 con Pascal o Delphi no va a trabajar en España, yo lo di en la carrera y no lo he vuelto a ver en 10 años.

Python se usa mucho en universidades americanas para aprender, y según para que quieras aprender, hasta js, aunque JavaScript yo no lo recomendaría.

EspañoI

#19 definitivamente es el mejor para aprender a programar. Te permite empezar a disfrutar de la programación desde el minuto uno.

Dicho esto, NO es el mejor lenguaje para conocer cómo funciona la computación. Python es transparente para el usuario, lo tutela para que no meta la pata, a costa de abstraerlo del computador.

He sufrido en mis propias carnes el dolor de cambiar de lenguaje (de Python a C) y darme cuenta de que en realidad no sabía absolutamente nada de computadores, no tenía control sobre el dispositivo que ejecuta el código.

Si sólo quieres programar como un conocimiento auxiliar a tu disciplina, adelante con el!.

japeal

#19 https://eu.udacity.com/ Aquí tienes unos cursos gratuitos buenísimos. Te recomiendo el de "intro to computer science"

Learn key computer science concepts in this introductory Python course. You'll learn by doing, and will build your own search engine and social network.

D

#c-19" class="content-link" style="color: rgb(227, 86, 20)" data-toggle="popover" data-popover-type="comment" data-popover-url="/tooltip/comment/3052164/order/19">#19 Si li que quieres es aprender a programar vete a C y luego das el salto a C++. Ahi estan todos los conceptos de programacion y es una aventura que te llevará una vida asimilar por completo.
Si lo que quieres es aprender a programar con la idea de hacer algo mas productivo, como un video juego vete a C#.
Python tiene un nicho muy exclusivo para hacer scripts y básicamente lo que haces es hacer llamadas a librerias en C. Es una capa que se pone por encima en muchas programas para que los usuarios hagan cosas sin necesidad de recompilar todo. Pero Python como lenguaje es bastante desastroso. Cogerás todo tipo de vicios y aprenderás cero de programación.

D

#c-19" class="content-link" style="color: rgb(227, 86, 20)" data-toggle="popover" data-popover-type="comment" data-popover-url="/tooltip/comment/3052164/order/19">#19 Todo lenguaje vale para iniciarse, lo importante es de quien lo aprendes y lo metodico que seas.
Si eres poco metodico , te conviene un lenguaje que te obligue a serlo. Si eres metodico por ti mismo , puedes iniciarte hasta con el caos reptante tambien conocido como javascript.
Si vas a dedicarte de forma profesional , yo empezaria por un lenguaje de fuerte tipado , (C#, C++) y despues ya a algo mas relajado

Liet_Kynes

#19 Yo empecé con Pascal en la facultad y después me enamoré de C. Fui un purista de los lenguajes fuertemente tipados hasta que descubrí Ruby. Es un lenguaje muy sencillo de aprender y además la biblioteca standard es muy buena, y aparte tienes un montón de gems, que son librerias hechas por terceros y que se instalan desde un repositorio con un solo comando

m

#c-1" class="content-link" style="color: rgb(227, 86, 20)" data-toggle="popover" data-popover-type="comment" data-popover-url="/tooltip/comment/3052164/order/1">#1 En España continúa utizándose muy poco. (es la impresión que tengo..).
Viendo los empleos que se ofertan, en España diría que C#, java php, js..pero python no mucho

m

#1 Y yo que le odio!!!. No digo nada de su versatiblidad etc... pero la estructura que tiene me repele con todas las letras.

drone

#36 java y C están por delante aún, no te sulfures. Python es claro y limpio, permite probar, jugar con ideas sin terminar con un espagueti gigante. Te permite pensar. En mi opinión, la funcionalidad evoluciona a través del uso, y las prácticas que terminan funcionando mejor se convierten en módulos, que la gente puede usar para seguir creando. Ni Java ni C pueden dar eso. Nadie escribe miles de líneas de código de una sentada.

m

#61 Me pasa lo mismo con JS, odio su caos. Vengo de lenguajes mas estructurados (y viejos) y me cuesta,

D

#1 Subiendo el 4.6% gracias a la ML , creo que tome una buena decision al empezar a aprenderlo

mr_b

Mi querido D en el puesto 25 cry

J

Un resumen

J

#55 otra version

Ovlak

No soy capaz de entender que C# tenga la mitad de aceptación que Visual Basic siendo Java el primero.

musg0

#c-31" class="content-link" style="color: rgb(227, 86, 20)" data-toggle="popover" data-popover-type="comment" data-popover-url="/tooltip/comment/3052164/order/31">#31 entiendo que debe de ser porque los que programaban en Visual Basic o ASP, al pasarse a .Net, siguieron programando en el idioma que conocían en vez de pasarse directamente a C#, con la intención de ir poco a poco migrando, y al final se quedaron con lo que conocían sin necesidad de cambiar.

Ovlak

#c-70" class="content-link" style="color: rgb(227, 86, 20)" data-toggle="popover" data-popover-type="comment" data-popover-url="/tooltip/comment/3052164/order/70">#70 Me imagino que esa es la mejor explicación pero vamos que en todo caso creo que la tendencia debería apuntar a que Visual Basic .net fuera bajando en favor de C# que es más Java-friendly (siendo Java el número 1) y sin embargo no está sucediendo, lo cual me resulta curioso.

superplinio

Hay que tener en cuenta que TIOBE es una lista de popularidad, no de uso.
Según sus palabras:

The TIOBE Programming Community index is an indicator of the popularity of programming languages. The index is updated once a month. The ratings are based on the number of skilled engineers world-wide, courses and third party vendors. Popular search engines such as Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube and Baidu are used to calculate the ratings. It is important to note that the TIOBE index is not about the best programming language or the language in which most lines of code have been written.

p

Otra visión del uso de los lenguajes de programación, visto por github:

https://githut.info/

Aquí discrepan sobre JS ...

T

#32 Un poco desactualizado. Los últimos datos son de 2014....

p

#67 Ups, tienes razón, no me había fijado. He encontrado una versión actualizada:

https://madnight.github.io/githut/

Se puede ver como JS sigue 1º, y Python consolidándose como 2º

pip

A mí esta lista siempre me ha parecido irrelevante porque la informática no es algo uniforme que puedas programar en lo que quieras, está sectorizada.
Por ejemplo puede ser interesante en el mundo de embedded, si C++ come terreno a C o no, pero en ese mundo C# o Java pintan poco o nada. Igualmente en el mundo web frontend, C o C++ son irrelevantes y solo interesa si Typescript avanza a JavaScript pelado o no.
Y así etcétera con todo.

j

Javascript en el 6º lugar. Curioso. Para aprender, en mi humilde opinión, Javascript es muy interesante. Me refiero por supuesto a Javascript básico. Es muy simple, sus resultados se ven inmediatamente y fácil de entender, muy concreto y casi sin abstracciones. La idea de objeto es casi inmediata al aplicarlo al DOM, el concepto de variable y las estructuras quedan muy obvias. El hecho de no necesitar de entornos para programar y depurar la hace aparecer como algo práctico y concreto, poco abstracto.
Desde este es fácil acceder a otros lenguajes ya más completos, para mi el siguiente sería Java, con una base decente de Javascript el paso a las clases y los objetos es rápida. Con eso se puede decir que la programación no tiene secretos.
Luego ya dependerá, si se trata de desarrollo web yo tiraría por PHP, para aplicaciones tiraría por C.