Relacja z Centrum Nauki Kopernik

Tak, wybrałem się do Centrum Nauki Kopernik. Po 11 listopada, w piątek, nie może być przecież tych ogromnych, niekończących się kolejek – yyy… myliłem się, były! Ponad 3 godziny spędzone na wietrze, przelotna mżawka… A mimo to zainteresowanie było ogromne. Podobno już o 8 rano ustawiła się kolejka, podczas gdy Centrum otwierają dopiero o 9. Nic dziwnego, ludzie przyjechali z całej Polski. Za nami stała rodzinka, która przemierzyła blisko 300 km, żeby stanąć w 100 metrowej kolejce do Centrum! :) Dlaczego nie otwarto go latem? O godzinie 15 weszliśmy do środka, a ja czułem się jak po maratonie! Na zwiedzanie zostały tylko 3 godziny, Kopernika zamykają o 18. Rzeczy do szafki rach-ciach i biegiem do kas!

CNK nie jest jeszcze ukończone, ale i tak zawiera mnóstwo eksponatów. 3 godziny to stanowczo za mało czasu, aby przeczytać każdą tabliczkę  i „pobawić” się każdą ekspozycją. Spokojnie trzeba by spędzić w Centrum ponad 4 godziny. Naprawdę jest fajnie, oczywiście nie wszystko robi wrażenie,  ale zdecydowana większość wystawy jest bardzo ciekawa.

Nie wiem, co napisano w broszurach, ale moim zadaniem interaktywne eksponaty Centrum kierowane są do 10+ latków. Umiejętność czytania ze zrozumieniem to podstawa, jeśli chce się wynieść z Centrum coś więcej niż tyko czystą dobrą zabawę. Wierzcie mi, że dla większości dzieciaków wciskanie przycisków dla samego podświetlenia to największa zabawa. Mało które z rodziców czytało swojemu dziecku informacje o danym zjawisku. Furorę robiły takie ekspozycje, jak wielkie chomikowe koło, symulatory trzęsienia ziemi i latający dywan, czyli zwykle karuzele. Ale żeby ktoś komuś tłumaczył, dlaczego w tym i tamtym zjawisku dzieje się tak a nie inaczej  – bardzo rzadko!

Jeśli chodzi o dorosłych, to oczywiście również warto zawitać do Kopernika. Zapewniam Was, że znajdziecie niejeden eksponat, na którym się głębiej zamyślicie. A jeśli nie, to z uśmiechem od ucha do ucha będziecie się bawić np. ramieniem robota :] Pamiętajcie, w każdym mężczyźnie jest małe dziecko!

Polecam wszystkim wizytę w Koperniku. Sam zastanawiam się nad kupnem karnetu na cały rok!

PS. Wspomniałem o szafkach na ubrania: ludzie byli tak zamyśleni, że wychodząc, nie wyjmowali dwuzłotówek wrzuconych do zamków szafek. Sprytne dzieciaki zarobiły na tym fortunę :)

Wstęp do Pracy Magisterskiej

Napisałem już kilka pierwszych stron – tych teoretycznych – mojej pracy magisterskiej. Przedstawiam wam streszczenie, wstęp, cel i zakres mojej pracy.

Streszczenie:

„Praca prezentuje współczesne podejście do tworzenia oprogramowania na platformy wieloprocesorowe. Opisano podstawy przetwarzania równoległego oraz przedstawiono sprzętowe i programowe mechanizmy jego realizacji. W pracy skupiono się na konstrukcjach kodu sekwencyjnego, które mogą podlegać zrównolegleniu. Wyróżniono kilka konstrukcji, które następnie poddano szczegółowej analizie. Rezultatem pracy jest zbiór algorytmów, które na podstawie statycznej analizy sekwencyjnego kodu programu pozwalają stwierdzić, czy dane fragmenty kodu mogą zostać zrównoleglone. Algorytmy te również pokazują, w jaki sposób należy przekształcić istniejące konstrukcje tak, aby można je było wykonać równolegle. Jeden z zaproponowanych algorytmów został zaimplementowany w aplikacji demonstracyjnej, która analizuje programy sekwencyjne stworzone w języku C#.”

Wstęp:

„W branży informatycznej istnieje przekonanie, że na każdy wyprodukowany układ scalony można znaleźć oprogramowanie, które w pewien zamierzony sposób wykorzysta wszystkie dostępne zasoby. Ta nieformalna zależność powodowała rozwój zarówno sprzętu, jak i oprogramowania, który pozwolił m.in. na stworzenie graficznych interfejsów użytkownika i produkcję trójwymiarowych gier 3D. Trend ten utrzymuje się nadal, zmuszając producentów do tworzenia coraz to bardziej wydajnych układów.

Dotychczas przyspieszanie procesorów polegało m.in. na zwiększaniu częstotliwości zegara, powiększaniu pamięci podręcznej oraz optymalizacji wykonania kodu. Zwiększająca się zgodnie z prawem Moora (1) liczba tranzystorów w układzie scalonym pozwalała na wszystkie te modyfikacje. Jednak w roku 2003 producenci napotkali trudności w zwiększaniu częstotliwości swoich układów – przeszkodą były ograniczenia wykorzystywanych materiałów, m.in. krzemu. Dopóki nie zakończą się badania nad nowymi rodzajami tranzystorów, jakie prowadzi, np. Intel (2), prędkości procesorów dostępnych na rynku nie ulegną znaczącym zmianom. Inżynierowie postanowili zmienić kierunek rozwoju procesorów i zamiast poszukiwać metody na ciągłe przyspieszanie zegarów, zdecydowali się umieszczać kilka jednostek obliczeniowych w jednym układzie. W ten sposób powstały nowe architektury – wielordzeniowe, które zrewolucjonizowały rynek komputerów osobistych. Procesory jednordzeniowe zostały całkowicie wyparte z rynku, a ich miejsca zajęły 2-, 4- i 8-rdzeniowe jednostki obliczeniowe.

Mimo przemian w architekturze komputerów i wprowadzeniu wielu jednostek obliczeniowych, programiści nadal tworzą rozwiązania kierowane na maszyny jednordzeniowe. Takie programy nie są w stanie wykorzystać zasobów wielordzeniowych maszyn, przez co użytkownicy nie odczują różnicy w działaniu aplikacji niezależnie od tego, czy będzie ona uruchomiona na 1- czy 4-rdzeniowym procesorze. Aplikacje tego typu stanowią większość produkowanego w dzisiejszych czasach oprogramowania. Inżynierowie nie posiadają wystarczającej wiedzy w kwestii tworzenia rozwiązań równoległych, uważają tę dziedzinę za zbyt trudną i czasochłonną w realizacji. Trudnością może być również fakt, że człowiek – z założenia istota myśląca – posiada sekwencyjną świadomość postrzegania świata. Potrzeba jest zatem zestawu narzędzi, które pomogą programiście w opanowaniu równoległości, wskażą możliwe zagrożenia wynikające z przetwarzania równoległego i pomogą je zlikwidować. Na rynku istnieją narzędzia wspomagające tworzenie aplikacji na nowe platformy, jednak brakuje rozwiązań pomagających przystosowywać istniejące aplikacje do nowych środowisk.”

Cel i zakres pracy:

„Celem pracy jest stworzenie i implementacja algorytmów, które w podanym kodzie sekwencyjnego programu potrafiłyby znaleźć fragmenty możliwe do zrównoleglenia. Algorytmy te powinny także ocenić, czy zmiana danego fragmentu programu w sposób pozwalający wykonać go równolegle, przyniesie wzrost wydajności aplikacji (np. skróci czas jej wykonania). Do budowy algorytmów powinny zostać użyte różne metody analizy kodu źródłowego i testowania oprogramowania. Statyczna analiza kodu pozwoli zbadać przepływ sterowania i zależności danych fragmentów kodu, a testowanie pomoże w oszacowaniu zmian w wydajności.

Praca zapoznaje czytelnika z podstawami programowania równoległego oraz możliwościami jego wykorzystania w projektach zorientowanych na architektury wielordzeniowe. Zostanie zaprezentowana różnica między zwykłym – sekwencyjnym – modelem tworzenia oprogramowania a modelem równoległym. Opisane zostaną podstawowe prawa z dziedziny obliczeń równoległych (m.in. granice przyspieszania i warunki Bernsteina (3)). Przedstawione zostaną różne metody zrównoleglenia, poczynając od architektur komputerów po najnowsze biblioteki programistyczne.

