Jaki byłby dobry pierwszy funkcjonalny projekt programistyczny?
Chcę zakończyć hukiem mojego projektu licencjackiego i chcę go zakończyć funkcjonalnym projektem programistycznym. Nie uczyć się go w szkole, ale jesteśmy zachęcani, aby spróbować nauczyć się nowych rzeczy siebie i pomyślałem, uczenie się nowego paradygmatu nie tylko nowy język byłby doskonałym ćwiczeniem dla mnie, i zapewne coś ciekawego dla nauczycieli, aby zobaczyć zbyt ,
Problemem jest to, chcę zacząć trochę z wyprzedzeniem o moim projekcie, aby skorzystać z letniego wypoczynku i uzyskać lepsze zrozumienie na temat programowania funkcjonalnego i zapoznać się z jednego języka.
Co byś powiedział, byłoby to projekt dobrą praktyką, która jest nieco trudne, ale także pozwala mi uczyć się języka, paradygmat itd A potem co można by pomyśleć, byłoby to projekt dobry (bardziej zaawansowany jeden) do mojego projektu kawalerskim?
Docenione zostaną również sugestie dotyczące najlepszego języka na początek podczas programowania funkcjonalnego.
Odpowiedzi:
To generalnie łatwiejsze, jeśli na coś stosunkowo matematycznych lub logicznych - języki programowania funkcjonalne są na ogół dobrze nadaje się do zastosowań, które stanowią pewną formę transformacji z danego wejścia do wyjścia.
Kilka pomysłów, w przybliżeniu według stopnia trudności:
Algorytmy genetyczne - napisz program, który ewoluuje rozwiązania do określonego zadania, w którym rozwiązania są reprezentowane w prostej DSL. Bawiłem się, zanim zbudowałem małe boty, które polują na żywność w siatce 2D i opracowują różne rodzaje strategii
Parsing combinators - zbuduj bibliotekę parsera kombinatora, która pozwoli ci zbudować parser dla dowolnego języka za pomocą funkcji wyższego rzędu.
Jeśli naprawdę chcesz wyzwania, możesz spróbować napisać grę komputerową ... pamiętaj, że jest to trudne zadanie, ponieważ gry mają ogromną liczbę zmiennych stanów, które mogą być trudne w zarządzaniu w funkcjonalnym stylu programowania. Oczekiwać, aby dowiedzieć się więcej niż kiedykolwiek chciałeś wiedzieć o monady etc .....
Polecam Clojure jako pragmatycznego języka funkcjonalnego. Używałem go przez około 18 miesięcy i jestem bardzo zadowolony z wyboru. Główne powody to:
Możesz bardzo łatwo wypróbować podstawy dzięki:
źródło
Zanim zaczniesz myśleć o konkretnych projektach, zacznij od nauki podstaw programowania funkcyjnego, dzięki czemu można mieć dobry pomysł z typów projektów, które byłyby dobre dopasowanie.
Najlepszym miejscem do rozpoczęcia jest prawdopodobnie Struktura i interpretacja programów komputerowych (SICP), który jest oparty na dialekcie schemat Lisp. Jest to klasyczny tekst CS, a pełny tekst jest dostępny online (link podany).
Jeśli chcesz dostać się kręci, i użyć bardziej nowoczesny język funkcjonalny kierowaną JVM, przyjrzeć Clojure. Istnieje nawet dostosowana wersja SICP specjalnie dla Clojure .
Idąc nad tekstem SICP, można zorientować się, dlaczego programowanie funkcjonalny jest tak dobrze nadaje się do pewnych typów zadań, ćwiczenia i może inspirować się pełnoprawnym projektu. Jeśli zdecydujesz się pójść drogą Clojure i chcą zbadać niektóre istniejące projekty, istnieją pewne linki dobre tutaj .
źródło
Analiza ilościowa
Jeśli uważasz, że finanse są dość interesujące, wykonywanie pewnych zadań ilościowych za pomocą programowania funkcjonalnego jest dobrym rozwiązaniem, ponieważ jest bardzo algorytmiczne. Mówię o teorii portfela i takich rzeczach, jak wskaźniki Sharpe i Sortino itp. Stwórz aplikację, która analizuje zwroty z funduszu i daje różne statystyki, diagramy itp.
Polecam F # tylko dlatego, że myślę, że jest to łatwy język funkcjonalny na początek, ma dobre narzędzia i dobrą platformę. Inne alternatywy to seplenienie i clojure, ale trudniej się ich nauczyć.
źródło
Na początek możesz spróbować zaimplementować małą grę w blackjacka w F #. To jest zadanie domowe przypisane podczas tego krótkiego samouczka wideo . Rozwiązanie jest również dostępne w sieci (oraz w jednym z filmów).
źródło
Możesz napisać tłumacza dla schematu lub seplenienia z OCaml.
źródło
Który język funkcjonalny byłaś myśli. Każdy ma inną charakterystykę. Jedynym językiem, który wywarł na mnie największy wpływ, był Haskell i sugerowałbym, abyś zrobił to samo.
źródło
Można również przyczynić się do pewnego projektu open source.
Na przykład, w języku programowania Frege projektu, jest wiele do zrobienia. Dla przykładu, można dbać o przenoszeniu bazy bibliotek Haskell. To sprawi, że swego rodzaju ekspertem Haskell podczas pracy na nim.
źródło