Linuxblog - blog o Linuksie
Ubuntu 12.04 - czyli jak TO się robi
Canonical może uczyć całą linuksową społeczność jak tworzyć dobry system operacyjny. Naprawdę dobry.
26 kwietnia 2012 roku wydane zostało Ubuntu 12.04. Data ta może być o tyle ważna, o ile ta wersja jest game-changerem. Tym razem szansa na to jest duża, ponieważ Canonical obrało kierunek trochę inny niż Mac OS X czy Windows 8. Unity, choć ma potencjał bycia interfejsem na tablety, jest świetnie zoptymalizowane pod desktop. Zarówno desktop powerusera jak i totalnego laika.
Dash - wszystko w zasięgu ręki
Klawiatura, czyli to straszne urządzenie, którego unikają mniej i bardziej doświadczeni użytkownicy komputerów, wcale nie gryzie. Ubuntu pokazało, że przeklikiwanie się przez kilometrowe menu i tysiące okienek nie jest najefektywniejszym sposobem interakcji z komputerem. Wyszukiwanie - to jest najlepszy sposób na ogarnięcie dużej liczby informacji. Nie wierzycie? To nie używajcie Google.
HUD - wyszukiwania ciąg dalszy
Na Ubuntu przeszukujemy nie tylko content ale też menu niemalże każdego programu. Head's Up Display jest ulepszonym rozwiązaniem z Mac OS X. Pozwala na wyszukanie dowolnej opcji w menu programu. Ponadto uczy się tego, co najczęściej używamy - skróty klawiaturowe stają się niepotrzebne.
Unity - wreszcie szybko i stabilnie
Unity nie słynęło ze stabilności. W trakcie tworzenia tej wersji Ubuntu Canonical znacząco poprawił Compiza, a zatem również Unity. Teraz środowisko jest bardzo responsywne i płynne. Nie czekamy za wiele na uruchomienie się konkretnych aplikacji (chyba że są napisane w Javie :P). Zrobiłem testową instalację na maszynie wirtualnej - dałem jej 2 GB RAM, 2 rdzenie na procesorze. Nie czułem większej różnicy w porównaniu z instalacją natywną (tak samo bardzo szybko i płynnie działa)Co więcej, interfejs i system w końcu stanowią całość. Są ze sobą zintegrowane - Ubuntu to nie zwyczajowy Linux z milionem luźnych części. Unity ma także swój unikatowy i całkiem ładny styl - teraz wystarczy rzucić okiem na ekran i wiemy, że to Ubuntu, nie zastanawiając się czy to KDE czy Windows 7.
There's an app for this... - Centrum Oprogramowania Ubuntu
Jeżeli jesteś casualem, to w Centrum Oprogramowania znajdziesz wszystko co Ci potrzebne do pracy z komputerem. Programiści, animatorzy 3D, muzycy również znajdą tu wiele dla siebie. Gorzej z grafikami (PS na Linuksa nie widać...) i filmowcami (edytor Lightworks na Linuksa jest w powijakach, podobnie jak Novacut). Jeżeli system się rozpropaguje, to braki się uzupełnią. Platforma do rozpowszechniania softu już jest i pozwala ona zarobić. Teraz jeszcze tylko poczekajmy na spełnienie zapowiedzi Steama na Linuksa i mamy gotowy "rok linuksa na desktopach".
Ubuntu One - po co mi Google Drive?
U1 daje 5 GB wolnego miejsca w chmurze za darmo. Główna funkcją jest tutaj synchronizacja danych i aplikacje do obsługi tej usługi dostępne są nie tylko na Ubuntu, ale także na Windows, Androida i iOSa. Wersja na Maci w przygotowaniu. Po za synchronizacją danych możemy także przechowywać tam automatyczne backupy, listę zainstalowanych aplikacji (do łatwego odzyskania w razie reinstalacji), streamingować muzykę na inne urządzenia prosto z chmury i korzystać z aplikacji firm trzecich używających Ubuntu One.
Podsumowanie
Najlepszym podsumowaniem będzie poniższy screencast:
Dlaczego programować na Linuksa?
Linux jako platforma developerska do tworzenia aplikacji użytkowych. Serio ;)
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.
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! :D
Szczytem Pana niekompetencji w tym temacie jest stwierdzenie na temat Java:
"Jest ociężały, zawiły składniowo, ma braki podstawowych funkcjonalności (np. polimorfizm), nieprzejrzystą dokumentację i nie ma dobrych narzędzi developerskich."
Otóż Java jest językiem bardzo prostym składniowo, ma świetną dokumentację oraz jak wszystkie języki obiektowe obsługuje polimorfizm. To że Pan nie rozumie dokumentacji Java wynika z braków w Pana wiedzy. Narzędzia developerskie również stoją na bardzo wysokim poziomie. Kto zna dobrze eclipse lub inteliJ Idea wie o czym mówię.
To że niewiele jest dobrych aplikacji stand-alone nie znaczy wcale, że to wina języka. Aplikacje pisane w Java mają zastosowanie głównie po stronie serwerów i wszędzie tam gdzie potrzebna jest niezależność od środowiska rozruchowego - system operacyjny.
Kolejna wpadka na temat C++:
"Jeżeli jesteś konserwatystą i chcesz pisać niskopoziomowo..."
Jeśli chcesz pisać niskopoziomowo to piszesz w Asemblerze albo w kodzie bitowym. C++ jak i wszystkie wymienione tutaj języki są językami wysokiego poziomu.
Proszę nie poruszać zagadnień o których nie ma Pan redaktor pojęcia bo naraża się jedynie na śmieszność.

Kup najtaniej

Ja akurat pod OpenSUSE niczego nie konfiguruję z konsoli. Od tego mam Yast-a.