Java czy Python? Język dla początkującego programisty.

Wybór języka programowania to kluczowa decyzja dla początkującego programisty. Oczywiście nic nie stoi na przeszkodzie, aby zmienić język w trakcie nauki lub rozpocząć poznawanie drugiego po opanowaniu pierwszego, ale właściwie podjęta decyzja już na samym początku przygody z programowaniem może znacznie przyspieszyć karierę zawodową. Dziś zastanawiamy się, czy na początek będzie lepszy Python, czy Java.
 

Jeśli sprawdzimy najnowszy, sierpniowy Index TIOBE, szybko przekonamy się, że zarówno Python, jak i Java znajdują się w czołówce najpopularniejszych języków programowania. Obydwa języki zajmują niezmiennie już tę samą pozycję od wielu miesięcy. Java jest w zasadzie samodzielnym liderem, mając niemal dwukrotną przewagę nad drugim w zestawieniu językiem C. Mało tego, Javę uznano dwukrotnie za język roku – 2005 i 2015 rok. Python nie jest pod tym względem gorszy, również dwukrotnie zyskiwał laur – 2007 i 2010 rok. Inne zestawienia także pokazują dużą popularność obydwu wspomnianych języków. Na przykład wśród użytkowników portalu Stack Overflow Java ma 39,3% sympatyków, a Python – 31,7%, natomiast w rankingu RedMonk Java zajmuje drugie, a Python trzecie miejsce. Czy jednak to, że Java cieszy się najczęściej większą popularnością niż Python, oznacza, że warto rozpocząć naukę kodowania właśnie od tego języka? Ta kwestia nie jest wcale taka oczywista.
 

Java


Wiele znanych serwisów internetowych bazuje na Javie. Przykładem może być LinkedIn, Amazon czy Netflix. Chociaż język ten ma już 22 lat, nic nie wskazuje, aby wkrótce miał odejść w zapomnienie. Wręcz przeciwnie, jego popularność zwiększa się z roku na rok. Szacuje się, że obecnie może programować w nim nawet 9 mln developerów, a korzysta z niego około 7 mld urządzeń na świecie. Jego dużą zaletą jest bardzo dobra kompatybilność, która sprawia, że bez problemu pracują obecnie starsze aplikacje, napisane w Javie i bez zakłóceń będą pracowały w przyszłości, pomimo nieustannych aktualizacji Javy.

Java to obiektowy język programowania wysokiego poziomu, którego ojcem jest James Gosling. To właśnie on nadzorował zespół programistów, który w 1995 roku w Sun Microsytems opracował Javę. Ten język koncentruje się silnie na programowaniu obiektowym, ale w przeciwieństwie do języka C++, z którego wiele czerpie, nie ma tu dziedziczenia wielokrotnego, ale jest dziedziczenie po jednej klasie nadrzędnej. Dużą zaletą Javy jest niezależność od architektury dzięki temu, że mamy tu kompilację do kodu pośredniego, który jest wykonywany przez wirtualną maszynę (Java Virtual Machine) niezależnie od systemu operacyjnego. Nic dziwnego, że przed laty reklamowano ten język sloganem: „Napisz raz, uruchom wszędzie” („Write once, run anywhere”).
 

Python


Język Python to również bardzo ciekawy język programowania. Jego nazwa nie wywodzi się wcale od węża, jakby się mogło w pierwszej chwili wydawać, ale od nazwy angielskiej grupy komików Monty Python. Z tego języka korzysta między innymi amerykańska agencja kosmiczna NASA, YouTube czy Reddit.
 

Python to język wysokiego poziomu, który charakteryzuje się bardzo prostą składnią. Jego głównym twórcą jest holenderski programista Guido van Rossum, który założył, że Python będzie następcą języka ABC. Pierwsza wersja Pythona ukazała się w 1991 roku, potem światło dzienne ujrzały kolejne. Ten język jest bardzo elastyczny, pozwala na wiele swobody. Można używać go zarówno do programowania obiektowego, jak i strukturalnego, a nawet funkcjonalnego. Wiele osób wskazuje, że Python jest podobny pod wieloma względami do Perla, ale w rzeczywistości mamy tu do czynienia z większą prostotą i przejrzystością składni. W Pythonie stosuje się dynamiczne typy, a wszystkie wartości przekazuje się za pomocą referencji. Ten język programowania pozwala tworzyć zarówno serwisy internetowe, jak i aplikacje desktopowe, sieciowe czy skrypty, a nawet gry (do dyspozycji jest kilka silników obsługujących 2D i 3D).
 

Na który język postawić?


Zastanawiając się nad wyborem między Javą a Pytonem, początkujący programista ma nie lada dylemat. Warto przy tym wziąć pod uwagę kilka aspektów, tym bardziej że obydwa te języki nadają się dobrze do tego, aby rozpocząć przygodę z kodowaniem. Python wydaje się jednak prostszy w obsłudze dla żółtodzioba i w zasadzie nie wymaga skomplikowanej konfiguracji, aby rozpocząć z nim pracę. W przypadku Javy trzeba poświęcić nieco więcej czasu na konfigurację. Dodatkowo Javę trzeba kompilować. Do bardziej skomplikowanych aplikacji konieczne będzie użycie jednego z narzędzi do budowania (Ant, Maven, Gradle). Python jest językiem interpretowanym i w zasadzie jedynym problemem jest zarządzanie zależnościami. Python jest atrakcyjny dla początkującego programisty również dlatego, że jest bardzo zwięzły, nie trzeba w nim pisać tak wiele kodu, aby wykonać jedno zadanie, jak to jest w przypadku Javy. Być może na początku przygody z kodowaniem wyda się to nieistotne, ale gdy przyjdzie pracować nad bardziej rozbudowanymi projektami, zwięzłość Pythona staje się nieoceniona. Przy okazji warto zresztą od razu wyrobić w sobie nawyk pisania prostego i przejrzystego kodu. Skłonność do komplikowania nie jest cnotą w przypadku programisty.
 

