¿Por qué tanta popularidad con Python? [cerrado]

54

Aparte de estar molesto con los espacios en blanco como sintaxis, no soy un enemigo, simplemente no me fascina la Python.

Aprecio la poesía de Perl y he programado hermosos servicios web en bash & korn y shebang gnuplot. Escribo documentos troffy no me importa REXX. No encontré tcl más útil hace años, pero ¿cuál es el gran olor de Python ? Veo listados de trabajo y muchos candidatos con esto como premio y trofeo en sus hojas de vida.


Supongo que en realidad, estoy tratando de venderme personalmente en esto, simplemente no puedo encontrar una razón.

Xepoch
fuente
81
Nunca entiendo por qué la gente se molesta por la sangría requerida de Python. Yo espero que usted iba a sangrar el código de todos modos, ¿verdad?
Greg Hewgill
10
@GregH, por supuesto, pero ¿será obligatoria mi sintaxis? Algo así como Makefiles?
Jé Queue
55
@Xepoch: Pero los Makefiles no solo requieren sangría, sino que requieren un tipo específico de sangría que generalmente no se puede distinguir del otro tipo. Si Makefiles necesitara una sangría de espacio en blanco en lugar de específicamente 0x09, probablemente no se opondría y probablemente usaría una sangría consistente en su ancho de sangría preferido. Esto es lo mismo que Python permite.
Greg Hewgill
31
Poesía de Perl? ¿Seriamente? Si ha tenido el honor de mantener el código Perl de otras personas, entendería por qué Perl ha caído en términos de popularidad.
grokus
66
@ Greg, estoy de acuerdo contigo. Lo dije antes y lo diré nuevamente, a quien se queje de la regla de sangrado de Python se le debe pedir que mantenga un código mal sangrado. Solo
digo

Respuestas:

61

Python es un lenguaje bien diseñado con una sintaxis razonablemente limpia, una biblioteca estándar integral, excelente documentación incluida y de terceros, implementación generalizada y la inmediatez de un lenguaje de estilo "scripting" (es decir, ningún paso de compilación explícito).

Greg Hewgill
fuente
36
Bien diseñado? ¿Alguna vez has notado que tienes una función global llamada len?
alternativa
65
¿Qué le pasa a Len? Tengo la impresión de que solo lees sobre python durante 5 minutos
Kugel
55
Personalmente, la estructura del lenguaje era tan simple de comprender que me dio una mejor comprensión de cómo los idiomas en general funcionan internamente. Son las cosas pequeñas. Las funciones de primera clase, la capacidad de importar solo las partes relevantes de un módulo externo al actual, enumerar las comprensiones, las tuplas, la inclusión de uno mismo como parámetro de método me ayudó a comprender la diferencia entre funciones y métodos (otros lenguajes se esconden detrás del azúcar). Me duele usar lenguajes como C # ahora porque sé intuitivamente que el código no me está enseñando cómo funciona internamente.
Evan Plaice
1
¿Cómo puede ser Python un lenguaje bien diseñado? Utiliza raro __double_underscore_names__, se mezcla alllowercasefunctionamescon mixed_underscorey mixedCamelCasenombres. Requiere un :al final de defo bucles. Se utiliza una gran cantidad de abreviatura extraño str, dict, islice. Parece que no hubo ninguna convención en absoluto. Es un caos puro. Peps, pips, zens ... es más como una religión de pitón que un lenguaje. Puede tener algunas características agradables, pero no explica por qué tanta gente está tan entusiasmada con eso. No hay nada especial en pyhon. Solo otro producto mal diseñado.
t3chb0t
1
¿Y qué demonios es def? ¿Por qué defino una función con ay defno con func? No hay otro lenguaje que no sea tan intuitivo como python.
t3chb0t
76

He encontrado que Python es el lenguaje de programación más natural en el que he escrito código. He codificado en muchos idiomas antes y después de Python, y en mayor o menor medida, tienes que luchar contra el lenguaje para haz que haga lo que quieras. Python reduce esta lucha masivamente. Eric S Raymond lo dijo mucho mejor que yo en Why Python?

