Miesiąc: Maj 2011

Maasym the Mage

Miesięczna przerwa na blogu nie jest powodem do dumy (wpisy miały być co najmniej raz na tydzień) więc muszę nadrobić zaległości 😉

Tak się złożyło, że postanowiłem wziąć udział w konkursie DevLogs. Była to jedna z moich najlepszych decyzji w ostatnim czasie. Dlaczego – o tym później. Mój projekt nazywa się Maasym the Mage i w skrócie przedstawia się jako ‚platformówka 2d w której chodzimy magiem i odgrywając melodyjki rzucamy czary zabijając przeciwników, gromadząc expa, ucząc się nowych czarów a przy okazji mamy okazję uratować świat przed zagładą. Nie ma sensu powtarzać dwa razy tego samego więc w tym miejscu podlinkuję devlog. Z bardzo dużą dozą prawdopodobieństwa mogę powiedzieć, że to będzie moja ostatnia próba napisania gry. Kończenie projektów zawsze sprawiało mi ogromne problemy, ale ten będzie ciągnięty aż do ukończenia. Dlaczego? Bo chcę ostatecznie przelać czarę goryczy.

Niestety ale, programowanie gier z całą pewnością nie jest tym co chcę robić w życiu. Szkoda tylko, że ta refleksja przyszła tak późno. No cóż, mimo wszystko lepiej teraz niż za rok. Gry były bodźcem, który pchnął mnie do programowania. Jednak nie są czymś co może mnie utrzymać przy monitorze cały dzień. Fakt, że nie zauważyłem tego wcześniej był zapewne spowodowany tym, że nie kończyłem całkowicie swoich gier. Pojawiały się różne myśli, ale brakowało wystarczająco silnego bodźca. Maasym narodzi się w bólach choćby nie wiem co. Ale dzięki niemu próg cierpienia(*) zostanie przekroczony, a ja wyzbędę się wszelkich wątpliwości.

* – to za duże słowo, ale aktualnie nie przychodzi mi na myśł żadne lepsze.

Reklamy

Linux vs. Windows

Jak widać blog wreszcie doczekał się dawno zapowiadanego tekstu o jakże kontrowersyjnej tematyce. Zdaję sobie sprawę, że w Internecie można znaleźć mnóstwo tego typu tekstów, przy czym znaczna ich cześć ogranicza się do flame’u w rodzaju „bo wy wszystko musicie robić w konsoli”, „Zamknij się debilu – wy jesteście za głupi na konsolę”, „Sam się zamknij, Windows przynajmniej działa a nie tak jak wasze, które musi tworzyć 464432468448723 dystrybucji z których każda obsługuje coś innego” itd…

Wartości merytorycznej nie posiada to żadnej, choć można znaleźć tym coś pozytywnego – trolle trollują w komentarzach, i nie szkodzą na forach.
Istnieją również porównania które przynajmniej wg ich autorów są obiektywne. Zdaniem ich czytelników jednak nie, gdyż jak powszechnie wiadomo „gdzie dwóch polaków tam trzy opinie”.
Mój tekst będzie czysto subiektywny, nie będę nawet starał się być obiektywnym. Będzie to opinia zwykłego (no dobra, programista nie mieści się w ramach zwykłego) użytkownika. Na początek tło historyczne.

Windows – jak zapewne miażdżąca większość użytkowników pecetów, pierwszy kontakt z komputerem odbywał się w ramach Windowsa. Był to na pewno Windows 95 lub 98 uruchomiony na demonie z Procesorem Pentium II. Wtedy nie wiedziałem nawet że jest coś takiego jak Linux, słyszałem tylko, że gdzieś tam za oceanem żyje sobie UNIX i są też komputery Macintosh. Z całą pewnością to obcowanie z Okienkami wykształciło we mnie podstawowe nawyki, przez pryzmat których nadal oceniam oprogramowanie. Tak więc Windows był ze mną od początku mojej przygody z pecetami.

