Rīku komplekti prātam





Kad japāņu datorzinātnieks Jukihiro Matsumoto nolēma izveidot Ruby — programmēšanas valodu, kas ir palīdzējusi izveidot Twitter, Hulu un lielu daļu mūsdienu tīmekļa, viņš dzenās pēc idejas no 1966. gada zinātniskās fantastikas romāna. Bābele-17 autors Samuel R. Delany. Grāmatas pamatā ir izdomāta tāda paša nosaukuma valoda, kas uzlabo visu to cilvēku prātus, kuri tajā runā. Babel-17 ir tik precīza analītiska valoda, ka tā gandrīz nodrošina tehnisko meistarību jebkurā situācijā, kurā skatāties, vienā brīdī saka galvenais varonis. Ar Rubiju Matsumoto vēlējās to pašu: pārprogrammēt un uzlabot programmētāju domāšanas veidu.

Tas izklausās grandiozi, bet Matsumoto skats nav nomaļīgs. Programmatūras izstrādātāji kā suga mēdz būt pārliecināti, ka programmēšanas valodām ir pietiekami spēcīga saķere ar prātu, lai mainītu veidu, kā jūs pieiet problēmām, pat lai mainītu problēmas, kuras jūs domājat atrisināt. Šādi viņi nosaka uzņēmumu, produktu un vienaudžu lielumu: kādu valodu jūs lietojat?

Perfekta mazuļa izstrāde

Šis stāsts bija daļa no mūsu 2015. gada maija numura



  • Skatiet pārējo izdevuma daļu
  • Abonēt

Tas var palīdzēt nepiederošajiem izprast programmatūras uzņēmumus, kas kļuvuši tik spēcīgi un vērtīgi, kā arī produktus un pakalpojumus, kas ietekmē mūsu dzīvi. Lēmums, kas šķiet vispiemērotākais beisbola iekšienē — neatkarīgi no tā, vai kāds izveido jaunu lietu, izmantojot, piemēram, Ruby, PHP vai C — var pēkšņi ietekmēt mūs visus. Ja vēlaties uzzināt, kāpēc Facebook izskatās un darbojas tā, kā tas darbojas, un kādas darbības tas var darīt mūsu labā, jums ir jāzina kaut kas par PHP — programmēšanas valodu, ar kuru Marks Cukerbergs to izveidoja.

Programmētāju vidū PHP, iespējams, ir vismazāk ievērota no visām programmēšanas valodām. Tagad kanoniskā emuāra ziņojumā par tā trūkumiem tas tika aprakstīts kā slikta dizaina fraktālis , un tie, kas to labprāt izmanto, tiek uzskatīti par amatieriem. Ir šāds mīts par izcilo inženieriju, kas iekļuva Facebook, saka Džefs Atvuds , populārās programmēšanas jautājumu un atbilžu vietnes līdzveidotājs Stack Overflow . Bet viņi veidoja PHP kodu operētājsistēmā Windows XP. Viņi bija hakeri gandrīz šī vārda nievājošā nozīmē. 10 minūšu laikā Atvuds PHP nodēvēja par sagraujošu briesmoni, pandēmiju un spoku māju, kuras iedzīvotāji ir iemīlējuši spokus.

Pārskatītās lietas

  • Bābele-17

    Semjuels R. Delanijs
    1966. gads



  • Real World OCaml Autors Yaron Minsky et al.

    O'Reilly, 2013PHPHackScala

Visveiksmīgākajām programmēšanas valodām ir vispārēja filozofija vai pamatprincipu kopums, kas sakārto vārdu krājumu un gramatiku — iespējamo instrukciju kopumu, ko tās dara pieejamus programmētājam — loģiskā veselumā. PHP nav. Tās veidotājs Rasmuss Lerdorfs brīvi atzīstas, ka viņš to vienkārši ir bruģējis kopā. Es nezinu, kā to apturēt, viņš teica 2003. gada intervijā . Man nav ne mazākās nojausmas, kā uzrakstīt programmēšanas valodu — es vienkārši turpināju pievienot nākamo loģisko soli.

