Hace 5 años | Por --541279-- a techrepublic.com
Publicado hace 5 años por --541279-- a techrepublic.com

C++ ha eliminado al favorito del aprendizaje automático de los 3 primeros puestos en el índice TIOBE de los lenguajes de programación más populares. C++, que tras años de ocupar el tercer lugar en el índice, en septiembre del año pasado fue empujado a la 4a posición por Python. El primer y segundo lugar en la lista permanecen sin cambios, con Java en el primer puesto y C en el número dos. El índice TIOBE estima la popularidad de los lenguajes en todo el mundo según los resultados de los principales buscadores.

Comentarios

vjp

C++ es Dios y punto pelota

Liet_Kynes

#9 Windows también es popular y todos sabemos lo que es

Alberto_Carmona

A mi Python me ha enseñado mucho y lo recomiendo bastante la verdad, a lo mejor no es el más eficiente pero por lo menos es el lenguaje con el que mejor me lo he pasado (que no es poco)

losuaves

#9 la diferencia podría decirse que está entre conducir un coches de marchas (c++) o un automático (python). es cuestión de purismo, pero para un científico de datos, genetista y largo etcétera, no le interesa el placer de la programación. sólo desean que el lenguaje sea fácil de aprender e interpretar por otra gente, ya que sólo es una herramienta para llegar a los resultados.

Uno_Mas

#9 por lo que he podido ver en mi campo, el problema es que Python lo usan aquellos que quieren resolver una tarea o problema sin hacerse pajas escribiendo código.
Luego te viene un purista y te pone a parir porque es un lenguaje interpretado, desaprovecha memoria, más tiempo de procesador, etc...
Pero la realidad es que para muchos el código no es nuestro fin, es el medio por el cual salimos del apuro en el curro. Y por lo general con poco tiempo.
Y en eso Python es la mejor opción, tanto por documentación ahí fuera como por estar soportado por los programas líderes muchos sectores.
Y hasta aquí mis 2 céntimos. roll

D

#127 Ese no es el asunto, el asunto es que un programador de C++ puede dominar Python en una semana. Un programador de Python no domina C++ ni en 1 año. Por lo tanto un programador de C++ ya es "multilenguaje" aunque solo haya programado en eso.

Que alguien pretenda decir que se adquiere la misma experiencia y conocimiento independientemente del lenguaje solo evidencia la poca experiencia que tiene.

D

#18 ¿Más que C?

D

#18 code once, run everywhere after compiling it for each possible target.

Y lo de everywhere, bueno, hasta donde lleguen las abstracciones.

Yosemite

Hablar de lenguaje "populares" es como hablar de música popular, que no tiene nada que ver con la calidad.
Si miles de personas escuchan reggaeton, ¿es mejor música por ser más popular?
¿A quién le importa entonces la popularidad de un lenguaje de programación? ¿Es un concurso de popularidad?

llorencs

#30 Yo debo decir que si no es por haber aprendido a programar con Pascal y ADA, los lenguajes de programación tipo C no me entran. Con Python es el lenguaje con el que me siento más cómodo trabajando. Para mi tiene una sintaxis más intuitiva además de limpia y clara, además de que tiene bastantes tipos y estructuras de datos nativas bastante interesantes.

Obviamente es un lenguaje con sus limitaciones como por ejemplo al ser dinámico e interpretado lo hace algo más lento. Pero si pudiera ser estático y compilado para mi sería el mejor lenguaje existente.

Además, Python permite desarrollos rápidos y es un lenguaje todo terreno.

#31 Ya hiciste algo de informática. Aunque solo fuera algo de primero.

p

#20 miré en su dia un poco a título personal.

Llevaban prometiendo mucho que serían la alternativa como lenguaje a C++ pero con un cambio de mentalidad a la hora de desarrollar que te permitiese desarrollar aplicaciones/librerías seguras.

Mi resumen: personalmente no creo que vaya a ser la alternativa a C/C++.

