hoy vamos a hablar un poco de programación orientada a objetos y su influencia en el
desarrollo de los MBA, pero antes de que hablemos de programación orientada a
objetos, hablemos un poco sobre funciones en programación de computadoras
originalmente y muy temprano en la programación de computadoras, una función
era simplemente algo que tomaba un número hacía algo con él y creaba como salida
otro número, en muchos sentidos seguimos pensando en funciones de esa manera y en
una forma rudimentaria y así se usa en las clases de matemáticas
pero en verdad una función es algo que toma, cualquier cosa, cualquier clase de
objeto, lo transforma en otro objeto, desde esa perspectiva fue John McCarthy y
sus trabajos en Lisp en 1958 quien expandió esta noción en programación
el construyó sobre el cálculo Lambda de Alonzo Church, que era una notación de
funciones que te permitía pasar una función como una entrada para otra función
y en efecto, todavía en NetLogo se puede usar hoy en día, hay una función, si
querés, un reporteador que llama a tareas que te permiten definir una función como
una variable y uno puede pasar esa variable a otras variables
En un par de procedimientos diferentes de NetLogo, realmente toman tareas como
entradas y las usa en la forma que lo hacen, hablaremos un poquito de eso tal
vez en las próximas lecturas
Sin embargo, Lisp mantiene a las funciones y a los datos separados en la forma
tradicional
en otras palabras se necesitan diferentes operadores de suma para tipos de datos que
son diferentes, hay que identificar operadores de suma universales que
funcionen en muchos tipos de datos diferentes fácilmente
Hasta ese punto, los datos y las funciones se consideran separados unos de otros
uno de los primeros ejemplos de esto fue un quiebre, fue realizado por Dahl y
Nygaard en Noruega, donde desarrollaron una simulación para barcos
y ellos crearon la noción de "clase", como parte de ello, tenemos una clase para los
barcos, tenemos clases para las diferentes partes del barco
y esto nos permite combinar los datos y las funciones en un solo paquete, que
describe lo que puede hacer esa clase
esto fue hecho en un lenguaje que fue desarrollado que se llama "Simula", que
viene de simulaciones, yo encuentro bien interesante el uso original de la
programación, para simulaciones y de hecho vamos a hablar como eventualmente eso nos
lleva a algunas nociones que tomamos y usamos en los MBA
por esa época el término "programación orientada a objetos" no se usaba y no se
usó hasta el desarrollo de "SmallTalk" por Alan Key y colegas en 1972
y una de las cosas lindas de SmallTalk es que nos permitía definir estos objetos y
tener estos objetos que pueden pasar mensajes entre sí
y como resultado de ello, uno puede, instanciar lo que esos objetos pueden
hacer y responder a los mensajes y pueden darse cuenta que tienen que hacer, uno no
tiene que reprogramar la simulación, uno sólo tiene que programar ese objeto en
particular, para que haga lo que tiene que hacer en respuesta a los mensajes
esta noción tiene muchas similitudes con los MBA, los agentes en cualquier MBA
moderno, que a veces instancian estas clases, uno puede tener una clase para los
lobos o una clase para las ovejas, cosas así
en NetLogo lo llamamos "breeds" y la forma actual de NetLogo sólo nos permite un
nivel de crianza (breeding) uno sólo puede tener tortugas y criar a partir de ella
en las formas de NetLogo que se están desarrollando, tendremos la posibilidad de
tener multinivel, que nos permitirá tener lo que podemos llamar "especies" que se
generen en forma más fluída en el espacio
en cualquier caso, tenemos una forma de bajo nivel en la programación que se
encuentra disponible en la versión actual de NetLogo, cuando usamos las breeds
la noción de programación orientada a objetos es que estas clases pueden
contener diferentes campos para los datos y diferentes funciones que se les pueden
aplicar y es muy similar a la noción de los agentes, pensamos en los agentes como
un tipo de objeto que tiene algunas propiedades y conductas, muy parecido a la
forma en que se utilizan las clases
más allá de SmallTalk, tenemos el trabajo de Carl Hewitt en IBM en 1973, que
desarrolló el modelo de programación del actor, que fue formalizado por Bishop y
Steiger; este modelo simplifica el Smalltalk y el Simula para hablar de una
forma más simplificada acerca de como trabajar con objetos
como les dije antes, todas estas historias son una red, resulta que Hewitt estuvo muy
influenciado por Seymour Papert y sus trabajos sobre el cuerpo sintónico y por
los trabajos de Key sobre la programación orientada a objetos
los actores pueden hacer sólo algunas cosas muy simples, lo que pueden hacer es
enviar y recibir mensajes, crear otros actores y manipular esos mensajes
más aún, cada actor tiene una dirección y el único modo en que uno puede enviarle un
mensaje a un actor es conociendo su dirección
y otra limitación es que el número de direcciones de otros actores que un actor
puede tener es limitado, esto genera una forma de racionalidad acotada, una
competencia limitada, esto refuerza un par de aspectos interesantes, esto refuerza
cosas como el razonamiento local y concurrencia heredada, debido a que los
actores no tienen el conocimiento acerca de lo que sus vecinos están haciendo hasta
que envían o reciben mensajes de ellos
eventualmente todos estos resultados en los lenguajes orientados a objetos
modernos, como el C++, Objective C, Java, Cocoa y las plataformas de MBA que estamos
mirando, los actores en particular influencian a los MBA en muchos sentidos
primero el énfasis en la computación concurrente y también pueden tener fuerzas
de interacción local que actúan, tienen interacciones limitadas entre los
individuos, pueden ver solo un número de cosas que pueden conocer
son dinámicos por naturaleza, debido a que tenés actualizaciones y adversidades que
pueden cambiar que es lo que está ocurriendo
y poseen esta noción de conductas y propiedades que existen en entidades
independientes, no como unas propiedades del sistema global que los rodea
hay muchas formas en el campo de la historia de la programación orientada a
objetos que efectivamente inspiraron la forma en que actualmente pensamos en los
MBA y es difícil de pensar en un mundo de los MBA que exista afuera de las nociones
de objetos y de la programación que se usaba antes de ello
esto significa que no hay nada en los modelos de la biblioteca de NetLogo
específicamente que recuerde esta clase de nociones sobre objetos, pero lo que quiero
mostrarles, en las próximas charlas, es el modelo de las hormigas, debido a que nos
dice mucho acerca de las interacciones locales, es un modelo clásico que hemos
visto en las clases y que puede ser útil mirarlo un poquito