Hace 3 años | Por --651134-- a theregister.com
Publicado hace 3 años por --651134-- a theregister.com

El 30 aniversario de Python esta semana encuentra al lenguaje de programación en la cima de su juego, pero no sin desafíos. "Creo que Python simplemente no tiene las prioridades correctas en estos días", dijo Armin Ronacher, director de ingeniería en la empresa de monitoreo de software Sentry y creador de Flask, el popular Python web app framework.

Pacman

#1 PyCharm te hace "algo" de control sobre eso, pero no es un compilador al uso
A mi no me importa (tampoco tengo programas con miles y miles de lineas), pero si que es un poco cansino a veces

La verdad es que me encanta ese lenguaje, es muy "nostalgico"

M

#1 me sumo, he hecho grandes proyectos con él con bastante éxito y mi amorodio es inmenso. lo de la identación es algo que me concome desde el primer día.
me encantaria un preprocesador o IDE con "beautylizer", es decir poder escribir delimitando con algún separador "a la c" y luego me lo pase a identado. Lo he intentado con macros/script de ultraedit y uff, NO.

D

Python es como el esperanto. Es atractivo para empezar y es muy fácil cogerle el truco. Pero cuando empiezas a indagar, a coger experiencia y a intentar hacer virguerías, te das cuenta que ofrece una complejidad inconmensurable.

Lo cual no es malo, claro.

p

#1 Puedes poder tipos, com algo parecido a Typescript.

marcumen

#6 no te digo ná y te lo digo tó

losuaves

#10 es que no es un lenguaje para realizar virguerías, sino para hacer unas tareas de forma rápida. Por ejemplo, análisis de datos.

D

#13 Con virguerías me refiero a concentrar en muy pocas líneas lo que en otros lenguajes llevaría muchas.

D

#13 Yo para eso uso R, aunque eso es otra M que viene de S.

box3d

#9 Para los más tradicionales tienes cosas como el IF/THEN/ELSE/ENDIF

box3d

#7 JO DER ! lol
Esta no me la sabía. Pero que crimen es esto!? lol lol lol

PauMarí

#5 coincido, al principio con lo del indentado pensé "bueno, no pasa nada" pero cuando empiezas a hacer bloques un poco largos es un coñazo, la verdad.
Cc #8

Pacman

#9 Yo tambien vengo de la old school y lo que peor llevo es que no haya CLS en el IDE

La anidación le da estructura, visualmente me gusta ya que puedes ver las funciones claramente

D

A cualquiera que trabaje en una oficina y su especialización/trabajo no tenga nada que ver con programar, os recomiendo aprenderlo de todas formas. Todas esas tareas que puede hacer un mono que tengais que hacer dia a dia repetitivamente, pueden ser programadas facilmente en Python y se aprende muy rapido. En vez de perder 2h todos los dias en esas tareas, invertid unas 10h en aprender lo basico de Python y otras 5h en programar un script que haga esas tareas, y echaos a dormir.

Si usais mucho Excel probad aprender algo de VBA para Excel si no, que es casi igual de facil.

PauMarí

#21 no siempre es evitable...
Ojo, sacrificando "eficiencia" seguramente siempre es viable pero en según que casos prefiero eficiencia, la verdad.

emilio.herrero

Yo comencé a programar en un ZX spectrum con Basic cuando tenía 8 años. Que tiempos aquellos del GoTo

z

#c-9" class="content-link" style="color: rgb(227, 86, 20)" data-toggle="popover" data-popover-type="comment" data-popover-url="/tooltip/comment/3466203/order/9">#9 Para mí sólo tiene sentido si es tu primer lenguaje de programación y no tienes muy claro muchos conceptos básicos. Pero es que usar bloques de código (se parados con llaves, corchetes, paréntesis o begin-end, if-fi) es algo realmente muy básico de aprender que incluyen la inmensa mayoría de los demás lenguajes de programación que son relevantes: c, c++, c#, php, shell script, java, javascript, basic, pascal, go, dash, rust, lisp, perl, lua, .... para mí tiene más inconvenientes que ventajas y es de lo que más me echa para atrás del lenguaje... aparte de que no me aporta mucho para mis necesidades, la verdad.

Z

#10 No es malo, o es un horror. Intenta mantener ese código condensado. Al mes ni tu mismo entiendes bien que significa.

