Está en la página 1de 6

Platón, Aristóteles y la Orientación a

Objetos
Por Jcarlosbarajas @kurtgoedel2000

Una de las grandes ventajas que tiene ser el primero en algo es que eres original, sé que
esto es una perogrullada pero no deja de ser verdad, de Pero Grullo pero verdad al fin y
al cabo. Algo así les ocurrió a los filósofos de la antigua Grecia quienes fueron los
primeros que trataron sistemáticamente los principales temas que han preocupado de
siempre a la humanidad, puede que hubiera otros filósofos antes de ellos pero sus
testimonios no han llegado hasta nosotros. Otros vinieron después que copiaron,
ampliaron e iniciaron nuevos caminos, pero la base del pensamiento actual está allí, en
la Grecia clásica, sobre esos cimientos se construyó a lo largo de los siglos el edificio de
nuestro conocimiento.
De hecho, en este ejercicio de redacción que acometo imprudentemente, lo que pretendo
es describir cómo un paradigma de la ingeniería del software(1) desarrollado a finales
del siglo XX bebe en las fuentes de la filosofía que se hacía veinticuatro siglos antes.
Uno de estos personajes originales fue Platón (2), aunque ya había una tradición
filosófica importante cuando empezó a filosofar, podemos considerarle bastante
original. El núcleo de la filosofía platónica a través del cual se articula todo su
pensamiento y que, al mismo tiempo, representa su principal aportación a la historia del
saber, es la teoría de las ideas.
La formulación de la teoría, en su forma más básica, nos lleva a distinguir entre dos
realidades. La realidad tangible y la realidad sensible.
La primera está constituida por las ideas – de “eidos” que significa literalmente
“aspecto” o “figura” – que son inmateriales, eternas y ajenas a cualquier cambio o
modificación. La segunda lo constituyen lo que solemos llamar “cosas” y, por tanto, está
formada por todo aquello que es material, finito, corruptible o modificable.
Un ejemplo que pone el profesor Antonio Escohotado (3) es el de una puerta. Si pienso
en una puerta puedo representármela con tales o cuales características – grande,
pequeña, verde o azul, de madera o de cristal -, recordada, imaginada, o percibida
directamente porque la estoy viendo delante de mí. Pero además de esto hay una
abertura en la pared. La puerta es puerta porque son aberturas en la pared, que
constituye algo universal y no se agota en ninguno de sus ejemplos. Platón decía que
una idea existe cuando damos el mismo nombre a muchas cosas separadas.
Uno podría pensar entonces que las ideas residen en nuestra mente y son meras
representaciones de los objetos que podemos tocar con nuestros sentidos, pero lo
platónico siempre es un poco más complicado. Las ideas representan la esenciade los
objetos de conocimiento, no son meros contenidos mentales, no son conceptos, las ideas
subsisten independientemente de que sean pensadas o no. Por tanto las ideas son
independientes del pensamiento, del sujeto que las piensa y del objeto del que son su
esencia. Yo, para aclararme sobre cómo las ideas pueden ser independientes del sujeto,
pienso en que la idea existe incluso si no conozco su concepto correspondiente, las
patatas existían y su idea platónica también antes del descubrimiento de América pero
nadie que viviera en este hemisferio las conocía, por cierto, ¿cómo demonios harían
para acompañar a un huevo frito?.
Las ideas son el modelo o arquetipo de las cosas de la realidad sensible, son identidades
puras, lo que Platón denomina también como géneroo clase formada por las cosas de la
realidad sensible con la misma identidad ideal. Las cosas son una copia o imitación de
las ideas, son ejemplares únicos de las ideas.
La consecuencia inmediata de la teoría platónica de las ideas es la separación entre el
mundo o realidad intangible y el mundo o realidad sensible. Este es el dualismo
platónico que recibió muchas críticas, la primera y más importante, la de su alumno en
la Academia de Atenas, Aristóteles (4).
Aristóteles viene a poner un poco de sentido común a la propuesta de Platón. Está de
acuerdo con él en que hay un elemento común entre todos los objetos de la misma clase,
el universal, la idea, que es la causa de que le demos el mismo nombre a todos los
objetos del mismo género. El macedonio admite que ese universal existe, pero no que
tenga existencia independiente de las cosas, niega que sea subsistente como dicen los
filósofos.
El dualismo platónico para Aristóteles no tiene ningún sentido, duplicar el mundo
visible, estableciendo un mundo paralelo es complicar el asunto sin obtener ninguna
ventaja a cambio, ya que este mundo paralelo necesita a su vez de una explicación, es –
en definitiva - establecer una separación entre las cosas y aquello por lo que las cosas
son como son, entre los objetos y su esencia.
En cualquier caso, esa visión inteligente del mundo real que comparten los dos
filósofos, la división – si se quiere metodológica - entre los ejemplares y la idea que
representa a toda una categoría de esos ejemplares, ha sido una herramienta usada hasta
la saciedad a lo largo de la historia del conocimiento humano, desde la clasificación
biológica de las especies a los tipos ideales de Weber, desde la clasificación de las
criaturas celestiales en distintos coros por la iglesia medieval – supongo yo que después
de un tremendo chute de incienso -hasta el paradigma de la orientación a objetos (5) de
la moderna informática.
Y antes de empezar a desgranar qué es eso de la orientación a objetos debo hacer una
seria advertencia. Los informáticos, sobre todo aquellos que nos dedicamos al desarrollo
de programas – o, especificando más, los que nos dedicamos a la ingeniería del software
(6) - tenemos un trabajo que no dudaría en calificar de “platónico”.
Me di cuenta enseguida, nada más sumergirme en este condenado mundillo cuando era
un joven estudiante en la Universidad Politécnica de Madrid, lo que pasa es que
entonces no sabía muy bien cómo expresarlo, me faltaba cultura, situación a la que puse
remedio años después cuando estudié sociología.
La ingeniería del software es platónica pues nos movemos entre dos realidades: un
mundo real, que es el pretendemos interpretar con nuestra ciencia, y un mundo
intangible, que en su versión conceptualmente más simple, reside en una máquina
gobernada por impulsos eléctricos interpretados como unos y ceros.
Así pues, nuestro trabajo consiste esencialmente en interpretar la realidad hablando con
los expertos en la materia que pretendemos informatizar, utilizamos diversas técnicas de
diagramación para representar esa realidad siguiendo metodologías de análisis
contrastadas, y luego construimos programas cambiando el lenguaje de los diagramas
por el lenguaje de programación que la situación aconseja o nuestra empresa quiere que
usemos. Lenguaje con instrucciones que el ordenador – que no deja de ser un autómata -
sigue al pie de la letra.
Lo dicho, interpretamos la realidad sensible para transformarla a una realidad intangible
y binaria, y de paso resolvemos - espero que de manera eficaz - algún problema del
mundo real, desde la aproximación de un avión al aeropuerto a la nómina de una
empresa pasando por un portal web para conseguir pareja.
Y en ese proceso de interpretación de la realidad mediante diagramas y programas es
donde hay que colocar al análisis, el diseño y la programación orientada a objetos.
Vamos a asomarnos tímidamente a sus principios y cómo conectan con lo descrito antes
acerca de lo que pensaban Platón y Aristóteles.
Todo comenzó en la década de 1960 con un lenguaje de programación muy particular,
Simula (7),que estaba pensado para realizar simulaciones, desde circuitos a aeronaves,
y en ese entorno era necesario agrupar características y crear clases de cosas. Está
considerado como el primer lenguaje orientado a objetos. La orientación a objetos
quedó circunscrita a este entorno durante años, hasta que a finales de la década de 1980
tomó un gran impulso y hoy proliferan los lenguajes de programación que cumplen con
sus requisitos.
Los conceptos básicos de este tipo de lenguajes son la clase y el objeto. La clase es
equivalente al género platónico, siguiendo con el ejemplo del profesor Escohotado, yo
hago abstracción de todas las puertas y creo la clase “puerta” en donde coloco todas las
características que definen a las puertas, entendiendo por características los tipos datos –
atributos en la jerga informática - que las describen y las operaciones - o métodos en la
misma jerga – que puedes realizar sobre esos datos.
Pero la clase es el modelo, es la definición universal, es la idea al modo de Platón, en
cambio la cosa, el ejemplar que forma parte del mundo sensible, sería el objeto. Y es el
objeto el que tiene existencia real, ya veremos un poco más adelante cómo se manifiesta
esa existencia en un entorno tan abstracto como el interior de un ordenador. Con el
objeto definimos la puerta corredera de madera verde que se puede abrir y cerrar hacia
los lados y que mide 1 por2 metros o la puerta giratoria de cristal que no para nunca.
Ambas pertenecen a la clase puerta y ambas son objetos distintos.
Pero, ¿cómo puede tener existencia real un objeto dentro del ordenador?. Pues bien,
mientras que la clase no se ejecuta (8) y queda como definición, el objeto existe en
tiempo de ejecución, almacena datos en memoria y acaba muriendo cuando deja de
ejecutarse. Es más, hay programas llamados “recolectores de basura” que limpian la
memoria de los restos de estos objetos para que no estorben, son como enterradores de
objetos muertos. Al tiempo en que el objeto está vivo en memoria se le llama
persistencia y es una de las propiedades básicas de la orientación a objetos.
Voy a proponeros un pequeño viaje a la programación orientada a objetos. No me voy a
meter en mucho detalle, sé que es terreno pantanoso, pero si hemos llegado hasta aquí
merece la pena un pequeño esfuerzo más.
Supongamos que quiero crear la clase “persona”. En ella introduciré todos los atributos
o datos que creo que definen a un ser humano. Podría poner dentro de la clase datos
como el nombre y apellidos, datos biométricos como la altura o el peso o el color del
pelo, lugar, país y fecha de nacimiento, dirección, teléfonos y muchos otros datos
característicos de una persona. Y como operaciones o métodos podría incluir el cálculo
de la edad o el consumo basalde calorías en función del sexo, la edad y el peso, el
número de combinaciones pueden ser enorme. Una posible definición simplificada,
utilizando un pseudocódigo (9) parecido a un lenguaje de programación cualquiera,
podría ser:
Clase persona;AtributosNombre: caracteres (50);LugarNacimiento: caracteres
(25);PaisNacimiento: caracteres (20);AñoNacimiento: entero;AñoDefuncion:
entero;MétodosVida (AñoNacimiento, AñoDefuncion); /* calcula los años de vida
restando al año de defunción el año de nacimiento */Fin Clase
Luego para crear un objeto de la clase bastaría con poner algo así en el programa:Platon
es nueva persona; o Aristoteles es nueva persona;Y para meter datos
bastaría:Platon.Nombre:=
“Platón”;Platon.LugarNacimiento:=”Atenas”;Platon.PaisNacimiento:=”Grecia”;Platon.
AñoNacimiento:= -427;Platon.AñoDefuncion:= -347;
Esto sería un ejemplo de una asignación directa de los valores a los datos pero podrían
obtenerse de la pantalla o de una base de datos o de cualquier otra fuente.Y como
ejemplo de operación podría calcular sus años de vida invocando al método:
Vida(Platon.AñoNacimiento, Platon.AñoDefuncion);
Como el lector presupondrá todo esto puede llegar a ser muy complicado y no quiero ir
mucho más allá pues me meto en territorio farragoso, así que vamos a ir terminando
pero no sin ver una propiedad más que da idea de la potencia de definición que
proporciona la orientación a objetos. Yo puedo, superando a Platón, construir clases de
clases. Como diría mi hijo pequeño: ¿Cómo te quedas Platón?, ¿en eso no habías
pensado, eh?. Supongamos que trabajo en una empresa de software que recibe
encargos de otras empresas. Una empresa me encarga una aplicación de ventas que trata
básicamente de gestionar clientes y otra me encarga solucionarle el problema de su
nómina que trata básicamente de gestionar empleados. Si tengo bien definida una clase
persona,evidentemente con más datos de los que he puesto en párrafos anteriores, puedo
reutilizarla para crear nuevas clases, pues al fin y al cabo, todos los clientes y los
empleados son personas. Para ello bastaría algo así como:
Clase Empleado es nueva persona;AtributosDepartamento: caracteres
(20);PuestoTrabajo: caracteres (20);Categoria: caracteres (15);SueldoBase:
numeroreal;Antigüedad: entero;MétodosRetribución(); /* calcula la retribución
mensual de un empleado */Fin claseClase Cliente es nueva
persona;AtributosEmpresa: caracteres (20);Cargo: caracteres (20);VentasAnuales:
vector [1..12] de numeroreal;CuentaBancaria: caracteres (15);Métodos Cobros (); /*
realiza los cobros a los clientes */Envíos (); /* programa envíos de productos */Fin
clase
En este caso, la clase empleado heredaría todos los atributos y métodos de la clase
persona añadiendo las características propias de un empleado. Y lo mismo pasaría con la
clase cliente. De esta manera programaría una sola vez todo aquello que tiene que ver
con las personas independientemente de si éstas son empleados o clientes. A esto se le
llama reutilización y abarata mucho los proyectos.
Antes hemos hablado de que el trabajo del ingeniero de software pasa por la traducción
de la realidad a un lenguaje ejecutable en un ordenador. Ese trabajo resulta más fácil con
el paradigma de la orientación a objetos ya que permite describir la realidad de una
manera más sencilla, fidedigna y con más potencia semántica que cualquier otra manera
que se haya diseñado anteriormente. Acerca la realidad sensible al mundo intangible
siguiendo un sistema que en el fondo fue el mismo que concibió Platón hace muchos
siglos. Lo que francamente no sé es si los creadores del lenguaje Simula hace 50 años
pensaron en las ideas de Platón y Aristóteles cuando concibieron este paradigma pero,
de lo que estoy seguro, es que fueron herederos de una milenaria tradición intelectual
que tiene su origen en ellos.
Juan Carlos Barajas MartínezInformático y sociólogo
Notas
1. La ingeniería de software es la aplicación de un enfoque sistemático,
disciplinado y cuantificable al desarrollo, operación, y mantenimiento del
software. Según Bohem, es la aplicación práctica del conocimiento científico al
diseño y construcción de programas de computadora y a la documentación
asociada requerida para desarrollar, operar y mantenerlos. Se conoce también
como desarrollo de software o producción de software.
2. Platón (en griego antiguo: Πλάτων) (Atenas o Egina,1 ca. 427-347 a. C.) fue un
filósofo griego seguidor de Sócrates y maestro de Aristóteles. En 387 fundó la
Academia, institución que continuaría su marcha a lo largo de más de
novecientos años. Su influencia como autor y sistematizador ha sido incalculable
en toda la historia de la filosofía, de la que se ha dicho con frecuencia que
alcanzó identidad como disciplina gracias a sus trabajos.
3. Antonio Escohotado Espinosa (Madrid, 5 de julio de 1941) es un pensador,
ensayista y profesor universitario español cuyas obras, si bien centradas
principalmente en el derecho, la filosofía y la sociología, han abordado una gran
variedad de campos. Obtuvo notoriedad pública por sus investigaciones acerca
de las drogas, y son conocidas sus posiciones antiprohibicionistas. El leit motiv
de su obra es una afirmación de la libertad como antídoto frente al miedo o las
coacciones que empujan al ser humano hacia toda clase de servidumbres. Fue
profesor de filosofía en la Facultad de Ciencias Políticas y Sociología de la
UNED.
4. Aristóteles (en griego antiguo: Ἀριστοτέλης, Aristotélēs; Estagira, 384 a. C.-
Calcis, 322 a. C.) fue un filósofo, lógico y científico de la Antigua Grecia cuyas
ideas han ejercido una enorme influencia sobre la historia intelectual de
Occidente durante más de dos milenios. Aristóteles escribió cerca de 200
tratados (de los cuales solo nos han llegado 31) sobre una enorme variedad de
temas, incluyendo lógica, metafísica, filosofía de la ciencia, ética, filosofía
política, estética, retórica, física, astronomía y biología. Aristóteles transformó
muchas, si no todas, las áreas del conocimiento que abordó. Es reconocido como
el padre fundador de la lógica y de la biología, pues si bien existen reflexiones y
escritos previos sobre ambas materias, es en el trabajo de Aristóteles, donde se
encuentran las primeras investigaciones sistemáticas al respecto. Entre muchas
otras contribuciones, Aristóteles formuló la teoría de la generación espontánea,
el principio de no contradicción, las nociones de categoría, sustancia, acto,
potencia y primer motor inmóvil. Algunas de sus ideas, que fueron novedosas
para la filosofía de su tiempo, hoy forman parte del sentido común de muchas
personas. Aristóteles fue discípulo de Platón y de otros pensadores (como
Eudoxo) durante los veinte años que estuvo en la Academia de Atenas. Fue
maestro de Alejandro Magno en el Reino de Macedonia. En la última etapa de su
vida fundó el Liceo en Atenas, donde enseñó hasta un año antes de su muerte.
5. Paradigma de la Orientación a objetos
6. Esta precisión la pongo porque hay dos formas de desarrollar programas,
aplicaciones o sistemas de información, a la buena de Dios - algunos cachondos
tecnológicos utilizan el eufemismo "code and fix" - o utilizando metodologías de
desarrollo. Yo siempre he sido partidario de un desarrollo metodológico por las
razones que suelen venir en los libros de ingeniería de software, que son
múltiples y ciertas, y por una razón personal: flaco favor haría a la memoria de
mi padre y al dinero que se gastó en mi educación y, a la memoria del dinero que
me gasté yo cuando mi padre murió, si fuera un auténtico chapuzas y no aplicara
técnicas que me garantizan la calidad de los productos que desarrollo. ¡He
dicho!.
7. Simula es un lenguaje de programación orientada a objetos (OOP) de 1962. Fue
el primero de este tipo que incluyó el concepto de clase. Varios años después de
su desarrollo, casi todos los lenguajes modernos comenzaron a utilizar sus
principios de orientación a objetos. Así fue como se popularizaron términos
como clases, objetos, instancias, herencia, polimorfismo, etc. Simula 67 fue
lanzado oficialmente por sus autores Ole Johan Dahl y Kristen Nygaard en mayo
de 1967, en la Conferencia de Trabajo en Lenguajes de Simulación IFIO TC 2,
en Lysebu cerca de Oslo
8. Aquí la palabra ejecutar tiene el sentido de la 6ª acepción del Diccionario de la
Real Academia: “6. tr. Inform. Poner en funcionamiento un programa”.
9. En ciencias de la computación, y análisis numérico, el pseudocódigo (o falso
lenguaje) es una descripción de alto nivel compacta e informal1 del principio
operativo de un programa informático u otro algoritmo. Utiliza las convenciones
estructurales de un lenguaje de programación real, pero está diseñado para la
lectura humana en lugar de la lectura mediante máquina, y con independencia de
cualquier otro lenguaje de programación. Normalmente, el pseudocódigo omite
detalles que no son esenciales para la comprensión humana del algoritmo.

Bibliografía:
Antonio Escohotado EspinosaFilosofía y Metodología de las Ciencias SocialesUNED
1989
José María FouceLa Teoría de las Ideas de
Platónhttp://www.webdianoia.com/platon/platon_fil_ideas.htm
José María FouceLa metafísica aristotélica: la crítica de la Teoría de las
Ideashttp://www.webdianoia.com/aristoteles/aristoteles_meta.htm
Vídeo sobre la Teoría de las Ideas de Platón:

Platón, Aristóteles y la Orientación a Objetos by Juan Carlos Barajas


Martínez is licensed under a Creative Commons Reconocimiento-NoComercial-
SinObraDerivada 4.0 Internacional License.Creado a partir de la obra en
http://sociologiadivertida.blogspot.com.es/.

También podría gustarte