wtorek, 3 kwietnia 2012

Pasja i wolność

Człowiek został stworzony aby być wolnym. Taka jest nasza natura i jest ona wyjątkowa. Dlaczego tak twierdzę? Dlatego, że nasze działanie nie jest deterministyczne pod żadnym względem. A przynajmniej nie dotyczy to wszystkich ludzi. Dla przykładu rzućmy monetą. Czy ta moneta ma wybór, na którą stronę upadnie? Oczywiście, że nie. Ona jest zmuszona upaść tak jak będą tego chciały wszystkie siły na nią działające. Podobnie się ma to w teorii ewolucji. Żadne stworzenie nie miało wyboru, po prostu musiało powstać. Powód jest prosty, każda zmiana ewolucyjna następuje pod wpływem jakiegoś czynnika. Na przykład gdy zmniejszy się ilość pokarmu, którym żywi się dane stworzenie ale za to pojawi się jego nowy rodzaj to ono nauczy się w końcu go trawić. W przeciwnym wypadku by wymarło. Nie ma tu żadnego wyboru. Nie ma więc wolności.

Co zatem sprawia, że człowiek jest wolny? Coś co nazywamy wolną wolą. Choćby była obfitość pokarmu potrafimy nic nie zjeść i umrzeć z głodu. Choćbym nikomu nie uczynił niczego złego zawsze znajdzie się ktoś, kto z chęcią by mi dokopał. I wreszcie choćby niczego mi w życiu nie brakowało zawsze będę chciał więcej.

To naprawdę jest wyjątkowe. Być może zabrzmiało to ironicznie ale nie to było moim zamiarem. Wolność jest naprawdę wspaniała i tylko ona sprawia, że możemy coś tworzyć. Gdyby nie ona żylibyśmy dzisiaj jak każde zwierzę (a może bardziej jak roślina) - oddziaływając jedynie na otoczenie. Jednak do tworzenia potrzebna jest nam jeszcze jedna ważna cecha - cecha, która jest ukryta w każdym z nas. Coś co sprawia, że o wiele więcej przyjemności odczuwamy dając coś innym niż biorąc. To coś czyni nas większymi w oczach ludzi, którym pomogliśmy. To coś daje nam szczęście szczególnie wtedy, gdy daliśmy komuś coś bardzo mu potrzebnego. To coś właśnie to popycha nas do tworzenia.

Niestety czasami górę nad nami bierze chęć bycia obdarowanym, która to jest oczywiście również przyjemna. Wówczas tworzymy co raz mniej i kombinujemy jakby tu nie robić nic, a dostawać wiele. To dotyka każdego z nas. Ba, większość z nas zapomina całkowicie o dawaniu i tylko narzeka jak to mało zarabia bo ledwie może rodzinę wyżywić. Albo, że tak ciężko pracuje, a nic z tego nie ma. Wiem co teraz myślicie. Że nie mam rodziny to nie wiem jak to jest? Akurat mam rodzinę, którą utrzymuję. Że nie pracuję ciężko? A pracuję i to czasami nawet po 14 godzin 6 dni w tygodniu. Życie dla nikogo nie jest proste. Ale może być satysfakcjonujące i to bardzo.

Czy zadałeś sobie kiedykolwiek pytanie po co właściwie pracujesz? Większość ludzi pracuje po to aby zaspokoić własne potrzeby i to niezależnie czy ma rodzinę czy nie. Jak ma rodzinę to w pierwszej kolejności chce ich potrzeby zaspokoić, a w drugiej swoje. A co kieruje przeciętnym przedsiębiorcą? Chęć zaspokojenia cudzych potrzeb. Nie jego własnych lecz cudzych. Jego własne potrzeby są na drugim planie. On doskonale o tym wie, że jak stworzy coś potrzebnego dla innych to ludzie mu się odwdzięczą i to o wiele bardziej niż ilość pracy, którą w to włożył. To jest właśnie kwintesencją wolnego rynku i ludzkiej natury. Aby mieć najpierw musisz coś dać.

Oczywiście nie dotyczy to wszystkich, wielu ludzi rezygnuje z etatu na rzecz własnej działalności tylko po to aby dostać duże pieniądze za darmo. Mam tu na myśli wszelkiego rodzaju dotacje. Co jeszcze ciekawsze nikt nie zastanowił się skąd te pieniądze pochodzą. Nikt nie pomyślał, że są one zabierane ludziom pod przymusem i to tym ludziom, którzy tak bardzo narzekają na to jak nie wiele posiadają. Wielu przedsiębiorców również po drodze zapomina o celu jakim jest tworzenie czegoś dla innych i z powrotem zaczyna kombinować jak tu nic nie robić a mieć. Jak zatem tego uniknąć? Odpowiedzią na to jest pasja. Pasja tworzenia czegoś. Każdy z nas ją ma. Pasja sprawia, że już samo tworzenie dostarcza nam szczęścia. Pasja nas wciąga, pochłania. Dzięki niej zapominamy o trudnościach i jednocześnie nie daje nam zapomnieć o celu.

Zastanów się. Jakie chcesz mieć życie? Jakie życie chcesz pokazać swoim dzieciom? Chcesz aby narzekały przez całe życie na to jak mało posiadają? Jak to państwo o nich nie dba? Jakie to emerytury są niskie? Renta za mała? A może zasiłek za mały?

