Komu Pythona, komu?

image W ostatnią sobotę miałem przyjemność wziąć udział w warszawskiej edycji konferencji Code Camp 2009. Prezentowałem przy tej okazji bieżący stan prac nad IronPythonem, .NET-ową implementacją kochanego przez wielu języka. Dzięki uprzejmości Michała Grzegorzewskiego trafiła do mnie próbka (zbiór?) komentarzy, w tym post w tym Macieja Aniserowicza, z którego jedno zdanie (“ (…) nadal nie do końca wiem, gdzie w codziennym programowaniu w .NET jest miejsce na IronPythona”) sprowokowało mnie do następujących przemyśleń:

  • IronPython wyrósł w sposób naturalny ze środowiska OS. Na początku zaczęło się od eksperymentu, który wykazać miał możliwości, a właściwie ograniczenia CLR z perspektywy interakcji z językami dynamicznymi. Dość powiedzieć, że jak głosi anegdota, wynikiem tej zabawy miał być artykuł o znamiennym tytule “Why .NET is a Terrible Platform for Dynamic Languages” *. Jak wiemy historia potoczyła się zupełnie inaczej, czego kulminacją był moment zatrudnienia Jima w Microsofcie. Dlaczego tak się stało? Czy faktycznie .NET tak bardzo potrzebował Pythona? Subiektywnie i nieco tajemniczo mogę odpowiedzieć “tak”, ale na pewno nie ze względów na wyjątkowość samego języka…
  • Biorąc pod uwagę historię, IP to przede wszystkim atrakcja dla licznego środowiska pasjonatów Pythona. Choć z perspektywy programisty platformy .NET może brzmieć to jak herezja, Python to język przynajmniej równie popularny jak C# (tak przynajmniej wyczytać można z  [1] i [2]). IP to okazja dla Microsoft do utworzenia trwałych relacji ze środowiskiem open source, opartych o konkretną, interesującą ofertę. Wciąż więc boleję, że nie przekłada się to na działanie bardziej “mainstreamowe”, w szczególności oficjalne wsparcie w ramach Visual Studio – cóż, w nadchodzącej edycji wygrał F#… ;)
  • Wracając do “miejsca IP w codziennym programowaniu w .NET”: o ile założymy, że – jak chce Maciej – że jest to dodatkowy język w projekcie, jedynym sensownym wykorzystaniem, które widziałbym jest faktycznie umożliwienie interakcji ze środowiskiem zewnętrznym w nieco bardziej cywilizowany niż niskopoziomowe API sposób, czyli wykorzystanie Pythona jako języka makr.
  • Ostatnim powodem, dla którego z perspektywy programisty .NET warto obserwować języki dynamiczne, jest szansa, na… zobaczenie, jak wyglądać będzie C# 5.0, 6.0 itd. :)

* Zainteresowanych tematem zachęcam do zapoznania się z artykułem “ IronPython: Engaging the Python Community in Its Own Language “. Ciekawa i pouczająca lektura opisująca początki całego projektu.