Paradygmaty pasujące do programowania interfejsu użytkownika

9

To jest bardziej szczegółowe pytanie (a właściwie dwa, ale są powiązane) pochodzące z komentarzy śmierci technologicznej OOP, gdzie ktoś stwierdził, że OOP nie jest właściwym paradygmatem programowania GUI.

Czytając komentarze tam i tutaj mam wrażenie, że są rzeczy do nauczenia się: które paradygmaty programowania są uważane za dobre dopasowanie i dlaczego są lepsze od innych (być może z przykładami do zilustrowania?)

Usunąłem przykład tk z tytułu i pytania

Inka
źródło
@Inca - pamiętaj, że SK-logic (autor tego komentarza) walczy z OOP przy każdej możliwej okazji - tak jakby miał fanatyczną misję. Wątpię, czy naprawdę może udowodnić, że tk w ogóle nie jest związany z OOP.
Andreas Dolk
-1: za cytowanie osobistej opinii, jakby to był fakt. „OOP nie jest właściwym paradygmatem dla programowania GUI” byłoby sprzeczne z C # i celem C, który wydaje się bardzo mocno zależeć od OOP dla programowania GUI. Jeśli nie jest to właściwy paradygmat, wówczas cały ogromny udział Apple w rynku tak naprawdę nie istnieje lub coś takiego.
S.Lott
1
@ S.Lott nie jest to jednak właściwy paradygmat, GUI powinno być deklaratywne. Wydajesz się mylić popularność z tym, co słuszne.
Raynos
@Raynos: „deklaratywny”. Jak w niektórych powiązanych obiektach? Nie rozumiem, jak deklaratywna nie jest wiązka relacji między wiązką obiektów. I. To wydaje się nie na temat tego pytania. Wydaje się, że pytanie dotyczy OO, a nie lepszych sposobów pisania GUI. Tytuł wydaje się wprowadzać w błąd w porównaniu z faktycznym pytaniem. Żadne z nich nie są bardzo dobre.
S.Lott
1
@Inca: Rozważ pominięcie tego jako zwykłej hiperboli.
S.Lott

Odpowiedzi:

9

Zwykle nie jestem zwolennikiem OOP, ale powiedziałbym, że programowanie GUI oferuje jedne z najlepszych możliwości wykorzystania mocnych stron OOP. Wdrożenie różnych widżetów jest znacznie łatwiejsze dzięki wykorzystaniu polimorfizmu i dziedziczenia OOP. Biblioteka GUI PLT rakiety jest dobrym przykładem.

Larry Coleman
źródło
2
Funkcjonalne programowanie reaktywne wydaje się jednak lepiej dopasowane.
SK-logic
@ SK-logic: Możesz to zrobić bardzo dobrze, a w tym kierunku wykonano kilka interesujących prac w Common Lisp (słyszałeś o Cells?). Zmodyfikuję moją odpowiedź, aby była bardziej precyzyjna.
Larry Coleman
5

Typowy GUI, złożony z widżetów i ich układu, jest całkowicie deklaratywny. Widżety jako takie nie będą ze sobą współdziałać, więc pojęcie przedmiotów i wiadomości jest tutaj trochę obce. Hierarchiczne deklaratywne listy DSL są obecnie rodzajem głównego nurtu, przy czym Tk jest jednym z pierwszych przykładów, a WPF jako bardziej nowoczesne podejście do tego samego. Funkcjonalne programowanie reaktywne jest kolejnym interesującym (ale niezbyt rozpowszechnionym) podejściem.

Niektóre osoby widzą OOP wszędzie tam, gdzie zdefiniowana jest hierarchia, co jest błędne - absolutnie nie ma związku między ścisłymi hierarchiami (odczyt - algebraiczne typy danych) a definicją OOP autorstwa Kay.

Logika SK
źródło
3
Z mojego doświadczenia wynika, że ​​widżety muszą ze sobą współdziałać, aby stworzyć lepszy GUI, a bardziej deklaratywne systemy, które napotkałem (niektóre oparte na XML, w tym HTML + css) z pewnością nie mają możliwości w części interakcji. Ponadto moje doświadczenia z włączaniem interfejsu użytkownika za pomocą deklaratywnego (prolog) i funkcjonalnego (Haskell) nie sprawiały wrażenia, że ​​było to łatwe. Czy masz źródła, na które mógłbym spojrzeć, aby omówić więcej na ten temat? Przedstawiłem tylko bardzo abstrakcyjne (lub bardzo podstawowe) przykłady, które nie wyjaśniają wiele, dlaczego niektóre podejścia działają lepiej
Inca