[pyar] [video] En Python tenemos nombres, no variables.

Fernando Pelliccioni fpelliccioni en gmail.com
Jue Jun 5 11:44:52 ART 2014


2014-06-05 11:40 GMT-03:00 Fernando Pelliccioni <fpelliccioni en gmail.com>:

>
>
>
> 2014-06-05 11:38 GMT-03:00 Claudio Freire <klaussfreire en gmail.com>:
>
> 2014-06-05 10:45 GMT-03:00 Alejandro Santos <listas en alejolp.com>:
>> > 2014-06-05 15:41 GMT+02:00 Alejandro Santos <listas en alejolp.com>:
>> >>
>> >> Y esto viene porque si tenes un objeto de clase Clase, donde Clase es
>> >> un objeto, no podés tener una Clase con clase Clase, tenés que tener
>> >> una "meta-clase" que sea la progenitora de tu Clase, por ejemplo
>> >> CClase. Y lo mismo CClase, es un objeto, con clase CCClase.
>> >>
>> >
>> > (sigo)
>> >
>> > Es una definición recursiva estándar. En general no podés definir un X
>> > diciendo "X es un X", tenés que expresarlo en términos de otra cosa
>> > más general.
>> >
>> > (a diferencia de la RAE que cuando buscas "cosas" te dice "es el
>> > plural de cosa" y "cosa" te dice "es el singular de cosas")
>>
>> Claro que se puede. Es la idea detrás de los representantes de clases
>> de equivalencia (algo de matemática por si no te suena).
>>
>> La clase "Clase" es una clase de equivalencia. El objeto que vos tomás
>> como la clase "Clase" (que obtenés con type) es sólo un objeto dentro
>> de esa clase que lo representa.
>>
>> Clase es una Clase. Son la misma palabra, pero no el mismo concepto.
>> Uno es un objeto. El otro es una clase de equivalencia de objetos.
>>
>>
>> 2014-06-05 10:41 GMT-03:00 Alejandro Santos <listas en alejolp.com>:
>> > En la facultad tuve una matería que se llamaba "OOP" y que uno de los
>> > temas era "Teoría de Objetos", donde mi profesor contó esta recursión
>> > infinita con infinito+1 en nil/null/Null.
>> >
>> > Y esto viene porque si tenes un objeto de clase Clase, donde Clase es
>> > un objeto, no podés tener una Clase con clase Clase, tenés que tener
>> > una "meta-clase" que sea la progenitora de tu Clase, por ejemplo
>> > CClase. Y lo mismo CClase, es un objeto, con clase CCClase.
>>
>>
>> Está equivocado:
>>
>> Python 2.7.6 (default, Nov 21 2013, 15:55:38) [GCC] on linux2
>> Type "help", "copyright", "credits" or "license" for more information.
>> >>> class C:
>> ...    pass
>> ...
>> >>> type(C)
>> <type 'classobj'>
>> >>> type(type(C))
>> <type 'type'>
>> >>> type(type(type(C)))
>> <type 'type'>
>> >>>
>>
>> No *tenés* que tener una meta-meta-clase, porque evidentemente Python
>> no la tiene.
>>
>> La clase "type" acá está definida por fuera del lenguaje. En Smalltalk
>> pasa lo mismo, y no hay nada más OOP que Smalltalk.
>>
>> ¿Cómo se representa eso en la computadora? No importa. En el lenguaje,
>> el tipo de una clase es Clase (type acá porque está en inglés) y la
>> clase de Clase es Clase también. Puede sonar raro, pero tiene sentido,
>> pues la clase y la meta-clase que mencionás se comportan idéntico, así
>> que no pueden ni necesitan ser diferenciadas. Porque el tipo de algo
>> como lo ves dentro de un programa es un objeto, no una clase. No podés
>> hacer type() de una clase, porque la clase no es un objeto (es un
>> grupo de objetos similares), es algo conceptual. No es parte del
>> lenguaje.
>>
>> Anotando a Kay:
>>
>> 1. Todo es un objeto (No una clase)
>> 2. Los objetos se comunican enviando y recibiendo mensajes (métodos -
>> que son objetos a su vez).
>> 3. Los objetos tienen memoria (formada por objetos - no necesariamente
>> no-vacía, ojo).
>> 4. Todo objeto **es una instancia de una clase** (o sea, los objetos
>> se dividen en clases de objetos de similar comportamiento, es un orden
>> conceptual, no hay variedad infinita de comportamiento - y el
>> comportamiento es un objeto, o sea, hay un objeto que representa a la
>> clase en su conjunto - ese objeto, también, tiene un comportamiento
>> discretamente clasificado ).
>> 5. La clase contiene el comportamiento compartido de sus instancias
>> (la clase pues tiene objetos que describen el comportamiento de sus
>> instancias - los métodos en sí mismos)
>> 6. La ejecución de un programa, el control pasa al primer objeto (el
>> famoso Main) y el resto es tratado como el mensaje (los argumentos)
>>
>> Luego, si un objeto tiene el comportamiento de una clase, lo que
>> sucede con los representantes de clase, entonces la clase de ese
>> objeto clase es la clase misma, pues tiene el mismo comportamiento. Se
>> comporta como Clase. Qué clase es en particular está representando
>> está definido en la memoria del objeto Clase, que es parte de la
>> *instancia*. Nada impide pues que la clase de un objeto sea
>> representado por el objeto mismo, si el comportamiento de las
>> instancias es uniforme y es el comportamiento de una clase.
>>
>> Completamente consistente. Espero que claro también.
>> _______________________________________________
>> 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
>>
>
>
> (TOTAL-OT)
>
> Bertrand Meyer nos mata a todos si escucha que dicen que su lenguaje no es
> OO ;)
>
> Creo que si hablamos de objetos, tenemos que ir a la fuente, pero a la
> verdadera fuente, Simula.
>
> Aquí alguien pudo rescatar el manual original.
> http://www.edelweb.fr/Simula/#7
>
> Y aquí las definiciones basicas
> http://www.edelweb.fr/Simula/scb-1.pdf
>
> Yo me pregunto, ¿qué significa paradigma de objetos puro? O mejor, ¿qué
> significa objeto?
> ¿C es un lenguaje orientado a objetos (sea lo que sea que signifique)?
> Creo que la mayoría vamos a responder que No. Sin embargo, agarro
> cualquiera de los Estándares de C (89, 99, 11) y veo la palabra "objeto"
> por todos lados.
> No con esto quiero decir que C sea un lenguaje OO, sino, que "objeto"
> puede significar cosas diferentes.
>
> O sea, que cada uno tome la definición de "objeto" que se le antoje :)
> Yo me quedo con una definición un poco mas práctica, de Alex Stepanov, que
> básicamente es algo parecido a: "Object is a value residing in memory".
> Simple y práctica, ya que usamos computadoras y éstas tienen memoria (si
> alguien conoce algún aparato computacional que no use memoria me avisa :)).
> (Para una definición mas "formal" ver Elements Of Programming, pag.4)
>
> Me encantaría ver algún paper/libro de Alan Kay donde hable sobre OOP y
> sus definiciones.
> Hoy en día, si alguien quiere aprender sobre teoría de objetos (no en el
> sentido práctico de Stepanov, sino en el sentido OOP), yo le recomendaría
> leer a Bertrand Meyer.
>
>
> http://www.amazon.com/Object-Oriented-Software-Construction-Book-CD-ROM/dp/0136291554/ref=sr_1_1?s=books&ie=UTF8&qid=1401974729&sr=1-1&keywords=object+oriented+software+construction
>
> Saludos,
> Fernando.
>


Ahhh, y una cosa que detesto es la palabra "método", que alguien por favor
me apunte a su definición (CS).
Muerte a quien popularizó el término ;) Quién fue? Fowler? juaaaa
Usemos función, procedimiento, rutina.....
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20140605/4e670511/attachment-0001.html>


More information about the pyar mailing list