Priemonių rinkiniai protui





Kai japonų kompiuterių mokslininkas Yukihiro Matsumoto nusprendė sukurti „Ruby“ – programavimo kalbą, kuri padėjo sukurti „Twitter“, „Hulu“ ir didžiąją dalį šiuolaikinio interneto, jis siekė idėjos iš 1966 m. mokslinės fantastikos romano. Babelis-17 pateikė Samuelis R. Delany. Knygos širdyje yra sugalvota to paties pavadinimo kalba, kuri atnaujina visų ja kalbančių protus. „Babel-17“ yra tokia tiksli analitinė kalba, kuri beveik užtikrina techninį bet kokios situacijos meistriškumą, į kurią žiūrite, vienu metu sako pagrindinis veikėjas. Su Ruby Matsumoto norėjo to paties: perprogramuoti ir patobulinti programuotojų mąstymą.

Tai skamba grandioziškai, bet Matsumoto vaizdas nėra pašalinis. Programinės įrangos kūrėjai, kaip rūšis, yra linkę būti įsitikinę, kad programavimo kalbos pakankamai stipriai paima protą, kad pakeistų požiūrį į problemas – netgi pakeistų problemas, kurias manote išspręsti. Taip jie skirsto įmones, produktus, savo bendraamžius: kokią kalbą vartojate?

Tobulo kūdikio kūrimas

Ši istorija buvo mūsų 2015 m. gegužės mėn. numerio dalis



  • Žr. likusią numerio dalį
  • Prenumeruoti

Tai gali padėti pašaliniams suprasti programinės įrangos įmones, kurios tapo tokios galingos ir vertingos, ir produktus bei paslaugas, kurie įkvepia mūsų gyvenimą. Sprendimas, kuris atrodo kaip labiausiai vidinis beisbolo tipas – nesvarbu, ar kas nors sukurs naują daiktą naudodamas, tarkime, „Ruby“, PHP ar C – gali staiga paveikti mus visus. Jei norite sužinoti, kodėl „Facebook“ atrodo ir veikia taip, kaip veikia ir kokius dalykus jis gali padaryti mūsų labui, turite žinoti ką nors apie PHP – programavimo kalbą, kurią naudodamas Markas Zuckerbergas sukūrė.

Tarp programuotojų PHP yra bene mažiausiai gerbiamas iš visų programavimo kalbų. Dabar kanoniniame tinklaraščio įraše apie jo trūkumus jis apibūdintas kaip prasto dizaino fraktalas , o tie, kurie noriai juo naudojasi, yra vertinami kaip mėgėjai. Yra toks mitas apie nuostabią inžineriją, kuri pateko į „Facebook“, sakoma Jeffas Atwoodas , populiarios programavimo klausimų ir atsakymų svetainės kūrėjas Stack Overflow . Tačiau jie kūrė PHP kodą „Windows XP“. Jie buvo įsilaužėliai beveik žeminančia to žodžio prasme. Per 10 minučių Atwood pavadino PHP siaubingu monstru, pandemija ir namu vaiduokliu, kurio gyventojai pamėgo vaiduoklius.

Apžvelgti dalykai

  • Babelis-17

    Samuelis R. Delany
    1966 metai



  • Realaus pasaulio OCaml Yaron Minsky ir kt.

    O'Reilly, 2013PHPHackScala

Dauguma sėkmingų programavimo kalbų turi bendrą filosofiją arba pagrindinių principų rinkinį, kuris suskirsto jų žodyną ir gramatiką – galimų instrukcijų rinkinį, kurį jos pateikia programuotojui – į logišką visumą. PHP to nedaro. Jos kūrėjas Rasmusas Lerdorfas laisvai prisipažįsta, kad jį tiesiog sujungė. Nežinau, kaip tai sustabdyti, jis sakė 2003 m . Aš visiškai neįsivaizduoju, kaip parašyti programavimo kalbą – tiesiog pridėjau kitą loginį žingsnį.

Mėgstamiausias programuotojų pavyzdys yra PHP funkcija, vadinama mysql_escape_string, kuri pašalina užklausą nuo kenkėjiškos įvesties prieš išsiunčiant ją į duomenų bazę. (Penkėjiškos įvesties pavyzdžiu, pagalvokite apie formą svetainėje, kurioje prašoma jūsų el. pašto adreso; įsilaužėlis gali įvesti kodą į tą angą, kad priverstų svetainę atspėti slaptažodžius.) Kai svetainėje buvo aptikta klaida. funkcija, buvo pridėta nauja versija, pavadinta mysql_ tikras _escape_string, bet originalas nebuvo pakeistas. Rezultatas panašus į du panašiai atrodančius mygtukus, esančius vienas šalia kito oro linijų kabinoje: vieną, kuris nuleidžia važiuoklę, o kitą – nuleidžia. saugiai . Tai ne tik sveiko proto įžeidimas – tai nelaimės receptas.