Como punto relacionado, Python mantiene su limpieza incluso mientras evoluciona rápidamente. En la mayoría de los idiomas con los que he trabajado, la introducción de nuevas características de lenguaje introduce muchas arrugas. Pero con Python, incluso las principales características del lenguaje (los decoradores vienen a la mente) se agregan todo el tiempo, sin sentir como hacks feos.

revs Chinmay Kanchi
fuente
8
Vine aquí para decir básicamente esto. La sintaxis se siente tan natural, es casi como si estuvieras escribiendo pseudocódigo.
James Davies
2
Python es compacto: puede mantener todo su conjunto de características (y al menos un índice conceptual de sus bibliotecas) en su cabeza.
systemmpuntoout
2
@ Zoomzoom83 Mis pseudocódigos comienzan y terminan; no funciona en python :-(
mbq
1
@mbq Y mis pseudocódigos tienen llaves, pero esa es otra historia;)
Chris dice Reinstate Monica el
26

Espero que esto no suene demasiado cínico, pero IMO Python es tan popular por la misma razón que Java, C # y Objective-C. No porque haya algo espectacular sobre los idiomas en sí, sino porque cada uno tiene un patrocinador corporativo que puede generar mucha publicidad, mucha publicidad y muchas bibliotecas y soporte para su idioma preferido.

Mason Wheeler
fuente
66
C # es especial, tiene linq
Daniel Little
39
Python tiene una gran corporación detrás? (pregunta genuina)
Jé Queue
11
Sí, a eso me refería. Python era mucho menos "genial" antes de que Google comenzara a interesarse tanto por él.
Mason Wheeler
10
@Mason - pero seguramente, ¿debe haber alguna razón por la cual un cuerpo grande como Google lo haría "genial"?
Jas
77
¿Por qué la gente piensa que hay patrocinadores corporativos de Python? ¿Alguien ha notado el tamaño de pycon frente a las enormes convenciones Java / j2ee? Esta es una historia de David y Goliat de financiación corporativa.
rox0r
11

Mi experiencia es que las personas que encuentran verdadera alegría en la programación a menudo buscan un lenguaje que les quede mejor que lo que aprendieron en la escuela o la universidad. Básicamente, esto significa que se moverán del PHP / Visual Basic / C ++ / Java / C # predeterminado a algo más exótico (negocios / carrera) como Python, Ruby, Haskell e incluso Perl (debido a su enorme valor de hack y oscuridad).

No me malinterpreten, hay programadores muy experimentados de C # / VB.net que se enorgullecen y se alegran de su trabajo y código (los muchachos de StackOverflow son un muy buen ejemplo), pero no se convierten en programadores de Python solo porque eso es lo que te enseñaron en la escuela; Tiene que ser tu propia decisión.

Creo que Jeff Atwoord tenía una publicación de blog sobre esto, pero no puedo encontrarla. Si lo encuentro, actualizaré este comentario.

Ivo van der Wijk
fuente
1
Python fue el primer idioma que se enseñó en mi escuela durante 101 años.
Morgan Herlocker
Casi todos los idiomas tienen una razón para existir y son buenos al menos en algo. En mi opinión, esto solo dice "Me gusta porque a otros les gusta".
NtFreX
9

En comparación con Ruby, que es realmente genial y produce increíbles Code Golf-offs, Python tiene esta filosofía central de que "Debe haber una, y preferiblemente solo una, forma obvia de hacer [cosas]", es decir, la forma idiomática de Python. He encontrado que esto es una gran ventaja en comparación con Ruby.

Dan Rosenstark
fuente
44
... o en comparación con Perl con un número aparentemente infinito de formas?
Jé Queue
@Xepoch: en realidad, a menudo hay mucho menos que infinidad de formas buenas / correctas de hacer las cosas en Perl, y la mayoría de las personas con una pista podrán decirle fácilmente sin DEMASIADO desacuerdo cuál es el primer 1 (o como máximo 2) son. si no me crees, mira las preguntas de Perl en SO. Sí, algunas preguntas tienen 10 soluciones distintas. Pero la mayoría tiene una solución "más correcta para las circunstancias" claramente acordada.
DVK
@DVK, lo sé, pero mirándolo desde un objetivo de diseño.
Jé Queue
8

