211service.com
Zestawy narzędzi dla umysłu
Kiedy japoński informatyk Yukihiro Matsumoto postanowił stworzyć Ruby, język programowania, który pomógł w tworzeniu Twittera, Hulu i większości współczesnej sieci Web, ścigał pomysł z powieści science fiction z 1966 roku zatytułowanej Babel-17 autorstwa Samuela R. Delany. Sercem książki jest wymyślony język o tej samej nazwie, który ulepsza umysły wszystkich, którzy nim mówią. Babel-17 jest tak dokładnym językiem analitycznym, że niemal zapewnia techniczne mistrzostwo w każdej sytuacji, na którą patrzysz, mówi w pewnym momencie bohater. W przypadku Rubiego Matsumoto chciał tego samego: przeprogramować i ulepszyć sposób myślenia programistów.
Brzmi imponująco, ale Matsumoto nie jest marginalnym widokiem. Twórcy oprogramowania jako gatunek mają skłonność do przekonania, że języki programowania trzymają umysł na tyle mocno, by zmienić sposób, w jaki podchodzisz do problemów, a nawet te, które myślisz o rozwiązaniu. Tak oceniają firmy, produkty, swoich rówieśników: w jakim języku się posługujesz?
Ta historia była częścią naszego wydania z maja 2015 r.
- Zobacz resztę numeru
- Subskrybuj
To może pomóc osobom z zewnątrz zrozumieć firmy programistyczne, które stały się tak potężne i wartościowe, a także produkty i usługi, które tchną w nasze życie. Decyzja, która wydaje się być najbardziej wewnętrznym rodzajem baseballu — czy ktoś zbuduje coś przy użyciu, powiedzmy, Rubiego, PHP lub C — może nagle wpłynąć na nas wszystkich. Jeśli chcesz wiedzieć, dlaczego Facebook wygląda i działa tak, jak robi i jakie rzeczy może zrobić dla nas i dla nas, musisz wiedzieć coś o PHP, języku programowania, w którym zbudował go Mark Zuckerberg.
Wśród programistów PHP jest chyba najmniej szanowanym ze wszystkich języków programowania. Obecnie kanoniczny wpis na blogu na temat jego wad opisał to jako fraktal złego projektu , a tych, którzy chętnie z niego korzystają, postrzegani są jako amatorzy. Istnieje mit o genialnej inżynierii, która pojawiła się na Facebooku, mówi Jeff Atwood , współtwórca popularnej, programistycznej strony z pytaniami i odpowiedziami Przepełnienie stosu . Ale budowali kod PHP w Windows XP. Byli hakerami w niemal uwłaczającym znaczeniu tego słowa. W ciągu 10 minut Atwood nazwał PHP włóczącym się potworem, pandemią i nawiedzonym domem, którego mieszkańcy pokochali duchy.
Rzeczy zrecenzowane
Babel-17
Samuel R. Delany
1966
Real World OCaml Yaron Minsky et al.
O'Reilly, 2013PHPHackScala
Większość odnoszących sukcesy języków programowania ma ogólną filozofię lub zestaw zasad przewodnich, które organizują ich słownictwo i gramatykę — zbiór możliwych instrukcji, które udostępniają programiście — w logiczną całość. PHP nie. Jego twórca, Rasmus Lerdorf, swobodnie przyznaje, że po prostu go poskładał. nie wiem jak to zatrzymać, powiedział w wywiadzie z 2003 roku . Absolutnie nie mam pojęcia, jak napisać język programowania — po prostu dodawałem kolejny logiczny krok po drodze.
Ulubionym przykładem programistów jest funkcja PHP o nazwie mysql_escape_string, która usuwa zapytanie ze złośliwych danych wejściowych przed wysłaniem ich do bazy danych. (Dla przykładu złośliwego wpisu, pomyśl o formularzu na stronie internetowej, który prosi o podanie twojego adresu e-mail; haker może wprowadzić kod w tym slocie, aby zmusić stronę do wyłudzenia haseł.) Gdy wykryto błąd w funkcja została dodana nowa wersja o nazwie mysql_ prawdziwy _escape_string, ale oryginał nie został zastąpiony. Rezultat jest trochę jak posiadanie dwóch podobnie wyglądających przycisków tuż obok siebie w kokpicie linii lotniczych: jednego, który odkłada podwozie, i drugiego, który je odkłada bezpiecznie . To nie tylko zniewaga dla zdrowego rozsądku — to przepis na katastrofę.
Jednak pomimo powszechnej pogardy dla PHP, większość sieci została zbudowana na jego plecach. PHP obsługuje 39 procent wszystkich domen , o jeden szacunek. Facebook, Wikipedia i wiodąca platforma wydawnicza WordPress to projekty PHP. To dlatego, że PHP, pomimo wszystkich swoich wad, jest idealny do rozpoczęcia pracy. Nazwa pierwotnie oznaczała osobistą stronę główną. Ułatwiło to dodawanie dynamicznych treści, takich jak data lub nazwa użytkownika, do statycznych stron HTML. PHP umożliwił przeskok od majstrowania przy sieci Strona do pisania sieci podanie być tak małym, że jest niedostrzegalny. Nie musiałeś być profesjonalistą.
Jak mówi Ori Livneh, główny inżynier oprogramowania w Fundacji Wikimedia, która zarządza projektem, prężność PHP była kluczowa dla sukcesu Wikipedii. Zawsze nienawidziłem PHP, mówi mi. Projekt ma wady projektowe na dużą skalę, które wynikają z jego uzależnienia od języka. (Częściowo to dlatego fundacja nie udostępniła stron Wikipedii w wersji dostosowanej do urządzeń mobilnych do 2008 r. i dlaczego witryna nie otrzymała przyjaznego dla użytkownika interfejsu do edycji do 2013 r.) Ale PHP pozwalało osobom, które tego nie robiły. — lub ledwie byli — inżynierami oprogramowania, którzy wnosili nowe funkcje. W ten sposób pojawiły się wpisy Wikipedii, aby wyświetlać hieroglify na stronach egiptologii i obsługiwać nuty.
Język programowania PHP stworzył i podtrzymuje szybką, zorientowaną na hakerów kulturę korporacyjną Facebooka.
Nie zbudowałbyś Google w PHP, ponieważ Google, aby stać się Google, musiało zrobić dokładnie jedną rzecz bardzo dobrze – potrzebowało oszczędnego, szybkiego i skrupulatnie zaprojektowanego wyszukiwania. Został stworzony z bardziej wyrafinowanymi i potężnymi językami, takimi jak Java i C++. Z kolei Facebook to bazar małych eksperymentów, szwedzki stół z przyciskami, kanałami i gadżetami, które próbują przyciągnąć twoją uwagę. PHP jest stworzone dla zrobienie — do szybkiego gotowania funkcji.
Można niemal wyobrazić sobie Zuckerberga w swoim pokoju w akademiku na Harvardzie w pamiętnym dniu, w którym narodził się Facebook, robiąc wszystko, co mógł, aby uruchomić swoją witrynę online. Sieć porusza się tak szybko, a użytkownicy są tak kapryśni, że jedynym sposobem na uchwycenie chwili jest bycie pierwszym. Nie miało znaczenia, czy zrobił dużą kulę błota, czy talerz spaghetti, czy okropną szafkę na węże (by pożyczyć z bogatego leksykonu programistów do opisywania niechlujnego kodu). Załatwił sprawę. Ludzie mogliby z tego skorzystać. Nie myślał o pięknym kodzie; myślał o tym, jak jego przyjaciele logują się do Facebook oglądać zdjęcia dziewczyn, które znali.
Dziś Facebook jest wart ponad 200 miliardów dolarów, a na ścianach w jego biurach wiszą napisy: Gotowe jest lepsze niż doskonałe; Poruszaj się szybko i niszcz rzeczy. Te odważne komunikaty mają na celu dostrojenie pracowników do kultury hakerskiej firmy. Ale to są właśnie PHP wartości. Szybkie poruszanie się i łamanie rzeczy jest w rzeczywistości tak bardzo istotą PHP, że każdy, kto posługuje się tym językiem, myśli w ten sposób. Można powiedzieć, że sam język stworzył i podtrzymuje kulturę Facebooka.
Tajna broń
Jeśli chciałbyś znaleźć dokładne przeciwieństwo PHP, rodzaj naturalnego eksperymentu, aby pokazać, jak wygląda druga skrajność, nie mogłeś zrobić nic lepszego niż samopoważna siedziba firmy Jane Street Capital na Dolnym Manhattanie. Ta licząca 400 osób firma twierdzi, że odpowiada za około 2 procent dziennego wolumenu obrotu akcjami w Stanach Zjednoczonych.
Kiedy spotykam Yarona Minsky'ego, szefa technologii Jane Street, siedzi przy biurku z działającą maszyną Enigma, jednym z zaledwie kilkudziesięciu urządzeń kodujących z czasów II wojny światowej, jakie pozostały na świecie. Myślę, że jest to zdecydowany zwycięzca konkursu na Najfajniejszą Tajną Broń w Pokoju, gdyby nie sposób, w jaki mówi o mało znanym języku programowania o nazwie OCaml. Minsky, doktor informatyki, 10 lat temu przekonał swojego pracodawcę do przepisania całego systemu handlowego firmy w OCaml. Wcześniej prawie nikt nie używał tego języka do rzeczywistej pracy; to było opracowany we francuskim instytucie badawczym przez naukowców próbujących ulepszyć system komputerowy, który automatycznie dowodzi twierdzeń matematycznych. Ale Minsky uważał, że OCaml, który poznał na studiach, może zastąpić złożone arkusze kalkulacyjne Excela, które zasilały systemy transakcyjne Jane Street.
Dużym atutem OCamla jest jego system typów, który jest czymś w rodzaju modułu sprawdzania gramatyki Microsoft Word, z tym wyjątkiem, że zamiast po prostu umieszczać falistą zieloną linię pod kodem, który uważa za błędny, nie pozwoli ci go uruchomić. Programy napisane za pomocą systemu typów są zwykle znacznie bardziej niezawodne niż te napisane bez niego — przydatne, gdy program może w wielkim dniu sprzedać 30 miliardów dolarów.
Minsky mówi, że łapiąc błędy, system typów OCamla pozwala programistom Jane Street skupić się na bardziej wzniosłych problemach. Można się zastanawiać, czy zinternalizowali ciągłe dokuczliwość systemu w czasie, tak że OCaml stał się rodzajem nowomowy, która uniemożliwia myślenie złych myśli.
Haczyk polega na tym, że aby uzyskać pełne korzyści z funkcji sprawdzania typów, programiści muszą dodawać złożone adnotacje do swojego kodu. To tak, jakby moduł sprawdzania gramatyki Worda wymagał od ciebie diagramu wszystkich zdań. Pisanie kodu z ograniczeniami typu może być uciążliwe, a nawet demoralizujące. Co gorsza, OCaml, bardziej niż większość innych języków programowania, porusza się w rodzaju głębokiej abstrakcyjnej matematyki, która znacznie przekracza możliwości większości programistów. Jednak rygor tego języka jest dla niektórych jak kocimiętka, dając Jane Street niezwykłą przewagę na ciasnym rynku zatrudniania programistów. Programiści najczęściej dołączają do Facebooka i Wikipedii pomimo PHP. Minsky mówi, że OCaml – razem ze swoją książką Prawdziwy świat OCaml —pomaga przyciągnąć stały dopływ wysokiej jakości kandydatów. Atrakcją jest nie tylko język, ale także rodzaj ludzi, którzy go używają. Jane Street to firma, w której w pokoju socjalnym grają w czteroosobowe szachy. Kultura konkurencyjnej inteligencji i użycie wymyślnego języka programowania wydają się iść w parze.
Wygląda na to, że Google próbuje wykonać podobną sztuczkę z Go, opracowanym przez siebie wysokowydajnym językiem programowania. Ma na celu uczynienie działania sieci bardziej eleganckim i wydajnym, jest dobry do tworzenia oprogramowania o wysokiej stawce potrzebnego do uruchamiania kolekcji serwerów za dużymi usługami sieciowymi. Działa również jak gwizdek na psa dla programistów zainteresowanych nowym i trudnym.
Dorastanie
Pod koniec 2010 roku Facebook przeżywał kryzys. PHP nie został zbudowany z myślą o wydajności, ale proszono o jego wydajność. Strona rosła tak szybko, że wydawało się, że jeśli coś nie zmieni się dość drastycznie, zacznie się przewracać.
Całkowite przełączanie języków nie wchodziło w grę. Facebook miał miliony linijek kodu PHP, tysiące inżynierów ekspertów w jego pisaniu i ponad pół miliarda użytkowników. Zamiast tego mały zespół starszych inżynierów został przydzielony do specjalnego projektu, który miał wymyślić sposób, aby Facebook mógł dalej funkcjonować bez rezygnacji z ojczystego języka ojczystego.
Jednym z elementów rozwiązania było stworzenie oprogramowania — kompilatora — które przetłumaczyłoby kod PHP Facebooka na znacznie szybszy kod C++. Drugim był wyczyn komputerowej inżynierii lingwistycznej, który pozwolił programistom Facebooka zachować kulturę PHP, ale pisać bardziej niezawodny kod.
Startupy mogą sprytnie wykorzystać moc języków programowania do manipulowania swoją psychologią organizacyjną.
Ekipa ratunkowa zrobiła to, wymyślając dialekt PHP o nazwie Hack. Hack to PHP z opcjonalny system typu; to znaczy, możesz napisać zwykły, stary, szybki i brudny PHP — lub, jeśli tak zdecydujesz, możesz przywiązać się do masztu, dodając adnotacje, aby system typów mógł sprawdzić poprawność twojego kodu. To, że ten typ kontrolera jest napisany w całości w OCaml, nie jest przypadkiem. Facebook chciał, aby jego programiści poruszali się szybko w zaciszu swojego ojczystego języka, ale nie chciał, aby musieli łamać rzeczy tak, jak to robili. (W zeszłym roku Zuckerberg ogłosił nowe hasło inżynierskie: Poruszaj się szybko dzięki stabilnej infra, używając skrótu hakerskiego dla infrastruktury, która utrzymuje witrynę.)
Mniej więcej w tym samym czasie podobną transformację przeszedł Twitter. Usługa została pierwotnie zbudowana przy użyciu Ruby on Rails — popularnego frameworka do programowania sieci Web stworzonego przy użyciu Ruby Matsumoto i inspirowanego w dużej mierze przez PHP. Potem przyszedł potop użytkowników. Kiedy ktoś z setkami tysięcy obserwujących napisał na Twitterze, setki tysięcy osi czasu innych osób musiały zostać natychmiast zaktualizowane. Takie duże tweety często przytłaczały system i zmuszały inżynierów do wyłączania witryny, aby umożliwić jej nadrobienie zaległości. Robili to tak często, że nieudany wieloryb na stronie serwisowej firmy stał się sławny sam w sobie. Twitter zatrzymał krwawienie, zastępując duże elementy kanalizacji serwisu językiem o nazwie Scala. Nie powinno dziwić, że Scala, podobnie jak OCaml, została stworzona przez naukowców, ma rozbudowany system typów i nagradza poprawność i wydajność nawet kosztem swobody poszczególnych programistów i zachwytu swoim rzemiosłem.
Chociaż startupy dojrzewają, w końcu zastanawiając się, skąd będą pochodzić ich przychody, mogą sprytnie wykorzystać moc języków programowania do manipulowania psychologią swojej organizacji. Projektant programowania-języka Guido van Rossum , który spędził siedem lat w Google, a teraz pracuje w Dropbox, mówi, że gdy firma programistyczna osiągnie określoną wielkość, jedynym sposobem na zażegnanie chaosu jest użycie języka, który wymaga więcej od programisty. Wydaje się, że to cię spowalnia, ponieważ musisz powiedzieć wszystko trzy razy, mówi van Rossum. Dlatego wiele startupów czeka tak długo, jak to możliwe, zanim dokona zmiany. Tracisz część zarozumiałych hakerów, którzy Cię rozpoczęli, i możliwość, że małe zespoły mogą pospieszyć z nowymi funkcjami. Ale bardziej wymagający język pomaga ludziom w całej firmie zrozumieć nawzajem swój kodeks i zapewnia produktowi stabilność niezbędną, aby stać się częścią umeblowania codziennego życia.
To, że startupy mogą wykonywać takie manewry, może nawet pomóc wyjaśnić, dlaczego mogą być tak potężne. Częścią tego jest rozszerzający się zasięg komputerów. Ale te firmy mają również wyjątkową zdolność do samodzielnego przerabiania. Gdy się zmieniają i rozwijają, mogą zrobić coś więcej niż tylko przerysować schemat organizacyjny. Ponieważ są wbudowane w kod, mogą zrobić coś znacznie bardziej drastycznego. Mogą przeprogramować siebie, swoją kulturę, sposób myślenia.
James Somers jest pisarzem i programistą z Nowego Jorku. On pracuje w genius.com .