Al igual que ocurrio con Go, lo cierto es que no está teniendo tanta acogida como se esperaba, se genero mucho hype, y luego la acogida esta siendo bastante discreta. Cosas positivas que vi en Rust: tiene su propio gestor de paquetes (cargo) y la mentalidad de hacer aplicaciones seguras. Cosas negativas: no lo encontrarás a nivel profesional (por lo menos en el corto plazo), lo modernillo del lenguaje y su gestor de paquetes te da la impresion de combinar lo bueno de un lenguaje compilado (eficiencia) y lo bueno de la mayoría de interpretados (sencillez para gestionar dependencias con librerías robustas y sencillas que te permitan hacer todo), luego descubres la realidad, ni es tan completo en paquetes ni tiene la mantenibilidad que tienen otros lenguajes.

En el aspecto profesional no tiene casi representabilidad, aunque cuente con el respaldo de Mozilla/Firefox.

Es un lenguaje muy joven, y los comienzos son duros. Le costará muchísimo ganar terreno a C++, y conseguir un nicho de desarrollo concreto (ej: GoLang es pura eficiencia en cuanto a microservicios,... ).

p

#11 siempre he pensado que es difícil estar al día en C++, ya no por aprender características nuevas del lenguaje, sino porque muchas veces lo quite necesita ser compilado va dirigido a un sistema embebido cuya toolchain no permite las últimas especificaciones del lenguaje, etc.

Sobre los lenguajes interpretados estilo py/js, la verdad que ahorran mucho tiempo de desarrollo frente a C++. Pero no son tampoco excluyentes, yo por ejemplo veo en C++ y python una combinación excelente.

x

#6 pues el "inútiles" te ha sobrado, pero yo también creo que python no debería estar donde estaba

CortoCircuito

#61 P.ej. para recorrer un std::vector en C++98:

for (std::vector::const_iterator it = v.begin(); it!=v.end(); ++it)


Ahora:

for (const auto &e: v)


Luego están p.ej. las Lambdas, que simplifican un montón, al estilo de las funciones/classes definidas sobre la marcha que se usan en Java, etc.
Y shared_ptr, para olvidarse de smart pointers hechos con librerías raras, etc.
De C++17 mi favorito es "if constexpr()".

D

#29 das en el clavo. Python es para prototipos y poco más. Para cosas serias es mejor un lenguaje compilado.

Yo sufro Python en un proyecto mediano a diario. Y por supuesto que se puede hacer código infumable en Python.

Uno_Mas

Me juego lo que sea a que gran parte de la subida de c++ tiene que ver con la expansión de uso de Unreal Engine, que en breve también soportará Python.
Hay mucho genio de Dios ahí fuera desarrollando para Unreal.

t

#73 Pero no está preguntando cómo desarrollar los fundamentos de una carrera profesional como programador, lo que quiere es programar un poco por curiosidad. ¿A alguien que quiere ser menos sedentario le dirías que se contrate un preparador físico y que se haga un plan nutricional y de entrenamiento a medida? No, le dirías que quede con unos colegas a hacer una pachaga de fútbol o a jugar al pádel, y que se lo pasará bien.

Para aprender un poco y hacer cuatro cosas chulas, es mucho más satisfactorio algo como python: conseguirá resultados rápidamente, y casi seguro que, al nivel del que estamos hablando, el hecho de no tener buenos hábitos no le va a afectar lo más mínimo. Ya tendrá tiempo de aprender las cosas sesudas si algún día quiere dedicarse más en serio.

mgm2pi

#90 amor hacia if constexpr

musg0

#48 estoy de acuerdo, pero ¿Qué tiene que ver?
En php, por ejemplo, suelen usar mucho funciones que devuelven un dato o false si fallan, y es un coñazo trabajar así. Si en algún caso no te acordabas que una función devolvía false en caso de error se te puede colar ese "falsd" de forma aleatoria y a ver cómo depuras eso.
Lo mismo para listas con diferentes tipos de datos. Si tienes que andar verificando el tipo de dato que es antes de operar parece que en algún sitio al definir el algoritmo hay algo que podría estar mejor.
Obviamente puede ser útil en muchos casos y como abstracción puede ayudar a que el código sea más entendible, pero me parece algo que no debería usarse con mucha alegría

t

