Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Python

Iniciado por Dokko, 14 de Junio de 2007, 10:27:31 PM

« anterior - próximo »

Dokko

Hace años que me hablan bien de este lenguaje, lo he visto y lo he usado y me ha gustado, tengo una pregunta para los programadores senior:

¿Programarias con el?
¿que cosas?
¿Solo o complementado con c++?
¿Lo veis como equivalencia a Java, Vb y C#?


ethernet

solo puedo decir una cosa:

rocks

AgeR

Opino igual que ethy, Python rocks, para casi cualquier cosa.

Zaelsius

Yo lo veo como un complemento a los lenguajes "de producción" como C++ o Java, no un sustituto. De momento.

Python es muy útil para prototipado y desarrollo rápido de herramientas/utilidades. Tambien se usa a veces como lenguaje de script en la web o incluso en videojuegos.

Sin duda su punto fuerte es la cantidad de paquetes que existen para realizar tareas no triviales, como el manejo de ficheros gráficos, sonido, peticiones HTTP, parsing. Eso hace que sea perfecto para prototipar rápidamente pequeñas aplicaciones o funcionalidades, con pocas líneas de código.

lord_taran

Y como complemento a lo dicho por Vicente también tienes Jython, que supongo que servirá para programar en Python y obtener algo que ejecutar con la VM de Java
n saludo!
Lord Taran
Las Noyas de Taran

Mars Attacks

Durante unas jornadas informáticas de hace un par de años, un profesor estuvo dando unas charlas sobre el python embebido en C y viceversa. No recuerdo cómo se las apañaba para que cada cosilla supliera las carencias de otras cosillas.

En cualquier caso, antes que Java yo usaría Python.

Ruben

Hi,
por propia experiencia dire para lo que he visto que sirve python
- prototipar: se pueden hacer desarrollos muy rapidos, por lo que si no se tiene muy claro que es lo que se necesita, se puede hacer un prototipo que ayude a aclarar la situacion.

- scripts para sistemas: scripts para manejar bases de datos, ficheros, etc... muy efectivo y lo haces rapido y sin dolor.

- lenguaje de servicio entre una libreria y usuarios que no tienen porque tener unos conocimientos avanzados en programacion. Aqui creo que es donde tiene mas gracia. Por ejemplo, existe una libreria en C/C++ la cual tiene entre otros usuarios a gente no tan acostumbrada a la programacion con C/C++ (ya sabemos lo que implica, lentitud del desarrollo, mas fallos, ....). Con python puedes exportar la libreria a un modulo(es relativamente sencillo usando swig o algun generador de wrappers) y darselo a estos usuarios.

Ahora lo que he visto que no me convence de python:
- cuando necesitas control sobre lo que estas haciendo: quieras o no tienes una capa entre medias, que gestiona por ti mucha informacion y por lo general no esta claro como lo hace.
- documentacion pobre. cuando quieres hacer algo un poco mas avanzado siempre vas a acabar mirando el codigo fuente de python.
- lentitud. esta claro que no lo vas a usar para hacer un ray tracer muy optimizado... ^^U

Por lo general yo lo usuaria cuando necesitas hacer cosas sobre las que no te importa perder el control sobre ciertos aspectos, tienes recursos limitados y la aplicacion es ligera, necesitas prototipar o como capa entre una libreria en C/C++ y usuarios no muy familiarizados con estos lenguajes.

Un saludo,
Rubén

Kr0n

Pues no se si es que lo has usado poco, o sólo hablas de "vista" pero no estoy de acuerdo con ninguna de las cosas que comentas ;)

Cita de: "Ruben"Ahora lo que he visto que no me convence de python:
- cuando necesitas control sobre lo que estas haciendo: quieras o no tienes una capa entre medias, que gestiona por ti mucha informacion y por lo general no esta claro como lo hace.

No te sigo. Te refieres a que no puedes tocar registros directamente estilo ensamblador? Es decir, te refieres a que se trata de un lenguaje de muy alto nivel? Porque aparte de eso, no existe más capa intermedia ni "magic" de por medio, así que...

Cita de: "Ruben"
- documentacion pobre. cuando quieres hacer algo un poco mas avanzado siempre vas a acabar mirando el codigo fuente de python.

Llevo 4 años programando en Python y en la vida me ha pasado eso que comentas. De hecho, lo siento pero ni la documentación es pobre (ni mucho menos escasa) ni muchísimo menos hacer algo "avanzado" requiere mirar el código fuente de las librerías internas de Python.

Cita de: "Ruben"
- lentitud. esta claro que no lo vas a usar para hacer un ray tracer muy optimizado...

Obviamente, ni para programar un driver de una tarjeta gráfica. Cada lenguaje tiene su nicho, y no estoy descubriendo nada nuevo. Python es un lenguaje interpretado y dentro de esto, no es especialmente lento pero no por ello deja de ser interpretado.
- Por un stratos menos tenso -

Orgulloso limpiador de www.fregocles.com
visualizeus - favoritos sociales para imágenes

Ruben

Hi,
no te preocupes que yo te explico lo que he querido decir. :)

