Hace 3 años | Por Mr.Bug a genbeta.com
Publicado hace 3 años por Mr.Bug a genbeta.com

Python es utilizado en una gran variedad de ámbitos, desde el desarrollo web a devops, pero ha sido el aumento de su uso aplicado en machine learning y data science, lo que ha acelerado el crecimiento de Python. Y su creciente interés por la mayoría de programadores que están introduciéndose en estas disciplinas. Tal como mencionaba Stackoverflow en su informe, no sólo está creciendo Python sino también muchos temas relacionados con él. Así nos encontramos con el aumento del uso de framework web como Django y Flask o Pandas, NumPy y matplotlib.

Comentarios

maxmalkav

#9 yo tengo pendiente estos días mirar el anotado de tipos de Python 3 para ver cómo mejora el tema que comentas. No me hace mucha falta aún porque trabajo en programa pequeños, pero me interesa el tema.

c

#12 suelo usar typing en todos mis proyectos, tengo que decir que no es una solucion muy buena. Funciona como un linter, no en tiempo de ejecucion, a veces se hace un poco de lio, se nota que es un parche y no una decision de diseno dentro del propio lenguaje.

squanchy

#25 El sangrado depende en parte del editor que utilices. Los editores de Microsoft (Visual Studio, VS Code) te hacen el sangrado automáticamente. Y es posiblemente puedas desactivarlo y modificarlo. P.e., puedes elegir entre estos dos estilos:

funcion ()

funcion ()

D

x.- se están volviendo mas vagos

p

#1 Muy cierto, los hombres de verdad programamos en binario o si tenemos que entregarlo para ayer en ensamblador.

CoolCase

#8 yo solo en binario a mi en ensamblador me parece muy de alto nivel, no me deja llegar al fondo del sistema.

Ed_Hunter

#15 Bueno, mis primeros truños de programación, tanto con el Sinclair Basic, Locomotive BASIC o Microsoft BASIC (MSX, C64, IBM PC), que yo recuerde, PRINT siempre funcionó así. Incluso diría que en Turbo Pascal también. Me parece que el primero que utilicé que no era así era C.

m

#16: Pues mal, por eso C y C++ gustan tanto.

D

#17 #16 Doy fe

m

#28: Pues lo dicho, es un inconveniente del lenguaje de programación de cara a ser un primer lenguaje.

Para empezar a programar conviene tener el punto justo de abstracciones, sino, mejor usar Logo con la tortuga, que al menos es maja.

l

A mi si me parece un primer lenguaje magnifico y cuando le preguntas a cualquiera, no duda, "aprende python"
"Python es lenguaje que menos te aleja de la tarea que quieres hacer".
El sangrado obligatorio impide que cojas malas costumbres desde el principio.
Te ayuda a introducirte en conceptos como clases, funcional o generadores.

Además hay muchas libreria para hacer lo que quieres o hacerlo mas simple.
Hay quien piensa que para aprender a montar en bici es mejor atarte los pies y soltarte cuesta abajo y quien prefiere las bicis sin pedales que te permiten ayudarte con los pies y soltarte con la seguridad de que en cualquier momento puedes poner los pies.

m

En mi opinión es un lenguaje muy orientado a escribir código breve, pero poco a la claridad del código.

Por ejemplo, te añade saltos de línea porque le da la gana en la salida por consola, si no quieres, tienes que especificar que no quieres. Normalmente vas a querer dichos saltos de línea, pero... ¿y si no quieres? Ya tienes que especificar el comportamiento, esto ahorra código, pero añade una complejidad que el resto de lenguajes no tienen. Yo al menos prefiero un lenguaje que aunque haya que escribir más código, tengas todo más claro, que no haya actividades ocultas o crípticas.

En este último sentido (actividades crípticas) pondría de ejemplo a las expresiones regulares, cuyo uso consiste básicamente en entrar a StackOverflow, encontrar la que necesitas, y copiarla descaradamente. Su ventaja es que son unos pocos caracteres, pero son un problema si quieres meterlas mano.

Últimamente la programación se está orientado a eso, a códigos muy breves, cuatro líneas, pero que si quieres saber lo que hacen te obligan a trabajar más que si fuera un código más largo y estructurado.

Yo directamente si puedo evitar Python, lo evito.

m

#2: Por añadir un poco más:
Python es un fenomenal primer lenguaje, como si es tu segundo, tercero o enésimo lenguaje.

¿Fenomenal como primer lenguaje? Pues no, un lenguaje de programación debe enseñar que el ordenador no hace nada que no le digamos antes, si el print te añade un salto de línea sin pedírselo, se rompe la idea esa, que es muy importante cuando se empieza.

