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.
|
etiquetas: lenguajes de programación , c++ , python , tiobe , java , c
C++11, C++14, C++17, C++20, son la rehostia en eficiencia, expresividad y economía de sintaxis.
Es dificil encontrar empresas que se han animado a adoptar versiones superiores a C++11
Muchas empresas tenian software en C y C++98/C++03 que han ido migrando a Java y/o C# (o su nuevo software) y ahora que el lenguaje ha evolucionado y tienes en un solo lenguaje caracteristicas de bajo nivel y alto nivel (2x1), la gente que dirige los proyectos en empresas ni siquiera sabe que existe C++11, C++14, C++17 y C++20. Se han quedado anclados en el pasado con ese lenguaje y el marketing de otros lenguajes les hace ir de flor en flor dependiendo de la epoca. Hoy toca java y c#, mañana toca Python y Javascript, luego NodeJS.... luego las aplicaciones van lentas como el culo...
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.
No sé Rick...
Además que para muchas cosas Python es mucho más pragmático y rápido que C. Si además hoy en día la mayoría de programadores no hacen más que tirar de recauchute de código y repositorios. La originalidad y el trabajo propio son ya cosa del pasado y de los gurús.
#9
Y el odio, yo creo que es más bien envidia. Me imagino a ese señor mayor ahí, programando toda su vida en c++ y viendo como un junior con Python hace mil virguerías en poco tiempo y claro, como que le pica un poquito...
Ahora este simil aplicado al software: no, el que se especializa en una tecnologia y campo de la informatica no es inutil, y problablemente con los años haga software que funcione perfectamente y no vaya a patadas cuando el hardware ya va limitado como pasa hoy en dia en cantidad de aplicaciones (moviles o web applications por ejemplo) con esos programadores utiles que hoy te tiran una linea en cobol, mañana en java y pasado en php sin saber como usar las caracteristicas del lenguaje mas eficientes para hacer buen software...
es.wikipedia.org/wiki/C++11
es.wikipedia.org/wiki/C++14
es.wikipedia.org/wiki/C++17
Nasdrovia!!
Y lo de everywhere, bueno, hasta donde lleguen las abstracciones.
Para grandes proyectos o para hacer alguna herramienta que requiera ya bastante codigo es una pesadilla. Yo lo odio.
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.
De todas maneras, siempre digo lo mismo: es indiferente que te guste o no, si es bueno o no, al final vas a programar en lo que te manden, no en lo que te guste.
#17 cc
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?
write in C
write in C
write in C
Python is for loosers
write in C ♪♫♬ (Parodia de let it be)
El C lo compilas y te dice los errores de sintaxis, Python salta en tiempo de ejecución.
La sintaxis de Python es muy dado a que salten todo tipo de errores. Por ejemplo, las tabulaciones o si alguien utiliza otra variable con el mismo nombre, Python la redeclara y buena suerte para encontrar el problema.
El rendimiento de Python deja mucho que desear. Ten en cuenta que es un interprete de comandos que se ejecuta en tiempo real.
Python vale para hacer scripts y para gente que no tiene muchos conocimientos programando. Lenguajes como C++ pueden llegar a ser muy frustrantes y requieren años de experiencia.
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.
Hay mucho genio de Dios ahí fuera desarrollando para Unreal.
Luego hay quien se sorprende de que paguen 13000 euros a un programador.
#39 Ni puto caso a #41. Pascal o ADA, de ahí a Java (no es necesario pero tiene muchas cosas buenas) y de ahí a C/C++. Vas a tardar más en programar, pero al menos vas a aprender. De la otra manera vas a creer que sabes programar.
Luego ya tendrás tiempo para lenguajes que hacen sentir a la gente que saben programar mucho y muy bien.
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
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,... ).
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.
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.
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.
¿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.
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.
Por eso digo que si tienes una estructura que lleve, por ejemplo, una clase y de vez en cuando hay un string, se me hace muy raro que esa estructura sea lo mejor que se le ha ocurrido a alguien.
Yo lo más que he llegado es a usar diferentes clases con herencia en la misma lista y por lo menos tenía la seguridad de que en el array no podía haber nada que no fuera compatible.
Por ejemplo la librería Qt ya incluye la programación de prácticamente todos los sistemas en uso hoy en día, incluyendo plataformas móviles, pero es C++.
#27 Es verdad, que se necesita un paso de compilación para cada cada arquitectura pero eso se automatiza fácil.
¿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).
O sea, que lo importante no es saber lo que estás haciendo, sino que veas que haces algo. De puta madre, muy profesional todo.
El símil que haces es tan desafortunado que ni merece la pena comentarlo.
No se pueda hacer pasar por el aro "hard way" si se quiere aprender a programar
Amigo, si se quiere aprender a programar, no hay opción más que pasar por el aro. El resto, a picar teclas y autoproclamarse programadores.
www.meneame.net/m/tecnología/lenguajes-programacion-utilizan-menos-el
Y puedes ver como está Rust en terminos de velocidad, memoria y energía.
for (std::vector<T>::const_iterator it = v.begin(); it!=v.end(); ++it)
{
it->foo();
}
Ahora:
for (const auto &e: v)
{
e.foo();
}
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()".
* Técnicamente implementar, pero tampoco quiero que te explote la cabeza.
Aquí dejé de leer.
A comer ignore, cansino.
Va para el comentario 98 pero como me tiene en ignorado pues lo enlazo al mio #96