2010-03-19 10 views
8

Soy un programador aficionado (solo en TI-Basic antes de ahora), y después de mucho, mucho, mucho debatir conmigo mismo, he decidido aprender Python. No tengo mucho tiempo libre para enseñarme un centenar de idiomas y toda la programación que hago será para uso personal o para distribuir a las personas que los necesitan, así que decidí que necesitaba un lenguaje bueno y fuerte para ser bueno en . Mis preguntas:Python para un programador aficionado (unas pocas preguntas)

  1. ¿Es python lo suficientemente potente como para manejar la mayoría de las cosas que un programador típico podría hacer en su tiempo de inactividad? Tengo en mente cosas como generadores de estadísticas complejos basados ​​en la entrada del usuario para juegos de mesa, hacer juegos pequeños, automatizar procesos de instalación y crear sitios web interactivos, pero probablemente cientos de cosas en esas líneas

  2. ¿Python maneja las tareas de red bastante bien? ?

  3. ¿Puede ser ofuscada la fuente python, o será de código abierto por naturaleza? La razón por la que pregunto esto es porque si hago algo genial y lo distribuyo, no quiero que un idiota script kiddie edite su propio nombre y diga que lo escribió

  4. Y que tan popular es python, en comparación con otros idiomas. Idealmente, mi lenguaje sería bueno y útil con ayuda encontrada en línea sin dificultad extrema, pero no tan común como para que cada idiota con computadora conozca a Python. Me gusta la idea de conocer un lenguaje un tanto oscuro.

Gracias un ton para cualquier ayuda que pueda proporcionar.

+2

Se ajusta perfectamente a sus necesidades, excepto el n. ° 3. –

+4

y si haces algo súper increíble, está garantizado que se decompilará sin importar el idioma en que esté ... –

+7

Re # 3: no puedes detener esto. Nada impedirá que un Doof reclame la autoría de un binario ofuscado, tampoco. Solo dale una buena licencia a tu trabajo y ponlo ahí y las masas lo apreciarán. ¡No dejes que los doof te impidan compartir! – mwcz

Respuesta

14

¿Es python lo suficientemente potente como para manejar más cosas?

Sí. Período. Estudie el juego EveOnline para obtener más información. Mira pygame framework. Libre de usar Google para encontrar más.

¿Python maneja las tareas de red bastante bien?

Sí. Mire la cantidad de frameworks web de Python más el Twisted framework. Siéntase libre de usar Google para buscar redes de Python.

¿Puede ser ofuscada la fuente python?

No útil. Esto no es C.

¿Y qué tan popular es python, en comparación con otros idiomas?

Mire el TIOBE index.

+4

¿No puede ser ofuscado? ¡Mira este servidor de chat http://paste.pocoo.org/show/94512/ (escrito por http://stackoverflow.com/users/10999/)! (La pregunta, por supuesto, sobre tratar de ocultar el código fuente para evitar que una aplicación sea robada mostró una falta de conocimiento sobre lo que impide que el código sea tomado injustamente en cualquier idioma.) –

6

Creo que Python es muy poderoso para hacer muchas cosas, pero al igual que Java y C++, a menudo depende de buenas librerías de terceros. Vengo de un entorno Java pero uso Python para muchas cosas, y ha sido un viaje divertido. He hecho cosas como estadísticas y automatización, pero no estoy seguro acerca de la IU, aunque a menudo depende más del conjunto de herramientas que del lenguaje.

La red de Python funciona bien. No sé si lo usaría para construir un sistema de comercio algorítmico rápido o una aplicación VOIP, pero para la mayoría de los intentos, especialmente en niveles más altos de abstracción, es fácil y fácil de usar. Necesitaría bibliotecas externas para cosas como SSH o FTP.

Python es bastante popular y tiene un buen soporte en línea, una comunidad activa y grandes corporaciones (como Google) que lo utilizan. Encontré el tutorial en línea oficial y la referencia excelente.

Tengo que decir que no estoy de acuerdo con la línea "cada idiota con una computadora". Hay una diferencia entre conocer un idioma y usarlo correctamente, y eso es cierto en todos los idiomas, incluso en los naturales :) Python tiene muchos elementos funcionales que no son tan triviales de usar para las personas que provienen de un entorno de procedimientos, por lo que siempre hay espacio para el crecimiento.

El único problema con Python en comparación con lenguajes como C y Java es que no está tipado estáticamente. Esto hace que sea mucho más rápido para escribir código, pero también lo hace * mucho más fácil) para cometer errores que pueden ser bastante desagradables de depurar. Por ejemplo, la misma variable puede contener una referencia de cadena en algún punto y una referencia a una lista de cadenas en algún otro punto.

+0

+1 por defender Python por "no idiota" "programadores. Como amante de Haskell (que se ajusta a los criterios de Matt para un lenguaje un tanto oscuro), todavía voy a Python con frecuencia para muchas tareas; de ninguna manera está "debajo" de nadie. –

2
  1. Probablemente sí. Tal vez el problema de la estadística sea un poco lento, y tal vez un juego dependiendo de qué tipo de juego, pero en general el rendimiento es lo suficientemente bueno, y se ahorrará mucho tiempo en la programación real. Si REALMENTE necesita rendimiento, puede crear un módulo en C, pero generalmente hay una biblioteca escrita para hacer lo que desea ...

  2. No lo he usado, pero hay un marco llamado Twisted que parece ser bastante bueno.

  3. No. Bytecode se puede descompilar fácilmente, y solo funciona en una versión específica de Python, por lo que su código no es tan portátil.

  4. Python es bastante popular, y el Python Package Index tiene una gran lista de bibliotecas de terceros. No está tan extendido como, por ejemplo, Java, pero mucha gente lo usa y probablemente puedas obtener respuestas para lo que quieres.