Su curva de aprendizaje es menos áspera que otros, dispone de miles de librerías que permiten en unas pocas líneas de código hacer lo que nos propongamos.

Si estás aprendiendo a programar, es mejor escribir más líneas, hacer las cosas poco a poco y entendiendo bien lo que se hace, no tratando de resumir todo en una única línea de código, ya habrá tiempo para eso. No se si alguno se piensa que la gente nace con un CI de 180 o qué, o si es que pretenden que la programación quede reducido a los cerebritos.

Tampoco es lo mismo recomendar un lenguaje a alguien que está empezando a programar como a otro programador con una dilatada experiencia en varios lenguajes de programación.

Es que si estás aprendiendo la situación es muy diferente a si llevas programando toda la vida. O sea, lo que no puedes es pretender condensar todo en una línea de código y luego pretender que la gente no se pierda en la explicación de esa línea única. A mi personalmente es un lenguaje que no me gusta en su forma de funcionar, quizás para programar de forma intensiva esté bien, pero para hacerlo de forma más casual es un horror, yo al menos como dije antes, si puedo evitarlo, lo evito, prefiero incluso LISP, al menos con los paréntesis puedes montar una estructura de código bien, cosa que el Python no puedes porque tienes que organizar tu código e indentarlo como le guste al creador del lenguaje, no como me gusta a mi.

maxmalkav

#3 no había visto tu segundo comentario, te veo muy obsesionado con los idioms de Python, que como comentaba antes no son ni siquiera obligatorios.

Como primer lenguaje para aprender algoritmia (que no estructura de computadores), en mi opinión Python está bastante bien, te permite centrarte en el flujo de ejecución sin tener que preocuparte tanto de cosas como el tipado. Si ignoras los idioms, tienes algo bastante parecido a escribir pseudocódigo en inglés.

Mi primer lenguaje fue C, y también he enseñado programación en la universidad (Introducción a la Programación de primer año en varias ingenierías industriales, en su mayoría gente sin conocimientos de programación previo), mi experiencia es que los alumnos perdían constantemente de vista el tema del flujo de ejecución por los detalles de sintaxis y de control a bajo nivel que hay que tener en cuenta en C (el ';', la fiesta de los punteros, el tipo void, vectores y saber donde acaban, pasar por referenca/pasar por copia, ...). Muchos de estos detalles están bien si quieres aprender y/o profundizar en estructura de computadores, pero como comenté, no tan bien si el foco es la algoritmia.

En una de las ingenierías se cambió a Matlab (decisión discutible en ciertos aspectos, pero un lenguaje más parecido al pseudocódigo), vimos que los alumnos asimilaban mejor los conceptos básicos de programación estructurada al estar liberados de tener que tener en mente todos los detalles de C.

squanchy

#11 Pues yo creo que para una ingeniería es infinitamente más útil C que python. Si necesitas hacer un microcontrolador, estarás limitado en memoria y en velocidad del microprocesador, y necesitas optimizar el código. Eso C te lo permite. Python, no.

maxmalkav

#23 sí, C probablemente les sea bastante útil en su futura vida profesional (no me atrevería a decir "infinitamente" en los tiempos que corren), pero yo hablo de comenzar con la programación, de cómo construir ese conocimiento desde las bases hasta llegar a la herramienta y contexto especializado.

Como docente me interesa más (o interesaba, ya no estoy en docencia) que los alumnos tengan claro los conceptos de condicionales, bucles, etc, básicamente algoritmia. Partiendo de esa base puedes profundizar en asignaturas posteriores en la programación de microcontroladores o cualquier otra especialidad, porque una cuatrimestral de introducción a la programación da para lo que da y se supone es una base para las posteriores especializaciones.

En el contexto de comenzar a programar, prefería (yo y por supuesto el departamento) que los alumnos supiesen plantear la estructura de un programa a que se supiesen al dedillo las peculiaridades de C. Que el alumno me pase por parámetro una estructura de punteros a funciones en C me parece estupendo, pero no tanto me plante un par de "gotos" en el código por que no sepa plantear un flujo de ejecución medianamente complejo (que el goto, usar se usa en ciertos contextos, pero tienes que saber qué estás haciendo).

ytuqdizes

#2 expresiones regulares, cuyo uso consiste básicamente en entrar a StackOverflow, encontrar la que necesitas, y copiarla descaradamente

jajaja mis diez. como se suele decir si tienes un problema, e intentas solucionarlo con expresiones regulares, pasas a tener dos problemas.

