Tu 911, co się stało?
Tu 911, co...?
Dnia 9 kwietnia 2014 roku numer alarmowy 911 nagle przestał działać
dla milionów ludzi w Stanach Zjednoczonych.
Nie działał przez sześć godzin.
Ponad 6000 połączeń nie mogło zostać zrealizowanych.
Rząd namierzył źródło problemu
w centrum trasowania połączeń w Englewood, Colorado.
Był to prosty błąd programistyczny.
Programiści tamtejszego komputera
ustalili górny limit liczby połączeń, które mógł zarejestrować.
Myśleli, że ten limit nigdy nie zostanie osiągnięty.
Ale tamtej nocy w 2014 roku został.
Komputer idealnie wykonał instrukcje i przestał trasować połączenia.
Problemem nie był ani komputer, ani błąd w kodzie.
Było nim programowanie, proces podejmowania decyzji,
poprzez który ludzie komunikują się z komputerem.
Taka moc wiąże się z dużą odpowiedzialnością etyczną.
SOCJOLOŻKA
Nic jest w stanie tego zastąpić.
INFORMATYK
Podobnie jak budowniczowie miast...
PISARZ
...określają warunki życia w mieście,
kod kontroluje warunki życia online, które na co dzień prowadzimy.
Nie tylko korzystając z Internetu, ale też dzwoniąc na pogotowie...
idąc do lekarza...
czy wsiadając do auta.
Codziennie jesteśmy bardzo blisko kodu.
Tymczasem tylko jedna trzecia jednego procentu z nas potrafi go pisać.
Dla przeważającej większości to czarna skrzynka.
Ale nie musi tak być.
Jak więc naprawdę działa programowanie?
I jaki nowy świat dzięki niemu budujemy?
NETFLIX — ORYGINALNY SERIAL DOKUMENTALNY
Komputer.
Ten pomysłowy zbiór sprzętu elektronicznego
został stworzony przez człowieka.
Mamy właściwe maszyny do rozwiązania naszych problemów,
ale nie mamy właściwych opisów, jak to robić.
Kiedy ktoś mówi o programowaniu, myślimy, że to bardzo trudne.
Ważne jest, by pamiętać, że wszystko, czego używamy na komputerze,
zostało stworzone przez człowieka.
PROGRAMOWANIE
Załóżmy, że przedstawiciel rasy obcej spytałby nas o znaczenie kodu.
Odpowiedziałbym mu tak.
Żyjemy na fizycznej Ziemi i około 50 lat temu
mała grupa ludzi zaczęła budować inną planetę.
Ale nie fizyczną, tylko wirtualną.
Kiedy się rozejrzysz, zobaczysz wszędzie ludzi
wpatrujących się w swoje telefony.
Oni są w tym innym świecie.
Tym jest właśnie kod.
To klocki do budowy tego świata.
To krosno jest przodkiem każdego komputera i smartfona
na Ziemi.
Zostało wynalezione w 1804 roku
i dużą innowacją były te karty.
Przez ich otwory przechodziły tylko niektóre trzpienie.
Mając tysiące otworów w setkach kart
tkacze mogli uzyskać bardziej złożone wzory.
Wymyślne szale stały się przebojem w Europie.
A tkane wzory były tak misterne, że wyglądały jak rysunki.
Na przykład ten, autorstwa wynalazcy krosna.
Przedtem pojedyncze sznurki musiały być wybierane ręcznie
przez pomocników.
Matematykę też uprawiali wtedy ręcznie tak zwani „obliczeniowcy”.
Pierwszymi komputerami byli ludzie.
A najlepsze maszyny do pomocy
potrafiły wykonywać tylko jedno działanie.
Jak abakus do dodawania i odejmowania.
Brytyjski matematyk Charles Babbage
chciał mieć maszynę potrafiącą wykonać każde wybrane,
a raczej zaprogramowane działanie.
Zaproponował urządzenie zwane „maszyną analityczną”.
Pomysł Babbage'a zapewnił mu miejsce w historii.
PROFESOR INFORMATYKI
Komputery zostały wynalezione przez Babbage'a,
bardzo ekscentrycznego brytyjskiego wynalazcę.
Znalazł on inspirację dla ich działania.
Na ścianie w domu miał kopię tego rysunku.
Maszyna analityczna Babbage'a, jak krosno Jacquarda,
miała fizyczne części: „hardware”.
I tak samo jak w krośnie,
hardware mógł otrzymywać instrukcje w formie kart z otworami.
Otwory wpuszczały trzpienie, a ich brak wypychał inne trzpienie do tyłu,
uruchamiając łańcuch obliczeń mechanicznych.
Karty z różnymi otworami to software, czyli oprogramowanie.
Babbage nigdy nie skończył swej maszyny,
ale pracująca z nim młoda kobieta zobaczyła w niej przełomowy potencjał
wykraczający poza matematykę.
Ada Byron, hrabina Lovelace, napisała:
„Granice arytmetyki zostały przekroczone w momencie, gdy pojawiła się idea kart”.
Zobaczyła to samo, co Jacquard:
otwory mogą przedstawiać nie tylko liczby.
Mogą być wzorami,
muzyką...
lub całymi zdaniami.
Można to widzieć jako rodzaj kodu Morse’a.
Każda litera w kodzie Morse’a jest wyrażana jako seria dwóch sygnałów:
...lub...
Jest on binarny.
Za pomocą samych tych dźwięków możemy przekazać wszystko,
na przykład wezwanie pomocy nadane przez Titanica w 1912 roku.
„SOS” nic nie oznacza,
jest po prostu bardzo łatwe do nadania w kodzie Morse’a.
Tak samo każda litera mogłaby być wyrażona za pomocą kombinacji
zer i jedynek.
Wygląda znajomo?
To kod binarny.
Za jego pomocą wypełniamy lukę między maszynami a ludzkim językiem.
Każda jedynka i każde zero to cyfra binarna, inaczej „bit”.
Oto atomy współczesnego przetwarzania danych.
Możecie znać je pod inną nazwą:
osiem bitów to jeden bajt.
Pamiętacie to zdjęcie na swoim komputerze, które ma 1,1 megabajtów?
To osiem milionów i osiemset tysięcy jedynek i zer.
Tak jak kropki i kreski w kodzie Morse’a to sposób zapisu... oraz...
jedynki i zera w kodzie binarnym to sposób zapisu tego,
co naprawdę zachodzi we współczesnym komputerze:
ładunku lub jego braku.
To prosty obwód elektryczny.
Wyobraźcie sobie, że milion takich pracuje razem.
To dzisiejszy komputer.
W obwodzie elektrycznym to jest bit.
Żarówka jest wyłączona? Zero.
Włączona? Jeden.
Komputer rozumie tylko elektryczność, więc wszystko, co robią z nim programiści,
to ostatecznie tylko seria włączonych i wyłączonych ładunków.
Działa to dlatego, że po odpowiednim połączeniu
te ładunki mogą reprezentować logikę.
Zasadniczo logika to przewidywalna seria faktów lub zdarzeń,
tak jak zamykanie tego łącznika
i tego łącznika, by zadzwonić dzwonkiem.
W istocie komputerowcy nazywają to „logika i obwód”.
Lub „bramka logiczna”.
Spróbuję nie wypalić dziury.
INŻYNIER
W bramce AND oba obwody muszą być zamknięte,
by zapalić światło.
Z kolei w bramkach OR
światło zapala się, gdy tylko jeden obwód jest zamknięty.
Można to ująć inaczej.
Jeśli jeden z tych obwodów będzie zamknięty, wtedy włącz światło.
Stwierdzenie „jeśli, wtedy”
to algorytm.
W dzisiejszej popkulturze słowo „algorytm” powoduje sporo zamieszania.
Już wcześniej widzieliśmy, jak algorytmy nawalają!
Sposób działania algorytmów to dla wielu zagadka.
Czym, do licha, algorytm w ogóle jest?
Ale algorytm to tylko zestaw wskazówek.
Weźmy wyprawę do sklepu.
Można pójść w lewo, a potem skręcić w prawo.
Albo można pójść w prawo, a potem skręcić w lewo.
Można też pójść cztery razy w lewo, obiec park, przejść przez ulicę
i potem pójść cztery razy w prawo.
Do danego miejsca można dotrzeć różnymi drogami.
Tak samo w programowaniu różne algorytmy mogą rozwiązać ten sam problem.
Celem jest znalezienie tego najbardziej eleganckiego i skutecznego.
Piękny kod się nie powtarza.
PROGRAMISTA
Jest elegancki i mocny.
Komputery liczące algorytmy robiły to, co im zleciliśmy,
ale o wiele szybciej,
co dało ludziom o wiele więcej mocy.
Kiedy naukowcy zaczęli prace nad bombą wodorową,
początkowo używali obliczeniowców.
Ale potem zmienili metodę.
Komputer ENIAC przez sześć tygodni przeprowadzał obliczenia termonuklearne.
Wyniki bezpośrednio przyczyniły się do tego:
pierwszego udanego testu w 1952 roku
bomby o setki razy większej mocy niż bomby atomowe
zrzucone na Hiroszimę i Nagasaki podczas II wojny światowej.
Moc programowania wzmocniła ludzką zdolność robienia tego,
co chcieli robić.
Ale w latach 40. wciąż wymagało to mnóstwa pracy.
Pisanie programów z użyciem zer i jedynek wyraźnie się nie skaluje.
Ludzie chcieli więcej mocy, którą daje programowanie.
Ale chcieli programować w łatwiejszy sposób.
Od tamtej pory historia programowania to coraz większe upodabnianie kodu
do języka ludzkiego
dzięki temu, czego używają dziś prawie wszyscy programiści:
językom programowania.
W porównaniu z jedynkami i zerami te języki są dość abstrakcyjne.
Abstrakcja to trudne słowo.
Abstrakcyjne języki też sprowadzają się do jedynek i zer,
ale są one lepiej uporządkowane.
Można na nie patrzeć pod kątem biologii.
Ludzie są bardzo złożeni,
ale 99% naszych ciał składa się tylko z sześciu elementów.
Można wspiąć się na szczebel dużych molekuł.
Między tą warstwą uporządkowania
a najprostszym organizmem żywym
nastąpił duży przeskok.
Ludzie mają mózgi, które robią tak zaawansowane rzeczy,
że trudno uwierzyć, iż złożone są z tego samego.
Komputery są pod tym względem podobne, ale znacznie prostsze.
To dobre wieści.
Historia programowania to historia podnoszenia tego pola,
by odejść od kodu binarnego
i znaleźć prostsze, szybsze i mocniejsze sposoby programowania
bez konieczności zajmowania się, czy nawet rozumienia,
kodu binarnego i bramek logicznych pod spodem.
To pozwala programistom tworzyć produkty, które znamy.
Pierwszym krokiem do tego był...
„Język asemblera”, znacznie łatwiejszy do czytania i pisania,
w którym zamiast 0-1-0-0-0-1-1-1
mówi się „add”
i wtedy program zwany asemblerem
przekłada litery A-D-D
na odpowiednik zer i jedynek.
Na tym poziomie kod binarny jest uporządkowany w litery i cyfry,
tak jak atomy są uporządkowane w molekuły.
Ale programowanie w języku asemblera wciąż nie było zbyt łatwe,
bo wszystkie te komputery używały innych języków asemblera.
Program napisany dla jednego z nich nie działał na żadnym innym.
Bardzo szybko ludzie wpadli na to,
że chcą przekazywać komputerom
dane w używanych na co dzień językach.
Mamy języki programowania
zbudowane przy użyciu języka asemblera
i na ich podstawie zbudowaliśmy więcej języków.
Pewnie o nich słyszeliście.
- LISP. - BASIC.
- Java. - C++.
- Python 3. - HTML 5.
PEARL, PHP, odrobina C...
Tak jak języki mówione to różne sposoby
na przekazanie tego samego innym ludziom,
tak języki programowania to różne sposoby
na przekazanie tego samego komputerom.
Jest więcej niż jeden język wysokiego poziomu,
głównie dlatego, że różne języki
odpowiadają różnym potrzebom.
Spójrzmy na te dwa.
Ten nazywa się COBOL i powstał pod koniec lat 50.,
by ułatwić przedsiębiorstwom używanie kodu.
Bardzo przypomina angielski, z tym że każda rozmowa
kończy się na „STOP RUN”.
Ten nazywa się CPL, powstał w latach 60. i przetwarzał dane bardziej naukowo.
To jak ewolucja biologiczna.
W miarę, jak organizmy stają się bardziej złożone,
lepiej przystosowują się do środowiska, w którym żyją.
Mówiąc szczerze, to też kwestia gustu.
Ludzie lubią wyrażać się za pomocą różnych narzędzi.
Na przykład język C++.
Elon Musk nie jest jego fanem.
Wy możecie wymyślić język.
To prawdziwy język wysokiego poziomu złożony wyłącznie ze słowa „mu”.
Serio. Nazywa się KROWA.
Ten składa się z cytatów z filmów z Arnoldem Schwarzeneggerem.
Za każdym razem, gdy myślę, że mamy już dość,
ktoś wpada na pomysł nowego języka, który zdobywa swoich wielbicieli.
Nie widzę więc końca wymyślania nowych języków.
I wszystkie te języki są nadal oparte na logice.
Przykładowo programista w Netflix może powiedzieć:
„Jeśli ktoś oglądał więcej niż dwie godziny,
wtedy pokaż to”.
Ale by kod wpłynął na życie większości ludzi,
musieli zacząć używać komputerów, co znaczy, że musiały stać się prostsze
i przyjaźniejsze,
a to wymagało kolejnego dużego skoku.
Rozpoczął się on tutaj,
podczas dema pokazanego przez Douga Englebarta w 1968 roku.
Za chwilę zobaczymy jego ekran
i ruchy punktu namierzającego
w połączeniu z ruchami tej myszy.
Dziś ludzie nie programują, zapisując polecenia na kartce papieru
i przekazując je komuś, by wpisał je do komputera.
Siedzimy przed ekranem i mamy graficzny interfejs użytkownika.
Dziś takie interfejsy nazywamy GUI.
Dzięki GUI można programować bez pisania na komputerze.
Albo po prostu łatwiej programować.
Zwykle działamy w środowisku programistycznym
typu, który Alan i jego towarzysze
tak pięknie stworzyli
w ośrodku badawczym firmy Xerox w Palo Alto, we wczesnych latach 70.
„Alan”.
To ten Alan.
Traktuję go jak ojca komputerów osobistych,
bo jako pierwszy naprawdę wyartykułował tę wizję.
Muszę przyznać, że wtedy uważałem to za fantastykę naukową.
Przy realizacji dużych projektów
działa zwykle cała społeczność.
Ośrodek PARC był w tym fantastyczny.
To było jak magia.
Graficzny interfejs użytkownika pozwolił milionom osób
korzystać z komputerów w naturalny dla nich sposób.
Reklamując po raz pierwszy GUI w 1979 roku,
Xerox pokazał, jak kod może zmienić codzienne życie.
Przychodzisz do biura i maszyna Xerox pokazuje ci na ekranie poranną pocztę.
Wkrótce systemy Xerox tego typu
pomogą ci zarządzać cennym zasobem:
informacją.
W tej społeczności badawczej było wielu ludzi takich, jak ja,
chcących ulepszyć świat.
Ich idee były mocno związane z udoskonaleniem człowieka.
Chcieli czegoś, co może współpracować z nami,
społeczeństwem,
złożonym ze zwykłych ludzi, i pozwolić nam osiągnąć więcej,
niż mogliśmy wcześniej.
Naprawdę pozwoliło nam to osiągnąć więcej.
GUI były dużym skokiem w górę tego spektrum.
Wtedy pojawiła się kolejna przełomowa innowacja.
Nowy sposób dystrybucji wszystkiego,
co można zrobić za pomocą kodu.
W telewizji ludzie przewidywali, co spowoduje nagły dostęp do całego kodu.
Wyobraźcie sobie, że siadacie do porannej kawy
i włączacie komputer, by przeczytać gazetę.
Wyobraźcie sobie świat, w którym każde napisane słowo, namalowany obraz,
każdy nakręcony firm, może być od razu dostępny w waszym domu.
Myślę, że jesteśmy na skraju czegoś ekscytującego i przerażającego.
Ale to tylko narzędzie.
Wcale nie.
Najbardziej wpływowe dziś programy używają wszystkich tych innowacji.
Jeden student użył języka programowania wysokiego poziomu, PHP,
by stworzyć coś dostępnego przez Internet,
do używania na komputerach z GUI.
Opisał to w swoim pierwszym wywiadzie telewizyjnym z 2004 roku.
To sieciowy katalog, który łączy ludzi
przez sieci społecznościowe uniwersytetów i koledżów.
Mamy teraz 100 000 ludzi i kto wie, co będzie dalej.
Dalej były ponad dwa miliardy ludzi na Facebooku każdego miesiąca.
Dziś programiści kształtują życie miliardów ludzi.
To, jak pracują, kupują, jedzą, umawiają się na randki i relaksują.
Co teraz robicie?
Oglądacie mnie w aplikacji internetowej Netflix.
Netflix jest kodem i działa w przeglądarce internetowej,
która jest kodem
i która działa na komputerze zaprojektowanym przy pomocy kodu.
I tak w nieskończoność.
Autor świetnego kodu jest jak architekt muzeum,
o którym miliony ludzi myślą
i z którego codziennie korzystają.
Nic nie równa się pisaniu kodu, bo przypomina akt kreacji.
Mamy pomysł, jak coś powinno działać,
po czym siadamy do komputera
i próbujemy go zrealizować.
Ta rola wiąże się z dużą odpowiedzialnością.
Mamy ograniczenie prędkości.
Sto kilometrów na godzinę.
W porządku.
Ale co, gdybyśmy mieli samochód i komputer powiedziałby,
że nie pojedzie on szybciej, niż 100 km/h?
To inny sposób kontroli zachowania.
Kontrolując nasze wybory,
kod często reguluje zachowanie lepiej, niż byłoby to w stanie zrobić prawo.
To może być wspaniała rzecz.
W USA jest około sześć milionów wypadków samochodowych rocznie.
Jedna z analiz wykazała, że 94% z nich powodują kierowcy.
Postępy w programowaniu mogą ocalić miliony żyć.
Ale mogą też na nowe sposoby narażać życie.
Cierpię na kardiomiopatię przerostową.
PRAWNICZKA, AKTYWISTKA
To medyczny termin oznaczający posiadanie dużego serca.
Moje serce jest dosłownie duże.
Około trzech razy większe, niż powinno być.
Dowiedziałam się o tym w wieku 30 lat.
Ryzyko nagłej śmierci przed czterdziestką było bardzo wysokie.
Elektrofizjolog powiedział, że to nie problem,
bo mogę dostać rozrusznik serca.
To urządzenie działa na kod.
Parę lat temu, gdy byłam w ciąży, miałam kołatanie serca.
Co czwarta kobieta doświadcza kołatania. To zupełnie normalne.
Ale moje urządzenie uznało, że rytm jest niebezpieczny
i mnie poraziło.
Producenci urządzenia nie zamierzają razić prądem ciężarnych kobiet.
To dosłownie ostatnia rzecz, której chcą.
Po prostu nie wzięli tego pod uwagę.
Istnieje ogromna liczba decyzji,
które programiści będą podejmować.
Bez wątpienia
pojawi się jakaś kombinacja okoliczności,
której nie przewidzą.
To, czego próbujemy uczyć,
gdy uczymy sztuki
programowania,
to sposób, w jaki trzeba myśleć
o wszystkich tych różnych warunkach.
Jak być drobiazgowym,
nie dając się sparaliżować liczbą rzeczy, które należy wziąć pod uwagę.
Te słowa będą coraz bardziej adekwatne, bo zaczęliśmy programować
w zupełnie nowy sposób.
W tradycyjnym programowaniu piszemy instrukcje dla komputera.
Teraz jednak możemy dać komputerowi dane wejściowe i dane wyjściowe
i sprawić, by napisał swoje własne instrukcje.
Chodzi o to, by dać komputerowi
dużo przykładów
i powiedzieć: „To jest impreza”.
Są też inne sytuacje.
Gabinet dentysty: nie impreza.
Sala szkolna: nie impreza.
Komputer je ogląda i próbuje zbudować
system klasyfikacji.
To jest uczenie maszynowe.
Kiedy ktoś dziś mówi o sztucznej inteligencji,
ma to na myśli.
Tu zupełnie nowy rodzaj abstrakcji i nowa metoda działania,
bo nie do końca pasuje do sposobu, w jaki układaliśmy te elementy.
Nazywamy je algorytmami uczenia maszynowego, bo komputer tworzy
swój własny zestaw instrukcji do wykonania.
Oczywiście koniec końców one też są przekładane
na drobne instrukcje.
Google Translate miało kiedyś ponad milion linii kodu.
To milion małych instrukcji napisanych przez ludzi.
Obecnie Google Translate ma około pięćset linii kodu.
Używa uczenia maszynowego.
Powiedzmy, że przez przeoczenie na żadnym z dodanych zdjęć imprez
nie było ludzi rasy czarnej ani Latynosów.
Komputer mógł uznać, że na imprezy z zasady
zapraszani są tylko ludzie rasy białej i Azjaci.
Programistami są często biali i azjatyccy faceci.
Absolutnie powinniśmy poszerzyć dostęp do możliwości projektowania
z wielu powodów.
Więcej doświadczenia życiowego to lepsze pytania.
Mimo to jeśli wprowadzamy do systemu uczenia maszynowego dane,
na przykład z sądownictwa karnego, które są strukturalnie rasistowskie,
a nasi programiści uczenia maszynowego
są bardzo zróżnicowani:
mają różne rasy, różne twarze, różne pochodzenie społeczne,
nasz system i tak nauczy się z danych.
Jeśli ludzie nie będą aktywnie ich poprawiać,
historyczne dane sprawią, że powtórzymy błędy z przeszłości.
AI BŁĘDNIE WYSYŁA LUDZI DO WIĘZIENIA
Historia programowania to historia ambicji
i kreatywności człowieka.
Start rakiety Falcon 9.
Ujrzeliśmy to, co mieliśmy za niewidoczne.
Czarną dziurę.
Budujemy nowy świat
dzięki bardziej intuicyjnym narzędziom dostępnym dla wielu ludzi,
którzy pomagają ten świat ulepszyć.
Od dawna staramy się uczynić komputery bardziej dostępnymi
dla coraz większej liczby ludzi.
W ostatnich 50 latach na naszych oczach odbywa się rewolucja.
Dlatego to takie ekscytujące.
Ważne jest, by pamiętać, że wszystko, czego używamy na komputerze,
stworzył jakiś człowiek.
Wy też możecie być takim człowiekiem i ważne jest, byście nim zostali.
Możecie naprawdę fundamentalnie zmienić świat.
Świat będzie działał przy użyciu uczenia maszynowego,
danych i tradycyjnego programowania na coraz to nowe sposoby.
Jako społeczeństwo musimy wiedzieć,
że dysponujemy potężną nową technologią,
która pod pewnymi względami może być super, ale nie będzie taka sama z siebie.