#9 Porque es fácil y permite hacer sencillamente cosas que en otros lenguajes son muy difíciles, aunque sea más lentorro. Pero, al mismo tiempo permite "enchufarse" con librerías más sesudas y eficientes, con lo que tienes lo mejor de los dos mundos: facilongo de programar aunque no seas el puto John Carmack, pero con toda la potencia del mundo gracias a sus librerías y lo fácil que es integrarlo con lo que sea.

D

Veo mucho odio hacia Python, ¿alguien puede decirme porque es tan popular entonces para ingeniería y ciencias? Lo digo sin acritud, todos hablan maravillas de Python, y como alternativa para el no uso de programas como matlab.

D

#9 Supongo que es porque normalmente los lenguajes de programación usan corchetes para delimitar los bloques de código y en Python esto se hace con tabuladores o espacios. Las líneas también suelen terminar en punto y coma y en Python no se usa nada.

D

#43 Las estructuras de datos no son buenas o malas; son adecuadas al problema, o no.

D

#9 básicamente porque no tienen npi.

b

#57 da igual, otro talibán. Luego trataré de responder, pero vamos a hacer un símil:

1. Quiero tocar el piano: no, primero aprende solfeo, armonía y practica en una caja antes de tocar una tecla.
2. Quiero ir al gimnasio: mmm, bueno, primero léete libros de ciencia aplicada al acondicionamiento físico y la fuerza, luego libros de fisiología deportiva, etc.

Etc.

Para alguien que no ha programado nunca, es más importante ver resultados rápidos y que le sean interpretables/familiares... Centrarse en las nociones básicas de la programación y lo demás fuera, ruido. Si le gusta, quiere, tiene ambición, necesidad laboral, lo que sea, ya profundizará, pero no se puede obligar a pasar por el aro de "the hard way" a todo aquel que quiera simplemente programar. Programar es una herramienta, una vía para alcanzar algo. Y como en todas las formas de expresión/arte/actividades uno no tiene pq saber la teoría más fundamental para probarlo y lograr resultados satisfactorios.

Web, javascript y, sobre todo la comunidad, proporcionan esta experiencia.

D

#20 En mi opinión, RUST es la hostia, salvo por un detalle: la sintaxis, aunque similar respecto a C/C++, es sutilmente diferente, lo suficiente como para que sea un coñazo, en mi opinión. Por ejemplo, tener que añadir "fn" antes del nombre de cada función, o indicar el tipo de una variable después y seguido de dos puntos, y detalles así que iba encontrando a medida que leía la documentación; detalles innecesarios que, en mi opinión, para alguien acostumbrado a C/C++ son más un incordio que una ventaja. Creo que una sintaxis más parecida a C/C++ habría sido mejor, y mi impresión es que en muchos casos se hizo adrede una sintaxis diferente para darle una personalidad propia al lenguaje. Pero bueno, es mi opinión.

D

#c-142" class="content-link" style="color: rgb(227, 86, 20)" data-toggle="popover" data-popover-type="comment" data-popover-url="/tooltip/comment/3110255/order/142">#142 No, si una vez te acostumbras está bien, supongo. Lo que digo es que la curva para alguien que ya sabe C, C++, C# o Java es algo más empinada porque cosas que se podían haber hecho igual que en esos lenguajes, se han hecho de manera diferente sin, en mi opinión, motivos de peso.

JanSmite

#1 #4 #7 #10 #14 ¿Qué opináis de Rust, si es que lo conocéis?

b

#39 python o javascript. En mi opinión más el primero que el segundo, pero dada la popularidad del segundo y lo aportado por la gente (webs de aprendizaje con interfícies que ejecutan tu código), seguramente hagas algo tangible, resultón y que te satisfaga antes con javascript.

vjp

#20 coincido con la otra respuesta pero además por mi trabajo uso muchas Apis que ya están en c++ asi que no es una opción

Imag0

#4 Entiendo que lo que querías decir era punto y coma :_)

t

#31 Eso es como el "está en inglés, pero se entiende bien"

Jakeukalane

#107 cierto. Eso también lo digo lol

g

#25 El único lenguaje de programacion es Assembler, todo lo demás son frameworks.

NapalMe

Hay C y C++, el resto son modas.

t