Nie pamiętam kiedy pierwszy raz usłyszałem o Linuksie. Prawdopodobnie przeczytałem w jakimś magazynie (kiedyś namiętnie kupowałem Komputer ŚWIAT i KŚ Ekspert). Pierwszy „żywy” kontakt miałem na własnym komputerze. Były to zamierzchłe czasy. Kupiłem małą książeczkę chyba „Biblioteczka KŚ. Linux dla każdego” z dołączonym systemem Mandrake 10. Nie odważyłem się jednak zainstalować systemu gdyż w owej pozycji jak byk stało „zalecane połączenie z Internetem”. Z czasem jednak uległem pokusie i Mandrake znalazł się na dysku. Trochę się nim pobawiłem, jednak szybko został rzucony w kąt. No bo co ja – linuksowy n00b mogłem robić w kompletnie nieznanym środowisku? W książeczce były opisane tylko podstawowe rzeczy typu – jak wyłączyć komputer. Tego to samemu można się domyślić. Później kiedy przyszedł net pobrałem Ubuntu (zdaje się, że 8.04). Miałem zajęcie na trochę dłużej, ale ciągle coś nie działało. To nie było kodeków, to UbuDSL nie może połączyć się z netem (nie ma to jak zajebisty chiński sprzęt ZTE ZXDS 852). Momentem przełomowym była wygrana w konkursie netbooka. Oczywiście z preinstalowanym Windows 7 Starter. System jednak nie wytrzymał długo i po ~miesiącu padł. Uratować się nie dało, pobierać siódemkę i kombinować z nagraniem jej na pendrive nie chciało mi się, więc dałem trzecią szansę Linuksowi. Od tego czasu cały czas pracuje pod kontrolą jakiegoś Linuksa (Ubuntu->Mandriva(skończyło się na błędzie przy instalacji)->Kubuntu->Ubuntu->Fedora->Ubuntu 11.04(aktualnie).

OK. Burzliwe dzieje OSów mamy już za sobą czas więc przejść do części merytorycznej(?). Tekst jest podzielony na sekcje, z których każda opisuje jedno, istotne dla mnie zagadnienie (są one w przypadkowej kolejności).

1. Dostępność oprogramowania:

Windows: Tutaj w zasadzie nie ma o czym pisać. Wszystko co lubię, chcę, potrzebuję działa na Windows. Jedynym wyjątkiem jest Amarok którego chciałem ujrzeć w Okienkach, lecz niestety poniosłem porażkę. Co prawda można ponoć zainstalować KDE dla Windows, ale mnie ta karkołomna sztuka się nie udała.
Linux: Tutaj sprawa wygląda gorzej. Osobiście mi najbardziej doskwiera brak gier z Windows. Tak, jest Wine ale albo nie działa wcale, albo działa beznadziejnie. Choć trzeba przyznać, iż ostatnio gram coraz mniej (obecnie prawie wcale) więc ten argument traci na znaczeniu. Jedynym poważnym brakiem jest Visual Studio – jest Eclipse(które u mnie chodzi koszmarnie wolno) czy Code::Blocks(które jakoś mnie odrzuca). Choć i tutaj sytuacja może się zmienić (ale o tym kiedy indziej, wspomnę jedynie, że mam na myśli pisanie kodu w Emcasie, i samodzielne tworzenie makefile’ów (no dobra, prędzej już skryptów bash)). Braku innych aplikacji jakoś nie odczuwam specjalnie. LibreOffice jest w mojej opinii marną podróbą MS Office’a, ale od biedy da się używać. Zwłaszcza, że mam zamiar wreszcie przerzucić się na Gnumeric + LaTeX. Do pozostałych zastosowań mam wszystko czego potrzebuję: Blender, GIMP, Firefox, Banshee doskonale spełniają swoje zadania (ba, z wyjątkiem ostatniego używam ich także pod Windows). Jeżeli nie gra się w gry to oprogramowanie dostępne na pingwina w zupełności powinno wystarczyć.

2. Sprzęt:

Windows. Nie miałem nigdy żadnych problemów z instalacją sprzętu. Do wszystkiego są stery. No dobra – mój słynny modem (tak, ten chiński ZTE) miewał problemy z odpaleniem się po wybudzeniu ze stanu wstrzymania.
Linux. Tutaj również nie było problemów ze sprzętem (poza jednym chlubnym wyjątkiem – tak! chińskim modemem! (dzięki Bogu zainwestowałem w router)). Zaskoczyło mnie nawet, że jakieś 15 sekund po pierwszym podłączeniu mojego HP PSC 1315 mogłem już drukować, podczas gdy instalacja tego samego sprzętu w systemie Billa trwała kilkanaście minut włączając przymusowy restart. Jak napomknąłem wcześniej jedyne problemy sprawiał mój jakże wspaniały chińczyk. Początkowo używałem go za pomocą apletu UbuDSL, który jednak z czasem umarł. Potem usiłowałem użyć programu Linnet jednak skończyło się to failem. Ostatecznie dzięki instrukcjom z pewnego bloga (niestety nie pamiętam jakiego) sam pobrałem, skompilowałem, skonfigurowałem i uruchomiłem modem. Działał co prawda bardzo kapryśnie ale działał. Potem przypomniałem sobie, że na płytce od Orange były jakieś stery pod modem (nawiasem serdecznie odradzam każdemu jakiekolwiek usługi z tej firmy). Były to te same źródła, które pobrałem z netu z dołączonym pakietem .rpm i jakże zachęcającą instrukcją w postaci „Jeżeli masz coś innego niż Red Hat to musisz umić skompilować jądro”. Zaiste bardzo wyczerpujące. Tak więc pomijając felerny modem mogę stwierdzić, że oba systemy radzą sobie ze sprzętem tak jak należy.
Tutaj mała dygresja. Czy naprawdę jest wielkim problemem dołączenie G++ do Ubuntu, żeby można było od razu wklepać magiczne make? Rekurencyjne ściąganie pakietów z poziomu strony WWW i sprawdzanie ich zależności ręcznie było katorgą.

3. Programowanie:

Windows. O oprogramowaniu już pisałem więc teraz rzecz o bibliotekach. Różnicą w stosunku do Linuksa jest dostępność DirectX który jest znacznie bliższy memu sercu niż OpenGL. Mamy super WinApi, które pozwala robić różne fajne rzeczy. No i mamy rozszerzenia Visuala do C++ takie jak #pragma once, ovveride, czy hash_map (które niestety nie są zbyt kompatybilne z G++). Natywna obsługa .NET pozwala łatwo i szybko tworzyć małe programy. Standardowe skrypty są bardzo biedne, ale z pomocą przychodzi PowerShell. Tu jednak czai się pułapka: nie jest on instalowany domyślnie (ktoś mi powie jaki jest tego sens?). Ogólnie programuje się łatwo, szybko i przyjemnie.
Linux. System wydaje się być bardzo dostępny dla deweloperów. Wszystko siedzi w jakiś skryptach, mamy źródła do wszystkiego. GCC wydaje się być standardem w kompilatorach C++ (nie poparte żadnymi badaniami!), podobnież obsługuje nawet w większości C++0x. Standardowa powłoka (bash) bije na głowę swojego oponenta – cmd.exe (honor Windows ratuje PowerShell). Jak wygląda użycie API systemowego nie jestem w stanie powiedzieć, gdyż nigdy go nie używałem. Większość znanych bibliotek działa również na Linuksie (Allegro, SFML, OpenGL, OpenAL, Qt, GTK+, FastDelegate, Curl, …). Ogólnie pod tym względem Linux wydaje się przeważać, choć znów jedna poważna wada – brak obsługi DirectX – jest dla mnie nie do przebicia.

4. Obsługa systemu:

Windows. Ciężko jest ocenić wygodę użytkowania Windowsa jeżeli zostało się na nim wychowanym. Jedyny odczuwalnym przeze mnie mankamentem jest brak wirtualnych pulpitów. Tak, są aplikacje firm trzecich, ale IMO działają one gorzej niż tragiczne. Wgl, menadżerowi okiem Windowsa przydałby się mały tuning wzorem Compiza (nie mam tu na myśli wodotrysków lecz wygodne ułatwienia typu WIN+E z Compiza). Windows jest 100% pure GUI. Z definicji wszystko powinno być klikalne a najlepiej gdyby końcowy użytkownik nigdy nie widział okna Konsoli. W przypadku pani Krysi to działa, ale ja dość często używam konsoli i niestety jest to udręką. Nie chodzi tu o sam fakt trybu testowego, lecz o wyjątkową toporność czarnego okienka. Sytuację poprawia trochę program Console2, ale nadal jest to marna namiastka Terminalu znanego z Linuksa.
Linux. Tutaj jest trochę trudniej – głównie ze względu na braki kodeków, mp3, javy itd… Ale jeśli ogarniamy owy system można pracować na nim równie wydajnie jak na Windows (lub nawet bardziej). Słynny terminal jest narzędziem budzącym chyba największą kontrowersją i przyczyną flamewar’ów. Moje stanowisko jest takie: jest to świetne nadrzędzie, jeżeli się z nim oswoi. Początkowo jest ciężko ale z czasem ls, cd, mkdir, rm, cp, mount, sudo, dpgk, make, apt-get, … potrafią w dużym stopniu uprzyjemnić obsługę komputera.

5. Pozostałe

Windows. Windowsa używają wszyscy. Wszyscy narzekają na BSoDy, wszyscy są ekspertami od administracji, wszyscy mają super radę na wszelkie problemy (zrób se formata). Wszyscy mają wszystko pirackie. Wszyscy są nudni.
Linux. Linuksa używają zwykle ci bardziej ogarniający. Potrafią poradzić lepiej niż „format”. Ogólnie tworzą pewną społeczność. Wolne oprogramowanie posiada pewne niezaprzeczalne zalety nad własnościowym. Używanie Linuksa jest fajne. Hakerzy używają Linuksa.
Tak oto doszliśmy do końca. Który system jest lepszy? Żaden. Każdy musi odpowiedzieć sobie na to pytanie sam. EOF.
Let the flamewar begin.