poniedziałek, 8 listopada 2010

Krótkie podsumowanie, czyli "w odpowiedzi na komentarz..."

Przyzwyczaiłem się już do sytuacji, że pod moimi wpisami w blogach nie ma komentarzy. Wynika to albo z braku zainteresowania Internautów moimi wypocinami, albo z nikłej kontrowersyjności tekstów (nikogo nie wnerwiam). Stawiam na to pierwsze - przypomnina mi się koszulka z napisem: "Nobody reads your blog!" ;-) Jednak czasem komentarz się pojawia, a ja go całkowicie nie zauważam (patrz: pierwsze zdanie o przyzwyczajeniu). Muszę pogrzebać w konfiguracji bloga - może jest jakieś informowanie mailem, czy coś w tym rodzaju?

Ostatnio odkryłem, że użytkownik demikaze napisał komentarz pod moim wpisem testowym, opublikowanym przez jedną z pierwszych wersji programu BlogTweetProject (był to jednocześnie mój pierwszy program napisany w Pythonie). demikaze zastanawiał się, jakie jest moje spojrzenie na Pythona, jeśli dotychczas programowałem w "klasycznych" językach, jak Java, C++ czy C#. Zastanawiał się też, od którego momentu można potraktować dany język programowania jako poważne narzędzie (czytaj: do wykorzystania w celach produkcyjnych i zarobkowych).
Postaram się teraz napisać parę słów w odpowiedzi (spóźnionej) na ten interesujący komentarz.

Python od początku bardzo mi się spodobał. Pozytywne wrażenie zrobiła na mnie jego prostota, pozwalająca na poświęcenie większej uwagi temu, co mam zrobić, a nie jak mam to zrobić. Spodobało mi się założenie, które przyjęli zapewne twórcy Pythona - żeby nie kazać programiście skupiać się na tak denerwujących rzeczach, jak ręczne przetwarzanie łańcuchów znaków, tworzenie i obudowywanie masą kodu wyszukanych struktur danych itp. Spodobało mi się również bogactwo bibliotek/pakietów/modułów zawierających kod do rozwiązywania prawie każdego problemu, jaki sobie wymyśliłem (oczywiście ostrożnie podchodząc do poważnych problemów, jak np. tworzenie zaawansowanych aplikacji typu enterprise, raczej skupiłem się na drobniejszych, przynajmniej chwilowo). Zresztą wiele rzeczy mógłbym tutaj wymieniać: świetną składnię, dyscyplinę wcięć, ułatwiającą analizę kodu, proste testy, do których nie trzeba pisać specjalnego kodu... No i do tego dochodzi jeszcze niesamowita sprawność i szybkość działania, jak na język interpretowany.

Znalazłem też kilka wad. Co prawda nie dopatrzyłem się póki co niekonsekwencji (prędzej niedoróbek),  no, może z pominięciem niektórych bibliotek - czasem są to eleganckie moduły obiektowe, czasem zbiory funkcji, a ja nie przepadam za mieszaniem różnych stylów programowania (jeśli w moich programach takie coś ma miejsce - bo nie da się wszystkiego uniknąć czy obejść - mam problemy z zasypianiem ;-)), jednak trochę "szarpie" mnie kompletnie wyluzowane podejście do obiektowości. Może będzie to bluźnierstwo, ale obiektowość w Pythonie poniekąd przypomina mi tą z Turbo Pascala 7.0 (firmy Borland, dla DOSu) - wszystko publiczne, żadnych ograniczeń... No ale ma też to swoje zalety - jak kiedyś napisał Łukasz Langa: Python zakłada, że jesteśmy inteligentnymi programistami i wiemy, co robimy. Toteż dyscyplinę w obiektowości możemy narzucić sobie sami.

Co do granicy, która przebiega między językiem-zabawką a językiem-narzędziem, cóż, chyba nie ma czegoś takiego, a przynajmniej nie jest to stabilna granica. Jeśli się okaże, że Twój projekt, czy choćby tylko jego fragmenty łatwiej i sprawniej da się zaimplementować w Pythonie, to zrób to - wyłącznie na tym zyskasz. Moje zdanie jest w tej materii niezmienne: język programowania to narzędzie, które powinniśmy umieć odpowiednio wykorzystać. Nie możemy na siłę lansować jednego języka programowania i jednego paradygmatu jako narzędzi uniwersalnych ("jeśli masz w ręku młotek, to wszystko dokoła wygląda jak gwóźdź") . Im więcej znamy języków, tym sprawniejszymi i elastyczniejszymi jesteśmy programistami. I jeśli jesteśmy PRAWDZIWYMI programistami, to nie ma mowy o rozproszeniu uwagi - nieprawdziwe jest w naszym przypadku stwierdzenie, że jak ktoś się zna na wszystkim, to tak naprawdę nie zna się na niczym.

Chwilowo dobrze się bawię Pythonem - rozwijam Kolejny Program do Blogowania!, mam zamiar skrobnąć klienta gpsd, pobawić się w oprogramowanie Wii Remote (sprawuje się świetnie - choć trzeba dużo cierpliwości, żeby zmusić cwiid do stabilnej pracy w moim 64-bitowym Ubuntu) i popróbować czegoś poważniejszego (bazy danych itp.). Zobaczymy! W każdym razie o wszystkim będę pisał na tym blogu.