PDC 2010 OnLine Experience – Relacja

Wybrałem się wczoraj do siedziby Microsoftu w Warszawie na relacje z otwarcia konferencji PDC 2010. Punkt 17:30 stawiłem się u bram budynku na Al. Jerozolimskich 195A (tak, znam ten adres na pamięć). Na początek rejestracja, która polegała jedynie na uzupełnieniu pola „Skąd wiesz o spotkaniu?”. Zero kontroli, każdy mógł wpaść, wolnych miejsc było sporo. Stojąc w kolejce do owej „rejestracji” można było zagrać na XBox’ie 360 z dostawką Kinect/Natal! Bajer!!!

Wybiła 18:00 zaczynamy! Przed keynotem puszczono prezentację wszystkich ośrodków, które biorą udział w akcji OnLine. Z każdego kontynentu wybrano jeden, z którego na chwilę pokazano obraz z kamery. Europę reprezentowała Holandia. Konferencję otworzył Steve Balmer, CEO Microsoftu. Nie było „developers, developers, developers…”, szkoda, widać lata już nie te. W Warszawie rok temu widziałem go na żywo i miał troszkę więcej energii. Nie zabrakło jednak typowego dla niego „bla bla bla” oraz „…. it, baby”  W całej prezentacji skupiono się na dwóch rzeczach: Windows Azure oraz Windows Phone 7. Zaskoczyło mnie to trochę, bo rok temu głównym tematem była właśnie chmura. Jak widać Microsoft wierzy, że tutaj jest przyszłość – przyznam się, że wierzę i ją ;]

No i najważniejsza sprawa. Microsoft poszedł w ślad Google i swoim gościom wręczył lśniące telefony z WP7. A my? My nie dostaliśmy. Na sali krążyły dwie „siódemki”, ale żadna do mnie nie dotarła. Nie płakałem, bawiłem się nią już jakiś czas temu, w końcu pracuję w Samsungu :-)

O 20:00 zaczęły się sesje techniczne. Nie zostałem już – trochę się zmęczyłem tym 2 godzinnym keynotem. Wszystkie prezentacje są dostępne są online, więc w wolnej chwili na pewno do nich zajrzę.

Cały event oceniam dość pozytywnie, choć ani popcornu, ani zagryzki nie było ;/ Nie było też jakiegoś otwarcia, „dzień dobry”, po prostu usiedliśmy i puścili nam strumień online, można było się bardziej postarać.

Wszystkich zachęcam do odwiedzenia witryny konferencji: microsoftpdc.com

Promuj

PDC 2010 OnLine Experience

Tak jak oficjalnie ogłoszono na portalu CodeGuru.pl, Microsoft Polska przygotowało specjalną niespodziankę dla fascynatów technologii .NET – bezpośrednią transmisję z PDC 2010 w siedzibie firmy, w Warszawie, na żywo, z Redmond, 28 października o 16:30!

Czym jest PDC? PDC (Professional Developer Conference) to największa konferencja Microsoftu skierowana do developerów.

Czym jest PDC OnLine Experience? PDC OnLine Experience jest eventem, który dedykujemy osobom, które są bliskie naszej firmie i których nie widzimy na co dzień w biurze.

Choć zaproszenia na CG pojawiło się 15 października, to już dzień wcześniej (albo jeszcze wcześniej, kto wie) krążył mail z tymi ‚tajnymi informacjami’. Dziękuję, że i mój adres znalazł się na czyjejś liście, i miałem okazję zarejestrować się wcześniej ;-)

To wydarzenie, z cyklu kto pierwszy ten lepszy i liczba gości ograniczona, a mimo szybkiej rejestracji, trafiłem na listę oczekujących. Opatrzność jednak czuwała i dziś dostałem potwierdzenie ;-) Będę!

Developers, Developers, Developers….

Promuj

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 :)

Recenzja Książki – The Best Software Writing

Zafascynowany pierwszą książką Joela Spolsky’ego postanowiłem sięgnąć po kolejną pozycję z jego nazwiskiem na okładce. Jedyna papierowa wersja, jaką udało mi się pożyczyć, to The Best Software Writing I. Pozycja w redakcji Joela, ale większość tekstu nie jest jego autorstwa. Znajdziecie tam zbiór wartościowych (zdaniem redaktora Spolsky’ego) wpisów na blogach innych fascynatów tworzenia oprogramowania. Szczerze mówiąc, o żadnym z autorów nigdy nie słyszałem, nie ma także nikogo z naszego kraju – a szkoda.

Książka niestety zdecydowanie gorsza niż Joel on Software (którą recenzowałem nie tak dawno [1]), a to tylko z jednego powodu: każdy rozdział to opowieść innego autora, a w związku z tym i inny styl. Niektóre czyta się wyśmienicie (tak jak Joela), przy innych się zasypia. Tematyka jest różna, czasem znacznie odbiegająca od tworzenia oprogramowania. Przed każdym rozdziałem Joel pisze kilka słów – wiadomo wtedy, czy temat będzie ciekawy czy zupełnie nie wart uwagi.

Nie mogłem przebrnąć przez 2 wyjątkowo długie wpisy Claya Shirkyiego [2]: A group Is Its Own Worst Enemy [3] oraz Group as User: Flaming and the Design of Social Software [4]. Social Software – hasło, które tak mocno zyskało na wartości ostatnimi czasy (nasza-klasa, facebook) – w 2004 roku, kiedy powstawał wpis, znaczyło tyle, co lista mailingowa.

Najprzyjemniej za to czytało się wpisy Erica Sinkiego [5]: Closing the Gap Part 1 [6], Part 2 [7] oraz Hazards of Hiring [8], Paula Grahama [9]: Great hackers [10] oraz nieznanego autora eu_spouse: EA: The Human Story [11] mógłbym wymieniać tak dalej…

Książka warta przeczytania (lub wpisy warte znalezienia) pomimo kilku nudnych rozdziałów i nierównego stylu. Zawiera zbiór informacji, które każdy szanujący się programista powinien wiedzieć. Polecam!

Linki:

Promuj