Paradigmas adequados à programação da interface do usuário

9

Essa é uma pergunta mais específica (ou na verdade duas, mas elas estão relacionadas), proveniente dos comentários da morte da tecnologia OOP, em que alguém afirmou que OOP não é o paradigma certo para a programação da GUI.

Lendo os comentários aqui e aqui, ainda tenho a sensação de que há coisas a aprender: quais paradigmas de programação são considerados bons ajustes e por que são melhores que outros (talvez com exemplos para ilustrar?)

Eu removi o exemplo tk do título e da pergunta

Inca
fonte
@Inca - tenha em mente que a SK-logic (que originou esse comentário) luta contra o OOP em todas as ocasiões possíveis - como se ele tivesse uma missão fanática. Duvido muito que ele possa realmente provar que tk não está relacionado ao POO.
30711 Andreas_D
-1: por citar uma opinião pessoal como se fosse fato. "OOP não é o paradigma certo para a programação da GUI" seria uma ameaça ao C # e ao Objective C, que parecem depender muito do OOP para a programação da GUI. Se esse não é o paradigma certo, toda a enorme fatia de mercado da Apple realmente não existe ou algo assim.
S.Lott
11
@ S.Lott, porém, não é o paradigma certo, a GUI deve ser declarativa. Você parece confundir popularidade com o que é certo.
Raynos
@ Raynos: "declarativo". Como em alguns objetos relacionados? Não entendo como declarativo não é um monte de relacionamentos entre um monte de objetos. E. Isso parece fora de tópico para esta pergunta. A pergunta parece ser sobre OO, não há maneiras melhores de escrever GUI. O título parece ser enganoso em comparação com a pergunta real. Nem são muito bons.
S.Lott
11
@ Inca: Considere desconsiderá-lo inteiramente como mero hipérbole.
S.Lott

Respostas:

9

Normalmente, não sou proponente do OOP, mas diria que a programação da GUI apresenta algumas das melhores oportunidades para usar os pontos fortes do OOP. A implementação de vários widgets é muito mais fácil usando o polimorfismo e a herança do OOP. A biblioteca GUI do PLT Racket é um bom exemplo.

Larry Coleman
fonte
2
A programação reativa funcional parece ainda melhor.
SK-logic
@ SK-logic: Você poderia fazer um bom argumento para isso, e algum trabalho interessante no Common Lisp (você já ouviu falar de Cells?) Foi feito nessa direção. Vou editar minha resposta para torná-la mais precisa.
Larry Coleman
5

Uma GUI típica, feita de widgets e seu layout, é totalmente declarativa. Os widgets em si não interagem entre si; portanto, uma noção de objetos e mensagens é um pouco estranha aqui. As DSLs declarativas hierárquicas são uma espécie de mainstream atualmente, com Tk sendo um dos primeiros exemplos e o WPF como uma abordagem mais moderna para a mesma coisa. A programação reativa funcional é outra abordagem interessante (mas não muito difundida).

Algumas pessoas tendem a ver OOP em qualquer lugar onde uma hierarquia é definida, o que está errado - não existe absolutamente nenhuma conexão entre hierarquias estritas (leitura - tipos de dados algébricos) e a definição de OOP de Kay.

SK-logic
fonte
3
Na minha experiência, os widgets precisam interagir entre si para criar uma GUI melhor, e os sistemas mais declarativos que encontrei (alguns baseados em xml, incluindo HTML + css) certamente não têm possibilidades na parte de interação. Além disso, minhas experiências com a incorporação da interface do usuário usando declarativo (prólogo) e funcional (Haskell) não deram a impressão de que era fácil. Você tem fontes que eu poderia olhar para discutir especificamente mais disso? Eu só vim com exemplos muito abstratos (ou muito básicos) que não explicam muito por que certas abordagens funcionam melhor
Inca