2016-06-06 45 views
12

Zauważyłem, że słowo "moralny" pojawia się coraz częściej w kontekście programowania funkcjonalnego. A kilka przykładów:Co funkcjonalni programiści rozumieją przez "moralny"?

jestem zaznajomiony z tych zwyczajów tego słowa. Mogę głównie wywnioskować, co próbują powiedzieć, ale czy możemy dokładniej wyjaśnić, co to oznacza?

(Cross-pisał na English Language & Usage)

+3

Wydaje się bardziej jak [programmers.se] mowa. – jonrsharpe

+2

FWIW, po prostu upuść "moralny", a sens pozostaje taki sam. IMO, cała ta "moralność" to tylko moda na FP; patrz http://rationalwiki.org/wiki/Moral_equivalence itd. – vaxquis

+2

"Równoważność moralna" może być uważana mniej więcej za tę samą zasadę, co kaczkowanie-pisanie następuje ... Jeśli chodzi jak kaczka, mówi jak kaczka i znachorów jak kaczka, to musi być kaczka.Jest to inny sposób powiedzenia: "dopóki wynik końcowy jest taki sam (otrzymuję ten sam wynik przy konkretnym wprowadzeniu), nie obchodzi mnie, co dzieje się pod maską". –

Odpowiedz

4

Określenie „równoważność moralna” w (sformalizowane) logiki, a co za tym idzie, w programowaniu nie ma nic wspólnego z odwołania do moralności (jak w, etyczne lub pytania filozoficzne) . Kooptuje termin "moralnie", ale oznacza coś innego. Zazwyczaj ma to oznaczać "P hold, ale tylko w pewnych warunkach ubocznych". Warunki te są często pomijane, jeśli nie mają wartości edukacyjnej, są trywialne, techniczne i/lub nudne. W związku z tym linkowany artykuł o "równoważności moralnej" nie ma nic do zrobienia - nie ma tutaj żadnych wartościujących osądów.

Nie wiem zbyt wiele na temat Purescript, ale sposób, w jaki interpretuję stwierdzenie, o którym wspomniałeś: "możesz osiągnąć to samo z Aff jako ErrorT (ContT Unit (Eff e)) a."

Podać inny przykład: Załóżmy, że masz dwie funkcje i interesuje Cię tylko określony (może duży) podzbiór ich domen. Powiedzmy również, że te dwie funkcje zgadzają się w tych domenach, to znaczy, dla wszystkich x ∈ dom, f (x) = g (x). Ale dla przykładu, może robią coś innego na 0, ale nigdy nie przekażemy im 0 (ponieważ 0 narusza jakieś założenie). Można rozsądnie powiedzieć, że f i g "są moralnie równoważne".

Zwłaszcza w społeczności logiki istnieją inne zastosowania słowa "moralny", na przykład w wyrażeniu "dowód jest moralnie wątpliwy", co oznacza, że ​​autor uważa, że ​​dowód jest niedbały i że może mieć luki, ale technicznie naprawialne. W konkretnym przypadku, a mianowicie przeprowadzania dowodów na potencjalnie nie kończące się programy, wspomniana praca daje takie uzasadnienie, co jest powtórzone w tytule "Szybkie i luźne rozumowanie jest moralnie poprawne".