Zacznij żyć. Odkryj swoją pasję. Obserwuj ile szczęścia dajesz innym a sam będziesz szczęśliwy. I wreszcie kochaj ludzi bo dla nich żyjesz.

Vim i Makefile

Ostatnio się bardzo opuszczam w publikowaniu postów ale postaram się to naprawić. Dzisiaj będzie o kompilowaniu w Vimie. Pewnie jesteście przyzwyczajeni do środowisk IDE, w których aby skompilować program wystarczy po prostu kliknąć kompiluj. Mało tego, gdy w kodzie są jakieś błędy wyświetli nam się ich lista z możliwością przejścia od razu do danej linii. Oczywiście dzisiejsze IDE oferują nam nawet sprawdzanie poprawności kodu w trakcie pisania ale nie będę się akurat tą opcją dzisiaj zajmował (choć da się również to zrobić w Vimie).

Identyczną funkcjonalność w naszym edytorze otrzymamy za pomocą komendy make. Chodzi mi tutaj o polecenie w Vimie, a nie o program o tej samej nazwie. Polecenie to uruchamia program ustawiony pod zmienną makeprg i parsuje komunikaty, które ten program wyrzuca na ekran. Domyślnie pod makeprg ustawiony jest program make ale możemy to zmienić w bardzo prosty sposób:

:set makeprg=g++

Zamiast g++ możemy wpisać dowolną nazwę programu.

No dobrze, czyli polecenie make uruchamia zewnętrzny program, parsuje jego komunikaty ale skąd ma wiedzieć co one oznaczają? Otóż porównuje je z wzorcem zapisanym w zmiennej errorformat. Wzorce zapisane są w odpowiednim formacie, o którym można dokładnie poczytać w :help errorformat. Ja ograniczę się tylko do pokazania przykładu, który z resztą był mi bardzo pomocny.

Domyślnie w tej zmiennej zapisane są wzorce komunikatów programu make ale jedynie tych angielskich. Jako, że ja mam ustawiony język polski w systemie to make również komunikuję się ze mną po polsku. I w tym momencie na domyślnych ustawieniach Vim sobie nie radzi. Dopisałem więc do errorformat dodatkowe reguły:

%Dmake[%*\\d]:\ Wejście\ do\ katalogu\ `%f',%Xmake[%*\\d]:\ Opuszczenie\ katalogu\ `%f',%D%*\\a:\ Wejście\ do\ katalogu\ `%f',%X%*\\a:\ Opuszczenie\ katalogu\ `%f'

Po krótce omówię symbole, których tu użyłem:
  • Pierwsza linia (tzn. do przecinka) mówi o tym, że make zmienia katalog, w którym kompiluje pliki. Jest to bardzo ważne, ponieważ Vim sobie zapamiętuje, w których katalogach są one kompilowane. Przydaje się to w momencie, w którym jesteśmy aktualnie w katalogu A i błąd wyskoczył w pliku, który znajduje się w zupełnie innym katalogu. Bez tej opcji nie moglibyśmy od razu do niego przeskoczyć.

    Dokładniej mówiąc %D oznacza, że Vim ma się spodziewać zmiany katalogu. Wraz z %D musi wystąpić %f w tej samej linii. %f określa miejsce, w którym pojawi się nowy katalog.

    Cała linijka mówi tyle, że gdy napotkasz wyrażenie make[jakakolwiek_liczba]: Wejście do katalogu `ścieżka' to wiedz, że zostały zmieniony aktualny katalog na ten w ścieżce.

  • Druga linijka jest analogiczna. %X oznacza opuszczenie katalogu i tak samo z %X w parze musi wystąpić %f.

  • Dwa ostatnie wzorce mówią dokładnie to samo, z tą tylko różnicą, że zamiast spodziewać się make[jakakolwiek_liczba] Vim może spodziewać się jakiegokolwiek ciągu liter i/lub liczb.

Kolejny upierdliwy problem (tym razem związany z programem make) polega na tym, że nie zawsze jesteśmy akurat w katalogu, który zawiera plik Makefile. I co wtedy? Wykonanie polecenia :make zakończy się komunikatem, że nie znaleziono pliku Makefile. Na szczęście program make posiada opcję -C która określa katalog, w którym znajduje się ten plik. Vim jest na tyle sprytny, że pozwala nam na przekazanie dowolnych parametrów do wykonywanego programu. Dla przykładu będąc w katalogu A i wiedząc, że plik Makefile znajduje się w katalogu wyżej możemy po prostu wywołać :make -C ..

Można sprawę jeszcze bardziej uprościć pisząc funkcję w Vimie, która sprawdzi gdzie jest plik Makefile i automatycznie uruchomi program make z odpowiednią opcją. Ale o tym może innym razem. Dodam jeszcze tylko, że listę błędów i ostrzeżeń po wykonaniu :make możemy wyświetlić za pomocą :copen i najeżdżając kursorem na odpowiednią linię oraz wciskając enter przejdziemy automatycznie do odpowiedniej linii w danym pliku.

To tyle na dziś. Miłego kodowania!