Programmētāju iecienītākais piemērs ir PHP funkcija mysql_escape_string, kas atbrīvo vaicājumu no ļaunprātīgas ievades, pirms to nosūta datu bāzei. (Lai iegūtu ļaunprātīgas ievades piemēru, iedomājieties veidlapu vietnē, kurā tiek prasīta jūsu e-pasta adrese; hakeris var ievadīt kodu šajā slotā, lai piespiestu vietni atklept paroles.) Kad vietnē tika atklāta kļūda. funkciju, tika pievienota jauna versija ar nosaukumu mysql_ īsts _escape_string, bet oriģināls netika aizstāts. Rezultāts ir tāds kā divas līdzīga izskata pogas, kas atrodas blakus viena otrai aviokompānijas kabīnē: viena, kas noliek šasiju, un otra, kas to noliek. droši . Tas nav tikai veselā saprāta aizskārums — tā ir katastrofas recepte.



Tomēr, neskatoties uz plaši izplatīto nicinājumu pret PHP, liela daļa tīmekļa tika veidota tā aizmugurē. PHP nodrošina 39 procentus no visiem domēniem , pēc vienas aplēses. Facebook, Wikipedia un vadošā publicēšanas platforma WordPress ir PHP projekti. Tas ir tāpēc, ka PHP, neskatoties uz visiem tā trūkumiem, ir lieliski piemērots darba sākšanai. Sākotnēji nosaukums apzīmēja personīgo mājas lapu. Tas atviegloja dinamiska satura, piemēram, datuma vai lietotāja vārda, pievienošanu statiskām HTML lapām. PHP ļāva izkļūt no tīklošanas ar tīmekli vietne lai rakstītu Web pieteikumu būt tik mazam, lai būtu nemanāms. Jums nebija jābūt profesionālim.

PHP pieklājība bija ļoti svarīga Vikipēdijas panākumiem, saka Ori Livneh, Wikimedia Foundation, kas vada projektu, galvenais programmatūras inženieris. Man vienmēr ir riebies PHP, viņš man saka. Projekts cieš no liela mēroga dizaina trūkumiem, kas saistīti ar tā paļaušanos uz valodu. (Daļēji tie ir iemesls, kāpēc fonds līdz 2008. gadam nepadarīja Wikipedia lapas pieejamas mobilajām ierīcēm pielāgotā versijā un kāpēc vietne nesaņēma lietotājam draudzīgu rediģēšanas saskarni līdz 2013. gadam.) Taču PHP ļāva cilvēkiem, kuri nebija vai tik tikko bija programmatūras inženieri, lai sniegtu jaunas funkcijas. Tādējādi Vikipēdijas ierakstos tika parādīti hieroglifi, piemēram, ēģiptoloģijas lapās un apstrādātas notis.

Programmēšanas valoda PHP izveidoja un uztur Facebook ātru, uz hakeriem orientētu korporatīvo kultūru.



Jūs nebūtu izveidojis Google PHP, jo Google, lai kļūtu par Google, bija ļoti labi jādara tieši viena lieta — tai bija nepieciešama rezerves, ātra un rūpīgi izstrādāta meklēšana. Tas tika izveidots ar izsmalcinātākām un jaudīgākām valodām, piemēram, Java un C++. Turpretim Facebook ir mazu eksperimentu tirgus, pogām, plūsmu un ierīcēm, kas cenšas piesaistīt jūsu uzmanību. PHP ir paredzēts padarot — funkciju ātrai pagatavošanai.

