Dlaczego programować na Linuksa?

Na linucha nie ma softu — od kiedy używam komputera i internetu, słyszę tę mantrę prawie codziennie. Cóż system ten ma 1-2% rynku więc nie dziwne, że nie ma Photoshopa czy innych bajerków. Pisząc aplikacje na Linuksa nie można tez liczyć na kokosy z tego, przynajmniej nie w ciągu najbliższych 2-3 lat. Tak czy inaczej – Linux do tworzenia aplikacji jest po prostu przyjemny, a dywersyfikacja dostępnych platform czyni tą platformę najszybciej rozwijającą się. Nie wiemy też, czy po wypuszczeniu Windows 8, wielu ludzi nie przejdzie na Ubuntu. To są czyste spekulacje i gdybanie, przejdźmy zatem do konkretów.
Już za pięć lat deficyt pracowników w tej branży może wynieść na polskim rynku pracy nawet 30 proc.
Już za pięć lat deficyt pracowników w tej branży może wynieść na polskim rynku pracy nawet 30 proc.

W czym programować?

Python

Pythona możemy spokojnie nazwać linuksowym.NETem. Dlaczego? Pełni on podobną rolę – duży procent wszystkich aplikacji na Linuksa jest napisanych własnie w Pythonie. Jeżeli masz Linuksa, to na pewno używasz Pythona. Skąd ta popularność? Python to język, który pozwala na bardzo szybkie tworzenie aplikacji, gdyż nie zmusza developera do zastanawiania się nad takimi szczegółami implementacji, jak zarządzanie pamięcią, wskaźniki czy architektura procesora. Jest to język dynamicznie i silnie typowany, w pełni obiektowy (bardziej niż Java cy C#) z elementami języków funkcyjnych (list comprehension, wyrażenia lambda). Spełnia filozofię batteries included, czyli ma od groma bibliotek standardowych, a kolejne setki najróżniejszych narzędzi czekają w repozytorium. Język ten zrywa z filozofią składni C, dzięki czemu jest dla człowieka czytelniejszy i szybko można się go nauczyć. W czym programować? Myślę, że najlepsyzm do tego narzędziem jest odpowiednio skonfigurowany Gedit z paroma wtyczkami z repozytorium.

Vala i C#

Postanowiłem zamieścić te dwa języki pod jedną kategorią, dlatego, że są bliźniaczo do siebie podobne, z tą mała róznicą, że Vala jest językiem kompilowanym do kodu wykonywalnego, nie bajtkodu dla CLR, jak to robi C#. Jeżeli umiesz programować w C#, to również umiesz w Vala. Przestawienie się z jednego języka na drugi jest proste i nie wymaga zbytniego zaangażowania, a zaletą Vali nad C# jest to, ze po prostu jest szybsza, gdyż jest natywna. Jeżeli jednak nie widzi ci się pisać programów tylko na Linuksa, wtedy z pomocą przychodzi Mono – otwarta implementacja.NET na wszystkie najpopularniejsze platformy. Na Androida i iOSa też. Więc jeżeli jesteś programistą C# i chcesz pisać na Linuksa, nic nie stoi na przeszkodzie abyś to robił. Pamiętaj o jednym – chcesz aby twoja aplikacja w C# była ładna? Używaj GTK# zamiast WindowsForms na Linuksie – lepiej się zintegruje z systemem. Jakie narzędzie do tych dwóch języków? Monodevelop – jest to bardzo rozbudowane IDE, które ze względu na filozofię, możemy spokojnie nazwać linuksowym Visual Studio.

C/C++

Jeżeli jesteś konserwatystą i chcesz pisać niskopoziomowo i wydajnie, Linux również daje do tego odpowiednie narzędzia. Myślę, że nie ma co się rozwodzić nad tymi językami i komukolwiek je przedstawiać. IDE do tych języków, na które moim zdaniem trzeba zwrócić szczególną uwagę to QtCreator – zoptymalizowane pod użytek z bibliotekami Qt, które są jedną z dwóch wartych uwagi propozycji, dostępnych pod Linuksem (chodzi mi o GTK i Qt).

W notce celowo pomijam Javę, gdyż uważam ten język za przestarzały i nie warty uwagi ( wiem, że zaraz polecą na mnie gromy, ale to jest mój blog – czyli mogę wygłaszać swoje subiektywne zdanie:P ). Jest ociężały, zawiły składniowo, ma braki podstawowych funkcjonalności (np. polimorfizm), nieprzejrzystą dokumentację i nie ma dobrych narzędzi developerskich. Fakt NetBeans i Eclipse są, ale one po kontakcie z Visual Studio, Monodevelop czy QtCreatorem do niczego się nie nadają. Jakość tych drugich jest nieporównywalnie lepsza. Także pisząc czy to na Linuksa czy Windowsa – Javę omijamy szerokim łukiem.

Podsumowanie

Linux, w przeciwieństwie do Windows czy Mac OS, wspiera OOTB bardzo dużo różnych technologii, więc każdy znajdzie coś dla siebie. Dzisiaj robię grę w Pythonie z pomocą biblioteki PyGame, jutro program w Haskellu, a pojutrze piszę i testuję stronę w Ruby on Rails, a przy tym nie muszę się okładać ociężałym oprogramowaniem z milionem instalatorów. Dzięki współdzieleniu bibliotek, programy linuksowe są mniejsze i oszczędniejsze pamięciowo, a znienawidzone zależności, zdejmują z developera ciężar dostarczenia środowiska uruchomieniowego dla swojego programu. Potrzebujesz Mono czy Ruby’ego? Po prostu zawrzyj je w zależnościach.

Jak dostarczyć oprogramowanie do użytkownika końcowego? Prosto – korzystając z rzeczy takich, jak np. Centrum Oprogramowania Ubuntu.

Więcej informacji: http://developer.ubuntu.com – na tej stronie znajdziecie informacje jak napisać swoją aplikację i jak ją sprzedać.

A więc: koderzy do pisania appsów na Linuksa! 😀