Comencé a amar Python por la misma razón que Eric S. Raymond describe: el acto de escribir programas en Python es conceptualmente muy similar a pensar en el acto de diseñar código en mi cabeza.

Aprender a ser un buen programador Python me hizo un mucho mejor programador de C #. Facilitó la comprensión de LINQ, por ejemplo. Es posible que nunca hubiera adoptado un tipo como Dictionary<string, Func<T>>, o yield returnme hubiera sentido cómodo usando , si no hubiera usado clases y generadores en Python. AOP es mucho más fácil de entender ahora que he usado decoradores Python. La lista continua.

Robert Rossney
fuente
6

En primer lugar, las pequeñas peculiaridades del lenguaje, como la sangría forzada en Python, importan poco si el lenguaje en sí es poderosamente expresivo y útil. Al principio también me rechazaron debido a eso, pero pronto aprendí a mirar más allá y ahora ni siquiera lo siento como un obstáculo, porque el lenguaje es mucho más fácil para mí. Es como sigilos en variables en Perl , es un capricho de lenguaje inofensivo y cualquiera que se sienta cómodo en el idioma no se sienta molesto por él.

Para entender las razones por las que tanta gente piensa que Python es genial, solo intenta aprender el idioma. Las razones son principalmente las mismas que Perl. Creo que me gusta la sintaxis en Python (por ejemplo, listas de comprensión, sintaxis OOP, etc.), pero eso es realmente subjetivo y su opinión puede diferir. Prefiero Python para proyectos más grandes, mientras sigo usando Perl para scripts más pequeños.

Y esa es la respuesta a tu pregunta. Compara Python con Perl, bash y tcl. Lo que pasa es que no es una comparación justa. Idiomas como bash fueron diseñados para escribir pequeños scripts para automatizar tareas comunes. Algunas personas piensan que Perl también se vuelve difícil de manejar si el código se hace lo suficientemente grande (Perl bien escrito no lo hace, pero el código bien escrito es difícil de encontrar en un proyecto grande). En mi humilde opinión, Python difiere de otros lenguajes de 'scripting' en que se adapta muy bien a proyectos grandes, así como a pequeños scripts únicos. Creo que Ruby también tiene esa misma calidad.

MAK
fuente
6

La filosofía de que el dictador benevolente debe hacer cumplir su idea de buen estilo [1], su idea de buena programación, su idea de cómo programar me frustra regularmente. No pienso como van Rossum. Sin embargo, su lenguaje resiste los intentos de expresar pensamientos ajenos a Van Rossum. Su pensamiento funciona muy bien para muchos (¿la mayoría?) Programadores. Pero parece que no encajo en su modelo de cómo programar.

Por eso creo que Perl es un idioma superior.

[1] Vea su blog sobre eliminación reduce.

Paul Nathan
fuente
¿puede explicar su razonamiento con el proceso de pensamiento? Le gustaría saber más.
Jé Queue
3
@Xepoch: un lenguaje de programación sirve como medio de expresión. Las expresiones idiomáticas y los estilos de pensamiento pueden expresarse en un continuo de pensamiento desde "ajustes" hasta "muy difíciles de ajustar". Por ejemplo, no pienso en términos de comprensión de listas. Son ajenos a cómo pienso sobre las soluciones de problemas. Pero la reducción de Common Lisp es algo que fluye sin dificultad significativa fuera de mi mente. Sin embargo, van Rossum evidentemente es lo contrario. Java requiere que todas las cosas estén en objetos. Por lo tanto, se vuelve muy difícil crear soluciones no orientadas a objetos en Java. Y así sucesivamente -
Paul Nathan
5