#1 Pues a mí no me mola nada. es cierto que cuando lo conoces le coges el puntillo y para algunas apaños rápidos te vale pero a mí me parece totalmente esquizofrénico la mezcla de programación estructurada y orientada a objetos que tiene. Me cuesta horrores recordar si para saber la longitud de un string tengo que tratarlo como PE o como POO.

D

#24 tal vez ese método haga demasiadas cosas...

No hay algo parecido a Rubocop para Python? Llámame facha, pero cada vez estoy más en contra del libre albedrío en la programación lol

D

#24 humildemente creo que sí, otra cosa es que no tengas tiempo de refactorizar, sobre todo si trabajas sobre lo que otro ha hecho y tienes miedo de cargarte algo que ya funciona. Eso lo entiendo.

Noesis

Me encanta Python y lo uso en mi trabajo de backend para un propósito muy específico: Automatizar tareas tanto en entornos Unix como Windows.
Desarrollar los mismos scripts en Perl me llevaría más tiempo (no tengo una base del mismo) y desarrollar en KSH me entra cáncer de sida, aunque a veces no hay más remedio

PauMarí

#30 uso Python básicamente para tareas de administración de sistemas, en plan scripts para clasificar emails, pasear logs etz, no para aplicaciones "complejas", si tienes en cuenta eso quizá entenderás mi perspectiva.

box3d

#29 ADA te va a molar entonces. Es como tener a una dominatrix de compilador.
Pedir permiso hasta para mear convertir de entero corto a entero largo.

D

#33 Estoy con Swift a saco ahora, que es lo mejor que he visto en mi puta vida. Veo lo mejor de Ruby, C y JS en él, que son como mundos opuestos con grandes pros y contras. Swift tiene todos los pros y ninguna contra.

D

#32 ok, lo entiendo

PauMarí

#25 una de las primeras cosas que recuerdo cuando aprendía, explicarte lo que es un goto y seguidamente decirte que nunca nunca nunca lo uses.

l

#8 Python es muy recomendado como primer lenguaje y que te obligue a indentar evitar coger malas constumbres y te hace ordenador.
Salvo que tengas un Notepad que no te automatice los sangrados, no veo el problema.
#1 Esa es la filosofia de Rust, incluso las variables son inmutables y hay que hacerlas modificables explicitamente. Hay que esforzarse para cometer errores en lugar de esforzarse para evitarlos.

eldarel

Los que se quejan de identación, ¿es porque no han usado yaml?

D

No tengo ni idea de programar. ¿Es relativamente fácil aprender Python? Pregunto a los iniciados/pros. Thanks.

PauMarí

#39 si tienes conceptos previos de tipos y estructuras de datos sí (listas, vectores, arrays, etz), si no tienes ni eso igual con Python empiezas con algo "un poco demasiado".

D

#39 Yo tampoco tenía idea de programar y aproveché la pandemia para iniciarme, precisamente con Python.

Por desgracia me quedé bloqueado en el aprendizaje y me he desmotivado un poco. Creo que llegué al nivel que dice #23, pero sin trabajar en oficina, sino que lo hago en mi casa. Una gran satisfacción cuando te haces tu primer script más o menos complejo y ves que funciona.

#40 No sé, todo eso que no se tiene se puede puede ir buscando sobre la marcha en Internet. Eso sí, se hace tedioso y tiene que ser un hobby que te guste, sino mejor salir a pasear antes que aprender a programar.

c

#1 test qué?

llorencs

#40 Conceptos de listas, arrays te los encuentras en cualquier lenguaje. Yo creo que en Python es donde es más sencillo aprenderlos #39.

c

#6 clap clap clap clap clap clap clap

c

#7 El principio de mínima sorpresa en Python no saben lo que es... pobrecitos.

Azrapse

#36 El BASIC del ZX Spectrum no era estructurado, con lo que creo yo que no había forma alguna de programar nada mediano o grande sin usar el GOTO y el GOSUB obligatoriamente.

llorencs

#23 VBA es hateful a matar. Pero sí, si trabajas con Excel es una buena manera.

pip

#36 hay lenguajes que no pueden programarse sin GOTO, como el BASIC del Spectrum o el ensamblador. En C también en principio se dice que no hay que usarlo, pero es la manera más práctica e idomática de hacer cleanups en funciones.

