[pyar] [Consulta]Programación: constante

fisa fisadev en gmail.com
Lun Mar 5 18:19:36 ART 2012


El día 5 de marzo de 2012 18:12, Adrian Roldan
<roldanadrian en gmail.com> escribió:
>
>
> 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.
>

No, claro, eso es otro tema que también se tocó en el hilo, la
cuestipón de objetos mutables e inmutables.

-- 
fisa  -  Juan Pedro Fisanotti



More information about the pyar mailing list