197 meneos
1486 clics
Guido van Rossum abandona la dirección de Python [ENG]
[Directamente de su correo a la lista de desarrolladores]: "Me gustaría retirarme por completo del proceso de decisión. Voy a todavía estar allí por un tiempo como un desarrollador del core más, y seguiré estando disponible para guiar a la gente. Pero me estoy dando unas vacaciones permanentes como dictador benevolente. No voy a nombre un sucesor. ¿qué vais a hacer? ¿crear una dictadura? ¿democracia? ¿anarquía? ¿federación?"
|
comentarios cerrados
el 95% de fulanos que se hacen llamar programadores jamás ha programado nada ,sino solo son albañiles que ensamblan ladrillos fabricados por otros. Y a veces, ni los pegan bien y se cae la pared.
Te compenso.
Programming Perl, published by O'Reilly Media, features a picture of a dromedary camel on the cover and is commonly called the "Camel Book". This image of a camel has become an unofficial symbol of Perl as well as a general hacker emblem, appearing on T-shirts and other clothing items.
en.wikipedia.org/wiki/Perl#Camel_symbol
Nos sentimos honrados con tu presencia, porque supongo que tu eres un "programador de los de verdad" y no solo te dedicas a mencionar tecnologias porque sí
Por cierto, sí, Python se puede (y se usa) tambien para hacer cosas serias: herramientas de administracion, aplicaciones de escritorio (pyqt), aplicaciones web (django/flask/...), microservicios (asyncio/tornado), soporte de extracciones de big data y deep learning (hadoop+pyspark,...), customizaciones de aplicaciones/plugins,...
Pero supongo que el "programador de verdad" es unicamente el que sabe C++ (que por cierto, te sorprenderia la cantidad de desarrolladores que hay que usan Python+C++). Me equivoco?
En mi opinion, realmente se deben ver como dos lenguajes distintos. Especialmente con la aparición de asyncio hay diferencias lo suficientemente grandes como para así considerarlos,ya que no existen compatibilidades hacia atrás.
Afortunadamente, Python 2 esta cayendo en desuso, por lo menos yo lo he notado así especialmente en este último año.
Una de las cosas que estoy usando ahora , Medusa, esta en python 2 , y me lo estoy pasando teta intentando traducirlo a 3
Fdo - un tipo que come gracias a python :^)
Si hay cambios importantes de la 2 a la 3. Incluso que hacen que sean incompatibles entre ellas, pero el código se puede migrar relativamente fácil.
Y?
Me estas queriendo decir que esos lenguajes tan molones y tan potentes son tan jodidamente complicados de usar que al final tiene que venir un lenguaje sencillote como python para que la gente pueda usar esos bindings???
Que si, que C, assembler y demas estan muy bien (y tienen usos brutales y fantasticos), pero para el 80% de lo que hace la gente, lenguajes de MUY alto nivel funcionan perfectamente, otra cosa son los sistemas empotrados y demas cosas.
Ejemplo equivalente: Java+JNI o en el caso de Android Java+NDK (que para el caso es lo mismo). Las partes en las que requieres mayor eficiencia las haces en lenguaje compilado y el resto en lenguajes de mas alto nivel. Es la parte de bajo nivel la mas importante? No, necesariamente.
Ejemplo más claro usando Java como referencia: hadoop (big data en general), Cassandra, kafka,... estan escritos en lenguaje de mucho más alto nivel y funcionan perfectamente.
Otro ejemplo: para una empresa muchas veces la parte más importante va a ser la lógica de negocio. Lo que interesa es poder adaptarte rápidamente a las necesidades, por eso las empresas de nueva creacion (start-ups,...) prefieren el uso de lenguajes que agilicen el desarrollo (PHP, Python, NodeJS,...).
Python nace con la finalidad de poder interaccionar directamente con codigo nativo (ej: hecho en C/C++), lo que conlleva a grandes condicionantes en su diseño. En el caso de la implementación estándar de Python (CPython) a utilizar técnicas de interbloqueo (GIL) que merman la eficiencia multithread/multicore radicalmente.
Cada lenguaje es para lo que es, es un error prejuzgar. Al final quieras o no todo se sustenta en lo más bajo sobre codigo nativo (ej: maquina virtual de Java o .NET estan hechas en C++), sin embargo lo que mantiene tu negocio a flote suele ser la parte de negocio. Ej: github se puede decir que vive de "git" como base, el negocio de github es todos los servicios añadidos que brindan al rededor de ese gestor de versiones (y eso es alto nivel).
wiki.python.org/moin/GlobalInterpreterLock
- Lenguajes de bajo nivel son jodidos pero difíciles, e imprescindibles para hacer librerías. Muy poco prácticos para hacer interfaces de usuario o programas sencillos como dices que hacen el 80% de la gente.
- Lenguajes de alto nivel son fáciles de usar e imprescindibles para que un programador sea productivo, pero al final dependen totalmente de liberías escritas en bajo nivel.
Una comparación es absurda, se complementan y necesitan. Como el Yin y el Yang, como el hombre y la mujer
No siquiera, se hacen cosas complejas con Usted, PHP o Python (microservicios, lógica de negocio...) Porque el código queda mejor estructurado y más legible, y hoy en día la falta de rendimiento se puede suplir de muchas maneras (colas, caches, cqrs para tener diferentes modelos de lectura y escritura...).
Evidentemente cada lenguaje tiene su nicho de mercado. Yo cambiaría la frase de #7 por algo más del estilo de:
"el 95% de fulanos que se hacen llamar programadores no saben porque se utilizan diferentes lenguajes y son incapaces de optar por uno u otro en función de sus necesidades"
Te doy positivo por el "megacalzador para soltar la mía" que te has marcao.
Con dos par de huevos o huevas!
Ay cómo están los trolls.
Es posible hacer threads pero tienen sus limitaciones (debido al GIL tan solo es posible aprovechar al maximo combinandolo con programación asincrona):
docs.python.org/3/library/threading.html
Tambien es posible utilizar el paradigma de programacion asíncrona (asyncio), que tan de moda se han puesto en la última decada (ej: NodeJS). Ver uvloop para implementación más optima:
github.com/MagicStack/uvloop
Es posible usar threadpools y processpool executors:
docs.python.org/3/library/concurrent.futures.html
Cuando estás usando tornado por ejemplo para hacer servicios, es posible hasta hacer microservicios con soporte multicore + asincronos.
www.programcreek.com/python/example/91351/tornado.process.fork_process
Tienes que entender un lenguaje, su diseño interno y tener experiencia con el mismo antes de hablar.
Un saludo.
P.D. antes no escribí ninguna tontería pero tú prejuzgaste muy rápido.
Créeme, hay proyectos "muy tochos" hechos con Python. Mirate Tornado, de Facebook y preguntate porque una empresa de ese nivel iba a crear un framework completo de programación asincrona en Python. Youtube, Dropbox,... hasta los crawlers de Google (en este caso si lo usan solo como lenguaje de apoyo).
No hay lenguaje mejor ni peor. Hay lenguajes más adaptados a unas problemáticas que otras. Python es muy polivalente y combina bien con casi cualquier otro lenguaje.
Sobre el tipado del lenguaje, es como hablar de la formalidad e integridad de las bases de datos relacionales vs las NOSQL. Las primeras son sin duda alguna a nivel de arquutectura mucho mas complejas y brindan muchas características interesantes (integridad, atomicidad, transaccionalidad,...), pero para una gran inmensidad de proyectos se está demostrando que no necesitas todo eso y te basta con algo "más simple" (aunque hay algunas NOSQL que de simple por dentro no tienen nada ).
Hace años yo tambien veia Python como un juguete (piensas: se aprende en 3 horas, tabulaciones en vez de llaves?,...). Luego descubres que le pasa como a C++, tardas años en dominar bien ambos y entender todas las bondades.