Pero si que es cierto que en general en lenguajes que tienen alternativas, es una mala práctica, y sobre todo es una mala práctica si no tienes pleno conocimiento de cuál es la mejor opción en cada caso.

NubisMusic

#1 Pregunta de ignorante en el tema. Si con Python es más fácil programar, ¿por qué se usa entonces tantos lenguajes? Imagino que Python tendrá sus limitaciones, pero que una gran mayoría de programas se pueden crear perfectamente con este lenguaje. ¿Por qué no se ha creado aún un lenguaje que permita programar todo lo posible basándose en lenguajes existentes?

Perdón por ser aún un nulo en la materia. Poco a poco estoy aprendiendo y quería aprovechar para preguntar y seguir aprendiendo.

PauMarí

#43 explícale a alguien, qie parta de cero, la diferencia entre una lista y una tupla, por ejemplo, o que para hacer según qué en un dict a veces se hace con métodos (tipo oop) y ha veces con asignación directa... La verdad es que creo que eso lia, si se trata de aprender, que conste.
#39

j

#34 Apple.

Fuera de bromas, compañeros que trabajan con él dicen lo mismo.

pip

A mí me gusta Python, para hacer scripts y programas pequeños. Los programas muy grandes en Python ya no me gustan tanto.

D

#50 Iré mirando y a ver qué tal se me da. Pero empezaré con una introducción a la programación. Más que nada, para tener conceptos claros. Gracias #40 #41 #43 #50 (los que vengan después, si vienen).

llorencs

#50 Yo he enseñado Python a gente desde 0. Y lo he ido haciendo de manera estructurada y se entiende lo que son las listas y eso. Primero enseñas lo más básico y luego introduces listas, una vez que las entienden complicas la cosa con diccionarios. Luego de los diccionarios, metía POO.

Además, que lenguaje usarías para enseñar eso? Porque, cojamos VBA, por ejemplo, me parece aún más complejo para entenderlo, además que tienes los típicos problemas con los Array clásicos en los que tienes que saber el tamaño del array desde el inicio.

Creo que las listas y tuplas de Python son la mejor manera para introducir a alguien en el mundo de las estructuras de datos. Un diccionario de Python es bastante sencillo, comparado con cualquier equivalente de otro lenguaje, sea Java, C, VBA, Pascal, PHP o JavaScript.

Quizás PHP y JavaScript sean más o menos igual de sencillos. Pero, es que alguien que empieza desde 0, el concepto de las estructuras de datos siempre será algo más complejo.

NubisMusic

#55 Entiendo. Por eso lo suyo es especializarse, porque dominar todo lenguaje posible es poco práctico. Imagino que con cada nuevo curro/proyecto toca repasar o aprender un lenguaje en tiempo récord (a menos que estés en una empresa especializada en una área en concreto).

M

#7 Pues la primera respuesta explica claramente que no es un error de diseño.

llorencs

#52 Que es para ti un programa pequeño? Yo he hecho algunas cosillas medianas, de más de 1000 líneas de código y una biblioteca personalizada de más de 2000 líneas en total. La biblioteca es un solo módulo.

Y para ambas cosas me gusta y no lo veo tan mal. Hace años que no he tocado algo compilado, desde hace mucho que fue con Delphi/Pascal. Y no lo echo de menos, realmente.

navi2000

#26 no me aporta mucho para mis necesidades

eso es que no estás haciendo IA, ciencia de datos o similar, porque es que es eso o R (que si no te gusta python, entonces ni hablar de R)

llorencs

#33 Ada no me entró. Se parecía a Pascal pero con más restricciones. Buff, en la UIB te hacian la asignatura de introducción a la programación con ese lenguaje y era un infierno.

X

#49 No es sólo el lenguaje de programación, sino la "plataforma" que en idioma llano sería los recursos de programación disponibles para ese lenguaje, como runtimes, SDKs, librerías, herramientas, etc. Sencillamente no hay un martillo para todos los clavos, sino que depende del clavo.

navi2000

#25 yo a los 9 con Amstrad CPC 464.. que tiempos!!
GOTO 1988

X

Nunca terminó de gustarme Python. Primero prefería Perl, luego Ruby, y al final me quedé con JavaScript / Typescript.

e

