¿Ha habido alguna investigación relacionada con la coinducción y el patrón de observación?

Creo que la pregunta está mal enmarcada un poco, aunque creo que puedo ver de dónde viene.

El modelo de observador es una noción de tan bajo nivel que no está vinculada a la POO en absoluto; Es natural, por ejemplo, en sistemas controlados por eventos donde la responsabilidad de publicar un evento no pertenece a un objeto que encapsula el estado que se publica. Por supuesto, si TIENES un objeto como ese, entonces parece natural “darle la responsabilidad” de la publicación (y puede ser difícil recordar que no tiene por qué ser así; una vez fui programador de Mac , y tenía que vivir con personas que pensaban que tenía un sistema orientado a objetos, en lugar de una especie de vista de usuario de la interfaz orientada a objetos, por lo que nunca podría olvidarlo).

Aún así, hay un punto real. Diseñar un sistema donde los objetos encapsulados independientemente cooperen para hacer lo correcto es claramente un problema en el diseño co-inductivo. Pero cambie la declaración. Esto es de lo que se trata el diseño co-inductivo. Identificar el estado que necesita ser compartido es parte de eso. La encapsulación del estado, en un diseño OOP, le brinda una ubicación natural para su código de relación, es decir, el objeto que lo rodea más cercano. En este punto, ya ha decidido si el estado es “atraído” por, digamos, encuestas o “empujado” por, digamos, publicación a los observadores; pero eso en sí mismo no se reduce a consideraciones OOP.

Supongo que es cuestión de gustos si ves que la encapsulación se interpone en el camino de la comunicación entre las cosas aquí, o si te aclara algo. Hacer que el editor “posea” una lista de clientes me parece muy incómodo con la “encapsulación”, pero ese es el precio que paga.

Ahora, desde esta perspectiva, OOP desaparece de la vista. Las relaciones de estado del diseño co-inductivo deciden qué es “empujar” y qué es “tirar”. “Pull” es más natural para la encapsulación, pero a menudo es mucho menos eficiente. Decidir “empujar” y encapsular juntos obliga a estas relaciones, que por definición no pertenecen * a * un objeto, para almacenarse * en * él. Pero la encapsulación solo dicta “dónde colocar el código” y requiere la lista de clientes en el mismo lugar. No da forma al diseño; solo requiere un modelo de (parte del) diseño más grande para existir dentro de sí mismo. Por lo tanto, no hay una versión del problema de diseño específica de OOP.

Por supuesto, la lista de clientes es potencialmente una estructura dinámica, no estática, decidida en “tiempo de diseño”. Pero las posibilidades de hacerlo están definidas en el momento del diseño. ¿O son sus objetos agentes individualmente inteligentes, inventando sus propias interfaces a medida que avanzan?

More Interesting

¿Cuál es la mejor manera de aprender geometría algebraica si uno no está interesado en usarlo para propósitos teóricos numéricos, sino más bien para aplicaciones en física teórica e informática teórica?

Proyectos teóricos de informática o desarrollo de aplicaciones, ¿qué le sugerirías a los estudiantes de primer año de informática?

Si a, b, c son números reales tales que 0 <a <1, 0 <b <1, 0 <c <1, a + b + c = 2, ¿cómo demuestra que [matemáticas] \ frac {a} {1 - a} \ frac {b} {1 - b} \ frac {c} {1 - c} \ geq 8 [/ math]?

¿Cómo puedo ordenar rápidamente una matriz de elementos que ya está ordenada, excepto por un pequeño número de elementos, por ejemplo, hasta 1/4 del total, cuyas posiciones se conocen, por ejemplo, 1,2,3,4,8,6 , 7,8,2,10,11,3,13,14,15,16. Este conjunto se ordena guardar 4,8,11?

¿Es una pérdida de tiempo tratar de ser un programador de computadoras si soy malo en matemáticas?

¿Existe algún conjunto de videos o una lista de reproducción de videos de programación competitiva que incluya todos los algoritmos, estructuras de datos, matemáticas y todo lo necesario?

¿Cuál es la diferencia entre problemas decidibles e indecidibles en teoría de la computación?

¿Qué están resolviendo realmente los mineros de Bitcoin? ¿Qué tipo de problemas matemáticos están resolviendo y qué logran al resolverlos?

¿Cuál es el papel de las matemáticas en las computadoras?

¿Cuál es la respuesta para (1 + 1e20) - (1e20) y 1+ (1e20-1e20)?

¿Cómo se determinan las probabilidades de relación de probabilidad logarítmica para los códigos LDPC?

Cómo escribir un programa en Java para encontrar la suma de números primos de menos de 2 millones

¿Por qué el tiempo de ejecución para la parte de fusión de merge sort [math] \ theta (n) [/ math]?

¿Por qué si tenemos una reducción en el tiempo polinomial de un problema de P a un problema de NP, esto no muestra que P = NP (pero al contrario)?

Cuando las personas preguntan sobre las aplicaciones del mundo real de algún tema, ¿qué tipo de respuestas están buscando?