Hace 3 años | Por Enmanuel_Hobson... a genbeta.com
Publicado hace 3 años por Enmanuel_Hobson_Abreu a genbeta.com

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

Comentarios

D

#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.

m

#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.

D

#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.

m

#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.

#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).

s

#10 uff... tanta verdad (a medias ) y tanta imprecisión en un solo comentario...

¿Qué hace cython exactamente?

g

#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.

s

#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 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.

g

#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.

s

#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.

D

#10 los que comparten tu opinion son los que luego crean zurullos de considerable enjundia que los tocas y se desmoronan y que posiblemente ni funcionen o funcionan de pura chiripa.

El pobre diablo que llega despues a ese codigo para mantenerlo se quiere suicidar porque la 'sintaxis sencilla' viene con una serie de problemillas que a no ser que seas alguien super disciplinado a la hora de implementar te explotaran en la cara tarde o temprano, a ti o al que venga detras tuya.

#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í.

D

#84 Carencias:
- Definicion explicita de variables (intentan arreglarlo con linters)
- Compilacion o checkeo estatico de tipos (intentan arreglarlo con la chapuza de los 'type hints')

itineratur

#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.

losuaves

#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.

D

#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.

s

#13 eso mismo iba a decir yo, con C puedes tratar con direcciones de memoria y punteros, es más bajo nivel que Python

sotanez

#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.

s

#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.

D

#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).

s

#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.

D

#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

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".

s

#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.

D

#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.

S

#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.

celyo

#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.

Tannhauser

#6 Por eso los programadores de C++ somos los auténticos dioses.

D

#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.

#1 84% como lenguaje principal, 14% restante como secundario.

harapo

#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. "

D

#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.

HackErViejo

#2 Y el 2% que falta, como terciario

M

#1 como lenguaje principal. Tu puedes ser desarrollador en Python y JavaScript por ejemplo, y que tu lenguaje principal sea JavaScript

M

#15 stackoverflow o YouTube están hechos en Python....

D

#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.

RubiaDereBote

#24 Eso es completamente mentira.

cc: #26

D

#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...

M

#38 quería decir openstack, perdón

s

#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ú.

D

#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.

s

#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:

http://preserve.mactech.com/articles/mactech/Vol.15/15.09/ScriptingLanguages/index.html
http://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.

D

#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

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.

D

#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.

llorencs

#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.

D

#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 lol ), 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.

llorencs

#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.

t

#33 Lo de Windows le vs a dar un chungo a algunos que tanto usan Stackoverflow

M

#33 open stack, se me fue la olla!

Shinu

#24 He dicho que yo no lo haría, no que otros no deban hacerlo...

t

#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.

D

#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.

D

#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.

D

#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.

D

#31 Yo te recomendaria mirarte Javafx de java, porque me da a mi que tienes una visión algo obsoleta de cuando se usaba awt o swing. Y no te culpo de no conocerlo. Hay una cantidad ingente de programadores Java que su vision de GUI es Swing, porque no saben que existen otras cosas.

D

#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.

llorencs

#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.

par

#67 Es que la versatilidad de Python es tremenda. Es muy practico.

D

#59 Si yo no estoy criticando python, he programado en python y no tengo nada malo que decir de el. Yo el unico problema que tuve (imagino que a muchos les habra pasado igual) es que tuve que pasar por una curva de aprenedizaje (muy pequeña) de adaptacion a su sintaxis. Pero ya esta. SOlo te mencionaba lo de fx por si no lo habias tenido en cuenta. No he probado QT asique no puedo compararlos. Solo te puedo decir que javafx tiene cosas muy interesantes de las que antes carecía Java. Por no hablar de que javafx facilita la exportacion de la aplicacion a aplicaciones moviles y webs. No sé si este será el caso de Qt. ¿Qt te da esa versatilidad? Otra cosas que me gustan, por ejemplo los componentes webview y webengine, el generador de graficos incorporado, todas las nuevas utilidades en java8 (java.time, expresiones lambda, etc), nuevos objetos que facilitan la sincronizacion entre la GUI y los procesos, etc.

par

#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.

D

#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ó lol).

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 lol

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Ú"

par

#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.

D

#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

llorencs

#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.

jmasinmas

Chachi, el 80% de los vegetarianos votan que comen verdura

Ahora en serio, afortunados de trabajar del idioma que estudiaron

Powertrip

#3 ¿idioma?

inar

#25 Parece una traducción literal de (programming) language. Una jugada del cerebro. A mí me ha pasado alguna vez.

jmasinmas

#25 #27 sí, me lo tengo que mirar, tantas horas programando y que en euskera haya solo 1 palabra para idioma y lenguaje también jajajaja

D

#34 if (MUNDO_REAL) print("kaixo!")

D

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.

D

#45 Para eso está mypy.

Joice

Publirreportaje ®

G

La verdad: a mí todo esto me importa un pyton..-

l

Recomiendo Ruby sobre Python siempre, a pesar de que creo que Python es un gran lenguaje.

J

Python, el nuevo Basic

h

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 lol

M

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.

t

#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.

D

Será que me hago viejo, y seguro que volveré a decirlo en futuras noticias, pero "yopino deque" hay demasiados lenguajes y sobretodo demasiados FWKs.

Es cierto que hay que ir actualizando las herramientas, pero es absurdo sacar clones cada dos por tres para, ya no hacer lo mismo, si no para tener que hacer mucho más para conseguir lo mismo.

1) Antes para hacer un listado de una tabla (o más con joins) se hacía con una select y usando MVC lo pasabas a la View y lo pintabas. Simple y rápido.

2) Ahora se crean la ostia de objetos mapeando una fila en concreto y los valores que vienen de la join con otras tablas, resulta que són un array de objetos de esa tabla con un id concreto (una fila también vaya), por lo que para mostrar un listado, en lugar de recorrer un array y pintar, resulta que tienes un array de objetos con subobjetos, que para colmo ejecutan una consulta SQL cada vez que accedes a uno de ellos. Vale que las máquinas ahora son la ostia, pero en serio podemos llegar a complicar tanto algo tan sencillo?

;

//cualquier otro punto de vista será respondido y agradecido

D

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 lol 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.

RubiaDereBote

#19 Leyéndote me da la sensación que no te vendría mal repetir la asignatura.

t

#29 O que el profesor no le explicó bien las cosas.

RubiaDereBote

#30 Sí, puede ser, pero independientemente de la razón, le vendría bien repetir la asignatura.

s

#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.

D

#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.