#55 si quieres matematicas con mejor rendimiento que matlab/Octave que puedan correr en muchos entornos usa Python y sus librerías y IDEs(numpy,conda). Muchos ya se han pasado de Matlab a Python.

pip

#59 1000 LOC de Python es un programa pequeño. Tengo por aquí un proyecto sobre 50,000 LOC de Python y unos 500 ficheros .py. Eso es un programa grande.

box3d

#65 Luego nos llaman a los de bajo nivel (y a alguno de Java!) para que se ejecute todavía más rápido.

navi2000

#39 Sí, es el lenguaje (de verdad, no de etiquetas) más fácil de aprender. A la vez es un lenguaje que te va a dar unos fundamentos básicos sobre cómo se debe programar bien (bloques de código, estructuras, etc) y te ofrece un montón de librerías para que vayas al grano y no tengas que empezar desde el 0 más absoluto.

Yo trabajo en ciencia de datos con él y hacer lo mismo en C me costaba el doble de trabajo. Pero también lo uso para automatizar tareas de todo tipo y para programar pequeñas chorradas que necesito en un momento dado o para resolver problemas que me surgen y nada tienen que ver con mi trabajo. Para lo único que no lo uso es para la programación web porque estoy muy acostumbrado a PHP de mis anteriores trabajos y me sale muy rápido y natural. Pero también podrías hacerlo.

En mis 3 décadas programando y habiendo pasado por más de 10 lenguajes profesionalmente (desde ensamblador hasta Javascript) no recomendaría otro lenguaje para empezar a programar.

Windows95

#55 PHP: meterle fuego

M

#67 Lenguaje todoterreno es C++, sobre todo las nuevas versiones de C++11, C++14 y C++17, que abarca desde bajo nivel hasta alto nivel y que no solo vale para hardware y portabilidad, sino para Interfaces (vease Qt), bases de datos, graficos, pintar en pantalla y conectarse a internet...

llorencs

#66 Ok . Pues yo básicamente he hecho cosas pequeñas, y sí me es muy útil.

Si me dejan tiempo quiero pasarlo todo a web y eso sí que será más grande. Calculo que es posible que llegue a los 50.000 LOC, pero no tiene porque sería microservicios independientes.

box3d

#73 Uso C++11 y llamar portable a eso es columpiarse mucho. Es portable dentro del ecosistema GCC/Clang, que está muy bien y cubre casi todo.

Qt es lo mismo, con la particularidad de que tienes que compilarlo tu (con las putada que tiene) si te sales de x86/x64/Arm.

Portable de verdad sigue siendo solo C89, por desgracia.

M

#75 "Es portable dentro del ecosistema GCC/Clang, que está muy bien y cubre casi todo"
Y VC++ tambien para Windows...

Qt no tienes que compilarlo tu... hay paquetes ya compilados para x86/x64/ y ARM. Ademas con Qt puedes compilar una misma aplicacion para Windows, Linux, Mac, Android e iOS sin apenas cambiar nada de codigo....

gonas

#1 El mayor troleo que se ha producido en el mundo de la programación ha sido el JavaScript. La cantidad de horas perdidas y una generación entera de programadores que no saben otra cosa.

box3d

#76 No solo de Intel/ARM bajo Windows/Linux vive el hombre. En mi ramo, MIPS/PowerPC/HCS son comunes, al igual que compiladores que no son VC/GCC/Clang.

Lo que limita mucho cuántas moderneces podemos permitirnos. Qt (pagando) lo solemos tener a mano para muchas aplicaciones de interfaz.

D

No soy un loco de python pero python sin duda es un gran lenguaje

D

#1 en python puedes añadir tipado estático https://www.python.org/dev/peps/pep-0484/
Pero el problema real que tienes es de testing roll

M

#78 Bueno, pero eso es porque los propios fabricantes de las arquitecturas MIPS/PowerPC/HCS no han querido integrar el Standard ISO C++ 11, C++14 y C++17 en los compiladores para sus arquitecturas.

PauMarí

#54 yo es que empecé "a lo clásico", con Logo
La verdad es que se debería empezar con pseudocodigo pero entiendo que si no ves resultados palpables según que tipo de alumno enseguida perderá el interés

x

#24 Eficiencia en un interpretado? En lugar de hacer funciones?

Escúcheme, joven. En mis tiempos, sí un procedimiento tenía más de 50 líneas ya era largo.

x

