{"id":225,"date":"2017-03-23T15:00:31","date_gmt":"2017-03-23T14:00:31","guid":{"rendered":"http:\/\/ekhart.pl\/?p=225"},"modified":"2017-03-23T15:00:31","modified_gmt":"2017-03-23T14:00:31","slug":"mieszanka-wybuchowa-unity-i-programowanie-funkcyjne","status":"publish","type":"post","link":"https:\/\/ekhart.pl\/index.php\/2017\/03\/23\/mieszanka-wybuchowa-unity-i-programowanie-funkcyjne\/","title":{"rendered":"Mieszanka wybuchowa &#8211; Unity i &#8230; programowanie funkcyjne"},"content":{"rendered":"<div>Drugim element, o kt\u00f3rym wspomina\u0142em <a href=\"https:\/\/ekhart.pl\/index.php\/2017\/03\/20\/umarl-krol-niech-zyje-krol-o-nowym-projekcie\/\">w poprzednim po\u015bcie<\/a>, kt\u00f3ry chc\u0119 wykorzysta\u0107 podczas projektu jest <strong>programowanie funkcyjne w Unity<\/strong> za pomoc\u0105 <a href=\"https:\/\/clojure.org\/\">Clojure<\/a> (dialekt <a href=\"https:\/\/pl.wikipedia.org\/wiki\/Lisp\">Lispa<\/a>) korzystaj\u0105c z \u00a0<a href=\"http:\/\/arcadia-unity.github.io\/\">Arcadia Unity<\/a>\u00a0i edytora tekstu <a href=\"https:\/\/www.gnu.org\/software\/emacs\/\">Emacs<\/a>.<\/div>\n<p><!--more--><\/p>\n<h2>Troch\u0119 backgroundu<\/h2>\n<div><a href=\"https:\/\/unity3d.com\/\">Unity <\/a>u\u017cywam ju\u017c od 2 lat z przerwami. Na chwil\u0119 obecn\u0105 to najbardziej popularny silnik do tworzenia gier (obok <a href=\"https:\/\/www.unrealengine.com\/what-is-unreal-engine-4\">Unreal engine<\/a>).<\/div>\n<div>Lispem zacz\u0119\u0142em si\u0119 interesowa\u0107 jeszcze na studiach, kilka lat temu.<\/div>\n<div>Z czasem przerobi\u0142em\u00a0<a href=\"http:\/\/www.gigamonkeys.com\/book\/\">Practical Common Lisp<\/a>\u00a0po godzinach pracy, mam w planach przez wszystkich polecan\u0105 klasyk\u0119\u00a0<a href=\"http:\/\/helion.pl\/ksiazki\/struktura-i-interpretacja-programow-komputerowych-klasyka-informatyki-abelson-harold-sussman-gerald-jay-sussman-julie,a_000m.htm\">Struktur\u0119 i interpretacj\u0119 program\u00f3w komputerowych<\/a>, po przeczytaniu \u015bwietnego\u00a0<a href=\"http:\/\/helion.pl\/ksiazki\/pragmatyczny-programista-od-czeladnika-do-mistrza-andrew-hunt-david-thomas,pragpv.htm\">Pragmatycznego programist<\/a>y,\u00a0kt\u00f3rego aktualnie ko\u0144cz\u0119 czyta\u0107.<\/div>\n<div>Do tego dosz\u0142o zainteresowanie si\u0119 <a href=\"https:\/\/pl.wikipedia.org\/wiki\/Programowanie_funkcyjne\">programowaniem funkcyjnym<\/a>.<\/div>\n<div>Od czerwca poprzedniego roku zacz\u0105\u0142em wykonywa\u0107 zadanka na <a href=\"https:\/\/www.hackerrank.com\/ekhart\">HackerRanku<\/a> korzystaj\u0105c z <a href=\"https:\/\/clojure.org\/\">Clojure<\/a>\u00a0&#8211; to nowy dialekt, kt\u00f3ry dzia\u0142a na JVM i <a href=\"https:\/\/clojure.org\/about\/clojureclr\">.NETcie<\/a> i umo\u017cliwia bardzo prosty dost\u0119p do funkcji Javy, czy C#, z kt\u00f3rego korzysta\u0142em najbardziej w trakcie pracy.<\/div>\n<div>Do tego dojdzie teraz g\u0142\u0119bsza nauka <a href=\"https:\/\/www.gnu.org\/software\/emacs\/\">Emacsa<\/a>, zbudowanego na w\u0142asnym dialekcie <a href=\"https:\/\/pl.wikipedia.org\/wiki\/Lisp\">Lispa<\/a> &#8211; dzi\u0119ki temu edytor nadaje si\u0119 idealnie do pracy z ka\u017cdym j\u0119zykiem lispowym (wiecie, Emacsie mo\u017cecie nawet zagra\u0107 w Tetrisa? :D).<\/div>\n<h2>C\u00f3\u017c to za magia?<\/h2>\n<div>No dobrze, ale po co w\u0142a\u015bciwie zmienia\u0107 konia, kt\u00f3ry wygrywa (Unity z C#)?<\/div>\n<div>Jeszcze zanim zacz\u0105\u0142em prac\u0119, na studiach wpad\u0142em na wiecznie \u017cywy artyku\u0142\u00a0Erica Stevena Raymonda <a href=\"http:\/\/www.catb.org\/esr\/faqs\/hacker-howto.html#skills1\">&#8220;How To Become A Hacker&#8221;<\/a>. Wywar\u0142 on na mnie ogromne wra\u017cenie i niejako zdefiniowa\u0142 moj\u0105 filozofi\u0119 wzgl\u0119dem programowania, kt\u00f3ra wtedy dopiero si\u0119 kszta\u0142towa\u0142a.<\/div>\n<div><\/div>\n<p><\/p>\n<blockquote>\n<div>&#8220;LISP is worth learning for a different reason \u2014 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.&#8221;<\/div>\n<\/blockquote>\n<p><\/p>\n<div><\/div>\n<div>Dla kogo\u015b kto pragnie zosta\u0107 najlepszym w swoim fachu, chyba nie ma lepszej rekomendacji. \ud83d\ude09<\/div>\n<div><\/div>\n<h2><abbr title=\"Functional Programming\">FP<\/abbr> w gamedev &#8211; raczej nie istnieje<\/h2>\n<div>Ostatecznym powodem ku temu, aby p\u00f3j\u015b\u0107 w\u0142a\u015bnie w tym kierunku jest to, \u017ce programowanie funkcyjne w game developmencie praktycznie nie istnieje. To znaczy, nie jest zbyt powszechne. Ha! Znalaz\u0142em wi\u0119c swoj\u0105 nisz\u0119 ;p<\/div>\n<div>Ale nawet je\u015bli chyba wszystkim znany technologiczny b\u00f3g bran\u017cy\u00a0<a href=\"https:\/\/pl.wikipedia.org\/wiki\/John_Carmack\">Carmack<\/a> (pracuj\u0105cy teraz nad wirtualn\u0105 rzeczywisto\u015bci\u0105 Oculus Rift, w kt\u00f3rej <a href=\"https:\/\/youtu.be\/ydyztGZnbNs?t=7m17s\">do skryptowania wykorzystuje<\/a> dialekt Lispa <a href=\"http:\/\/racket-lang.org\/\">Racket<\/a>) przekonuje w swoim artykule <a href=\"http:\/\/www.gamasutra.com\/view\/news\/169296\/Indepth_Functional_programming_in_C.php\">&#8220;In-depth: Functional programming in C++&#8221;<\/a>\u00a0do podej\u015bcia funkcyjnego to wiedzcie, \u017ce co\u015b si\u0119 dzieje \ud83d\ude00<\/div>\n<div><\/div>\n<p>&nbsp;<\/p>\n<div><strong>Co my\u015blicie o takim po\u0142\u0105czeniu? Czy temat jest dla Was interesuj\u0105cy? Korzystali\u015bcie kiedy\u015b z podej\u015bcia funkcyjnego?<\/strong><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Drugim element, o kt\u00f3rym wspomina\u0142em w poprzednim po\u015bcie, kt\u00f3ry chc\u0119 wykorzysta\u0107 podczas projektu jest programowanie funkcyjne w Unity za pomoc\u0105 Clojure (dialekt Lispa) korzystaj\u0105c z \u00a0Arcadia Unity\u00a0i edytora tekstu Emacs.<\/p>\n","protected":false},"author":1,"featured_media":236,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[28,3,26,27],"tags":[32,29,31,30,24],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/ekhart.pl\/wp-content\/uploads\/2017\/03\/explosive-8.gif?fit=1240%2C1094&ssl=1","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p8oxcO-3D","jetpack-related-posts":[],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/ekhart.pl\/index.php\/wp-json\/wp\/v2\/posts\/225"}],"collection":[{"href":"https:\/\/ekhart.pl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ekhart.pl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ekhart.pl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ekhart.pl\/index.php\/wp-json\/wp\/v2\/comments?post=225"}],"version-history":[{"count":9,"href":"https:\/\/ekhart.pl\/index.php\/wp-json\/wp\/v2\/posts\/225\/revisions"}],"predecessor-version":[{"id":234,"href":"https:\/\/ekhart.pl\/index.php\/wp-json\/wp\/v2\/posts\/225\/revisions\/234"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ekhart.pl\/index.php\/wp-json\/wp\/v2\/media\/236"}],"wp:attachment":[{"href":"https:\/\/ekhart.pl\/index.php\/wp-json\/wp\/v2\/media?parent=225"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ekhart.pl\/index.php\/wp-json\/wp\/v2\/categories?post=225"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ekhart.pl\/index.php\/wp-json\/wp\/v2\/tags?post=225"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}