#12 Aún recuerdo la de veces que he pensado, programando en Python: "pero, ¿de verdad puedo hacer eso? ¿no peta ni nada?"

Aprendiendo python fue la primera vez que tuve la sensación de que realmente un lenguaje había subido el nivel de abstracción, en vez de ser simplemente una nueva sintaxis para los mismos bucles, condicionales y funciones de siempre. Por ejemplo, ¿para qué programar explícitamente un bucle cuando realmente lo único que necesito es aplicar una operación a todos los elementos de un array? ¿No tiene mucho más sentido decirle el array y la operación, y que el compilador/intérprete ya lo implemente como le parezca (con un bucle, enviando la mitad a cada core...)? Y como esas mil: con python programas pensando en lo que quieres hacer, el cómo hacerlo ya no es (tanto) tu problema.

PacoJones

#113 Pero que no quiere dedicarse a programar, sólo convertirse en aficionado.
Te pongo otro ejemplo, quiere comprarse una bici y salir con ella los fines de semana, según tú debería comprarse una de carretera porque las de paseo no tienen aerodinámica, debería tomar suplementos alimenticios y comprarse libros de la historia de la bicicleta y de como funciona el movimiento rectilíneo uniformemente acelerado.

Dejemos que la gente conozca nuestro mundo de una forma sencilla y así tal vez nos tengan más empatía.

BodyOfCrime

#62 Para cacharrear esta genial, si vas a empezar y necesitas algo que hacer puedes pillarte una raspi y un kit de experimentos, en Internet tienesmmiles de tutoriales con los elementos necesarios para que veas que los conceptos que aprendes tienen utilidad práctica. Te diría arduino pero el lenguaje que se usa no es Python y tampoco quiero liarte.

Lo importante al final es que aprendas algoritmia, luego es adaptarte a cada lenguaje (que tampoco es moco de pavo).

Por cierto si vas a usar Python revisa si estás usando la versión 2.7 o la 3.x ya que hay cosas que cambian y puede que no te funcione el código si es que copias y pegas el de alguien.

x

#36 ¡¡¡¡¡A QUE MOLA!!!!! Eso es lo mejor. Y saber que puedes liberar memoria cuando quieras TÚ, no cuando le salga de los huevos a un GC...

S

#20 yo no lo conozco, pero el otro día:

¿Qué lenguajes de programación consumen menos electricidad? [ENG]

Hace 5 años | Por robustiano a thenewstack.io


Y puedes ver como está Rust en terminos de velocidad, memoria y energía.

D

#52 Imagino que donde dijiste "devuelven un dato o false si fallan" querías decir "devuelven un dato o null si fallan". Hace bastante que no toco PHP pero si una función puede devolver un booleano Y a la vez un dato, ese lenguaje es una aberración que debería ser erradicada de nuestro universo.

A la segunda parte, me remito a mi comentario anterior. Si una lista que pueda albergar diferentes tipos o clases es la estructura de datos más adecuada para tu problema entonces es la que debes usar, y luego asegurarte de que tu código la maneja correctamente.

En cualquier caso, programar siempre es un compromiso entre flexibilidad y eficiencia.

D

#57 También ha dicho que quiere aprender.

S

#90 Entonces, no se sobreescribe lo anterior, sino que se complementa, como por ejemplo, añadiendo más posibilidades a la librería estándar, ¿es eso?

borteixo

#82 no sé, pero de ahí a votar negativo lol

x

#39 no te va a servir mucho, pero pascal es la elección.

Para aprender necesitas un lenguaje que te OBLIGUE a gestionar la memoria para que crees hábito de ser ordenado, y que tenga punteros para aprender las estructuras de datos básicas. Después usarás las de las librerías que te dé el lenguaje que quieras, pero si no sabes como funciona una tabla hash o un árbol por dentro, al elegirlas acertarás de casualidad.

Te valdría C, pero C tiene mucha personalidad y la idea es que aprendas "a programar" no C. Después pasar de pascal a C o cualquier otra cosa sin objetos es poco menos que trivial. Y pasar a cosas con objetos es más sencillo porque te tienes que preocupar solo de los objetos, no de los obejtos y todo lo demás.

t