CitarNo te sigo. Te refieres a que no puedes tocar registros directamente estilo ensamblador? Es decir, te refieres a que se trata de un lenguaje de muy alto nivel? Porque aparte de eso, no existe más capa intermedia ni "magic" de por medio, así que...
Por ejemplo, y aunque tu ya lo sabes, y entre muchas otras cosas, hay un manejo de memoria automatico (y que no es un gc de perse).

La capa intermedia es la implementacion en C de Python:
Tu - Python - C - Maquina


CitarLlevo 4 años programando en Python y en la vida me ha pasado eso que comentas. De hecho, lo siento pero ni la documentación es pobre (ni mucho menos escasa) ni muchísimo menos hacer algo "avanzado" requiere mirar el código fuente de las librerías internas de Python.
Con algo avanzado queria decir algo que se pasa del conocimiento usual de python: como hacer extensiones o embeberlo en C, por ejemplo. Es decir, si quieres hacer una clase python en C y que se comporte como una secuencia irremediablemente vas a tener que ir al codigo fuente de python. Es más, en el manual de python te lo recomiendan (aunque mas que una recomendacion es un "mirate el codigo fuente porque aqui no te explicamos mas").

Tres ejemplos de documentacion pobre sacados del manual de python:
Citar
PyNumberMethods *tp_as_number;

XXX

PySequenceMethods *tp_as_sequence;

XXX

PyMappingMethods *tp_as_mapping;

XXX

¿XXX? ¿No deberia ir ahi la documentacion?


Citarstruct PyMethodDef* tp_methods
An optional pointer to a static NULL-terminated array of PyMethodDef structures, declaring regular methods of this type.
For each entry in the array, an entry is added to the type's dictionary (see tp_dict below) containing a method descriptor.

This field is not inherited by subtypes (methods are inherited through a different mechanism).
No son heredados por los subtipos pero si son heredados a traves de otro mecanismo. Muy bien y ¿cual es?

Citar10.8 Supporting the Iterator Protocol
Ese es el apartado 10.8. Si, solo un titulo. No hay mas.

CitarObviamente, ni para programar un driver de una tarjeta gráfica. Cada lenguaje tiene su nicho, y no estoy descubriendo nada nuevo. Python es un lenguaje interpretado y dentro de esto, no es especialmente lento pero no por ello deja de ser interpretado.
Para mi no es tan obvio. Si quieres hacer pruebas rapidas sobre una libreria (sea de lo que sea) una de las formas es hacerte un enlace a python con C y usar tu suite de tests de python o lo que quieras.  Es decir, que perfectamente se podria dar el caso de implementar un prototipo en python de algo que a priori necesitaria rapidez pero que en ese momento buscas otros objetivos, como tener claro que los resultados alcanzados son los correctos o el error de calculo es aceptable o lo que quieras :P , por ejemplo.

En fin, que solo estoy intentando dar una información objetiva de lo bueno y malo, basandome en mi experiencia, que seguro no es tan extensa ni tan profunda como la tuya. Tampoco tengo porque darte por menores de cuantos años llevo con python, si lo he visto, si lo he usado poco, si lo uso habitualmente en mi trabajo o cualquier otra historia. Simplemente, intento aportar mi granito de arena: que te sirve genial, que no estas de acuerdo y lo razonas, pues genial, que tienes otro tipo de actitud no constructiva  pues genial tambien  :D

Un saludo,
Ruben

Kr0n

Lo de la capa intermedia, lo siento, pero sigo sin estar de acuerdo. Eso para mi no es más que alto nivel.

Sobre el resto de cosas que mencionas, por lo que veo es todo relacionado con la interacción C con Python, así que quizás sería mas justo comentar que no son cosas negativas en general, sino en concreto en ese aspecto.

No todo Python se reduce a enlazarlo con C. Son dos puntos de vista distintos: tu hablas de él como una extensión útil para C con sus ventajas y sus pegas, y yo hace ya que lo vengo usando como lenguaje general para todo. Cada uno ha visto caras distintas del mismo lenguaje, por eso mi anterior post para matizar que, al menos dada mi experiencia personal con Python, tus objeciones no se aplicaban en un ámbito general como parecías dar a entender.
- Por un stratos menos tenso -

Orgulloso limpiador de www.fregocles.com
visualizeus - favoritos sociales para imágenes

Mars Attacks

Bueeeeno, quizá no puedas hacer un raytracer muy optimizado, pero ¿podrías hacer un raytracer bastante majo en 300 líneas de código en C?

http://www.morcy.org/?p=7

Dokko

Me ha sorprendido tanta gente defendiendolo, tendre que hacerle caso. Porque claro, yo conoci el Python por un amigo mio que curra en una empresa fuera de españa y que usan el python para la interface de un juego. Pero además de el, nadie más me habia hablado del Python, a no ser que fuera de la rama del Linux.

Parece que phyton deberia considerarse como algo interesante.

Xine

Python or die  :twisted:

esfumato

Alguien sabe como aprender a programar algo muy básico con python he mirado manuales gratuitos en internet, pero son algo complicados para alguien que no sabe programar y suelen ser siempre basados en cálculos matemáticos, del tipo hacer una calculadora o cosas así.

Yo lo que quiero, es hacer una modificación, del BLADE, un minijuego, así que si alguien sabe que necesitaría saber, para toquetear los parámetros o librerías que el juego usa, se lo agradecería.

Un saludo!






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.