+0

Python tiene bibliotecas como SciPy y NumPy para cualquier función crítica, numérica, estadística, etc. A falta de procesamiento de imágenes (que se maneja razonablemente bien por PIL (Biblioteca de imágenes de Python)) o cosas de gráficos intensos, no puedo pensar en nada. He tenido problemas de rendimiento con el uso de Python. –

+1

CPython bytecode se decompila con bastante facilidad, a menudo en un código bastante agradable y legible (si el código fue para comenzar). También tiene varias limitaciones, incluida la limitación de ejecutar en una versión de Python y no trabajar con implementaciones alternativas de Python. Lo que lo protege de que alguien use su código injustamente es la ley y el hecho de que la mayoría de las personas no son idiotas. –

+0

Gracias por la entrada, he modificado la respuesta. No es que importe mucho en esta etapa. – Javier

4
  1. Absolutamente.
  2. ¿Qué tipo de red? Tiene socket, http, xml, smtp/pop, telnet y mucho más integrado.
  3. La ofuscación de Python no será tan buena como un lenguaje compilado. Por lo general, eso no es un problema.
  4. Es el 9th most popular tag on stackoverflow, por lo que hay mucha ayuda disponible.
3

Es pitón lo suficientemente potente como para manejar la mayoría de las cosas que un programador típico podría hacer en su tiempo libre? Tengo en mente cosas como generadores de estadísticas complejos basados ​​en la entrada del usuario para juegos de mesa, hacer juegos pequeños, automatizar procesos de instalación y crear sitios web interactivos, pero probablemente un centenar de cosas en esas líneas

Definitivamente. Python es una buena herramienta para todos los que no sean la automatización de los procesos de instalación, donde podría ser la herramienta adecuada, pero es más probable que la herramienta correcta se decida por lo que específicamente está automatizando.

¿Python maneja las tareas de red bastante bien?

Sí. Deberá consultar el número Twisted.

¿Puede ser ofuscada la fuente python, o será de código abierto por naturaleza? La razón por la que pregunto esto es porque si hago algo interesante y lo distribuyo, no quiero que un idiota script kiddie edite su propio nombre y diga que lo escribió

"Código abierto" hace referencia a la licencia de su código, no la visibilidad de su código fuente. Ocultar el código fuente de Python no es especialmente posible, y los resultados de descompilar el bytecode de Python resultarán en un código mucho más legible que las herramientas equivalentes en lenguajes como C. ¡No se preocupe por esto! No puede evitar que las personas roben su automóvil o su computadora si están dispuestos a infringir la ley, y usted no puede hacer lo mismo con su código en ningún idioma.

Y qué tan popular es python, en comparación con otros idiomas. Idealmente, mi lenguaje sería bueno y útil con ayuda encontrada en línea sin dificultad extrema, pero no tan común como para que cada idiota con computadora conozca a Python. Me gusta la idea de conocer un lenguaje un tanto oscuro.

Esta es una pregunta sin respuesta. Google le dará muchos resultados contradictorios con diferentes métricas, la mayoría de ellas útiles. También estás siendo un poco tonto;)


En cuanto a los materiales de aprendizaje van, recomiendo How to Think Like a Computer Scientist, que es un buen texto que no presume ningún conocimiento de programación existente. Está disponible de forma gratuita en línea, o puede comprar una copia impresa si lo prefiere. (No se moleste en aprender 3.x todavía. No hay suficiente soporte de biblioteca para hacer muchas cosas útiles como lo que quiere hacer, y cuando lo recoja será fácil, no es muy diferente de 2.5/6/7 .)

+0

Oh, retorcido NO es un buen lugar para comenzar. Es una herramienta fantástica para el trabajo en red, pero un poco emocionante para un aficionado. Infierno. Es un poco emocionante para los profesionales. Comience con los módulos de red más sencillos en las bibliotecas estándar. Cuando urllib y urllib2 comienzan a sentirse incómodos, descargue httplib2, que realmente se adapta a http, para usos más complejos. – jcdyer

+0

@jcd, Twisted puede de hecho tomarse un esfuerzo para hacer clic. Sin embargo, al ver los primeros intentos de muchas personas en sus propias aplicaciones de red en Python, creo que vale la pena. –

0

Puntos 1 y 2: HELL YEAH.

Punto 4: tipo de. Python es bueno en algunas cosas de la red. No es Java o C++. Simplemente use zlib (biblioteca zip) y pickle (serialización) para todo, y mire xmlrpclib si necesita IPC.

Punto 3: No. Sin embargo, puede escribir los módulos C (para el rendimiento crítico y difíciles de copiar) de su código, y eso haría que no fuera trivial realizar una ingeniería inversa.

0

Python es hasta la tarea (y mejor) para 1, 2 y 4.

La mejor solución para el 3 de lo que usted describe, probablemente sería para hacer sus programas realmente de código abierto con licencia GPL o BSD como licencia. De esta forma, la gente editará tus fuentes geniales (pero a menudo serán programadores experimentados, no solo script kiddies) y continuará luego, pero deja tu nombre para la posteridad.

Cuestiones relacionadas