Druga część pracy jest poświęcona analizie konstrukcji kodu sekwencyjnego, które mogą podlegać zrównolegleniu. Opisano dokładnie różne warianty występowania wybranych konstrukcji oraz zaproponowano możliwe podejście zrównoleglenia. Na tej podstawie stworzono algorytmy.

W ostatniej części pracy przedstawiona jest aplikacja demonstracyjna, w której zaimplementowano jeden z zaproponowanych algorytmów. Stworzone narzędzie potrafi analizować kod w języku C# (4) i wskazywać w nim te fragmenty, które można zrównoleglić.”

[Aktualizacja]

Praca zaliczona na 5 :)

Niszczarka Cię odstresuje

Kiedy byłem jeszcze małym chłopcem, zawsze marzyłem o tym, żeby mieć niszczarkę. Wielokrotnie karmiony amerykańską telewizją nie raz widziałem pocięte krawaty w głupkowatych komediach. Coś musiało w tym być, bo często na niszczarkach właśnie można zauważyć ostrzeżenie przed „zbyt długimi” krawatami.

W związku z tym, że coraz częściej jestem na coś wkurzony – szczególne podziękowania dla EryGSM oraz mBanku – postanowiłem przeciwdziałać i kupić sobie coś, co pozwoli mi się błyskawicznie odstresować – tak, właśnie kupiłem niszczarkę ;]

Sprzęt nie jest tani, a w dodatku do wyboru za tę samą cenę (w Saturnie), miałem dużą i małą wersję fellowes shreddera. Wybrałem małą, „kieszonkową”, widoczną na zdjęciu, której pojemnik wystarczy podobno na 40 zniszczonych arkuszy A4. Wydajność akurat mnie najmniej interesuje – nie produkuję zbyt dużo dokumentów.

Pewnie zastanawiacie się, co mogę mieć do ukrycia?  Wydruki z banku, wydruki z bankomatów, potwierdzenia płatności kartą, dokumenty od wypłaty i wiele innych ciekawych rzeczy, które nie chciałbym, aby wpadły w niepowołane ręce. Zasada jest prosta: jeśli na czymś jest moje nazwisko albo znajduje się na tym samym stosie dokumentów, w których co najmniej jeden zawiera moje nazwisko, należy wszystko zniszczyć ;]

Przy okazji dowiedziałem się ciekawej rzeczy na temat niszczenia dokumentów. Jest 5 poziomów bezpieczeństwa, tzw. DIN, regulowanych normą DIN32757.  Moje cudo kwalifikuje się na poziomie 3, co oznacza, że szerokość ścinki nie powinna być większa niż 2 mm, a powierzchnia – większa niż 320mm^2. Powiem szczerze, że ścinki są chyba troszkę większe, niż zakłada specyfikacja. Dla porównania: poziom 6 to ścinki o powierzchni mniejszej niż 10mm^2 :) Więcej informacji znajdziecie na wikipedii.

Polecam wszystkim, czasem zestresowanym, pracownikom korporacji ;]

Linki:

Holidays & Delegations

Ostatnio trochę mniej piszę na blogu. Kolejny raz postanowiono mnie wysłać z pracy na obczyznę, a dodatkowo niedługo szykuje mi się urlop, jeee… ;-) Obiecuje, że po tych wszystkich wyjazdach znów ostro ruszę do pracy ;]

Do tego czasu pojawi się kilka „lekkich” notek, w szczególności recenzji książek, które mam okazje czytać ponad chmurami :)

Dobrzy programiści potrafią ruszyć swoją dupę

Czytaliście wpis o tym samym tytule na devBlogi.pl ? Przytoczę, jeden fragment:

Najbardziej destruktywnym symptomem nadmiernego planowania jest błędne pojęcie, iż bycie Architektem Oprogramowania(tm) oznacza rysowanie dużej ilości diagramów UML i przekazywanie ich grupie programistów w Bangalore.

Tak się składa, że jestem aktualnie w Bangalore, dokładnie pracuję w Bagmane Tech Park, i proszę Was wszystkich, nie rysujcie już więcej diagramów UML, proszę :) Mam wystarczająco dużo pracy, a w dodatku brakuje mi tu europejskiego jedzenia, zlitujcie się :)