Creo que, hasta cierto punto, Python es el único lenguaje de programación que necesitará, a menos que quiera escribir un núcleo del sistema operativo. Es adecuado para el uso interactivo, hacks aleatorios, administración de sistemas, aplicaciones científicas, herramientas del sistema operativo, aplicaciones web, aplicaciones GUI, incrustaciones, etc., etc., es portátil, gratuito y ampliamente utilizado. Ningún otro lenguaje de programación realmente cubre todos esos campos en la práctica. Es una muy buena inversión estratégica para una persona y una empresa.

Peter Eisentraut
fuente
44
No dudo de Python aquí, pero creo que Perl se ajusta bastante bien a su descripción anterior, si no mejor.
Jé Queue
A Ruby también le va muy bien en esto.
ocodo
1
A partir de 2015, Python es el lenguaje de facto de propósito general de la informática científica. Todo lo demás es el material clásico de bajo nivel (C, C ++, FORTRAN), competitivo en algunos nichos (MATLAB, Mathematica, R, Julia, Lua), utilizado solo para bibliotecas e infraestructura (Java), herramientas de secuencias de comandos aleatorias (bash , Perl) o ... bueno ... ninguno de los anteriores.
Paul
5

Desde 2004, he usado Python para desarrollar:

  • GUI
  • Scripting escenas de trazado de rayos con enlaces de Python a C ++
  • Sistemas de construcción automatizados multiplataforma
  • Scripts de prueba
  • Herramientas de uso general para resolver sus problemas cotidianos.
  • Sitios web y aplicaciones web

En 2004, Python era el lenguaje elegido porque los scripts de Python son portátiles en Windows, Linux y Mac con muy pocas modificaciones.

Thierry Lam
fuente
44
Para citar un comentario de una respuesta diferente: "No dudo de Python aquí, pero creo que Perl se ajusta bastante bien a su descripción anterior, si no mejor".
DVK
4

Para mí, Python ha sido un querido amigo. Es un lenguaje de scripting y creación de prototipos decente. Las cosas clave que puedo pensar son:

  • Sintaxis limpia, muy simple y fácil de entender.
  • Multi-paradigma, ¿lo usa como lenguaje imperativo? Seguro. OOP? No hay problema. También tiene algunas características de lenguaje funcional ligero, por ejemplo, lambda, listas de comprensión, etc.
  • Para las necesidades informáticas básicas, tiene soporte nativo para las estructuras de datos esenciales, matriz, tupla, diccionario (matriz asociativa), conjunto, etc.
  • Otras características pueden hacer que un programador sea muy productivo, por ejemplo, mecanografía, reflexión, metaprogramación, decoradores, generadores, etc.
  • Rico soporte de biblioteca
grokus
fuente
lambda está roto en python.
Paul Nathan
@Paul No estaría de más dar un enlace para respaldar tu opinión.
Piotr Dobrogost
@Piotr: docs.python.org/reference/expressions.html#lambda No puede contener declaraciones. Eso viola la idea matemática de una función anónima.
Paul Nathan el
¿No significa eso que lambda está intacta?
rox0r
4

Es elegante y realmente fácil de aprender, y una vez que esté familiarizado con sus tipos básicos (especialmente las listas) su productividad no tendrá límite. Es perfecto para los algoritmos de creación de prototipos, o para escribirlos en un lenguaje similar a un pseudocódigo que eventualmente se puede colocar directamente en una máquina, y es realmente bueno como lenguaje de script para realizar trabajos repetitivos o realizar operaciones molestas en los archivos. Lo uso como un lenguaje adhesivo para hacer que los subprocesos se comuniquen entre sí: no es tan poderoso como bash para algunas tareas fáciles, pero es MUCHO más fácil si necesita hacer algo más que una sola línea de código.

Y luego no distingue entre funciones y subrutinas, ya sabes a qué me refiero.

Lorenzo Stella
fuente
3