#120 Eso es fácil de decir, pero no hay manual que cubra el abanico de casuísticas que hay en stack overflow. Por algo tiene el éxito que tiene.

t

#152 Creo que a estas alturas el mal ya está hecho, y no tiene demasiado sentido meterse con lo de bibliotecas y librerías. Igual que tampoco tiene sentido decir que criptografía está mal, que es cifrado.

En su momento se pudo hacer bien, no se hizo, y estamos como estamos, qué le vamos a hacer. Tomemos nota para no repetir lo mismo en el futuro, y sigamos adelante.

x

#9 se odia porque es lento, pesado y "feo", entrecomillado porque lo de "feo" y "bonito" siempre me ha parecido "idiota" hablando de código, pero sobre todo, sobre todo, por la actitud del gilipollas de su inventor, que iba por el mundo llamando idiotas a todos los demás. El dictador eterno casi convertía a Stallman en un tipo normal.

¿Por qué se usa? Porque se usa para IA. Los que saben de IA en el fondo son los matemáticos, que saben la hueva de estadística, pero no tienen porqué llevarse bien con los punteros o la gestión de memoria, así que cuando el primer matemático empezó lo de la IA buscó una cosa sencilla, creó una librería, el siguiente buscó una librería para aprender y como la librería era para python usó python, hizo su propia librería... Con el tiempo se creó un ecosistema de funciones matemáticas y de IA de manera que python es el lenguaje de la IA, aunque sea un lenguaje lento de angustia que se usa en algo que requiere cálculo intensivo...

En realidad si usas python en un ordenador majete, con su compilador de C y su tarjeta gráfica cargadita de cores, lo que escribes en python se traduce internamente a C (o C++, no recuerdo), se compila y lo pesado se ejecuta en lenguajes serios.

x

#115 Para eso, ¿por qué python y no VisualBasic? Si es hacer cuatro cosas aunque sea malamente, usando VB tendrá un interface de usuario presentable y solo tendrá que pensar en términos de "si pulso aquí tiene que pasar esto". Y tendrá un entorno de programación muy bueno, una ayuda estupenda, podrá sangrar como le dé la gana...

Si es para hacer cuatro cosillas, VB. Si es para aprender de verdad, Pascal. Si es para hacer cosas que funcionan muy bien y ya sabes lo que haces, C/C++. Si es para hacer cosas grandes y no sabes tanto, Java. Python está siempre en medio, solo sirve para hacer cosas que te da pereza empezar a hacer con lenguajes más serios o para cosas de IA, que se va a arrastrar, pero ya hay mucho trabajo hecho.

Al final me he tenido que meter con python y no quería. Es salir un defensor de python y encenderme...

llorencs

#145 QT es una biblioteca, no una librería 😃 Ya esta bien de usar malas traducciones del ingles.

Ps: A mi me cuesta mucho no llamarlo librería, pero esta mal.

s

larga vida a la reina de java

r

Me encanta entrar a una noticia y dudar si esto es un foro de Rusos amantes del vodka o Menéame en español, porque no entiendo un carajo de lo que decís!
Nasdrovia!!

D

#22 Tu símil no es bueno. Es mucho más próximo el "yo es que soy mecánico de coches especializado en destornilladores".

¿Suena estúpido? Lo es. En un caso, el suyo, la especialización es en una herramienta (un mecánico tiene que saber utilizar un amplio elenco de ellas, en función del problema que tenga que resolver) y en el otro, el tuyo, en un dominio (mecánico especializado en motos no tendrá el mismo cuerpo de conocimientos que un mecánico especializado en aviones).

skaterdonza

"It is just that C++ is also getting more and more popular"
No sé Rick...

Jakeukalane

#26 joe, no es para tanto. No llegué a terminar 1ro de informática y se les entiende perfectamente...

b

En mi empresa el gran grueso de nuestras aplicaciones de servidor corren en python (flask, mysql/postgresql, sqlalchemy). Si toca hacer alguna virguería con muchos datos, el rendimiento es muy importante y no depende tanto de consultas (queries) sino de la manipulación de estos datos, no dudamos en compilar a C partes críticas del código (a parte de poder utilizar numpy/scipy, pandas). Para nuestro caso, aplicación web/intranet, Python nos permite un desarrollo rapidísimo y nos da más de lo que nos quita.

