Paradigmas aptos para la programación de UI

9

Esta es una pregunta más específica (o en realidad dos, pero están relacionadas) proveniente de los comentarios de la muerte de la tecnología OOP donde alguien declaró que OOP no es el paradigma correcto para la programación GUI.

Al leer los comentarios allí y aquí todavía tengo la sensación de que hay cosas que aprender: qué paradigmas de programación se consideran adecuados y por qué son mejores que otros (¿quizás con ejemplos para ilustrar?)

Eliminé el ejemplo tk del título y la pregunta

Inca
fuente
@Inca: ten en cuenta que SK-logic (quien originó este comentario) lucha contra la OOP en todas las ocasiones posibles, como si tuviera una misión fanática. Dudo mucho que él realmente pueda probar que tk no está relacionado con OOP en absoluto.
Andreas_D
-1: por citar una opinión personal como si fuera un hecho. "OOP no es el paradigma correcto para la programación GUI" iría en contra de C # y Objective C, que parecen depender mucho de OOP para la programación GUI. Si no es el paradigma correcto, toda la gran cuota de mercado de Apple realmente no existe o algo así.
S.Lott
1
@ S.Lott no es el paradigma correcto, la GUI debería ser declarativa. Parece confundir popularidad con lo que es correcto.
Raynos
@Raynos: "declarativo". Como en, algunos objetos relacionados? No entiendo cómo declarativa no es un montón de relaciones entre un montón de objetos. Y. Eso parece fuera de tema para esta pregunta. La pregunta parece ser sobre OO, no sobre mejores formas de escribir GUI. El título parece ser engañoso en comparación con la pregunta real. Tampoco son muy buenos.
S.Lott
1
@Inca: considere ignorarlo por completo como una simple hipérbole.
S.Lott

Respuestas:

9

Normalmente no soy un defensor de OOP, pero diría que la programación GUI presenta algunas de las mejores oportunidades para utilizar los puntos fuertes de OOP. La implementación de varios widgets se hace mucho más fácil al usar el polimorfismo y la herencia de OOP. La biblioteca GUI de PLT Racket es un buen ejemplo.

Larry Coleman
fuente
2
La programación reactiva funcional aún parece encajar mejor.
SK-logic
@ SK-logic: Podría hacer un buen caso para eso, y se ha realizado un trabajo interesante en Common Lisp (¿ha oído hablar de Cells?) En esa dirección. Editaré mi respuesta para hacerlo más preciso.
Larry Coleman
5

Una GUI típica, hecha de widgets y su diseño, es completamente declarativa. Los widgets per se no interactuarían entre sí, por lo que una noción de objetos y mensajes es algo extraña aquí. Las DSL declarativas jerárquicas son una especie de corriente principal actualmente, con Tk como uno de los primeros ejemplos, y WPF como un enfoque más moderno de lo mismo. La programación reactiva funcional es otro enfoque interesante (pero no muy extendido).

Algunas personas tienden a ver OOP en cualquier lugar donde se define una jerarquía, lo cual está mal: no hay absolutamente ninguna conexión entre las jerarquías estrictas (lectura - tipos de datos algebraicos) y la definición de Kay de OOP.

SK-logic
fuente
3
En mi experiencia, los widgets necesitan interactuar entre sí para hacer una mejor GUI, y los sistemas más declarativos que he encontrado (ciertos basados ​​en xml, incluido HTML + css) ciertamente carecen de posibilidades en la parte de interacción. Además, mis experiencias con la incorporación de la IU usando declarativo (prólogo) y funcional (Haskell) realmente no dieron la impresión de que fuera fácil. ¿Tiene fuentes que podría mirar para discutir específicamente más de esto? Solo he encontrado ejemplos muy abstractos (o muy básicos) que no explican mucho por qué ciertos enfoques funcionan mejor
Inca