Jūs varat gandrīz iedomāties, ka Cukerbergs savā Hārvardas kopmītnes istabā liktenīgajā dienā, kad piedzima Facebook, darīja visu iespējamo, lai viņa vietne būtu tiešsaistē. Tīmeklis pārvietojas tik ātri, un lietotāji ir tik nepastāvīgi, ka vienīgais veids, kā jūs jebkad varēsit tvert mirkli, ir būt pirmajam. Nav svarīgi, vai viņš izgatavoja lielu dubļu bumbu vai spageti šķīvi, vai šausmīgu šļūtenes skapi (aizņemties no programmētāju bagātīgās leksikas, lai aprakstītu nekārtīgu kodu). Viņš paveica lietu. Cilvēki to varētu izmantot. Viņš nedomāja par skaistu kodu; viņš domāja par saviem draugiem, kas piesakās Facebook apskatīt viņu pazīstamo meiteņu attēlus.

Šodien Facebook ir vairāk nekā 200 miljardu dolāru vērts, un pie tā biroju sienām ir uzraksti: Gatavs ir labāks par ideālu; Pārvietojieties ātri un salauziet lietas. Šiem drosmīgajiem ziņojumiem vajadzētu nodrošināt darbiniekus saskaņā ar uzņēmuma hakeru kultūru. Bet tie ir tieši tādi PHP vērtības. Ātra kustība un lietu izjaukšana patiesībā ir tik liela PHP būtība, ka ikviens, kas runā šajā valodā, tā domā. Varētu teikt, ka valoda pati radīja un uztur Facebook kultūru.

Slepenais ierocis

Ja vēlaties atrast tieši pretēju PHP — sava veida dabisku eksperimentu, lai parādītu, kā izskatās otra galējība, jūs nevarētu paveikt daudz labāk par pašnopietno finanšu tirdzniecības uzņēmuma Jane Street Capital Lejasmanhetenas galveno biroju. 400 cilvēku uzņēmums apgalvo, ka ir atbildīgs par aptuveni 2 procentiem no ikdienas akciju tirdzniecības apjoma Amerikas Savienotajās Valstīs.

Kad es satieku Jaronu Minski, Džeinas Strītas tehnoloģiju vadītāju, viņš sēž pie rakstāmgalda un blakus viņam darbojas Enigma mašīna, kas ir viena no tikai dažiem desmitiem Otrā pasaules kara koda ierīču, kas palikušas pasaulē. Es domāju, ka tas ir nepārprotams uzvarētājs konkursā par stilīgāko slepeno ieroci telpā, ja vien viņš nerunā par neskaidru programmēšanas valodu, ko sauc par OCaml. Minskis, datorzinātņu doktors, pirms 10 gadiem pārliecināja savu darba devēju pārrakstīt visu uzņēmuma tirdzniecības sistēmu OCaml. Pirms tam šo valodu praktiski neviens neizmantoja; tas bija izstrādāts Francijas pētniecības institūtā akadēmiķi mēģina uzlabot datorsistēmu, kas automātiski pierāda matemātiskās teorēmas. Taču Minskis domāja, ka OCaml, ar kuru viņš bija iepazinies pamatskolā, varētu aizstāt sarežģītās Excel izklājlapas, kas darbināja Džeinas ielas tirdzniecības sistēmas.

OCaml lielais pārdošanas punkts ir tā tipa sistēma, kas ir kaut kas līdzīgs Microsoft Word gramatikas pārbaudītājam, izņemot to, ka tā vietā, lai zem koda vienkārši ievietotu slīdošu zaļu līniju, kas šķiet nepareiza, tā neļaus jums to palaist. Programmas, kas rakstītas, izmantojot tipa sistēmu, parasti ir daudz uzticamākas nekā tās, kas rakstītas bez tās — tas ir noderīgi, ja programma lielā dienā var tirgoties USD 30 miljardu apmērā.