Sobre Python, yo lo uso para scripts de cierta complejidad en los Linux donde tengo Oracle, más que nada porque el Bash lo veo aún más dificil de leer que Python...

D

#7 Joder cuando os leo me siento gilipollas por haberme molestado en aprender algo de ellas. No soy un experto, ni mucho menos, pero para la mayoria de las cosas me defiendo lol

Cuando tengo problemas es cuando se usan de las ¿perl? que si que varian en algunas cosas. Pero creo que eso mas que programando me ha pasado usando binarios de linux o unix que usaban ese tipo de expresiones.

ytuqdizes

#19 cualquier conocimiento adquirido es bueno. Además, ¡alguien tiene que saber de expresiones regulares para poder contestar nuestras preguntas en StackOverFlow! lol

maxmalkav

#19 que no te engañen, las expresiones regulares molan. Aunque no las uses habitualmente, aprenderlas te ha servidor para aprender un "mini lenguaje", ponerte a pensar con unas reglas y limitaciones concretas. Eso siempre es bien

Me choca que haya gente que abogue por C por "estar más cerca de la máquina" y luego se queje de la complejidad de las expresiones regulares, cuando son un concepto que constituye uno de los bloques sobre los que se construye ... la informática en sí misma. Sin una buena compresión y estudio de expresiones regulares, gramáticas etc, íbamos a tener compiladores buenos buenos, por poner un ejemplo super básico .

D

#31 A mi me han ayudado muchisimo por ejemplo al hacer parsers de protocolos. No veas lo tedioso que era hacer un tratamiento de cadenas para interpretar y recomponer sin ellas (estaba empezando y no las conocía, soy autodidacta).

maxmalkav

#32 además es que le dan al asunto robustez y fiabilidad a poco que escribas (y entiendas) bien la expresión regular. Yo me fio más del código que se encarga de aplicar una expresión regular que del código equivalente que escriba yo para sustituirla (y que es reinventar la rueda, pero peor y menos redonda).

A mí me sirven bastante las webs que te permiten escribir y probar expresiones regulares, incluso eligiendo el "dialecto" de expresión regular que quieres (sí es un poco rollo que hay un par de familias y convenciones con respecto a la sintaxis).

Cantro

#2 Ahora entiendo los problemas que tiene Ansible con los saltos de línea

m

#14: Sí, es que para que el print no te haga un salto de línea, tienes que especificar que no lo quieres. Ya digo que detalles como ese lo hacen poco adecuado como primer lenguaje de programación, porque tienen que transmitir que el ordenador solo hace lo que le dices y punto.

squanchy

#2 Pasa mucho en javascript. Unos chorizos de funciones unas dentro de otras, muchas de ellas expresiones lambda, a veces sin ni siquiera saltos de línea. Tienes que tener el ojo entrenado para entender lo que hace a la primera. Le añades el tipado automático y ámbito de las variables, y es una bomba. Cuando es un programa que has hecho tú, no hay problema, pero cuando es un proyecto grande con una docena de personas tocando, la cosa cambia.

m

#21: Y si el programador anterior no indenta bien... eso es un aspecto positivo de Phyton, pero que es un problema al mismo tiempo, porque también te quita la libertad de poder organizar el código de otra forma que prefieras.

Claudio_7777

La suite 3D open source Blender lo usa internamente y creo que le hace un cuello de botella tremebundo a nivel de rendimiento. Al usar ciertos add-ons es donde más se puede notar pero también con funciones internas del programa tal como viene (modifiers por ejemplo). También el engine de juegos Godot usa una especie de Python que está fetén para programar pero puede ser lento a nivel de resultados. No soy experto en desarrollo ni de coña y lo mismo me estoy equivocando. Si alguien entiende un poco que me lo confirme o lo desmienta.

m

#5: Sí, es lento como una serpiente, Logo es aún más lento.

Los lenguajes compilados como C++ siempre son más rápidos que los interpretados.

ruinanamas

A mi me da tanta pereza aprender algo para que luego se quede obsoleto, que para una vez que no uso python lleva ya un golpe de años cada vez con mas fuerza.

squanchy

#18 A veces la fiesta dura menos de una década y luego se queda ahí renqueando en muchos proyectos, esperando que un cambio de tecnología le dé el golpe de gracia. En mi empresa por fin han conseguido deshacerse de ASP.NET

demostenes

Mi primer contacto con Python fue una libreria para enviar SMS que estaba escrita en 2.x y por aquel entonces (hace 10 años) salió Python 3. con lo que daba múltiples errores. Veo que la situación de dualidad 2.x/3.x sigue aún. Python no es un lenguaje: son dos lenguajes con el mismo nombre.

Orgfff

Odio a Python.