#51 No conozco Swift, pero si Objective-C y bueno, que el modelo era el mismo que Smalltalk

D

#c-49" class="content-link" style="color: rgb(227, 86, 20)" data-toggle="popover" data-popover-type="comment" data-popover-url="/tooltip/comment/3466203/order/49">#49
Porque cada lenguaje tiene su nicho y cosas que se pueden hacer. Asi a grandes rasgos como te comentan mas abajo C# (VB.net parece ya nadie lo usa) es mas para aplicaciones windows y tal es muy robusto pero tambien se pueden hacer webs con asp.net si no me equivoco.
Luego tienes la "rama" de java que seria lo mismo pero software libre ("gratis"). Aunque hoy dia MS te deja gratis visual studio community y vs code permite programar en lo que te de la gana casi.

El que mucho abarca, poco aprieta y lo suyo es especializarse en algo.

D

#72

C:concon lol lol

Aun recuerdo cuando haciendo un net use de c:concon podia colgar los ordenadores de toda la red.

(mierda, las me las ha borrado meneame) sera que funcionan en güindos 95/98?

llorencs

#83 En mis tiempos, si una función tiene más de 30 líneas lo considero largo.

Hay alguna función escrita por mi en Python quen o he sido capaz de optimizarla y supera tu límite de 50, pero lo considero jodida.

Pero, para cosas sencillas, es posible que meterlo todo en un módulo sea aceptable y sea un código que entre dentro de ambas limitaciones (30-50 líneas).

D

#47 Completamente de acuerdo, odio VBA pero muchas veces es la manera mas facil y directa de trabajar con archivos Excel.

#67 Para mí, Python no es un lenguaje para casi todo sino para casi nada. Java sí que lo veo útil en casi todo menos en acceso al hardware.

PauMarí

#83 #87 en #32 explico para que uso Python. Llevo más de 30 años en esto y no uso un mismo lenguaje para todo, Python lo uso, básicamente, como reemplazo de Perl, por ejemplo para hacer un script que parsee un log y clasifique eventos. Una cosa así hacerlo con funciones es una pérdida de tiempo (y eficiencia), son scripts para un único uso o para una tarea concreta. Evidentemente si quiero guardar los eventos en una DB, por ejemplo, utilizo código reusable, el qual ya es oop o funcional, depende de cada caso.
No hacerlo así no tiene sentido en el entorno donde lo aplico.

J

#22 totalmente de acuerdo

J

#58 facilísimo.... Facilísimo.... Como que tampoco.

Más sencillo que otros, quizás. Pero de facilísimo nada.

Facilísimo sería un lenguaje de programación natural, en el que no haya que aprender syntaxis y de más.

J

#23 vba es seguramente el lenguaje más utilizado del mundo.

Pero le falta pedigrí

J

Que alegría ver comentarios como en el Menéame de aquellos tiempos.

m

#3: No te preocupes, se ejecuta tan despacio que tendrás tiempo para hacer eso mismo durante la ejecución.

m

#21: Ya, pero tampoco es cuestión de que el lenguaje de programación te diga cómo tienes que programar...

D

#96 todos lo hacen

Ed_Hunter

#c-73" class="content-link" style="color: rgb(227, 86, 20)" data-toggle="popover" data-popover-type="comment" data-popover-url="/tooltip/comment/3466203/order/73">#73 En mi opinión, cualquier lenguaje que se inspire en la sintaxis de C debe arder en el infierno por toda la eternidad. El código se escribe una vez y se lee muchas, por lo que debería primarse la lectura sobre la velocidad de escritura.

Los lenguajes C++, Objective-C, Java, Javascript, C# etc. no deberían haber existido jamás de los jamases.

m

#97: No, en C no te dicen que hagas los bloques de una forma o de otra. Si tienes que hacer 15 cosas en un bloque, las haces y listo, no te dices que compactes el código usando instrucciones hipercomplejas, que es el problema de Python, la manía de meter el código en muy pocas líneas pero de gran complejidad individual.

Por ejemplo, si vas a hacer un rectángulo en pantalla con asteriscos, lo natural es usar dos bucles anidados, no tratar de hacer todo con un único print y diversos trucos.

M

#98 No se que problema tienes en la sintaxis de C, se entiende perfectamente:

class A
;

Vamos... una complejidad de lectura increible...

1 2