Muchos amantes de Python que veo simplemente cambiaron de entorno C y quedaron impresionados con cosas como "Hello "+ "World"esta "Hello World". Entonces, diría que este es el primer lenguaje de secuencias de comandos que no reúne etiquetas esotéricas / específicas y, por lo tanto, se extiende entre las personas martirizadas como el fuego en un bosque seco. Y así, la moda creada ahora vive sola.

mbq
fuente
2

Volviendo a abordar la pregunta ahora que estoy un poco menos cansado:

Python es un lenguaje que he encontrado particularmente adecuado para tareas de programación científica, que es uno de los lugares donde su popularidad está creciendo con bastante fuerza. Algunas razones por las cuales:

  • El apoyo comunitario bastante sólido significa que hay algunas bibliotecas sólidas en su lugar, y Python funciona como un reemplazo decente para MATLAB y algunos de los otros idiomas populares en ese campo.
  • Se juega bien con C cuando haces velocidad de la necesidad, pero a menudo la velocidad no es realmente tan necesario, por lo que la naturaleza interpretada de Python no es tan grande de un acuerdo.
  • He descubierto que es un lenguaje bastante accesible sin una gran cantidad de lo que, para los extraños, se sienten como reglas de sintaxis extrañamente arbitrarias. Es bastante rápido traducir entre pseudocódigo y Python.
  • "Tómelo o déjelo OOP". Una gran cantidad de proyectos de programación científica no se benefician tanto de una extensa POO. Algunos lo hacen. Es bueno tener un lenguaje que pueda saltar entre los dos fácilmente.
  • Fuerte soporte multiplataforma. Especialmente porque con lo que trabajo rara vez involucra GUI, puedo confiar en poder enviar un programa Python a otra persona sin preocuparme de qué sistema operativo están ejecutando.

No es el final de todos los lenguajes de programación, pero es un lenguaje decente "Sí, probablemente tenga una herramienta para resolver cualquier problema que surja", lo que probablemente es la razón por la que goza de popularidad en este momento.

Fomite
fuente
Además de todos los demás elementos que enumeró, creo que uno de los elementos más importantes fue "Puedo confiar en poder enviar un programa Python a otra persona sin preocuparme por el sistema operativo que están ejecutando". Esto también es muy favorable cuando no quieres quedarte atascado con el tipo de sistema operativo.
Tarik
1

Python es un lenguaje muy 'webby' tanto en los marcos disponibles (Django, Zope, etc.) como en las bibliotecas fácilmente importables, que nuevamente cubren muchas funciones web.

Para los desarrolladores web que realizan el cambio desde solo un conjunto de habilidades HTML, CSS + JS (anecdóticamente una gran fuente de nuevos programadores en los últimos años), creo que esto lo convierte en una propuesta muy atractiva (ídem Ruby).

Además, Google no es Microsoft ...

Jon Hadley
fuente
Java no es MS, por lo que si su razonamiento es correcto, se mudarían a Java, no a Python. Debe haber una razón diferente.
rox0r
0

Creo que una de las razones principales es que el 90% de Google está hecho de Python.

Sin embargo, Python también es un lenguaje de programación potente y fácil de aprender. Tiene estructuras de datos eficientes de alto nivel y un enfoque simple pero efectivo para la programación orientada a objetos. La elegante sintaxis y la escritura dinámica de Python, junto con su naturaleza interpretada, lo convierten en un lenguaje ideal para la creación de scripts y el desarrollo rápido de aplicaciones en muchas áreas en la mayoría de las plataformas.

El intérprete de Python y la extensa biblioteca estándar están disponibles gratuitamente en formato fuente o binario para todas las plataformas principales del sitio web de Python, http://www.python.org/ , y pueden distribuirse libremente. El mismo sitio también contiene distribuciones y punteros a muchos módulos, programas y herramientas de Python gratuitos de terceros, y documentación adicional.

El intérprete de Python se amplía fácilmente con nuevas funciones y tipos de datos implementados en C o C ++ (u otros lenguajes invocables desde C). Python también es adecuado como lenguaje de extensión para aplicaciones personalizables.

sombrero negro
fuente