2009-09-21 18 views
25

Quería saber¿Qué tipo de aplicaciones se crean utilizando Python?

Python es adecuado para qué tipo de aplicaciones?

Soy nuevo en el mundo de Python pero sé que es un lenguaje de scripting como Perl pero no estaba seguro del tipo de aplicaciones que uno construiría usando Python y ciertamente apreciaría si alguien puede proporcionar información útil.

+0

@Stackoverflow Lectores: Gracias a todos por proporcionar pro mpt responde a mi consulta. – Rachel

Respuesta

32

Es difícil pensar en tipos de generales aplicaciones que Python no sería adecuada, pero hay varios tipos, donde, al igual que casi todos los lenguajes de alto nivel afín, es decir, que podría ser considerado una opción peculiar y probablemente inferiores .

En aplicaciones "duras en tiempo real", todas las asignaciones y liberaciones dinámicas de memoria, y especialmente recolección de basura, son comprensiblemente mal vistas; esto descarta casi todos los lenguajes modernos (incluyendo Python, pero también Java, C#, etc, etc.), ya que casi todos ellos confían en el manejo dinámico de la memoria y la recolección de basura de algún tipo.

Si está programando para un "dispositivo integrado" que espera ser producido y vendido en grandes cantidades, cada bit de ROM puede agregar mensurablemente a los costos generales, por lo que desea un lenguaje centrado en exprimir la aplicación hasta el último bit posible: cualquier lenguaje que dependa de un entorno de tiempo de ejecución enriquecido o sistema operativo (incluyendo Python, y, nuevamente, también Java, C#, etc.) lo obligaría a gastar más en muchos más bits de ROM (tenga en cuenta los lenguajes de interpretación con subprocesos como el antiguo Forth: pueden hacer que el código de una aplicación sustancial sea sensiblemente más compacto que el código de máquina directo).

Hay muchos otros nichos que comparten restricciones similares (mayormente enfocados en MEMORIA: concéntrese en usar la menor cantidad de bits posible y/o limitar estrictamente la ejecución dentro de límites predefinidos - sin dinamismo, sin asignación, sin recolección de basura, etc. , etc.), y básicamente el caso volvería a inclinarse de manera similar (por ejemplo, hay aplicaciones de servidor, destinadas a ejecutarse en innumerables servidores, que pueden ahorrar muchos megabytes por servidor si están codificados en C++ [especialmente si no hay "supuestamente- smart "punteros ;-)] en lugar de Java, Python, C#, y así sucesivamente).

Por supuesto que hay excelentes razones para que la mayoría de los lenguajes modernos (Python, Java, C#, etc.) elijan asignación dinámica de memoria, recolección de basura, etc., a pesar de la importancia de los nichos de aplicación donde esas técnicas son negativas: Básicamente, si puede permitirse un buen manejo de la memoria, escribir aplicaciones se convierte en MUCHA, MUCHO más fácil, y toda una clase de problemas y fallas conectadas con la necesidad de administrar la memoria cuidadosamente si le falta dicho soporte puede desaparecer, la productividad del programador realmente aumenta ... si la recolección de basura y similares pueden ser permitidas en absoluto, eso es. Por ejemplo, si una aplicación fuera a ejecutarse en algunos cientos o miles de servidores, probablemente no me molestaría en codificarla en C++ con la administración manual de la memoria para ahorrar memoria; es solo en decenas y cientos de miles de servidores, que la economía de todos esos megabytes adicionales realmente entra en juego.

Tenga en cuenta que, a pesar de la idea errónea de que los "lenguajes interpretados" (aquellos con un tiempo de ejecución subyacente o VM, como Java, C#, Python, etc.) "son lentos", de hecho para la mayoría de las aplicaciones intensivas en CPU (como computación científica), Python es perfectamente adecuado, siempre que el "entorno de tiempo de ejecución enriquecido" (por ejemplo, numpy) se tenga en cuenta Entonces, eso no es realmente un factor, aunque el consumo de memoria y la recolección de basura PUEDE ser, en algunos nichos.

+1

+ upvote - buena explicación –

+0

@meder gracias, su resumen de ejemplos de "más" también fue agradable (me centré en los ejemplos "menos" porque son muy específico y es más fácil explicar qué hace que los lenguajes como Python, Java o C# sean inadecuados para esos nichos específicos ... ¡sobre todo problemas de administración de memoria! -) –

+0

Tiene sentido. Mi propia regla empírica es no usar Python en los casos en que ya estoy preocupado acerca de si seré capaz de hacerlo correr lo suficientemente rápido en C o C++. En mi caso, es el trabajo de DSP en tiempo real donde evito Python. – Nosredna

21

Resumen:

  • aplicaciones web (Django, los pilones)
  • Juegos (EVE Online - MMORPG)
  • desarrollo de software (Trac para Project Management)
  • base de datos orientada a objetos (ZODB/Durus)
  • Programación de la cadena (Bittorent)
  • aplicaciones móviles

Y mucho más ...

+0

Gran respuesta. Me alegra saber esto. – duffymo

+1

Trac no es un software de escritorio. –

+0

Django y Pylons son frameworks web. ¿No? – Eimantas

0

Es lenguaje de programación informática, y como tal, cualquier programa de ordenador teóricamente podría construirse con él. Ver here for an example

10

Usted dice:

Soy nuevo en el mundo de Python, pero sé que es un lenguaje de programación.

Creo que la distinción entre "lenguajes de scripting" y "lenguajes de programación" es bastante arbitraria. Casi todos los lenguajes desarrollados en los últimos 10-20 años tienen algún tipo de soporte en tiempo de ejecución, generalmente en la forma de un intérprete de códigos de bytes o una máquina virtual. Python no es diferente: se compila en bytecode y el bytecode es ejecutado por el tiempo de ejecución de Python. El punto es que diría que hay muy pocas cosas que puede hacer en Java, C#, Ruby, etc., que no pudo hacer en Python.

Dicho esto, sin embargo, los diferentes idiomas tienen diferentes puntos fuertes. Entonces, ciertamente hay algunos tipos de programas que serían más adecuados para ser escritos en Python. Realmente depende de lo que quiere que el lenguaje de programación haga por usted y lo que quiere hacer usted mismo. La respuesta correcta depende de los tipos de problemas que le interesan resolver.

+1

+1 por intentar disipar el mito de que los lenguajes de "scripting" son de alguna manera diferentes o inferiores a otros lenguajes de programación. He estado peleando con este por más de 15 años. :) –

+0

+1 "Lenguaje dinámico" es una mejor categoría para describir Python. –

+0

@Todd: Tiene razón en que el "lenguaje dinámico" es una mejor manera de describir Python. Sin embargo, la distinción entre estática y dinámica es completamente ortogonal al concepto de "lenguaje de scripting". Da la casualidad que la mayoría de los lenguajes de shell son dinámicos, y las personas tienden a escribir scripts en shell o en lenguajes tipo caparazón, pero eso realmente no tiene nada que ver con * per se *. Como mencioné, dependiendo de cómo lo mires, Java podría considerarse un lenguaje de "scripting" (porque es un bytecode interpretado) pero ciertamente * no * es un lenguaje dinámico (su gramática está muy tipada estáticamente). –

1

Bueno, la respuesta corta es que, como mencionas a Perl, cualquier cosa que pudieras construir en Perl podrías construir en Python. Puedes construir cualquier cosa en cualquier idioma, y ​​si el lenguaje tiene enlaces C fáciles, incluso podrías hacerlo de manera eficiente.

Ahora, siendo este el caso, la pregunta se vuelve algo filosófica. Python tiene como principio clave "Solo debe haber una forma de hacerlo". Perl es exactamente lo opuesto. El principio clave de Perl es "Hay más de una forma de hacerlo" (TIMTOWTDI) o (Tim Toady, para sus amigos;)) ¿Cómo te gusta hacer las cosas? ¿Un camino claro y brillante, acordado por la mayoría? ¿O tal vez valoras el número casi infinito de rutas de solución que cualquier tarea tiene en Perl?

Por lo tanto, suponiendo que su tarea está ligada a E/S (como la mayoría de las cosas) en lugar de a CPU (programación en tiempo real o juegos, o crunching de niples), entonces Python sería adecuado. Si su filosofía se adapta a , es la pregunta clave.

1

La mayoría de los paquetes en 3D en la actualidad, como Maya, SoftImage, Houdini, RealFlow, Blender, etc., todos usan Python como un lenguaje de scripting incorporado y de complementos.

5

Sé que es un poco tarde, pero si ayuda.

Civilization IV 
OpenStack 
Bazaar 
Mercurial 
Blender 3D 
TwistedMatrix 
Trac 
Allura (source project for SourceForge.net) 
BitTorrent(<5.3) 
Gwibber 
Ubuntu Software Center 
YUM 
OpenERP 
journyx 

Tenga en cuenta que he evitado a toda la raza de obras Web-marco, entornos de desarrollo (IDE Eric Python, XnView, PIDA -ide, Wing IDE, Python Editor de Stani y herramientas (Pygame, PyGTK, wxPython , pitón mod, IPython) y servicios web (youtube.com, reddit.com, quora.com, dropbox.com)

0

http://en.wikipedia.org/wiki/List_of_Python_software seguir el enlace y podrás ver un montón de cosas. en realidad, yo también estoy dispuesto a aprender Python es por eso que he estado buscando respuestas como tú y tengo este enlace. Buena suerte amigo.

+0

Tenga en cuenta que [respuestas solo de enlace] (http: //meta.stackoverflow.com/tags/link-only-answers/info) se desaconsejan, SO las respuestas deben ser el punto final de una búsqueda de una solución (frente a otra escala más de referencias, que tienden a quedar obsoletas en el tiempo). Considere agregar una sinopsis independiente aquí, manteniendo el enlace como referencia. – kleopatra

Cuestiones relacionadas