Ostatni w tym roku #main, nieco opóźniony z uwagi na świąteczną atmosferę, mam nadzieję że wybaczycie ;) O ile z dużym prawdopodobieństwem jesteś obecnie na urlopie / przerwie świątecznej w domu, mała porcja informacji ze świata IT na pewno nie zaszkodzi!
Cykl #main to punkt początkowy Waszego tygodnia, prasówka, w której zbieramy ciekawe linki, dzielimy się informacjami, a także podsyłamy programistyczne zadanie. Mamy nadzieję, że w ten sposób umilimy Wam poniedziałkowy powrót do rzeczywistości ;)
Podsumowanie ankiety z zeszłego tygodnia
Ubiegłotygodniowa ankieta potwierdziła to, co pojawiało się w innych ankietach — rozwój i wyzwania są zdecydowanie najważniejszym aspektem pracy zawodowej dla programistów (tutaj puszczamy oczko do osób z HRu — nie zapominajcie o tym ;) ). W niedługim czasie na blogu podzielimy się także naszymi sposobami na stres w pracy!
Komputery kwantowe w akcji!
Od jakiegoś czasu coraz częściej słychać o komputerach kwantowych i możliwościach, jakie dają. Liderem rynku (komercyjnego) jest z pewnością firma D‑Wave. O ile można prowadzić dyskusje (dość akademickie), czy faktycznie jest to komputer kwantowy, niezaprzeczalnym faktem pozostaje to, że systemy te różnią się od tych obecnie stosowanych. Pośród ‘jawnych’ klientów firmy znalazły się także Google oraz NASA — w ostatnim czasie pojawiły się wyniki ich badań na temat wydajności. Ponieważ liczby mówią same za siebie, zachęcamy do lektury artykułu w serwisie antyweb.pl . Być może już za kilka(naście) lat na blogu będziemy prowadzili serię o programowaniu komputerów kwantowych i algorytmach dla tych komputerów ;)
Frontendowa piaskownica (i masa inspiracji)
Dla wielu programistów Frontend jest dość problematyczną częścią aplikacji — nawet najlepszy system bez przyjaznego interfejsu nie znajdzie uznania użytkowników. Z drugiej strony mnogość technologii, standardów, urządzeń, kwestie niedeterministyczne jak estetyka czy funkcjonalność przyprawiły niejednego programistę o ból głowy. Jeśli jednak szukasz ‘bajerów’ lub po prostu inspiracji na coś ciekawego związanego z frontendem lub po prostu chcesz w prosty i łatwy sposób eksperymentować, zachęcamy do spróbowania codepen.io — znajdziesz tam nie tylko piaskownicę, ale też masę przykładów i inspiracji.
Jak technologia (i pomysły) zmienia świat
Ostatnio na łamach techinsider.com pojawił się artykuł o aparacie, który w czasie rzeczywistym wyświetla to, co jest pod skórą — nasze żyły. O ile samo urządzenie zdaje się rewolucyjne i wręcz magiczne, opiera się o prastarą (z punktu widzenia technologii) zasadę — krew (a więc i żyły) w inny sposób pochłaniają światło podczerwone niż inne tkanki. Zasada ta jest wykorzystywana np. w pulsoksymetrach (to te urządzenia w szpitalu i nie tylko, które mierzą zawartość tlenu we krwi, jednocześnie podając puls). Potrzebny był jednak pomysł, który zamienił powszechnie znany fakt w urządzenie przydatne w praktycznie każdej praktyce medycznej.
Odpowiedź na pytanie z zeszłego tygodnia
A pytaliśmy o to: dlaczego w językach programowania 0.1*3 != 0.3?
Komputery przechowują dane w postaci binarnej — jeśli chodzi o liczby zmiennoprzecinkowe jest to najczęściej standard IEEE 754, który określa jak przechowywać liczby w pamięci. W uproszczeniu liczba zmiennoprzecinkowa jest zapisywana jako dwie liczby całkowite — tzw. mantysa oraz wykładnik (jest to zapis, który rozumieją także procesory, a więc sama aplikacja nie wykonuje przeliczania za każdym razem). Mantysa to liczba zapisana binarnie, a wykładnik to liczba pozycji ‘po przecinku’ — ale w systemie binarnym. Liczby przechowywane są więc jako mantysa * 2wykładnik.
Z tego powodu liczby które nam wydają się ‘okrągłe’ wcale takie nie są dla komputera — na przykład 0.1 nie sposób zapisać dokładnie w powyższej postaci, dla komputerów wartością najbliższą 0.1, jaką są w stanie operować to 0.10000000149011612 — różnica teoretycznie niewielka, ale przy operacjach takich jak mnożenie, dodawanie, odejmowania i porównywanie, wynik może być dla nas zadziwiający.
Jest to także powód, dla którego należy bardzo mocno się zastanowić zanim liczby związane z pieniędzmi czy kwotami zapiszemy w aplikacji jako typ double — dużo lepsze w tym celu są typy dedykowane takie jak np. BigDecimal, która pozwala określić precyzję oraz ‘działa’ na liczbach w systemie dziesiętnym.
Aby samodzielnie sprawdzić, jak wygląda ‘rzeczywista’ wartość ułamka dla komputera zapraszamy np tutaj: http://www.h‑schmidt.net/FloatConverter/IEEE754.html
Jimmy Wales
Największą i najbardziej znaną inicjatywą Jimmiego Walesa jest 90% prezentacji na uczelniach w ostatnich latach ;) Jest on współtwórcą wikipedii — największej i najbardziej popularnej internetowej encyklopedii, którą może współtworzyć każdy. Idea zrodziła się w 2000 roku w związku z projektem nupedia.com — w założeniu miała to być encyklopedia, której zawartość miała nie odbiegać od komercyjnych encyklopedii dzięki skomplikowanemu procesowi weryfikacji. Ostatecznie po 3 latach projekt został zamknięty, natomiast wikipedia — która pierwotnie miała być źródłem ‘surowych’ treści do nupedii — rósł na potęgę w kwestii zbioru wiedzy. Początkowo obie inicjatywy były finansowane z własnych środków Jimmiego oraz z jego innych przedsięwzięć, obecnie nad finansowaniem i rozwojem czuwa Wikimedia Foundation — fundacja powołana dokładnie w tym celu. Jedną z ostatnich jego inicjatyw jest wikia — portal zapewniający hosting wiki dla każdego zainteresowanego.