IEEE Spectrum ha publicado su sexta lista anual con los lenguajes de programación más populares del año a través de múltiples plataformas, y, para sorpresa de pocos, Python vuelve a repetir como líder indiscutible, tal como pasara en 2017 y en 2018. Para los menos familiarizados, la clasificación de IEEE Spectrum es considerada un buen indicador de la popularidad de los lenguajes actuales, aunque dista de ser perfecta, siempre exponen su metodología al publicar los números.
|
etiquetas: lenguajes , programación , ieee spectrum , lista , 2019 , python , más popular
Webasambly te esperamos.
PyPy sí te lo compro, es más rápido, pero no es java, así que no sé por qué el trol ese dice que es java interpretado.
Si quieren meter un conversor de Python a JS, que lo hagan, pero que no inflen más las páginas web.
Soy programador Python traído desde las profundidades de .NET. Y una de las diferencias sustanciales es la reducción de carga cognitiva con respecto a .NET y similares. Con mucho menos código haces lo mismo, y menos código por regla general quita ruido facilitando la lectura (yo me paso más rato leyendo código que escribiéndolo en general). MI vida se ha vuelto mucho más fácil en general gracias a python.
Muchos dirán que la falta de un compilador que te haga de colchón es un fail muy grande (por su naturaleza dinámica). Lo que esta gente ignora es que, precisamente, esa falta de compilador te obliga a mantener una alta cobertura de tests, obligando al equipo a tener la disciplina de implementar tests para todas las features, algo que, para mí, es superpositivo. Tu compilador de cara a refactors son los tests.
Mantengo microservicios y monolitos de cientos de miles de líneas en python, y solo le veo un par de pegas:
1- Python serio no es para novatos precisamente por la necesidad de tests. El equipo ha de ser consciente de ello. Novato en python == código plagado de bugs.
2- No es un lenguaje pensado para programación funcional, razón por la cual mi sueño sería hacer algún proyecto serio con Elixir.
Pero sí, programar en python en general me ha cambiado la vida, y no miro hacia atrás. En el mundo business general no es necesario el rendimiento de Java o C++ o Rust, ya que tus cuellos de botella suelen estar en el IO, no en la CPU.
En caso contrario, me niego a programar en eso, es lo más asqueroso que he conocido, indentado por espacios.
Si, a algunos os gustará y lo respeto, pero eso de indentar por espacios me resulta insoportable.
No hace falta que me respondáis diciendo que programar con espacios está bien por tal o cual motivo, no me vais a convencer, no me gusta, lo odio y como digo, ya intenté hacer una cosa con Python hace un par de años y lo tuve que dejar, era insoportable.
Todo lo que he programado, que no es mucho, siempre lo he hecho con C y JS.
Y en cuanto a que el código de Python sea más compacto que el de C#, por mi experiencia con ambos lenguajes eso se debe más al diseño de las bibliotecas que al lenguaje en sí.
webassembly.org/
Lo mejor en ese aspecto es go. Ejecutas go fmt y el código se formatea como debe ser. Un poco autoritario, pero se acaban las discusiones de formateo
- No necesitamos declarar el tipo de las variables en la mayoría de casos si ponemos unos buenos nombres de variables (sólo declaro el tipo si creo que en un cierto punto puede mejorar la entendibilidad de mi código). Cierto que ayudan al refactorizado en algunos casos, pero a cambio de "ruido" que a menudo no hace falta. Como muchas cosas en la vida, todo es sopesar pros y contras.
- Toda feature que se espera que haga la aplicación tiene un test de aceptación end to end. Si se ha olvidado escribir ese test que precisamente comprueba la correctitud del código y la feature... Ya te falla lo más elemental, y no es problema del lenguaje, sinó del programador.
What? Llevo 3 años trabajando profesionalmente con Python y NUNCA la he liado pardisima por eso. Cualquier editor de codigo te lo va a marcar como SyntaxError y si no cuando vayas a arrancar el projecto te va a tirar un SyntaxError y donde. O me estas diciendo que ni siquiera arrancas el codigo que escribes?
Para mi que haya un montón de búsquedas sobre python me indica que es el segundo lenguaje de mucha gente, y que su lenguaje principal lo tienen más por la mano y no tienen que buscar tanto "como hacer x" en él.
Al menos es mi caso, tengo muchas más búsquedas del tipo "<cosa> python" que de "<cosa> golang" siendo Go el lenguaje que uso el 90% del tiempo. Además creo que python está peor documentado y por eso tengo que buscar más.
Si modificas el código corres riesgo de perder la estructura, por eso prefiero las llaves, porque con ellas la indentación viene después de hacer la estructura y hay menos riesgo de equivocarse en mi opinón.
CC #40.
xkcd.com/927/
PD: Funciona en el mismo sandbox en el que funciona JS
cojonudo es python
Es lo que muchos detestamos de Python.
C podrá gustar más o menos, pero si quieres envolver un trozo de código con un IF para hacer una prueba, lo haces en un momento y si pones el IF y su llave de cierre sin indentación, luego ves bien dónde lo tenías para poderlo quitar. En Python eso, sencillamente, no es posible. Y si copias y pegas un trozo de código en otro, tienes que tener mucho cuidado con actualizar la indentación, a mi eso no me hace sentir cómodo.
¿Programas sólo para la web?
¿Que intérprete utilizas?
He cotilleado documentaciones de otros lenguajes para ver si me interesaba migrar y no la veía tan clara. Quizás porque no estoy acostumbrado a ella.
C#
Por cierto, el día que descubras los debuggers y los breakpoints condicionales que tienen los IDEs modernos.
En realidad, yo creo que Python está aumentando mucho debido al programador universitario que lo usa de manera doméstica, académica y luego también en investigación. Pero en negocio, creo que tenemos Java y js para rato.
¿Qué tiene TypeScript que no tenga Python?
angular, y nx (Desconozco si existe equivalente en Python)
¿Programas sólo para la web?
Sí. Pero las aplicaciones angular se pueden convertir fácilmente en aplicaciones de escritorio y en aplicaciones móviles.
¿Que intérprete utilizas?
Generalmente ninguno. Cuando uso alguno uso node o ts-node
Personalmente pienso que Python es mas para el ámbito científico (Para físicos, matemáticos, etc). Para el ámbito empresarial prefiero TypeScript
Y eso sin entrar en el tema de que todas las IDEs actuales ya te indentan automáticamente el código.
las aplicaciones angular se pueden convertir fácilmente en aplicaciones de escritorio y en aplicaciones móviles.
¿Con aplicaciones de escritorio te refieres a un ejecutable? ¿Cómo compilas el programa de typescript a ejecutable?
¿Con aplicaciones móviles te refieres a apks?
Si no usas intérprete, ¿cómo pruebas los programas?
cordova.apache.org/
ionicframework.com/
Para crear una aplicación de escritorio tambien puede usar:
electronjs.org/
nwjs.io/
Creo que casi todos generan "ejecutables" y apk al uso. Aunque no tendrán el rendimiento de una aplicación nativa puede ser mas que suficiente para uso empresarial donde lo que prima es reducir los tiempos de desarrollo
Sobre lo de intérprete no se muy bien a que te refieres (para node esta el comando node y para typescript el comando ts-node pero no son la forma habitual de de probar una aplicación). Tal vez te refieras a cosas como el comando ng de angular
- A veces meto las líneas agrupadas, cuando tienen relación entre si y son varias (hago una tabla).
- A veces meto código mal indentado porque solo lo estoy probando y luego lo quito (y no voy a estar cuidando la presentación para probar un poco).
Vale, los programadores expertos de alto nivel no lo harán así, pero es que la programación no solo es el alto nivel, sino también gente que programa de forma esporádica. A veces solo necesitas un trozo de código... no desarrollar una gran plataforma.
Yo sólo digo que los seres humanos no somos parsers y funcionamos mucho mejor con la ayuda visual de la identación.
De hecho, me he encontrado con más bugs en otros lenguajes (por ejemplo un equipo que trabajaba en Node) por un formateo raro y un despiste con las llaves que en Python. Piensa también que en un equipo de desarrollo grande puede que algún compañero se le vaya la pinza mucho y no le dé la gana de seguir ninguna guía de estilo.
He estado programando más de 5 años profesionalmente con Python y es un lenguaje que tiene muchos problemas, como todos, pero precisamente el tema de la identación es un acierto.
Como ya he dicho antes, cualquier IDE moderno te va indentando automáticamente y si pones algo mal te lo marca en rojo (igual que en cualquier otro lenguaje de programación), por lo que yo no le veo desventaja alguna.
variable_a_inicio = 0; variable_a_fin=0;
variable_b1_inicio = 0; variable_b1_fin=0;
variable_b2_inicio = 0; variable_b2_fin=0;
variable_c_inicio = 0; variable_c_fin=0;
Una tabla bien ordenadita (poniendo espacios para alinear) para mi gusto queda mejor. Habrá quién use vectores y tal, yo prefiero hacerlo así si no es una lista correlativa, es mi forma de programar.
Es algo que se da poco, pero con C lo puedo hacer a mi gusto, con Python... bueno.
También digo que de Python no me desagrada tener que pulsar la barra espaciadora o el botón de tabular, sino el hecho de que si quiero meter parte del código en un IF para poder hacer una prueba un momento, no es tan simple como en C que puedes poner el IF sin nada de indentación y su llave de cierre también, y así sabes bien por dónde te llegas por si lo tienes que quitar, y si no lo quitas, lo pones todo en su sitio y listo, pero no andas decorando el código para un experimento momentáneo.
Pero no es sólamente mezclar tabuladores y espacios, eso es fácil de arreglar. El problema surge cuando mueves código de un lado a otro y se te descolocan los espacios, y cambia totalmente la estructura de tu programa.