Własny język programowania, czy warto?

Dlaczego powinieneś spróbować?
Rozwój i nauka zawsze są w cenie!
Miałeś kiedyś frajdę z posiadania starego motocykla lub samochodu? Nawet jeśli nie, to może interesują Cię takie pojazdy. Wówczas to uczysz się na nich jeździć, traktujesz to jako doskonałą rozrywkę. Problem z nimi polega na tym, że stare samochody psują się częściej niż jeżdżą. Co się wtedy dzieje? Nawet jeśli nie jesteś mechanikiem samochodowym, jest to twoje hobby, więc zaczynasz majsterkować, rozbierać, składać, naprawiać. Okazuje się nagle, że zacząłeś rozumieć, jak to wszystko działa, masz nową wiedzę, nowe zasoby. Pozwalają Ci one spojrzeć na dziedzinę twojego hobby z szerszej perspektywy i odkryć nowe możliwości. Czytałem kiedyś zabawne zdanie: “Każdy porządny programista PHP stworzył w swojej karierze przynajmniej jeden framework lub CMS”. Myślisz, że robią to po to, by być drugim DHH i mieć kasę? Szanse na to są dramatycznie niskie. Mimo braku sukcesu na tym polu, osiągają coś bezcennego - wiedzę. Ponieważ stworzyli oni framework czy cms, wiedzą doskonale, jakie problemy można w tej dziedzinie napotkać, jak to wygląda od środka. Co za tym idzie - potrafią lepiej od Ciebie wykorzystać stworzone przez kogoś rozwiązania, bo mają na ten problem szerszą perspektywę. Jakiś czas temu (chyba w 2005) w pracy pt. Constructing a Metacircular Virtual Machine in an Exploratory Programming Environment - polecam, opisano, w jaki sposób stworzono Klein VM - metacykliczną wirtualną maszynę dla języka Self. Napisano też, dlaczego to zrobiono. Mianowicie, by nauczyć się czegoś nowego. Doświadczenia w konstruowaniu tego środowiska pozwoliły przenieść je na grunt Javy (badania sponsorował SUN) i wykorzystać w projekcie Maxine (nowa wirtualna maszyna Javy). Jak widzisz, takich rozwiązań nie tworzy się, by od razu dostać kasę, ale tworzy się je po to, by mieć wiedzę, która więcej kasy przyniesie w przyszłości. Dlatego, jeśli jesteś programistą, powinieneś spróbować stworzyć własny język programowania - jest to lepsza perpektywa i wiedza na przyszłość.

By poznać podstawy, nie musisz już zamykać się w garażu na 4 miesiące
Do tej pory, żeby się tego nauczyć, musiałeś przejść długą drogę poprzez publikacje takie ja np. ta powyższa (jest świetna, ale nie najprostsza). Trzeba znać zasadę działania kompilatorów, lekserów, parserów, drzew AST itd. Będziesz się tego uczył np. na studiach doktoranckich, ale pytanie, czy masz na to czas? Dobra wiadomość jest taka: już nie musisz! Jakiś czas temu ukazała się następująca książka:

Tu jest wszystko, co musisz wiedzieć o podstawach
Przykładowy akapit:
The book will guide you through the creation of a simple language written in Ruby. Once you’ve been through the exercises in the book and feel ready to dive in and create a real language, you’ll start from the template language running on the JVM (Java Virtual Machine) included with the system. And just to make sure you’re ready to use the template right away, we’re also including a screencast explaining the code.

Po przeczytaniu jej moge stwierdzić, że to jest najprostsza metoda, by nauczyć się czegoś w tematyce konstrukcji języków programowania. Zresztą są tam na tyle ciekawe przykłady, że bazując na nich Jeremy Ashkenas stworzył projekt CoffeScript.

Jest mnóstwo ciekawych i przydatnych narzędzi

Kiedy już zaczniesz się bawić, spójrz na następujące dwa projekty. Pierwszy to OMeta - w skrócie: object-oriented language for pattern matching. Potężne narzędzie, spodoba Ci się! Druga z ciekawych rzeczy to Helvetia - w skrócie, jak szybko stworzyć własnego SQL, czy rzymski system liczbowy, będący językiem programowania.

To miłe uczucie, kiedy płacą Ci za dobrą zabawę

Teraz już poważnie. Przyszłość biznesu jak i wyszukiwania zależy od semantyki. W przypadku google trwają prace nad semantycznymi zapytaniami: “Jak będzie jutro pogoda?”. Natomiast przyszłość programistów i osób łączących ich z klientami zależy od BNL (Business Natural Languages). Jest to ewolucja DSLi, czyli języka, który pozwoli menedżerom na zapis ich celów biznesowych wprost w języku programowania. Np.:

employee John Doe
compensate 500 dollars for each deal closed in the past 30 days
compensate 100 dollars for each active deal that closed more than 365 days ago

Jeśli stosujesz Behavioral Driven Development w swoich projektach, to wiesz, jak fantastycznie to działa i jak upraszcza twoje działania.

By tworzyć takie języki, czyli dostosowywać się do tego, co niesie przyszłość, trzeba znać lub uczyć się narzędzi wypisanych powyżej. Zatem podsumowując całość i odpowiadając na pytanie w tytule - tak, warto się tego nauczyć, lub przynajmniej spróbować!

Komentarze


  • Facebook
  • Twitter
  • Digg
  • Delicious
  • Google Buzz