Tačiau nepaisant plačiai paplitusios paniekos PHP, didžioji žiniatinklio dalis buvo sukurta ant jo nugaros. PHP valdo 39 procentus visų domenų , pagal vieną įvertinimą. „Facebook“, „Wikipedia“ ir pirmaujanti leidybos platforma „WordPress“ yra PHP projektai. Taip yra todėl, kad PHP, nepaisant visų savo trūkumų, puikiai tinka pradėti. Iš pradžių pavadinimas reiškė asmeninį pagrindinį puslapį. Tai palengvino dinamiško turinio, pvz., datos ar vartotojo vardo, įtraukimą į statinius HTML puslapius. PHP leido peršokti nuo tinklinio naudojimo svetainę rašyti žiniatinklį taikymas būti toks mažas, kad būtų nepastebimas. Jums nereikėjo būti profesionalu.

„Wikipedia“ sėkmei labai svarbus buvo PHP įmantrumas, sako Ori Livneh, pagrindinis projektą valdančio „Wikimedia Foundation“ programinės įrangos inžinierius. Aš visada nekenčiau PHP, sako jis man. Projektas kenčia nuo didelio masto dizaino trūkumų, nes jis priklauso nuo kalbos. (Iš dalies dėl šių priežasčių fondas iki 2008 m. nepadarė Vikipedijos puslapių, pritaikytų mobiliesiems įrenginiams, ir kodėl svetainė negavo patogios redagavimo sąsajos iki 2013 m.) Tačiau PHP leido žmonėms, kurie nebuvo pritaikyti mobiliesiems įrenginiams. arba vos buvo programinės įrangos inžinieriai, kurie prisidėjo prie naujų funkcijų. Taip, pavyzdžiui, Vikipedijos įrašuose buvo rodomi hieroglifai egiptologijos puslapiuose ir tvarkomos natos.

Programavimo kalba PHP sukūrė ir palaiko „Facebook“ greitą, į įsilaužėlius orientuotą įmonės kultūrą.



Nebūtum sukūręs „Google“ PHP, nes „Google“, kad taptų „Google“, turėjo labai gerai atlikti vieną dalyką – reikėjo, kad paieška būtų atsargi, greita ir kruopščiai suprojektuota. Jis buvo sukurtas naudojant tobulesnes ir galingesnes kalbas, tokias kaip Java ir C++. Priešingai, „Facebook“ yra mažų eksperimentų turgus, mygtukų, informacijos santraukų ir smulkmenų, bandančių patraukti jūsų dėmesį, turgus. PHP sukurtas gaminimas – greitam maisto ruošimui.

Beveik galite įsivaizduoti, kad Zuckerbergas lemtingą dieną, kai gimė „Facebook“ savo Harvardo bendrabučio kambaryje, padarė viską, ką galėjo, kad svetainė būtų internete. Žiniatinklis juda taip greitai, o vartotojai tokie nepastovūs, kad vienintelis būdas užfiksuoti akimirką yra būti pirmas. Nesvarbu, ar jis padarė didelį purvo rutulį, ar lėkštę spagečių, ar siaubingą žarnų spintelę (paskolinti iš turtingos programuotojų leksikos, skirtos netvarkingam kodui apibūdinti). Jis padarė reikalą. Žmonės galėtų tuo pasinaudoti. Jis negalvojo apie gražų kodą; jis galvojo apie prisijungusius draugus „Facebook“. žiūrėti į pažįstamų merginų nuotraukas.

Šiandien „Facebook“ vertas daugiau nei 200 milijardų dolerių, o ant biurų sienų kabo ženklai: „Atlikta“ yra geriau nei tobula; Greitai judėkite ir sulaužykite daiktus. Šie drąsūs pranešimai turėtų padėti darbuotojams prisitaikyti prie įmonės įsilaužėlių kultūros. Bet tai yra būtent PHP vertybes. Greitas judėjimas ir dalykų laužymas iš tikrųjų yra tokia PHP esmė, kad taip galvoja visi, kurie kalba šia kalba. Galima sakyti, kad pati kalba sukūrė ir palaiko „Facebook“ kultūrą.

Slaptas ginklas

Jei norėtumėte rasti visiškai priešingą PHP, savotišką natūralų eksperimentą, kuris parodytų, kaip atrodo kitas kraštutinumas, negalėtumėte padaryti daug geriau nei finansinės prekybos įmonės Jane Street Capital būstinė Žemutiniame Manhetene. 400 žmonių įmonė teigia, kad ji yra atsakinga už maždaug 2 procentus kasdienės prekybos akcijomis Jungtinėse Valstijose.

