Najlepszy programista F# w Polsce
Zgaduję, że jeszcze nikt w Polsce nie tytułuje się najlepszym programistą F#. Moje noworoczne postanowienie: nauczyć się języka F# od absolutnych podstaw oraz doprowadzić swoją wiedzę i praktyczne doświadczenie do stanu uzasadniającego posługiwanie się powyższym tytułem. Aha, zapomniałbym o czymś ważnym: prowadzić najbardziej poczytny i obsypany największą liczbą nagród blog na temat programowania w F#.
Oczywiście żartuję, ale tylko trochę.
Dlaczego akurat F#?
Na pewno w jednym z nadchodzących postów napiszę coś na temat zalet programowania w językach funkcyjnych, ale w chwili obecnej czuję, że liczba dokumentów na ten temat w zupełności zaspokaja potrzeby naszej planety w tym zakresie. Czuję się jednak zobowiązany uzasadnić, dlaczego chcę się nauczyć właśnie języka F# i dlaczego uważam, że będzie to pożyteczne dla mojej dalszej kariery i umiejętności.
F# jest językiem programowania, który łączy kilka paradygmatów: programowanie funkcyjne, imperatywne oraz obiektowe. Bardzo podoba mi się podejście, gdzie programista ma dużą swobodę w wyborze metody rozwiązania danego problemu. Kolejne zalety F#, według marketingowej broszury, to pełna integracja z CLR (czyli my wołamy klasy z .NET Framework lub spadkowy kod napisany w C# i vice versa) i Visual Studio (gdzie mamy do swojej dospozycji znany i lubiany mechanizm IntelliSense). Do nauki z pewnością przyda się interaktywne środowisko, w którym można wpisywać kod i natychmiast go wykonywać (REPL, czyli Read Eval Print Loop): uwalnia nas to od potrzeby uruchamiania kompilatora tylko po to, żeby przetestować jednowierszowy fragment kodu. F# to ciekawa propozycja ze strony Microsoftu: w pełni wspierany przez korporację praktyczny język programowania spoza głównego nurtu (za który uważam C#, Javę, Visual Basic, C++ a także w coraz większym stopniu Pythona i Rubiego).
Oprócz nieskończonych zalet samego języka, F# wydaje się mieć także praktyczne zastosowania. Sam Microsoft przyznaje się do stosowania F# a w Internecie można znaleźć zeznania osób, które stosowały F# do wizualizacji, obliczeń numerycznych, weryfikacji układów scalonych i programów, eksploracji danych oraz wyceny instrumentów finansowych (zostawiłem na koniec, bo to mój mały konik).
Starzy, mądrzy programiści (to Ci piszący już tylko książki...) twierdzą, że uczenie się nowych języków programowania, zwłaszcza bardzo różniących się od tych, których używaliśmy do tej pory, jest dobrym i sprawdzonym domowym sposobem na podniesienie swoich umiejętności. Postanowiłem zweryfikować, czy jest w tym chociaż trochę prawdy.
Jak zamierzam się uczyć?
Naukę F# zamierzam prowadzić na trzech płaszczyznach. Mam zamiar czytać o F# wszystko, co wpadnie mi w ręce, pisać w F# mniejsze i większe programy oraz opisywać na tym blogu wszystko, czego nauczę się po drodze. Tę ostatnią czynność uważam za kluczową w całym procesie uczenia się. Próba wyłożenia osobie trzeciej (zwłaszcza nieznanej) zdobytej wiedzy zmusi mnie do głębszego przemyślenia tego, czego się nauczyłem, powiązania tego z posiadaną już wiedzą i do jasnego sformułowania nowo nabytej wiedzy. Mam nadzieję, że blog wraz z upływem czasu będzie miał coraz więcej czytelników, którzy będą krytycznie oceniać moje kolejne wystąpienia i bezlitośnie demaskować wszystkie błędy i przekłamania, które mi się przytrafią (podejrzewam, że trochę ich będzie, zwłaszcza na początku).
Ważnym elementem nauki są przykłady. Postaram się, żeby przykłady, które będę wykorzystwał do nauki były ciekawe i w miarę oryginalne. Gdyby przykłady były zbyt hermetyczne i niezrozumiałe, tupcie i krzyczcie głośno!
Kim ja w ogóle jestem?
Wiem, że powinienem się przedstawić na początku. Miałem jednak poczucie, że gdybym tak zrobił, bardzo dużo osób zbyt szybko zaczęło kojarzyć moje nazwisko z tytułem najlepszego programisty F# w Polsce :).
Do rzeczy: nazywam się Marcin Hoppe i na codzień jestem inżynierem oprogramowania w polskim oddziale największej północnoirlandzkiej firmy software'owej Kainos Software Ltd. Na codzień pracuję z technologiami ze stajni Microsoftu, ostatnio głównie z systemem SharePoint. Od niedawna jestem również magistrem inżynierem informatyki (skończyłem Politechnikę Gdańską).
Na końcu chciałbym podziękować Michałowi za energię, którą wkłada w ten portal oraz za to, że zaprosił mnie do uczestnictwa w przedsięwzięciu pod nazwą zine.net.