[pyar] [Consulta]Programación: constante

Adrian Roldan roldanadrian en gmail.com
Lun Mar 5 18:12:53 ART 2012


El 5 de marzo de 2012 13:43, fisa <fisadev en gmail.com> escribió:

> El día 5 de marzo de 2012 06:44, Angel Java Lopez
> <ajlopez2000 en gmail.com> escribió:
> > Hola gente!
> >
> > Vayamos al uso en el dia a dia.
> >
> > Yo distingo dos casos: constantes definidas por otros, y constantes
> > definidas por el programador que esta construyendo algo.
> >
> > El primer caso me parece el mas frecuente. Como comentaron en este
> thread,
> > el caso clasico es pi. En Java, esta un Math.PI, es mas, el valor que
> tiene
> > que devolver esta sujeto a una especificacion de Java, y hasta esta
> definido
> > que tiene que devolver Math.sin(x) y demas, para que una implementacion
> de
> > Java se considere una implementacion correcta de Java.
> >
> > El de constantes definidas por el programador/equipo, tiene dos
> vertientes.
> > La primera, es para mi, mas rara: definir constantes como PI, con un
> valor
> > que importa en la ejecucion. A no ser que uno comience un paquete
> matematico
> > con nuevas constantes, o alguna libreria con strings magicos, puestos
> como
> > constantes, no lo vi usado mucho ultimamente.
> >
> > Otro uso de constantes por el programador/equipo, es mas corriente. Es
> > simplemente para recordar algunas cosas mejor, tipo en una maquina de
> estado
> > recordar los estados de algo de mejor forma:
> >
> > PENDING = 0
> > OPENED = 1
> > CLOSED = 2
> > ....
> >
> > Ahora bien, todo el codigo se escribe SIN IMPORTAR que luego eso valores
> se
> > cambien. El programa sigue funcionando si luego alguien pone:
> >
> > PENDING = 1
> > OPENED = 2
> > CLOSED = 3
> > ....
> >
> > (por supuesto, estamos hablando de un programa en memoria, donde no se
> hayan
> > serializado/deserializado esos valores en otro lado, disco, base de
> datos,
> > etc...)
> >
> > O en juego de tablero, recordar los colores de los jugadores:
> >
> > WHITE = 0
> > BLACK = 1
> >
> > Eso, desde hace unas decadas, se resuelve en otros lenguajes, con enums.
> O
> > en Ruby, Smalltalk, con simbolos.
> >
> > Hay enum en Python? Y simbolos?
> >
> > Nos leemos!
> >
> > Angel "Java" Lopez
> > http://www.ajlopez.com
> > http://twitter.com/ajlopez
> >
> >
>
> Entiendo los dos casos de uso, pero fijate que en ningún punto de
> ellos el hecho de que estos valores definidos sean imposibles de
> modificar es mandatorio. Esos casos se resuelven perfectamente con
> variables, el concepto de "constante" no es mandatorio.
>
> Al definir PENDING, CLOSING, WHITE, etc, tu requerimiento es "quiero
> definir lo que esto significa, para luego usar un nombre en lugar de
> escribir el valor siempre, y poder modificar mi código sin en algún
> momento quiero cambiar el valor asociado sin tener que recorrer todo
> el código buscando el valor, solo cambio la definición".
> Ese requerimiento es perfectamente realizable usando variables :)
>
> Volviendo a lo que otro ya mencionó, en python se asume que el
> programador no es tonto, y no hace lo de otros lenguajes, de limitar
> al programador para evitar que se equivoque.
> Si tenés un valor que definís en un solo lado y luego siempre usas,
> simplemente definís una variable, no hay razón para que el intérprete
> te tenga que limitar si en algún momento querés conscientemente
> cambiar su valor. La única razón sería evitar que el programador se
> equivoque, pero eso es responsabilidad del programador. La capacidad
> de alguien para equivocarse no es razón para limitar a otro que puede
> estar queriendo hacer lo mismo pero conscientemente.
>
> --
> fisa  -  Juan Pedro Fisanotti
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>



Yo creía que una constante era un "objeto" que no cambiaba su "valor"
mientras vivía. Eso sirve para dar acceso de sólo lectura y no permitir que
el objeto sea modificado. Como en python el tipado es dinámico y no tengo
que manejar accesos ni siquiera había pensado en las constantes.

Saludos.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20120305/ce446027/attachment.html>


More information about the pyar mailing list