Kai susitinku su Yaronu Minsky, Jane Street technologijų vadovu, jis sėdi prie stalo su veikiančia Enigma mašina, vienu iš vos kelių dešimčių pasaulyje likusių Antrojo pasaulinio karo kodų įrenginių. Manyčiau, kad tai aiškus Šauniausio slaptojo ginklo kambaryje konkurso nugalėtojas, jei ne tai, kaip jis nuolat kalba apie neaiškią programavimo kalbą, vadinamą OCaml. Minskis, kompiuterių mokslų daktaras, prieš 10 metų įtikino savo darbdavį perrašyti visą įmonės prekybos sistemą OCaml. Prieš tai beveik niekas nevartojo kalbos savo darbui; tai buvo sukurtas Prancūzijos tyrimų institute akademikai, bandantys patobulinti kompiuterinę sistemą, kuri automatiškai įrodo matematines teoremas. Tačiau Minskis manė, kad OCaml, su kuriuo susipažino dar vidurinėje mokykloje, galėtų pakeisti sudėtingas „Excel“ skaičiuokles, kurios veikė Jane Street prekybos sistemas.

Didelis „OCaml“ pardavimo taškas yra jo tipo sistema, kuri yra kažkas panašaus į „Microsoft Word“ gramatikos tikrintuvą, išskyrus tai, kad užuot tiesiog padėję vingiuotą žalią eilutę po kodu, kuris, jo manymu, yra neteisingas, jis neleis jums jos paleisti. Programos, parašytos naudojant tipo sistemą, paprastai yra daug patikimesnės nei parašytos be jos – tai naudinga, kai programa gali parduoti 30 mlrd. USD didelę dieną.

Minskis sako, kad gaudydama klaidas, OCaml tipo sistema leidžia Jane Street programuotojams sutelkti dėmesį į didesnes problemas. Kyla klausimas, ar jie per tam tikrą laiką įsisavino nuolatinį sistemos kibimą, todėl OCaml tapo savotiška naujienų kalba, dėl kurios neįmanoma galvoti blogų minčių.

Bėda ta, kad norėdami pasinaudoti visais tipo tikrinimo pranašumais, programuotojai turi pridėti sudėtingų komentarų prie savo kodo. Panašu, kad „Word“ gramatikos tikrintuvas reikalauja, kad jūs diagramoje pateiktumėte visus sakinius. Kodo rašymas su tipo apribojimais gali būti nemalonus, netgi demoralizuojantis. Kad būtų dar blogiau, OCaml, labiau nei dauguma kitų programavimo kalbų, perduoda tam tikra gilia abstrakčia matematika, kuri gerokai pranoksta daugumą programuotojų. Tačiau kai kuriems žmonėms šios kalbos griežtumas primena katžolę, suteikiant Jane Street neįprastą pranašumą įtemptoje programuotojų samdymo rinkoje. Programinės įrangos kūrėjai dažniausiai prisijungia prie „Facebook“ ir „Wikipedia“, nepaisydami PHP. Minskis sako, kad OCaml kartu su savo knyga Realaus pasaulio OCaml – padeda pritraukti nuolatinį aukštos kokybės kandidatų pasiūlą. Patrauklumas yra ne tik kalba, bet ir žmonės, kurie ją vartoja. Jane Street yra įmonė, kurioje jie žaidžia keturių žmonių šachmatais pertraukos kambaryje. Atrodo, kad konkurencinio intelekto kultūra ir įmantrios programavimo kalbos naudojimas eina koja kojon.

Panašu, kad „Google“ bando padaryti panašų triuką su „Go“ – jos sukurta didelio našumo programavimo kalba. Siekiama, kad žiniatinklio veikimas būtų elegantiškesnis ir veiksmingesnis, jis tinkamas kuriant didelę programinę įrangą, reikalingą serverių rinkiniams paleisti už didelių žiniatinklio paslaugų. Tai taip pat veikia kaip šuns švilpukas programuotojams, kurie domisi nauja ir sudėtinga.

Užaugti

2010 m. pabaigoje „Facebook“ ištiko krizę. PHP nebuvo sukurtas našumui, bet buvo paprašyta atlikti. Svetainė augo taip greitai, kad atrodė, kad jei kas nors nepasikeis gana drastiškai, ji pradės griūti.

Visiškai pakeisti kalbų nebuvo išeitis. „Facebook“ turėjo milijonus PHP kodo eilučių, tūkstančius jį rašančių inžinierių ir daugiau nei pusę milijardo vartotojų. Vietoj to, nedidelė vyresniųjų inžinierių komanda buvo paskirta specialiam projektui, kurio tikslas – sugalvoti būdą, kaip „Facebook“ ir toliau veiktų neatsisakant savo neįprastos gimtosios kalbos.