Zastosowania


Dużo ważniejsze niż to jak wyglądają kwestie estetyczne są możliwości obydwu języków. Co można tworzyć piszą w każdym z nich? Pierwszą kategorią są aplikacje webowe, gdzie do pewnego stopnia skomplikowania Python wydaje się rozsądniejszym wyborem - ze względu na większą ekspresyjność. Framework taki jak Django, Flask czy web2py na pewno ułatwi pracę. Wgranie na serwer z punktu widzenia żółtodzioba też jest łatwiejsze. W końcu wgrywasz kod, a nie WAR-a/JAR-a jak to jest w przypadku Javy. Im aplikacje będą bardziej obciążone lub rozbudowane tym bardziej uwidaczniają się korzyści Javy. Na dobrze skonfigurowanym środowisku Java jest bardzo wydajna, a proces skalowania aplikacji był wielokrotnie przećwiczony przez tysiące zespołów javowców na całym świecie. Dlatego też Java to najukochańszy język środowisk finansowych - używany jest często jako rdzeń aplikacji tradingowych czy innych systemów finansowych. Nie oznacza to jednak, że Python skaluje się źle.
 

Kolejnym zastosowaniem Javy jest pisanie aplikacji na system Android. W zasadzie nie ma takiej możliwości jeżeli chodzi o Pythona. Trzeba jednak pamiętać o tym, że środowisko androidowe coraz bardziej stawia na Kotlina (jeden z języków odpalanych na JVM, który zdobywa popularność, szczególnie na Androidzie).
 

Innym obszarem jest data science i AI. Tutaj obydwa języki przez długi czas radziły sobie stosunkowo podobnie, jednak obecnie Python deklasuje Javę. Owszem - większość popularnych bibliotek oferuje API w Javie, jednak to Python jest tu dużo bardziej popularny. Jego skryptowa natura i zwięzła składnia bardziej wydaje się odpowiadać osobom, które zajmują się tymi działkami. Przykładowo TensorFlow (biblioteka do uczenia maszynowego od Google’a) wystawia API zarówno w Javie i w Pythonie, ale tylko to drugie ma ich „gwarancję stabilności”, jako najbardziej dojrzała wersja.
 

Również wiele zagadnień około-naukowych jest rozwiązywanych z pomocą Pythona. Biblioteki takie jak SciPy, NumPy czy EarthPy są używane przez naukowców do obliczeń czy wizualizacji. Jeżeli chodzi o wizualizację danych to jest to kolejny mocny punkt Pythona.
 

Java jest też bardzo mocna jeżeli chodzi o Big Data. Hadoop czy ElasticSearch są napisane właśnie w Javie. Oczywiście są to usługi, które można używać z każdą inną technologią, jednak pokazuje potencjał języka. Stanowiska z obszaru Big Data często są łączone ze znajomością Javy, która ma tu nieznacznie większy udział niż Python.
 

Na koniec warto wspomnieć, że pythona często używa się do skryptowania gier.
 

Ekosystem


Zaryzykuję stwierdzenie, że największą siłą Javy jest JVM. Tak, ten sam JVM, który - gdy źle skonfigurowany - przyprawi cię o ból głowy. Dlaczego robi różnicę? Bo można na nim odpalić kilka co najmniej fajnych języków programowania. Kotlin, Scala, Clojure, Groovy. Bonus Jython (implementacja Pythona na JVM) i JRuby (Ruby na JVM). Javowcy często uczą się innych języków rodziny JVM. Sczególnie Scala i Kotlin zdobywają popularność. Mogą one służyć jako uzupełnienie starej dobrej Javy albo mogą być wybrane jako główny język do projektu. Co najważniejsze po kompilacji będzie się je odpalać tak samo jak Javę. To rozszerza spektrum możliwości rozwoju programistów tego ekosystemu i niewątpliwie wnosi powiew świeżości. Cieszy również rozwój samej Javy, która w wersji 8 wprowadziła elementy funkcyjne.
 

Siłą ekosystemu Pythona są biblioteki, które wspierają bardzo wiele różnych dziedzin życia. To daje spore możliwości próbowania różnych rzeczy. Jedną z zauważalnych wad tego ekosystemu jest to, że nadal rozwijane są dwie wersje Pythona - 2.x i 3.x. Jest to sytuacja dość dziwna, ale pythonowcy jakoś sobie z tym radzą i twierdzą, że w codziennej pracy nie jest to problemem.
 

Werdykt?


Wiele przemawia na korzyść Pythona jako ciekawszego języka do uczenia się programowania. Przede wszystkim jest to prostota i różnorodność projektów w jakich można uczestniczyć - gdy już stanie się programistą. W końcu termin sztuczna inteligencja pobudza wyobraźnie o wiele bardziej niż system tradingowy.
 

Zauważa to coraz więcej osób. Warto wspomnieć, że to właśnie Python wyprzedził w brytyjskich podstawówkach język francuski pod względem popularności. Wygląda na to, że ofensywa Pythona nasila się na całym świecie, chociaż jeszcze do niedawna to właśnie Java dominowała w nauczaniu. Trend jednak się zmienia. Kto wie, być może wkrótce na czele Indexu TIOBE pojawi się właśnie Python i na dłużej stanie się liderem?