t

#37 Al final ese es el quid de la cuestión: qué necesitas, y qué lenguaje/tecnología te lo da más fácilmente con el menor esfuerzo.

mgm2pi

#5 se usa para que los programas vayan rápido.

JanSmite

#86 Sí, eso me llamó la atención, y también un artículo que creo que leí aquí (y ahora no encuentro) sobre un aumento de 17 veces (1700%) en la velocidad de proceso sólo con pasar las rutinas de Ruby a Rust:

https://deliveroo.engineering/2019/02/14/moving-from-ruby-to-rust.html

JanSmite

#122 Bueno, me imagino que será cuestión de acostumbrarse…

D

No vuelvo a coger c++ ni con un palo.

borteixo

#3 y te votan negativo, jajajaja. putos nerds.

BodyOfCrime

#78 De pedagogía vas justito no?

BodyOfCrime

#84 O sí lol

BodyOfCrime

#83 Claro, porque todo el mundo tiene que aprender la Teoría de la Relatividad para saber cómo usar un GPS.

BodyOfCrime

#87 O sí (podemos seguir así todo el día)

BodyOfCrime

#93 Bueno tu aprende a saber que se considera aprender lo más basico. Luego cuando tengas esa leccion de pedagogía ya si quieres hablamos de otras cosas que yo tampoco no te explote la cabeza.

BodyOfCrime

A ver si los@admin hacen algo con el porque me ha ofendido llamandome básico

Va para el comentario 98 pero como me tiene en ignorado pues lo enlazo al mio #96

BodyOfCrime

#125 Pues mira de hacerte un mando por tu cuenta (y entender como funcionan los pines GPIO de la raspi) o si no quieres gastar un duro aqui tienes algunas aplicaciones practicas que puedes hacer (en perfecto ingles) con Python :

https://automatetheboringstuff.com/

x

No conozco C++ ¿para que sirve?

D

#c-39" class="content-link" style="color: rgb(227, 86, 20)" data-toggle="popover" data-popover-type="comment" data-popover-url="/tooltip/comment/3110255/order/39">#39 Yo empezaría con C#. Tiene una sintaxis similar al C y te resultará más fácil asimilarlo porque obtienes resultados sin demasiados quebraderos.

PacoJones

#83 Se puede saber lo que se está haciendo y a la vez ver resultados.
Ya ha dicho que no lo necesita para nada, al menos que desde el principio se divierta.
Es como si alguien estuviera preguntando como introducirse en el mundo de la lectura y tú le recomendaras Guerra y Paz ¿no será mejor algo más ligerito?

Penetrator

#5 Para todo. TODO.

LeDYoM

#4 Y yo su profeta, alabadme.

LeDYoM

#134 Ahi le has dao.
Pero yo estoy esperarando para sobrecargar el spaceship operator.

D

#74 Yo creo que la comparación estricta es la normal y la débil apenas se usa.

llorencs

#44 Con Python puedes hacer cosas como esta
Def func(par1:str, par2:float)->bool
Que te permite declarar las variables y te ayuda a identificar los tipos, es una mejora y en una IDE te puede a ayudar a detectar errores en tiempo de desarrollo.

ur_quan_master

Pasada la fiebre de los templates, desde c11 se está mejorando mucho en tener una librería estándar decente.

S

#7 ¿Podrías mostrarlo con un ejemplo sencillo? Siento curiosidad.

p

C++ el lenguaje en el que no hay manera de saber el tamaño de un p... array

S

#23 Esos y otros enlaces ya los visité antes de preguntar...Lo expresaré de otra forma. Para gente como yo que ha aprendido C++ gracias a alguna asignatura en la facultad y el resto por iniciativa propia, y que suele crear sus propios programas sencillos -de unos miles de líneas como mucho- y que muchas cosas les pueden sonar a chino mandarín, ¿también serían útiles aprender estas evoluciones?¿Hasta qué punto suponen una diferencia con respecto al c++ normal?

S

Errónea, no está el HTML

x

#14 A mí al menos me cuesta un huevo mantenerme al día porque no estoy en el día a día con él...

1 2