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