edición general
185 meneos
4940 clics
24.000 desarrolladores responden: cómo y para qué usan Python, plataformas favoritas, y principal lenguaje secundario

24.000 desarrolladores responden: cómo y para qué usan Python, plataformas favoritas, y principal lenguaje secundario

JetBrainS ha publicado los resultados de su encuesta anual para desarrolladores Python, en ella buscan identificar las últimas tendencias dentro del mundo de la programación sobre uno de los lenguajes más amados por los programadores y de crecimiento más rápido en los últimos años. En la encuesta participaron unos 24.000 desarrolladores procedentes de más de 150 países, lo que ayuda a pintar una imagen bastante clara de la comunidad alrededor de este lenguaje. De todos los entrevistados, más del 80% usa Python como su lenguaje de programación

| etiquetas: python , lenguajes de programacion , desarrolladores , programadores
  1. A ver, a ver.
    En una encuesta entre desarrolladores de Python, ¿solo el 80% usa Python?
  2. #1 84% como lenguaje principal, 14% restante como secundario.
  3. Chachi, el 80% de los vegetarianos votan que comen verdura

    Ahora en serio, afortunados de trabajar del idioma que estudiaron
  4. Publirreportaje {0xae}
  5. #2 ya ya, ya lo he visto cuando he entrado al artículo y he conseguido desentrañar el galimatías del artículo.
    No voto negativos, pero...
    "Python 3 ya es la versión más usada, recordemos que hace apenas unos meses finalizó el soporte de Python 2 tras más de 20 años. Sin embargo, el 10% de los encuestados aún lo usa de forma activa. "
  6. Python me decepcionó como lenguaje para Inteligencia Artificial, sucede que este lenguaje NO implementa directamente los algoritmos de redes neuronales, visión artificial, etc.. no, para nada, es un lenguaje con el que se "juega" con los datos de entrada (hacerles conversiones por ejemplo) y después le lanzas esos datos convertidos a una librería de IA (que estará hecha en otro lenguaje) y luego con Pyhton recoge los resultados de esa librería para presentarlos en forma llamativa al usuario final.

    Cuando alguien en algún lenguaje de programación como C++ hace una librería científica, le implementa la interfaz para que pueda ser usada por Python para el manejo de los datos de entrada y salida, de allí la supuesta fortaleza de este lenguaje.

    La decepción fue porque a la larga, el "experto" en inteligencia artificial con Python no es más que un usuario final que sólo hace "uso de librerías" y se queda atrapado por lo que ofrece X o Y librería.

    Corregidme si me equivoco.
  7. Tengo la informática como hobby(algo abandonado) y solo puedo decir: que maravilla de lenguaje.
  8. #6 Eso mismo me pareció a mi, llevo 25 años programando en C, también programo en C++, Java de forma habitual, pues como todos los desarrolladores también he hecho mis pinitos en Python y la verdad que solo lo uso para hacer determinadas cosas, sigo sin encontrar la supuesta potencia y me parece un lenguaje difícil de mantener.
  9. #6 Eso es como decir que el usuario de C solo hace uso del código máquina y del hardware de la computadora. Python es una herramienta de comunicación con los ordenadores. Combina su facilidad para el usuario con capacidades muy elevadas. De ahí que sea popular.
  10. #6 claro, sólo tiene que darle a un botón y que haga su magia la "inteligencia" que ha programado de verdad a la "inteligencia artificial". ¿Has implementado alguna vez un algoritmo de machine learning? No solamente hay que dedicar un esfuerzo considerable a traducir lo que viene en un paper a algo que pueda ejecutar una máquina, sino que los testeos que tienes que llevar a cabo para asegurarte que tu implementación funciona como es debido te pueden suponer casi el mismo tiempo que el de implementación. Así que los "usuarios" preferimos utilizar herramientas que ya están debidamente testadas y que funcionan con rapidez, por lo que nos fiamos más de desarrolladores de software que saben muchísimo más de programación. Nosotros preferimos invertir ese tiempo en plantear la solución al problema, montar el conjunto de datos, seleccionar variables y buscar un conjunto de "parámetros" del algoritmo para que aprenda correctamente.

    Ahora saldrán también los programadores diciendo que si Python es una mierda porque usa tabuladores, que si el tipado no es estático y les revienta el cerebro que las variables no estén declaradas una por una, que si no se puede hacer esto que utilizo yo y tres personas más en el mundo o que es muy lento porque no es compilado (aquí tenéis una palabra mágica para vuestro vocabulario: cython). Que sí, que vuestro lenguaje de programación favorito es la hostia y que en Python mal, pero lo cierto es que hace el 90 por ciento de las cosas habituales de cualquier lenguaje de programación con una sintaxis sencilla y encima para el tratamiento de datos es mejor que el 90 por ciento de los restantes lenguajes de programación que existen (salvo R, por supuesto).
  11. #6 Creo que es correcto, python está jugando un rol que es el de "pegamento" entre librerías. Por sí solo no podría llegar a lo que está llegando, pero es una pieza como que faltaba en el ecosistema IA que permite su distribución y uso entre más gente, bueno esto es lo que yo opino de mis lecturas y pinitos por el python.
  12. #6 te pondré mi ejemplo. yo trabajo con test psicológicos de personas que tienen comportamientos compulsivos. Ido decenas de test, hasta tener un número de variables de 160. Ahora quiero comparar con un grupo de personas sanas, ver con un modelo cual o cuáles de los test me otra mejor para detectar la psicopatología y hacer unos gráficos para mostrar los resultados a mi jefe.

    Cuando crees que tardaría usando python y cuánto en C? Por supuesto que C es más versátil, ya que es programación de alto nivel, pero para hacer un gráfico en python solo necesito indicar los datos y decir cómo quiero el gráfico.
  13. #12 Sólo un apunte puntilloso: aunque ambos son considerados lenguajes de alto nivel, en este caso Python es un lenguaje de más "alto nivel" que C. Cuando se habla del "nivel" de un lenguaje, se hace referencia a su nivel de abstracción. Por lo demás, totalmente de acuerdo.
  14. #6 El experto en IA suele ser un científico de datos o algo parecido que sabe programar pero no es un experto en el tema. Necesita un lenguaje fácil como R o Python para prototipar y hacer muchos experimentos sin preocuparse por detalles de implementación. Le da igual si Tensorflow está por debajo hecho en C++. Esas librerías son bastante flexibles: si quieres investigar un tipo de neurona o red nueva puedes por regla general diseñarla fácilmente con las herramientas que te dan.

    Cuando esté todo más que investigado, ya se encargará el experto programador en C++ en realizar una implementación fiable, robusta, eficiente, etc. del modelo final para meterla en el robot de turno o lo que sea.
  15. Para un proyecto grande quizá no lo usaría, pero para crearte scripts de automatización y de validación Python es lo más. Te facilita muchísimo la vida.
  16. Python está demasiado mitificado. Cuando lo conocí me enamoré de él, pero conforme fui metiendome en sus tripas me fue decepcionando. Sus listas al principio enamoran porque siente que con sus listas y un poco de diccionarios piensas que te vas a comer el mundo y no necesitas más.

    Cosas que no me gustan de Python: su orientación a objetos, su libreria de expresiones regulares (que sí, que una expresión regular es lo mismo en Python que en cualquier otro lenguaje pero su manera de 'envolverlas' no me convence), no tener una estructura de datos para matrices, sí se puede hacer perfectamente con listas anidadas pero no me gusta, muchas veces tienes datos que son claramente tabulares y que no van a cambiar de tamaño dinámicamente y el que no te pete si hay un inconsitencia, i.e. en alguna parte del flujo metes un dato de más en una fila, no me gusta. Es lentísimo, muchos memes se han hecho con Java acerca de su lentitud y la verdad es que Python lo es mucho más, Java a mejorado mucho en ese aspecto. Su uso de las funciones anónima lo siento capada con respecto por ejemplo Javascript.

    Cosas buenas de Python: su E/S de ficheros, para los principiantes es la ostia les enseñas a utilizar sus listas y no necesitan más estructuras de datos hasta dentro de meses. List comprehension. Su librería estandar es inmena para dar y regalar y algunas de las librerías son muy útiles y no he encontrado su par en la mayoría de lenguajes.

    Hoy en día el lenguae que más bonito me parece es el denostado Javascript. Eso sí me tuve que leer un libro, a diferencia de Python si viens de C te puede poner directamente con Python sin ninguna parafernalia pero si haces lo mismo con Javascript te vas a frustrar, Javascript cambia muchas cosas cruciales con respecto a C (el ámbito de las variables mismamente) y si no lo comprendes te vas frustar y lo vas a odiar, pero conforme entiendes el por qué de las cosas de Javascript creo que te cambia la visión del lenguaje y lo ves muy interesante. Quitando el hecho de que la libreria standar en Javascript es mucho más pequeña en Python creo que una vez interiorizas Javascript puede que sea le lenguaje dónde más rápidamente se puede programar. Su uso de las funciones anónima es exquisito y los cambios que hacen en el ámbito de las variables y funciones te permiten hacer cosas muy rápidamente que en otros lenguajes serían mas coñazo.

    Actualmente Python es mi lenguaje 'secundario', si tengo que automatizar cualquier pequeña cosa hecho mano de él, pero me gustaría dejarlo de lado. A veces me planteo pasarme a Javascript para esas tareas (si, JS se pede usar fuera del explorado y tiene E/S de ficheros) pero lo suelo descartar porque ya me he acostumbrado a ciertas librerias de Python, pero vaya creo que Javascript está mucho mejor pensado que Python y que introduce novedades potentísimas a la hora de generar codigo robusto de forma eficiente (eficiente con respecto a que el programador eche menos horas programando).

    Ahora mismo mi uso de lenguajes:
    Algo en lo que el redieminto es crítico? c/c++
    Una aplicacion de escritorio? Java (en su base no me gusta y me parece verborreico hasta decir basta pero creo que ha ido evolucionando muy bien y su eficiencia ha mejorado una barbaridad)
    Algo rapidito que automatizar? Python (aunque lo quiero sustituir)
    En programación web no he tocado mucho, pero si tuviese que meterme pasaría de PHP y SQL y me iría a JS en backend y MongoDB. Pero vaya que me falta mucha experiencia, lo más seguro que me acabaría dando una ostia xD pero intentaría que JS fuese mi lenguaje tanto el fronted como en el backend.
  17. #2 Y el 2% que falta, como terciario
  18. #16 Según leyendo iba a estar de acuerdo contigo hasta que saltaste con que te gusta Javascript. Para mí, una característica esencial de un lenguaje de programación, es que su código de auto documente lo máximo posible, y eso en lenguajes donde no se definen tipos es imposible. Typescript, solo teniendo en cuenta la parte de indicar tipos, hace que Javascript ya parezca otra cosa.
  19. ah bueno y se me olvida la precisión 'infinita' en el manejo de los números de Python. Eso sí que es un gustazo, aun me acuerdo en mi epoca de estudiante que tuve que programar una práctica de física en C y aquello daba fallos por todos lados y por más que mirase el codigo no encontraba nada mal, me tiré horas y horas y me llegué a frustar al nivel de 'mi ordenador está fallando' o 'no comprendo la informática' y al final era que al usar números tan pequeños habia errores de redondeo y por eso no salía bien xD maldito cálculo del campo electromagnético de una esfera uniformemente cargada jajaja aún me acuerdo de la práctica de lo que sufrí por esa pequeña tonteria de asumir precisión absoluta en los cálculos.
  20. #13 eso mismo iba a decir yo, con C puedes tratar con direcciones de memoria y punteros, es más bajo nivel que Python
  21. #6 Cometes dos errores. En primer lugar, sí existen implementaciones de esos algortimos en Python. Si bien es cierto que la primera implementación de Python, y la más usada, está escrita en C (CPython), existe desde hace muchos años una implementación de Python escrita en Python (PyPy), que además es con mucho la más eficiente. Y aunque puedes desarrollar librerías para Python en muchos otros lenguajes (lo cual limita su uso a entornos en los que se puedan compilar) muchas librerías de IA están desarrolladas exclusivamente en Python y son por tanto ejecutables en PyPy.

    Pero este es un error circunstancial que no tiene relevancia. El error grave, a mi juicio, está en relacionar la implementación de una librería con el concimiento en IA. Los que implementan librerías de IA para Python en C, también emplean a su vez otras librerías desarrolladas por programadores de sistemas que hacen uso de instrucciones específicas del procesador para optimizar los cálculos (como MKL, por ejemplo). Quienes a su vez emplean ensamblador, que es un lenguaje que implementan los ingenieros que desarrollan el hardware. Quienes a su vez...

    Tirando de este hilo llegaríamos a la conclusión de que los epistemólogos, o los físicos de partículas si nos ponemos positivistas, son los mayores expertos en cualquier rama del saber humano. Lo cual es obviamente falso.

    Y, abundando en la introspección, existe una paradoja aún escalarecedora: hoy en día nadie es capaz de describir de manera algorítmica los resultados que proporcina el deep learning y, sin embargo, es uno de los puntales de la IA. Lo cual es otra muestra de que el concimiento en IA, y en cualquier otra rama del saber, no depende del conocimiento que se tenga del funcionamiento de las herramientas sino del uso que se haga de ellas.

    Resumiendo: el mejor tenista del mundo no fabrica raquetas ;)
  22. #18 Yo un proyecto grande no lo hago en un leguaje que no defina tipos ni harto vino jajaja, te entiendo perfectamente. Pero bueno creo que JS tiene ideas potentisimas en su base que no he visto en otros lenguajes, su acercamiento a la programación funcional me parece de los mejores que he visto. Pero sí, tiene cosas que no me convencen, pero claro nunca vas a encontrar el lenguaje perfecto.
  23. #1 como lenguaje principal. Tu puedes ser desarrollador en Python y JavaScript por ejemplo, y que tu lenguaje principal sea JavaScript
  24. #15 stackoverflow o YouTube están hechos en Python....
  25. #3 ¿idioma?
  26. #24 Y más allá de millones de aplicaciones de servidor, hoy en día anglificadas a la expresión "backends", hay pepinazos de proyectos como OpenStack que están completamente desarrollados en Python.

    Llevo toda la vida programando en Java (ya felizmente abandonado), Python y los últimos as en Go, esto tras pasarme toda la universidad usando C y C++ como lenguajes de aprendizaje tanto en clase como por mi cuenta, y sólo puedo decir que cuando escucho a algún supuesto programador o ingeniero decir "Python es un lenguaje de scripting" asumo directamente que no merece la pena perder mi tiempo escuchando lo que esa persona tenga que decir sobre programación ni sobre computadoras.
  27. #25 Parece una traducción literal de (programming) language. Una jugada del cerebro. A mí me ha pasado alguna vez.
  28. #24 Eso es completamente mentira.

    cc: #26
  29. #19 Leyéndote me da la sensación que no te vendría mal repetir la asignatura.
  30. #29 O que el profesor no le explicó bien las cosas.
  31. #16 ¿Te quejas de Python y usas Java? El día que empecé con Python fue el día que abandoné Java para siempre.

    Mis aplicaciones de escritorio, las cuatro mierdecillas que he picado para entretenerme en casa y las dos cosas que alguna vez he hecho para mis curros, en Qt/C++.

    Java ni tocarlo, vamos.

    Y demasiada obsesión veo ahí con "las listas". Las listas de Python son simplemente una característica del lenguaje, una estructura de datos implementada, como los diccionarios, las tuplas o los conjuntos. La libreŕia estándar del lenguaje además contiene colecciones de contenedores de datos de alto rendimiento que facilitan muuuuuuuuuucho cualquier cosa que tengas que hacer con datos. Y en el caso de que Python fuera un problema por su rendimiento, que suele ser la excepción y no la regla, me iría a C++ y no a Java, eso lo tengo claro.

    En cuanto a JavaScript, en 2020 y con ES6, sigue siendo un lenguaje de juguete y un chiste comparado con Python. Y MongoDB tiene su nicho de utilidad, que es absolutamente restringido a determinados casos de uso, y detrás una legión de newbies y wannabes que siempre quieren usar MongoDB para absolutamente todo porque SQL no lo conocen ni tienen interés en aprenderlo.
  32. #6 Estás en lo correcto a medias. Porque confundes lo que es un experto en inteligencia artificial. No tiene por qué saber como programar a bajo nivel un modelo, normalmente un experto en machine learning domina las funciones matemáticas que se utilizan para crear eses modelos. Y ahí es donde entran en juego Tensorflow y PyTorch, que son dos de las librerías más utilizadas en la actualidad, porque te permiten usar expresiones matemáticas de bajo nivel para crear tus propios modelos. Y eso es lo que se suele utilizar para la generación de modelos avanzados de machine learning. Por suerte para el gremio, estas librerías han hecho innecesario el conocimiento de programación en CUDA, ya que te abstraen de esa parte.

    Ahora bien, tienes razón en que hay mucho experto que usa la librería de scipy, lo mezcla con procesado de datos con pandas, o algún modelo preentrenado en las librerías mencionadas anteriormente, y ya se dice que es un experto. Pero nada más lejos de la realidad.
  33. #24 lo de Stackoverflow no sé de dónde lo has sacado, pero nada más lejos de la realidad

    meta.stackexchange.com/questions/10369/which-tools-and-technologies-ar
  34. #25 #27 :palm: sí, me lo tengo que mirar, tantas horas programando y que en euskera haya solo 1 palabra para idioma y lenguaje también jajajaja
  35. #21 Partiendo que el conjunto general de los que has escrito es cierto, y concuerdo con ello, el primer párrafo no es cierto para nada. La mayoría de implementaciones de librerías de machine learning están en C, C++, Fortran, ya que python no tiene aceleración por CUDA. PyPy te permite escribir en lenguaje estilo Python y te lo compila creo que en C (no estoy seguro del lenguaje), y es más rápido que esa misma función programada en Python. Pero no es más rápida que esa función programada en C. Como mucho puede ser igual de rápida, pero un programador experto en C conseguiría algo de ventaja, sea en manejo de memoria o de potencia de cálculo.
  36. #33 Lo de Windows le vs a dar un chungo a algunos que tanto usan Stackoverflow
  37. #33 open stack, se me fue la olla!
  38. #28 StackOverflow está hecho en .NET, creo recordar. Joel Spolsky es windowsero.

    YouTube inicialmente se hizo todo en Python. Me imagino que ahora son todo microservicios o vete a saber. Instagram es una aplicación desarrollada en Django y con PostgreSQL de base de datos. Reddit gastaba nosequé microframework en Python. DropBox, todo en Python también (contrataron a Guido Van Rossum de hecho). Pinterest, Bitbucket... están también hechos en Django...
  39. #38 quería decir openstack, perdón
  40. #29 Yo la física ni con un palo. Pero que la práctica era que te daban un punto en el espacio y tenias quedevolver el valor del campo en ese punto estoy seguro que se trataba de eso. Y que los cálculos no salían bien por la precisión del tipo double de C++ tb estoy seguro. Y que me pusieron un 10 en la práctica tb estoy seguro. Y que tengo un 9.3 de media en la carrera tb (besis de frambuesa) Es horrible hablar con informáticos. Expone uno sus ideas buenamenta dando sus razones y diciendo quepuede estar equivocado porq no lo sabe todo y le saltan siempre dos o tres con 'NO TIENES NI PUTA IDEA' si aportar nada al debate.
  41. #24 He dicho que yo no lo haría, no que otros no deban hacerlo...
  42. #9 Que comentario más sensato. Además que lo puedes usar fácilmente tanto desde para analizar datos, hasta para programar el lado servidor de una web, pasando por un rango enorme de posibilidades.

    Por mi trabajo tengo que usar mucho otros lenguajes, tanto de alto como bajo nivel. Y adoro el Python. Me parece extremadamente práctico.

    #6 Sabes que unas de las librerías más utilizadas de álgebra lineal está programada (al menos originalmente) en Fortran, no? Y que muchos algoritmos de los que comentas, es muy probable que las usen? Esto hace "menos" al C++? O hace "menos" a estos algoritmos que comentas y a sus programadores?

    Es más, cuantos programas enlazan librerías escritas en otros lenguajes? O que me dices de cuando a veces, dentro de C/C++ se pone ensamblador para las partes más críticas?
  43. #16 no tener una estructura de datos para matrices,

    Pero para eso está numpy, no? Python se apoya en librerías como Numpy/Scipy, Pandas, etc. Cuando tienes que lidiar con datos. Y ahí tienes miles de formas de reestructurar, indexar y transformar los datos, de forma extremadamente práctica.
  44. #10 uff... tanta verdad (a medias ) y tanta imprecisión en un solo comentario...

    ¿Qué hace cython exactamente?
  45. como lenguaje de scripting no está mal, aunque casi que prefiero javascript.
    Los tabuladores una aberración y el hecho de que peta en tiempo real con cosas que deberian petar en compilación hace perder mucho tiempo.
  46. #43 Muy a mi pesar conozco esas librerias (me parecen buenas, digo a mi pesar porque lo qeu tuve que hacer con ellas no me gustó xD).

    No sé, lo único que decía que me molaría que de base tuviese esa estructura de datos, sin tener que meter una librería no estándar de por medio. En fin, no vuelvo a poner un mensaje de informática en la vida xD

    Viene uno buenamente a expresar su opinión basada en lo que sabe y admientiendo que aún le queda mucho por aprender y le caen palos por todos lados. Y no palos argumentados, palos del tipo "NO SABES NADA, X ES MEJOR QUE Y, SOY MEJOR QUE TÚ"
  47. #26 A ver...

    Python es un lenguaje de scripting"

    Python es sin duda un lenguaje interpretado, que es literalmente el significado de scripting... así que en eso tienen razon. Otra cosa es que lo que quieran decir es que solo vale para hacer scripts... Pero técnicamente es un lenguaje de scripting. Así que si alguien te dice eso espera a ver si te dice algo más y no dejes de escuchar no vaya a ser que sepa más que tú.
  48. #35 PyPy te permite escribir en lenguaje estilo Python y te lo compila creo que en C (no estoy seguro del lenguaje)

    PyPy no tiene nada que ver con C. Está escrito en Python (RPython para ser exactos, que es un subconjunto de Python) y es un compilador JIT. Además, todas las implementaciones de Python te permiten escribir en lenguaje estilo Python ;) lo que más se ajustaría a tu descripción es Cython, pero tampoco tiene nada que ver con PyPy.

    es más rápido que esa misma función programada en Python. Pero no es más rápida que esa función programada en C.

    No he dicho que una función programada en PyPy sea más rápida que esa misma función programada C; sino que PyPy, como implementación de Python, es mucho más eficiente que CPython. Y prácticamente cualquier algoritmo implementado en Python se ejecutará más rápido sobre PyPy que sobre CPython.

    No hablaba del lenguaje de implementación del algoritmo (que necesariamente tiene que ser Python si se quiere ejecutar con PyPy) sino de la implementación del intérprete (CPython) / compilador (PyPy).
  49. #34 if (MUNDO_REAL) print("kaixo!")
  50. #30 Sí, puede ser, pero independientemente de la razón, le vendría bien repetir la asignatura.
  51. #30 cc #40 en realidad le hubiera venido genial una clase que sí se da en ingeniería informática llamada computación científica, en la que se explica IEEE (I-E cubo) que habla sobre la representación en coma flotante, y cómo la representación binaria de números provoca errores de redondeo y cómo hay números racionales (aunque sean finitos y no periódicos) no tienen representación exacta en una máquina binaria etc.. y como 0!=0 muchas veces en c o c++ y cómo hay que implementar las comparaciones por rango de error etc...

    Es un tema que a cualquiera que le gusten las matemáticas le fascinaría.

    P.D. los cálculos no te salían mal por la precisión del tipo double de c++. (Al menos no exactamente y técnicamente hablando aunque por ahí van los tiros).

    El problema es que incluso aunque tengas una precisión superior a la necesaria, no significa que todos los números comprendidos en ese rango de precisión puedan ser representables en formato binario mantisa + exponente y por tanto se van acumulando errores en los cálculos.

    Confieso que no recuerdo todos los pormenores del asunto. Pero si a alguno le pica el interés ya sabe por donde tirar para aprender algo más.
  52. #40 #40 ¿Qué carrera estudiaste? Porque si es informática, el problema con los floats y doubles deberías conocerlo. Y no solo es cosa de C++, pasa en muchos lenguajes.
  53. #6 La decepción fue porque a la larga, el "experto" en inteligencia artificial con Python no es más que un usuario final que sólo hace "uso de librerías" y se queda atrapado por lo que ofrece X o Y librería.

    Ser un "usuario final" no es tan sencillo, no es tan fácil como pasar unos parámetros y llamar a una función, tienes que saber a fondo como funciona tu modelo - independientemente del lenguaje en el que esté implementado - para no cometer errores, tienes que saber combinar distintos bloques de forma adecuada para tu problema, etc. Para muchos tipos de trabajo no es necesario hilar tan fino como para necesitar cambiar el código de las librerías, y si lo necesitas hacer de forma puntual no es tan problema el tener que lidiar con librerías en distintos lenguajes.
  54. #26 Totalmente de acuerdo. Yo cuando escucho a un presunto programador mencionar su particular escala de lenguajes perfectamente ordenada de "mejor" a "peor" sin hablar en ningún momento del contexto, paso automáticamente a hablar del tiempo :-D

    Hay una lista enorme de sesgos que suele aplicar a la programación la gente que no la conoce. Y sin duda uno de los más frecuentes es que los lenguajes de menor nivel son "mejores" que los lenguajes de más alto nivel; una proyección quijotesca de la programación en la cual un lenguaje que te obliga a escribir más líneas de código para implementar un determinado algoritmo es necesariamente mejor.

    Un punto de vista "deportivo" compartido por muchos de los que no saben que la programación sólo tiene un objetivo: resolver problemas.
  55. #48 Ya te digo que no domino nada del tema PyPy jeje. Pero la mayoría de las librerías siguen y seguirán siendo programadas en lenguajes de más bajo nivel. Yo soy un gran defensor de Python, me encanta su claridad y sencillez. Pero al César lo que es del César: es lento a rabiar. Que a nadie se le ocurra hacer dos bucles anidados, te puedes pasar media vida esperando.
  56. #5 Igual es que aún no me subió el café, pero no veo qué tiene de errónea esa frase.

    Lo que sí es un error es incluir HTML/CSS como lenguaje de programación. Pero ya no es cosa del artículo sino de JetBrains, que me imagino que alguna razón tendrían (sospecho que de marketing), porque de programación saben un rato largo.
  57. #56 Totalmente de acuerdo. Yo no escribiría una librería de cálculo en Python, ni un framework de automatización en C, ni clavaría una punta con un destornillador :-D

    Pero esa expresividad y sencillez son, en muchas ocasiones, una virtud mayor que el aprovechamiento de recursos. Son incontables los proyectos y startups que han comenzado con un producto implementado completamente en Python y que, una vez que fueron rentables, comenzaron a optimizar los cuellos de botella con otras implementaciones. Probablemente muchas de ellas, si lo hubiesen hecho al revés, nunca habrían llegado a ser viables.

    Como dice Donald Knuth: "premature optimization is the root of all evil".
  58. #53 Conozco Javafx. La cuestión es que no quiero usar Java porque no quiero depender de Java. Personalmente me parece un lenguaje sobrecargado y prefiero optar por otras soluciones, como ya he mencionado:

    - Aplicaciones de escritorio y portabilidad interplataformas: tiro de C++ y librerías Qt, que son una puta pasada.
    - Aplicaciones de servidor: si el rendimiento no es un problema, y salvo que estés haciendo tratamiento masivo de datos en tiempo real no suele serlo, usaré Python por sus excelentes características, su facilidad de desarrollo, su expresividad y su eterna colección de librerías de batalla. Si el rendimiento es un problema, usaré Golang.

    Java ha quedado obsoleto. Bueno, en realidad estaba obsoleto ya hace 10 años, porque hace 10 años ya teníamos Django (que en cuestión de características integradas y usabilidad deja a Spring a la altura del betún, si has gastado ambos y eres objetivo compartirás esta opinión) y Qt.
  59. #46 Disculpame si mi comentario te ha parecido que era agresivo. No era mi intención. Ni pretendía decirte que no sabes nada ni que soy mejor que tú. Siento si ha parecido lo contrario.
  60. #60 no, si por ti no era... Tu me has respondido bien y de no haber conocido ya las librerías hasta me habrías hecho un favor, jeje lo decía por otros comentarios
  61. #47 que es literalmente el significado de scripting

    "Lenguaje interpretado" no significa literalmente "lenguaje de scripting". Ni siquiera objetivamente significa "lenguaje de scripting". De hecho, el término "lenguaje de scripting" es ridículo a más no poder y está basado en las opiniones personales de algunos programadores de hace 20 años que se asustaban al ver como en Python o Ruby se hacían cosas en 2 días que ellos con sus C++ (lenguaje que personalmente me gusta) tardaban una semana. "Lenguaje de scripting" era una expresión usada explícitamente para denigrar a un determinado lenguaje: "con esa mierda sólo puedes hacer scripts, para las cosas serias usa Java/C++/C que es más robusto blablabla". Como si Python o Ruby fueran una especie de "bash" o algo así, por ser lenguajes interpretados (ambos compilan a bytecode, por cierto, es decir que no son completamente interpretados sino que la tecnología va más allá de "interpretar este código".

    "Lenguaje de scripting" no significa una mierda y precisamente en el gigantesco universo Python si llegas hablando de "lenguajes de scripting" se van a reír en tu cara gente que lleva programando en todo tipo de lenguajes desde hace décadas. Y esas expresiones son perfectas para detectar a cuñaos, así que mejor deja de usarlas no sea cosa que vayas a dar una mala impresión a tus interlocutores.
  62. Python, el nuevo Basic
  63. #55 Amén. Echar mierda sobre un lenguaje por motivos tan abstractos o etéreos como "es un lenguaje de scripting" y demás expresiones aprendidas no deja en muy buen lugar al que las suelta.

    Me vale que se discuta si un lenguaje determinado tiene "mejor diseño" o "mejor implementación" que otros. PHP por ejemplo ha sido literalmente basura durante muchísimos años, con unos fallos internos de seguridad y de tipos garrafales (hay posts en todas partes para aburrir). JavaScript hasta ES6 daba bastante asquete por mil motivos también. C++ los programas anteriores a C++11 se pueden hacer realmente duros de leer pero por lo demás a mí me parece cojonudo y sobre todo los últimos 10 años ha evolucionado que no veas. Java como idea es la polla y la máquina virtual es una obra de arte, además de ser jodidamente eficiente desde que metieron el Hotspot hace ya mil años. Python es una preciosidad, sobre todo cuando vienes de cualquier otro lenguaje, y en cuestiones de eficiencia tienes Cython o Pypy que tienen en determinados casos un rendimiento que se equipara a otros lenguajes como Go...

    Dime qué quieres programar y te diré qué lenguaje yo te puedo recomendar de los que conozco (los más famosos, realmente, me dejo en el tintero otros que no conozco demasiado como Scala, Elixir, Ruby, Erlang...). Pero ponerte a decir que Python mal "porque no tiene esta librería" o "porque es un lenguaje de scripting" lo dice ya todo del supuesto programador.
  64. #46 A mi no me ha parecido el mensaje #43 fuera agresivo hacia ti ni pretendía criticarte. Solo aclaraba que existía numpy. Me ha parecido bastante educado, la verdad.

    No seas tan sensible. Y escribe todo lo que quieras de informática. Tu mensaje aunque pudiera estar incompleto no era malo.
  65. #9: Lo de la facilidad es un poco relativo.
    En principio es un lenguaje orientado a escribir poco código, y normalmente los códigos más compactos suelen ser más complicados de entender, porque tienes muchas cosas a la vez en una única función.

    No digo que para un programador experto sea más eficaz, ágil... pero no fácil, porque para ser fácil hay que ser más explícito. Es decir, si tú pones (ojo, estoy saltando a JavaScript) un bucle for, unas instrucciones y su cierre, puedes ver bien lo que hace, si usas filter, pues ya tienes que saber qué es filter, cómo funciona... Y es que hoy para empezar a programar, no recomendaría ni JS ni Python, sigo pensando que lo mejor es C o C++ sin clases ni operadores ternarios, que van muy pelados y tienes que hacer las cosas paso a paso. ¿Que el código ocupa mucho? Sí, pero un principiante lo ve mejor, y eso es la facilidad.

    Y otra es que el lenguaje no haga nada que no se le pida, y Python tiene cierta manía, como añadir saltos de línea en print, salvo que le digas que no los quieres. En C y C++ si quieres saltos de línea los tienes que poner explícitamente, si no sale todo seguido en consola, y eso está bien para que los principiantes se acostumbren y entiendan cómo funciona un ordenador.

    Es decir, el lenguaje más fácil es el más pelado, que no tenga nada en plan "¿y esto por qué ocurre así?", donde para explicar eso tengas que dar 1000 vueltas, o que al menos sea lo mínimo posible.

    De hecho, yo C lo enseñaría usando los %d y %f de forma aislada, en un printf sin nada más, y poniendo varios printf seguidos, así se entiende mejor lo que hacen, y luego explicaría que se pueden combinar y cómo. O sea, cuanto más simple, mejor.
  66. #59 Yo soy "desarrollador"* de Python. Y la verdad que lo estoy usando en todos lados. He ido escribiendo mini herramientas para escritorio con PyQT/Pyside2. Y la verdad que QT me gusta mucho, aunque no lo haya usado en la parte de C++.

    Ahora estoy migrando a servidor implementando APIs con Flask. Y tener todo mi código más unificado y más fácil de mantener.

    "Desarrollador"* lo pongo así, porque aunque desarrollo no me considero como tal, aún. Sería algo como un junior, aún estoy aprendiendo y no tengo formación de desarrollador más que el módulo que hice hace la tira de años.
  67. #64 A mi una de las cosas que me gustan y a la vez no me gustan, es el tema de la identación. Es decir, me gusta eso de la identación forzada, pero a la vez me ha causado bugs por no darme cuenta que una instrucción estaba dentro de un bucle, cuando debía estar fuera o al revés, estaba fuera en vez de dentro. Y me daba un funcionamiento imprevisto y no encontraba la razón.

    Quitado eso, amo Python. La verdad, es que por mi entrenamiento en desarrollo, vengo de Pascal. La sintaxis de C nunca me ha entrado. No me ha acabado de convencer, y por lo tanto Python es un lenguaje que por su simplicidad y naturalidad del lenguaje me encanta. Además la forma de tratar ciertas estructuras de datos es ultra cómodo, por ejemplo las listas o las "estructura de datos comprehension", aunque principalmente sea con listas.

    Ahora, que voy a cliente-servidor, miraba como hacer el cliente, pero no me queda otro que tirar a JavaScript. Había mirado Brython, y había visto que había una biblioteca tipo "Angular" llamada Anpylar, pero que no se mantiene desde 2018, así que me tocará aprender Javascript para hacer incluso un "mockup" rápido de la parte cliente. La parte de servidor lo hago en Flask. Aunque debería de mirar de pasar a "async".

    Además, Python es un lenguaje que te permite hacer desarrollos en cualquier lado. Y para escritorio estoy muy contento con PyQT.
  68. #6 ¿Me estás diciendo que entonces cada vez que necesite un algoritmo tengo que reimplementarlo? Es que los algoritmos son los que son, los uses en C++, Cobol, Java o Python. ¿Que más te da que al final sean wrappers de librerías en C? El "experto" sabe de sobra como funcionan esos algoritmos. No es echarle de comer y ala, ya recogeré los datos. Creo que confundes experto en IA con investigador en IA. Es como si me dices que un experto en C++ está atrapado por como se han programado las funciones básicas del lenguaje en ensamblador. ¿En serio hay que mirar el código máquina de un print cada vez que se va a hacer?

    Y con respecto a las redes neuronales, ya que las nombras, es el peor ejemplo que has podido poner. ¿Que es implementar un algoritmo de red neuronal? Porque esa frase no tiene sentido. Me lleva a pensar que tampoco es que hayas tocado muchas cosas de IA.
  69. #6 a nivel empresarial al final se acaba tirando de librerias optimizadas para ciertas operaciones.

    No haces todo de 0. La lógica la pones tú, pero operaciones comunes en muchis proyectos suelen ser hechas por otros.

    Nobse si te refieres a hacer todo desde 0.
  70. #44 Cython, entre otras cosas, añade tipado estático y permite usar librerías de C/C++ en Python. Con él "vuelves a tener" bucles for rápidos, por ejemplo. Es bastante cómodo de usar. Con Jupyter es tan fácil como añadir un cell magic para poder usarlo.
  71. #67 Es que la versatilidad de Python es tremenda. Es muy practico.
  72. Recomiendo Ruby sobre Python siempre, a pesar de que creo que Python es un gran lenguaje.
  73. #62 Eso te lo acabas de sacar de tus cojones morenos porque sí. No te sientas atacado porque te guste python, a mí también me gusta, pero los hechos son los hechos.

    Toma un par de referencias para que aprendas un poco anda:

    preserve.mactech.com/articles/mactech/Vol.15/15.09/ScriptingLanguages/
    www.bitsavers.org/pdf/ibm/360/os/R01-08/C28-6539-4_OS_JCL_Mar67.pdf
    a ver si vas a saber tú ahora más que IBM

    Que la gente use le palabra negro para denigrar a los negros no la hace menos descriptiva de las personas negras.

    Python tiene cosas buenas y cosas malas como todos los lenguajes pero es un lenguaje interpretado y punto pelota. Y la definición más aceptada a nivel internacional de un lenguaje scripting es el de un lenguaje capaz de ser ejecutado sin ser compilado. Y Negar la mayor no te va a dar la razón en eso.

    La sensación que tengo yo es la contaria que tú. Aquel que pone el grito en el cielo porque le digan que python son scripts (que lo són) es porque es un fanático que no puede ver más allá y solo ve ataques en lo que es una definición objetiva.

    Para ejecutar un programa en python necesitas el intérprete. La definición está ahí y no se le puede retorcer demasiado.
    Con esto no quiero decir que sea malo ni pretendo denigralo. Simplemente es un hecho.

    En cualquier caso no deja de ser una cuestión semántica supongo. Que no estamos hablando de las bondades técnicas de un lenguje u otro si no de una puñetera definición que quieras que no se ha inventado en los últimos 50 años como mucho.
  74. #71 vamos algo como jni de java no?

    Yo sinceramente no entiendo tanto fanatismo con estas cosas.... Mi lenguaje es el mejor y punto. Pues no colega... Cada lenguaje tiene sus ventajas y sus inconvenientes.

    Anda que no he hecho yo programitas en bash (en BASH!) porque hacerlo en c era matar moscas a cañonazos.
  75. Recordar que si decís que Apple o Microsoft es el mal.

    Jetbrains es el puto demonio, se dedica a infectar la comunidad con IDEs a medias para que la gente pase por caja.
  76. La verdad: a mí todo esto me importa un pyton..-
  77. A mi me cuesta mucho python en el sentido que produzco código basura. No se programar con lenguajes a tan alto nivel.

    Cosas super simples para alguien que esté acostumbrado a python las hago muy engorrosas xD
  78. #6 Por eso los programadores de C++ somos los auténticos dioses.
  79. #68 Para UI en navegador, no te quedan más cojones que JavaScript. Afortunadamente JS ha cambiado mucho los últimos ~7 años, para mejor.

    Yo Angular lo dejaría de lado, es un framework que está guay para el lado corporativo porque es strongly opinionated (no sé ni cómo traducir esa mierda xD ), lo cual en la práctica significa que todos los proyectos de Angular son muy parecidos en estructura y diseño y por lo tanto los programadores son fácilmente sustituibles. Fuera del lado corporación, Angular está, por lo que veo a mi alrededor, entrando en desuso y la gente opta más no por frameworks sino por librerías como React o Vue.
  80. #82 Yo hice un curso de React a través de la empresa. Y supongo que voy a ir por eso. Pero vamos, no recuerdo absolutamente nada del curso y voy a empezar de 0. Ya que lo hice sin tener una base de JavaScript y me costó un poco seguirlo.

    En mi empresa creo que la mayoría de equipos están haciendo las UI en React. Hay algo en Angular por allí, pero creo que todo es React.
  81. #76 ¿Qué carencias tiene Python para que se creen zurullos enormes con este lenguaje de programación? Porque lo de cagar zurullos de proporciones épicas me parece que es más problema del programador que del lenguaje en sí.
  82. #75 Pues qué quieres que te diga, pero tu comentario tampoco es que sea la leche de preciso.

    Tampoco defiendo a capa y espada a Python, ojo, que yo pienso como tú que cada lenguaje tiene sus ventajas e inconvenientes, pero aquí en menéame se ha echado mierda sobre Python por cosas como decía antes. Y encima es que parece que si no usas C o Java es que eres un impuro y no deberías mencionar la palabra programación en la vida, cuando el contexto en el que se suele usar Python (machine learning) le da mil vueltas a los otros dos.
  83. #85 #75 bueno no se cual sera mejor, yo estoy contento usando Python/C++ en el curro y Godot/Unreal (que tmb usan python y c++ respectivamente) para mis proyectos. No creo que haya un lenguaje mejor para todo. Simplemente me siento comodo con esa combinacion.
  84. #66 Pero es que los detalles técnicos se pueden aprender después. Las personas aprenden mejor yendo de lo fácil a lo difícil. Nadie aprende la palabra "edificio" antes que "casa", y eso es así por algo.

    Que print escriba una línea lo hace mucho más fácil de usar desde el principio, y que se llame print en vez de printf, println o sys.stdout.write o similar, también.

    Respecto a lo que dices de filter, u otros elementos como map, lambda, los iterables, etc... Son elementos que un principiante normalmente no necesita, y se puede programar sin ello (excepto en ciertos dominios, como la ciencia de datos).

    Además, Python es bastante agnóstico respecto a los paradigmas de programación, por lo que sirve para aprender programación estructurada, funcional, orientada a objetos... Yo creo que eso tiene un valor en sí mismo, ya que te permite aprender los diversos paradigmas y enfoques sin perderte en temas de sintaxis.

    Otra ventaja que tiene a la hora de profundizar es la capacidad de introspección que tiene. Añade el tipado, que es flexible pero riguroso, y lo claro que es su sistema de errores y excepciones (nada que ver con JavaScript en ese aspecto).

    Y respecto a lo de que:
    En principio es un lenguaje orientado a escribir poco código
    Sí y no. Eso depende del programador. Lo que sí se intenta es que el código que se escriba sea significativo.

    En mi opinión Python tiene una curva de aprendizaje ideal, y puede ser la puerta a otros lenguajes en la medida que sea necesario. Por eso no es solo que piense que Python gusta a muchos programadores... Es que considero que la existencia de Python hace que más gente quiera programar y se atreva a ello.
  85. #6 Yo tengo muy claro que el 99% de los expertos en ciencia de datos con Python no son expertos en Python. Pero es que nadie les pide que lo sean. Y hay muchísimos usuarios que usan Python para otros dominios. En la medida en que sean más generales, desarrollarán un mayor conocimiento práctico del lenguaje y sus potencialidades.
  86. #22 creo que JS tiene ideas potentisimas en su base que no he visto en otros lenguajes, su acercamiento a la programación funcional me parece de los mejores que he visto

    ¿Podrías concretar un poco más a qué te refieres? Me sorprende mucho leer a alguien expresarse en esos términos sobre JavaScript.
  87. #87: Que print escriba una línea lo hace mucho más fácil de usar desde el principio, y que se llame print en vez de printf, println o sys.stdout.write o similar, también.

    Justo al revés, porque si quieres hacer un rectángulo de asteriscos (que es algo básico en C) ya tienes que andar metiendo excepciones, y todo porque esa función hace cosas que no la pides, salvo que la pidas que no lo haga. Precisamente la programación debería aprenderse con funciones que no hagan nada salvo que se lo pidas.

    Sí y no. Eso depende del programador. Lo que sí se intenta es que el código que se escriba sea significativo.

    En Python siempre se ha presumido de poner poco código, y en mi opinión eso es lo peor que puedes hacerle a un principiante, esconderle las cosas. En mi opinión no hay que esconder, sino no mostrar e introducir poco a poco. Ejemplo, el "n" de C, en vez de esconderlo, lo mejor es enseñarlo tras enseñar a poner Hola mundo o el resultado de alguna operación sencilla o el valor de una variable.

    Además, Python es bastante agnóstico respecto a los paradigmas de programación, por lo que sirve para aprender programación estructurada, funcional, orientada a objetos... Yo creo que eso tiene un valor en sí mismo, ya que te permite aprender los diversos paradigmas y enfoques sin perderte en temas de sintaxis.

    Lo cual en mi opinión es otro fallo, lo mejor es aprender con C lo básico y luego ya ir saltando poco a poco a los diferentes paradigmas, de uno en uno, no todos a la vez.
  88. #45 Para eso está mypy.
  89. #86 Es que ahí le has dado al clavo, no hay uno mejor que otro, solo hay un lenguaje mejor que otro para determinadas circunstancias (incluido la persona que vaya a desarrollar dentro de esas circunstancias)

    Mi especialidad son los sistemas empotrados (aunque ahora mismo estoy desarrollando una aplicación genérica para la interfaz con un robot quirúrgico en c++ y Qt) . Así que ahí poco margen de maniobra ahí, c, c++ y poco más y aunque en determinadas circunstancias lo que hacer en python sería trivial pues no lo puedes hacer porque en un sistema baremetal no hay tu tía porque no tiene sistema operativo, así que olvídate de meterle un intérprete de ningún tipo. (Con excepción de la máquina virtual de java embedded en algunos dispositivos que lo soportan) .


    Pero para el desarrollo de aplicaciones en general pues hay un mundo de posibilidades y cada uno se ajusta mejor a unas cosas u otras, pero también puede darse el caso de que aunque un lenguaje vaya en teoría un poco mejor que otro para un caso concreto... si tienes un equipo de expertos en otro lenguaje que aunque encaje un poquito peor (en teoría) en ese proyecto pues la elección sigue siendo obvia. Van a hacer un mejor trabajo con su lenguaje de confianza que con otro.

    Lo que no se puede hacer es obcecarse en ningún sentido.

    Quizá por estar metido en el mundo de los sistemas empotrados para mí sí es clara esa distinción entre lenguaje interpretado y compilado. Y aunque para @Supercinexin no le guste esa descripción ni la palabra scripting pues para mi es bastante claro. Cualquier lenguaje que no se pueda ejecutar (tras compilarse o no) en un sistema baremetal para mi es un lenguaje scripting porque no lo puedo meter en un sistema empotrado.
comentarios cerrados

menéame