Forum jest zablokowane. Podczas blokady nie można dodawać ani edytować wiadomości.
Temat: Programowanie funkcyjne
Ostatnio bardzo podoba mi się paradygmat funkcyjny. Gdzieś czytałem, że niektóre uczelnie uważają wykłady o nim za ważniejsze niż o programowaniu obiektowym. Chciałbym zaproponować dopuszczenie rozwiązań w języku Haskell, stworzenie osobnej funkcyjnej rundy, dywizji lub inne włączenie języków funkcyjnych.
Poruszyłem temat innych języków programowania w "Kwestie techniczne" (bo tego subforum jeszcze nie było).
Mateusz Radecki napisał:
> Inne języki są problematyczne głównie przez zadania interaktywne, chcielibyśmy mieć możliwość zaskakiwania nimi i nieodcinania nagle kogoś piszącego w innym języku. To samo z zadaniami rozproszonymi, których powrotu nie wykluczamy.
Pomysł rozwiązania tego dla zadań interaktywnych: prowadzić interakcję przez stdin / stdout tak jak w innych zadaniach. To rozwiązałoby problem różnych języków, a także ma dodatkowe zalety: program ma dostęp tylko do swojej pamięci (więc nie ma ryzyka, że dwa moduły będą sobie nawzajem psuć dane), a także limit na pamięć nie byłby dzielony z nieznanym cudzym kodem. Łatwiej też przetestować rozwiązanie, bo można prowadzić interakcję bezpośrednio z terminala bez potrzeby pisania dodatkowego kodu testującego.
Mateusz Radecki napisał:
> Inne języki są problematyczne głównie przez zadania interaktywne, chcielibyśmy mieć możliwość zaskakiwania nimi i nieodcinania nagle kogoś piszącego w innym języku. To samo z zadaniami rozproszonymi, których powrotu nie wykluczamy.
Pomysł rozwiązania tego dla zadań interaktywnych: prowadzić interakcję przez stdin / stdout tak jak w innych zadaniach. To rozwiązałoby problem różnych języków, a także ma dodatkowe zalety: program ma dostęp tylko do swojej pamięci (więc nie ma ryzyka, że dwa moduły będą sobie nawzajem psuć dane), a także limit na pamięć nie byłby dzielony z nieznanym cudzym kodem. Łatwiej też przetestować rozwiązanie, bo można prowadzić interakcję bezpośrednio z terminala bez potrzeby pisania dodatkowego kodu testującego.
O Haskellu: obawiam się, że w tym języku da się, ale może być trudno napisać wydajny kod -- wszystko przez to, że obliczenia są domyślnie leniwe, co często może spowolnić kod wielokrotnie, jeśli nie jest się bardzo ostrożnym pod tym względem. Więc to może być na Potyczkach frustrujące doświadczenie.
Osobiście prędzej używałbym nie-leniwego języka funkcyjnego, jak SML albo Ocaml, ale z jakiegoś powodu niestety wyszły one trochę z mody.
Osobiście prędzej używałbym nie-leniwego języka funkcyjnego, jak SML albo Ocaml, ale z jakiegoś powodu niestety wyszły one trochę z mody.
To chyba musiałaby być osobna „funkcyjna” runda albo dywizja. Na przykład jedno lub dwa zadania z dywizji „A” wymagałyby rozwiązań funkcyjnych albo w niektórych rundach pojawiłyby się zadania z osobnej dywizji „F”.
Ocaml może wyszedł z mody, ale dość modna jest jego "inkarnacja" - reasonml
Nie ma żadnej szansy na coś takiego jak osobna funkcyjna runda, czy funkcyjna dywizja. W PA mają się liczyć algorytmy, a języki programowania to tylko narzędzia. Sam pomysł pozwolenia na programowanie w językach funkcyjnych nie jest jakiś szczególnie zły i gdyby jakiemuś technicznemu się zachciało, to być może by się dało, ale jakieś dostosowywanie formuły konkursu do tego już byłoby absolutnie niezgodne z duchem.
Zgadzam się z Wojtkiem. Poza tym, "programowanie funkcyjne" to bardziej nazwa stylu programowania niż użytego języka. W C++ również można programować funkcyjnie. Po prostu niektóre języki mają przyjemniejszą notację i lepsze wsparcie do tego niż inne.