Minskis saka, ka, ķerot kļūdas, OCaml tipa sistēma ļauj Džeinas ielas kodētājiem koncentrēties uz augstākajām problēmām. Var rasties jautājums, vai viņi laika gaitā ir internalizējuši sistēmas pastāvīgo ņurdēšanu, tādējādi OCaml ir kļuvis par sava veida Newspeak, kas neļauj domāt sliktas domas.

Galvenais ir tas, ka, lai pilnībā izmantotu tipa pārbaudītāja priekšrocības, programmētājiem savam kodam ir jāpievieno sarežģītas anotācijas. Tas ir tā, it kā Word gramatikas pārbaudītājam būtu jāveido diagramma visi teikumi. Koda rakstīšana ar veida ierobežojumiem var būt apgrūtinoša, pat demoralizējoša. Lai to padarītu vēl sliktāku, OCaml vairāk nekā vairums citu programmēšanas valodu izmanto sava veida dziļu abstraktu matemātiku, kas tālu pārsniedz lielāko daļu kodētāju. Valodas stingrība dažiem cilvēkiem ir kā kaķumētra, sniedzot Džeina Strītai neparastu priekšrocību grūtajā programmētāju darbā pieņemšanas tirgū. Programmatūras izstrādātāji lielākoties pievienojas Facebook un Wikipedia, neskatoties uz PHP. Minskis saka, ka OCaml kopā ar savu grāmatu Reālās pasaules OCaml — palīdz piesaistīt pastāvīgu augstas kvalitātes kandidātu piedāvājumu. Pievilcība nav tikai valoda, bet arī cilvēki, kas to lieto. Jane Street ir uzņēmums, kurā viņi pārtraukuma telpā spēlē četru cilvēku šahu. Šķiet, ka konkurences inteliģences kultūra un izdomātas programmēšanas valodas izmantošana iet roku rokā.

Šķiet, ka Google mēģina īstenot līdzīgu triku ar Go, tā izstrādāto augstas veiktspējas programmēšanas valodu. Paredzēts, lai padarītu tīmekļa darbību elegantāku un efektīvāku, tas ir piemērots, lai izstrādātu augsta līmeņa programmatūru, kas nepieciešama serveru kolekciju palaišanai aiz lieliem tīmekļa pakalpojumiem. Tas darbojas arī kā suņa svilpe kodētājiem, kurus interesē jaunais un grūtais.

Pieaugt

2010. gada beigās Facebook piedzīvoja krīzi. PHP nebija izveidots veiktspējai, taču tam tika lūgts veikt darbību. Vietne attīstījās tik strauji, ka šķita, ka, ja kaut kas nemainīsies diezgan krasi, tas sāks apgāzties.

Pilnīga valodu maiņa nebija risinājums. Facebook bija miljoniem PHP koda rindu, tūkstošiem inženieru ekspertu tā rakstīšanā un vairāk nekā pusmiljards lietotāju. Tā vietā neliela vecāko inženieru komanda tika norīkota īpašam projektam, lai izgudrotu veidu, kā Facebook turpināt darboties, neatsakoties no sava ārprātīgā dzimtās valodas.

Viena no risinājuma daļām bija programmatūras daļas — kompilatora — izveide, kas pārvērstu Facebook PHP kodu daudz ātrākā C++ kodā. Otrs bija datoru lingvistiskās inženierijas varoņdarbs, kas ļāva Facebook programmētājiem saglabāt savu PHP kultūru, bet rakstīt uzticamāku kodu.

Jaunuzņēmumi var gudri izmantot programmēšanas valodu iespējas, lai manipulētu ar savu organizācijas psiholoģiju.

