[pyar] [video] En Python tenemos nombres, no variables.
Fernando Pelliccioni
fpelliccioni en gmail.com
Jue Jun 5 11:40:30 ART 2014
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.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20140605/4dc88330/attachment.html>
More information about the pyar
mailing list