Viena iš sprendimo dalių buvo sukurti programinės įrangos dalį – kompiliatorių, kuris išverstų „Facebook“ PHP kodą į daug greitesnį C++ kodą. Kitas buvo kompiuterinės lingvistinės inžinerijos žygdarbis, leidžiantis „Facebook“ programuotojams išlaikyti savo PHP kultūrą, bet rašyti patikimesnį kodą.

Startuoliai gali sumaniai panaudoti programavimo kalbų galią manipuliuoti savo organizacijos psichologija.

Gelbėjimo komanda tai padarė išradusi PHP dialektą, vadinamą Hack. Hack yra PHP su an neprivaloma tipo sistema; tai yra, galite parašyti paprastą seną greitą ir purviną PHP arba, jei taip pasirenkate, galite prisirišti prie stiebo, pridėdami komentarų, kad tipo sistema patikrintų jūsų kodo teisingumą. Tai, kad šis tipo tikrintuvas yra visiškai parašytas OCaml, nėra atsitiktinumas. „Facebook“ norėjo, kad programuotojai ir toliau sparčiai judėtų patogiai savo gimtąja kalba, tačiau nenorėjo, kad jiems tektų laužyti dalykus. (Praėjusiais metais Zuckerbergas paskelbė naują inžinerinį šūkį: Greitai judėkite naudodami stabilią infrastruktūrą, naudodamiesi įsilaužėlių santrumpa infrastruktūrai, kuri palaiko svetainės veikimą.)

Maždaug tuo pačiu metu „Twitter“ patyrė panašią transformaciją. Iš pradžių paslauga buvo sukurta naudojant „Ruby on Rails“ - populiarią žiniatinklio programavimo sistemą, sukurtą naudojant „Matsumoto's Ruby“ ir daugiausia įkvėpta PHP. Tada atėjo vartotojų antplūdis. Kai kas nors, turintis šimtus tūkstančių sekėjų, paskelbė „Twitter“, šimtai tūkstančių kitų žmonių laiko juostas turėjo būti nedelsiant atnaujintos. Tokie dideli tviteriai dažnai užvaldytų sistemą ir priverstų inžinierius panaikinti svetainę, kad ji galėtų pasivyti. Jie tai darė taip dažnai, kad nesėkmingas banginis įmonės priežiūros puslapyje išgarsėjo savaime. „Twitter“ sustabdė kraujavimą, pakeisdamas didelius tarnybos vandentiekio elementus kalba, vadinama „Scala“. Nereikėtų stebėtis, kad Scala, kaip ir OCaml, buvo sukurta akademikų, turi galingą tipo sistemą, o teisingumą ir našumą vertina net individualaus programuotojo laisvės ir pasimėgavimo savo darbu sąskaita.

Panašiai, kol startuoliai subręsta pagaliau išsiaiškinę, iš kur gaus pajamų, jie gali sumaniai panaudoti programavimo kalbų galią manipuliuoti savo organizacijos psichologija. Programavimo – kalbos dizaineris Guido van Rossum , kuris septynerius metus praleido „Google“, o dabar dirba „Dropbox“, sako, kad kai programinės įrangos kompanija taps tam tikro dydžio, vienintelis būdas išvengti chaoso yra naudoti kalbą, kuri iš programuotojo reikalauja daugiau. Atrodo, kad tai stabdo jus, nes turite viską pasakyti tris kartus, sako van Rossumas. Štai kodėl daugelis pradedančiųjų įmonių laukia tiek laiko, kiek gali, prieš keisdami. Prarasite kai kuriuos įsilaužėlius, kurie paskatino jus pradėti, ir galimybę, kad mažos komandos gali skubėti naudoti naujas funkcijas. Tačiau tikslesnė kalba padeda žmonėms visoje įmonėje suprasti vieni kitų kodą ir suteikia jūsų gaminiui stabilumo, reikalingo, kad jis būtų kasdienio gyvenimo baldų dalis.

Tai, kad programinės įrangos paleidimas gali atlikti tokius manevrus, netgi gali padėti paaiškinti, kodėl jie gali būti tokie galingi. Besiplečiantis kompiuterių pasiekiamumas yra jos dalis. Tačiau šios įmonės taip pat turi unikalią galimybę perdaryti save. Kai jie keičiasi ir auga, jie gali ne tik perbraižyti organizacijos diagramą. Kadangi jie yra sukurti kodu, jie gali padaryti ką nors daug drastiškesnio. Jie gali pakeisti save, savo kultūrą taip, kaip galvoja.

Jamesas Somersas yra rašytojas ir programuotojas Niujorke. Jis dirba pas genius.com .

paslėpti