Glābšanas komanda to izdarīja, izgudrojot PHP dialektu ar nosaukumu Hack. Hack ir PHP ar neobligāti tipa sistēma; tas ir, jūs varat rakstīt vienkāršu vecu, ātru un netīru PHP — vai, ja vēlaties, varat piesiet sevi pie masta, pievienojot anotācijas, lai ļautu tipa sistēmai pārbaudīt jūsu koda pareizību. Tas, ka šī tipa pārbaudītājs ir pilnībā rakstīts OCaml, nav nejaušība. Facebook vēlējās, lai tā kodētāji turpinātu ātri pārvietoties savā dzimtajā valodā, taču tas nevēlējās, lai viņiem būtu jālauž lietas, to darot. (Pagājušajā gadā Cukerbergs paziņoja par jaunu inženiertehnisko saukli: Pārvietojieties ātri, izmantojot stabilu infrastruktūru, izmantojot hakeru saīsinājumu infrastruktūrai, kas nodrošina vietnes darbību.)

Aptuveni tajā pašā laikā Twitter piedzīvoja līdzīgu transformāciju. Pakalpojums sākotnēji tika izveidots, izmantojot Ruby on Rails — populāru tīmekļa programmēšanas ietvaru, kas izveidots, izmantojot Matsumoto Ruby, un lielā mērā iedvesmots no PHP. Tad nāca lietotāju plūdi. Kad kāds ar simtiem tūkstošu sekotāju ierakstīja tviterī, simtiem tūkstošu citu cilvēku laika skalas bija nekavējoties jāatjaunina. Šādi lieli tvīti bieži pārņemtu sistēmu un liktu inženieriem noņemt vietni, lai ļautu tai panākt. Viņi to darīja tik bieži, ka neveiksmīgais valis uzņēmuma apkopes lapā kļuva slavens pats par sevi. Twitter apturēja asiņošanu, nomainot lielus pakalpojuma santehnikas gabalus ar valodu, ko sauc par Scala. Nav jābrīnās, ka Scala, tāpat kā OCaml, ir izstrādājuši akadēmiķi, tai ir jaudīga tipa sistēma, un tā novērtē pareizību un veiktspēju pat uz individuālo programmētāju brīvības un sava amata prieka rēķina.

Līdzīgi kā jaunizveidotie uzņēmumi kļūst nobrieduši, beidzot izdomājot, no kurienes nāks viņu ieņēmumi, viņi var gudri izmantot programmēšanas valodu iespējas, lai manipulētu ar savu organizācijas psiholoģiju. Programmēšanas valodas dizainers Gvido van Rosums , kurš septiņus gadus pavadīja Google un tagad strādā Dropbox, saka, ka, tiklīdz programmatūras uzņēmums ir sasniedzis noteiktu lielumu, vienīgais veids, kā novērst haosu, ir izmantot valodu, kas no programmētāja prasa vairāk. Šķiet, ka tas jūs bremzē, jo jums viss ir jāsaka trīs reizes, saka van Rosums. Tāpēc daudzi jaunizveidotie uzņēmumi gaida tik ilgi, cik var, pirms veic pāreju. Jūs zaudējat dažus no ārprātīgajiem hakeriem, kas jūs pamudināja sākt, un iespēju, ka mazas komandas var steigšus izmantot jaunas funkcijas. Taču precīzāka valoda palīdz cilvēkiem visā uzņēmumā saprast vienam otra kodu un nodrošina jūsu produktam nepieciešamo stabilitāti, lai tas būtu daļa no ikdienas dzīves mēbelēm.

Tas, ka programmatūras palaišanas uzņēmumi var veikt šādus manevrus, varētu pat palīdzēt izskaidrot, kāpēc tie var būt tik spēcīgi. Daļa no tā ir datoru paplašināšanās. Taču šiem uzņēmumiem ir arī unikāla iespēja sevi pārveidot. Mainoties un augot, viņi var darīt vairāk, nekā tikai pārzīmēt organizācijas diagrammu. Tā kā tie ir iebūvēti kodā, tie var paveikt kaut ko daudz drastiskāku. Viņi var pārveidot sevi, savu kultūru tā, kā viņi domā.

Džeimss Somers ir rakstnieks un programmētājs Ņujorkā. Viņš strādā plkst genius.com .

paslēpties