Mieszanka wybuchowa – Unity i … programowanie funkcyjne

Drugim element, o którym wspominałem w poprzednim poście, który chcę wykorzystać podczas projektu jest programowanie funkcyjne w Unity za pomocą Clojure (dialekt Lispa) korzystając z  Arcadia Unity i edytora tekstu Emacs.

Trochę backgroundu

Unity używam już od 2 lat z przerwami. Na chwilę obecną to najbardziej popularny silnik do tworzenia gier (obok Unreal engine).
Lispem zaczęłem się interesować jeszcze na studiach, kilka lat temu.
Z czasem przerobiłem Practical Common Lisp po godzinach pracy, mam w planach przez wszystkich polecaną klasykę Strukturę i interpretację programów komputerowych, po przeczytaniu świetnego Pragmatycznego programisty, którego aktualnie kończę czytać.
Do tego doszło zainteresowanie się programowaniem funkcyjnym.
Od czerwca poprzedniego roku zacząłem wykonywać zadanka na HackerRanku korzystając z Clojure – to nowy dialekt, który działa na JVM i .NETcie i umożliwia bardzo prosty dostęp do funkcji Javy, czy C#, z którego korzystałem najbardziej w trakcie pracy.
Do tego dojdzie teraz głębsza nauka Emacsa, zbudowanego na własnym dialekcie Lispa – dzięki temu edytor nadaje się idealnie do pracy z każdym językiem lispowym (wiecie, Emacsie możecie nawet zagrać w Tetrisa? :D).

Cóż to za magia?

No dobrze, ale po co właściwie zmieniać konia, który wygrywa (Unity z C#)?
Jeszcze zanim zacząłem pracę, na studiach wpadłem na wiecznie żywy artykuł Erica Stevena Raymonda “How To Become A Hacker”. Wywarł on na mnie ogromne wrażenie i niejako zdefiniował moją filozofię względem programowania, która wtedy dopiero się kształtowała.

“LISP is worth learning for a different reason — the profound enlightenment experience you will have when you finally get it. That experience will make you a better programmer for the rest of your days, even if you never actually use LISP itself a lot.”

Dla kogoś kto pragnie zostać najlepszym w swoim fachu, chyba nie ma lepszej rekomendacji. 😉

FP w gamedev – raczej nie istnieje

Ostatecznym powodem ku temu, aby pójść właśnie w tym kierunku jest to, że programowanie funkcyjne w game developmencie praktycznie nie istnieje. To znaczy, nie jest zbyt powszechne. Ha! Znalazłem więc swoją niszę ;p
Ale nawet jeśli chyba wszystkim znany technologiczny bóg branży Carmack (pracujący teraz nad wirtualną rzeczywistością Oculus Rift, w której do skryptowania wykorzystuje dialekt Lispa Racket) przekonuje w swoim artykule “In-depth: Functional programming in C++” do podejścia funkcyjnego to wiedzcie, że coś się dzieje 😀

 

Co myślicie o takim połączeniu? Czy temat jest dla Was interesujący? Korzystaliście kiedyś z podejścia funkcyjnego?

4 Replies to “Mieszanka wybuchowa – Unity i … programowanie funkcyjne”

  1. Słyszałem o programowaniu funkcyjnym tylko w związku z haskelem, ale clojure zainteresował mnie najbardziej z Twojego artykułu. chyba ze względu na dostęp zarówno do .net jak i jvm. Mnóstwo ciekawych linków do przeczytania, biore sie za lekturę. A jaki masz konkretnie cel w dsp17? Bo drugą gre juz robisz?

    1. Mój cel w związku z dsp17 jest raczej nie tyle związany z projektem, co bardziej z ukazaniem transferu z programisty aplikacji biznesowych (które tworzyłem dobre 5 lat na praktycznie każdą platformę) na programistę branży gier. Projekty tworzę na potrzeby GameDevSchool.pl i game jamy. Dodaję jeszcze do tego swoje zainteresowanie właśnie programowaniem funkcyjnym i lifehackingiem (metodami produktywności) 🙂

  2. Czytając twoje posty człowiek jest w stanie spędzić pół dnia czytając linki, które podałeś, dzięki czemu ten artykuł staje się kopalnią wiedzy 🙂 Wielki plus +

    1. Wielkie dzięki za wielki plus 😀 Jeśli te posty nadal będą źródłem inspiracji i interesującej wiedzy dla Was to cele tego bloga będą wiecznie spełnione 😉

Leave a Reply