Viskas, ką galite padaryti, aš galiu padaryti Meta

Balandžio 9 d. Kazachstano lygumose esančioje nuotolinėje paleidimo aikštelėje antžeminis kontrolierius baigs atgalinį skaičiavimą; paleis raketa Sojuz; ir Charlesas Simonyi – buvęs „Microsoft“ vyriausiasis architektas, garsiausių programų globėjas, kodo rašymo metodo, kurį įmonės programuotojai naudojo 25 metus, išradėjas, o dabar ambicingo programinės įrangos perprogramavimo projekto šalininkas. jo pakilimas į erdvę.





Charles Simonyi „Intentional Software“ prezidentas ir generalinis direktorius.

Apsupęs rusišką skafandrą ir jausdamas, kaip keturi G spaudžia jį į formą prigludusią suformuotą sėdynės įklotą, 58 metų milijardierius taps penktuoju kosmoso turistu, apsilankiusiu Tarptautinėje kosminėje stotyje. Kelionė, kuri kainuos Simonyi apie 20 milijonų dolerių, išpildys jo svajonę tapti vėpla kosmose (pasiskolinti vieną pavadinimą, kurį jis pasirinko svetainei, kurioje dokumentuojamas jo nežemiškas nuotykis: www.nerdinspace.com ). Tai taip pat suteiks jam galimybę apžvelgti mūsų planetą iš viršaus ir už jos ribų.

Tai visada buvo Simonyi pirmenybė. Per keturis dešimtmečius trunkančią karjerą, kiekvieną kartą, kai jis susidūrė su kokia nors sunkiai įveikiama programinės įrangos ar gyvenimo problema, jis bandė ją išspręsti išeidamas už jos ribų arba virš jos. Jis netgi turi pavadinimą savo mėgstamam gambitui: jis vadina tai Going meta. Jaunystėje, septintojo dešimtmečio Vengrijoje, jis išmoko skaičiavimo pagrindus senoviniame sovietiniame pagrindiniame kompiuteryje, varomame vakuuminiais vamzdžiais, o paskui sukūrė savo pabėgimą į Vakarus. Aštuntajame dešimtmetyje legendiniame Xerox Palo Alto tyrimų centre (PARC), būdamas komandos, kuri išrado asmeninius kompiuterius, narys Simonyi parašė pirmąją modernią programą: tekstų rengyklę, kuri pašalino sudėtingus kodus, naudojamus tekstui žymėti, ir atvaizdavo dokumentą kaip atrodytų popieriuje. Ar jo Stanfordo universiteto daktaro disertacija apie metaprogramavimo metodą, siekiant padidinti programuotojų produktyvumą, karjera Microsoft, organizuojanti programinės įrangos kūrėjų legionus ir mokanti juos struktūrizuoti savo kodą, ar jo planuojama kelionė į Žemės orbitą šį pavasarį, peržengiant nusistovėjusius kelius. Darymas visada buvo Simonyi metodas. Dabar jis planuoja tai, kas, jo manymu, bus pats ryškiausias jo metas judėjimas. Simonyi tiki, kad gali išspręsti daugybę užsispyrusių problemų, kurios visada kamavo kompiuterius, pasiūlydamas visiems juos naudojantiems ir juos programuojantiems programuotojams aukštesnio lygio programinės įrangos vaizdą.



Billas Gatesas Simonyi vadina vienu puikių visų laikų programuotojų. Iš tiesų, Simonyi, be abejo, yra dauguma sėkmingas programuotojas pasaulyje, vertinamas pagal finansinį atlygį ir jo kūrinius naudojančių žmonių skaičių. (Kiti garsūs programuotojai-milijardieriai, tokie kaip Larry'is Elisonas ir pats Billas Gatesas, užsidirbo pinigų ir vardų steigdami ir valdydami technologijų įmones.) Simonyi galėjo lengvai pasirinkti likusį gyvenimą skirti filantropinėms veikloms, skraidinti lėktuvus ar skraidyti jachta. Vietoj to, sako jis, programuoja tikriausiai sunkiau nei bet kada anksčiau. Jis yra apsėstas projekto, kurio jis vykdė pusantro dešimtmečio ir kuris prieš ketverius metus jį išnešė iš „Microsoft“ durų. Jis didžiuojasi savo profesija. Tačiau jį taip pat persekioja mintis, su kuo programišiai turi kovoti kiekvieną kartą sėsdami prie kodo. Jis klausia: Kodėl taip sunku sukurti gerą programinę įrangą?

Multimedija

  • Papildomos Simonyi nuotraukos

Napoleono kodeksas

Mūsų civilizacija veikia naudojant programinę įrangą, sako Bjarne'as Stroustrup, C++ programavimo kalbos išradėjas. (žr. Programavimo problema) . Tačiau pati programinė įranga neveikia labai gerai. Kad ir kur pažvelgtumėte, programinė įranga viršija biudžetą, atsilieka nuo grafiko, nesaugi, nepatikima ir sunkiai naudojama. Kiekvieną kartą, kai organizacija bando įdiegti naują sistemą arba atnaujinti seną, ji prisiima didžiulę riziką; šiandien dideli informacinių technologijų projektai yra technologinės deguto duobės, kurios imobilizuoja institucijas. Tyrimai reguliariai praneša, kad du trečdaliai tokių projektų patiria didelių vėlavimų, didelių išlaidų viršijimo arba abu. JAV vyriausybei pasirodė beveik neįmanoma įdiegti ar atnaujinti didelio masto programinės įrangos sistemų: dešimtmetį trukusios Federalinės aviacijos administracijos ir FTB pastangos žlugo chaose. Verslui pasisekė ne ką geriau. Pavyzdžiui, „McDonald's“ vadovai svajojo apie žiniatinkliu pagrįstą valdymo sistemą, kurią jie pavadino „Innovate“, kuri realiuoju laiku stebėtų mėsainių, bulvyčių ir vištienos grynuolių srautą kiekviename jų restorane visame pasaulyje. Iki to laiko, kai jie atsisakė ir atšaukė projektą, jie turėjo nurašyti 170 mln.



Tokios nesėkmės susideda. Kiekvienais metais, remiantis 2002 m. Nacionalinio standartų ir technologijų instituto atliktu tyrimu, programinės įrangos gedimai kainuoja 59,5 mlrd. Tačiau blogos programinės įrangos kaina taip pat gali būti išmatuota žmonių vargais ir net prarastomis gyvybėmis. Per 1991 m. Persijos įlankos karą „Patriot“ raketų baterija nešaudė į atvykstantį „Scud“ dėl programinės įrangos gedimo; tiesioginis smūgis į kareivines žuvo 28 JAV kariai.

Per pastarąjį pusšimtį metų kompiuterija padarė nuostabią pažangą. Programuotojai atsisakė perfokortelių ir teletipų. Jie suteikė mums kompiuterį ant kiekvieno darbastalio, įrankių darbui, žaislų žaidimams ir tinklą, jungiantį namus ir įmones, kad sudarytų gausų pasaulinį informacijos ir pramogų telkinį. Šią pažangą paskatino eksponentinė Moore'o dėsnio kreivė, „Intel“ įkūrėjo Gordono Moore'o prognozė, kad mikroschemų galia padvigubės (arba jų kaina padvigubės) kas vienerius ar dvejus metus. Tačiau net jei dėl Moore'o įstatymo kiekvienais metais nauji kompiuteriai tapo greitesni ir pigesni, mūsų kompiuterių sistemų lankstumą ir naudingumą ribojo lėtesnė ir netolygi programinės įrangos raida. Viena šios problemos formuluotė yra žinoma kaip Wirtho dėsnis, pagal programavimo ekspertą Niklausą Wirthą: programinė įranga lėtėja greičiau nei aparatinė įranga.

Simonyi dalijasi didžiąja dalimi nepasitenkinimo programine įranga. Mes žinome, kad programinė įranga yra skaitmeninio gausybės rago kliūtis, sako jis. Tai atima didžiulius talento ir laiko resursus. Tai apmaudu ir sunku pakeisti. Jis blokuoja naujoves daugelyje organizacijų.



Simonyi siekia panaikinti tą programinės įrangos kliūtį – būdinga, pereinant prie meta. Jis sukūrė metodą, kurį jis vadina tyčiniu programavimu (arba pastaruoju metu tyčiniu programine įranga), kuris, jo manymu, panaikins programavimą. Jei Simonyi pasiseks, programuotojai nustos bandyti valdyti savo klientų poreikius. Vietoj to, kiekvienai problemai, kurią jų prašoma išspręsti – ar atsargų sekimo, ar raketų valdymo – jie sukurs bendrus įrankius, kuriuos patys kompiuterių vartotojai galės modifikuoti, kad vadovautų programinės įrangos evoliucijai ateityje.

Pilką praėjusių metų spalio popietę sėdėjau su Simonyi Bellevue, WA, priešais du gretimus ekranus jo biure Intentional Software – įmonėje, kurią jis įkūrė po to, kai 2002 m. paliko „Microsoft“, siekdamas plėtoti ir komercializuoti savo didelę idėją. Simonyi lenktyniavo su manimi per pristatymą, kurį ruošėsi būsimai konferencijai; jis panaudojo „Microsoft Office PowerPoint“ skaidres, kad apibūdintų savo siūlomo didelio programavimo šuolio viziją. Jis jau buvo perkeldamas vieną skaidrę, kai programa tiesiog nustojo reaguoti.

Kairiojo ekrano kampe iššoko sąvaržėlė su akiniais: plačiai šmeižiamas biuro padėjėjas, kurį Microsoft pristatė 1997 m. Simonyi bandė nekreipti dėmesio į animacinių filmų padėjėjo siaubingą nerimavimą, bet jį pribloškė. Niekas neveikia, atsiduso jis. Taip yra todėl, kad Clippy man padeda.



buvau suglumęs. Norite pasakyti, kad neišjungėte Clippy? Seniai ieškojau „Office“ meniu ir pažymėjau, kuris langelis buvo reikalingas, kad kartą ir visiems laikams nuslopinčiau erzinantį antropomorfą.

Nežinau kaip, – prisipažino Simonyi, šiek tiek juokdamasi, tarsi sakydavo: Taip, žinau, ar ne ironiška?

Tai buvo. Simonyi daug metų vadovavo programų komandoms Microsoft, Word ir Excel kūrėjams, kurių produktais kasdien naudojasi dešimtys milijonų žmonių. Jis plačiai laikomas Microsoft Word tėvu. (Žinoma, šiems sakiniams rašau naudoju Word.) Ar Charlesas Simonyi galėjo sutikti savo atitikmenį Clippy?

Simonyi žiūrėjo į savo priešininką, tarsi būtų užsidaręs telepatinėje kovoje. Tada jis atsisuko į mane, spindinčiomis mėlynomis akimis. Man reikia pagalbininko: „Super-Clippy“, kuris parodytų, kur jį išjungti! Simonyi troško meta-Clippy.

2004 m. Simonyi pasiūlė savo įstatymą: Viskas, ką galima padaryti, gali būti padaryta „meta“. Jaunystėje – kai jis grandioziškai pavadino projektą Simonyi's Infinitely Glorious Network – jis tikriausiai būtų buvęs arogantiškesnis: Viskas, ką gali padaryti. daryti, aš galiu padaryti meta! Tačiau, kaip ir daugelis vunderkindų, kuriems gerai sekėsi ir gerai paseno, Simonyi išmoko sumažinti savo nuolankumą ir malonę. Prieš dešimtmetį jis save apibūdino kaip apšiurusios išvaizdos vaikiną su užsienietišku akcentu. Jis mėgsta juodus vėžlius ir dvieilius švarkus. Savo stačia laikysena ir kvadratiniu veidu, tamsiais plaukais, šukuotais į priekį per kaktą, dažnai sakoma, kad jis panašus į didesnio kaulo Napoleoną.

Tyčinė programinė įranga yra didžiulė schema srityje, kurioje didelės schemos retai pasiteisino. Kiekviena ankstesnė naujovė, pristatyta kaip išsamus programinės įrangos problemų sprendimas, buvo tik nedidelis, laipsniškas patobulinimas. Tačiau Simonyi kupina savarankiško imigranto, kuris visada tvirtai laikė savo batus, pasitikėjimo savimi. Nuotraukoje, kuri kabo virš jo stalo, jis stovi Baltuosiuose rūmuose po Ronaldo Reigano portretu. Jo plati šypsena atspindi prezidento šypseną. Antraštė skelbia „Du optimistai“.

Naujos Simonyi įmonės biurai yra aptakiame stikliniame dangoraižyje, o pasilenkę pro langą pamatysite pritūpusio balto pastato, kuriame 1981 m. buvo pirmasis jo biuras Microsoft biure, stogą. ( Dabar tai bankas.) Nuo tada „Microsoft“ išaugo neatpažįstamai. Programinės įrangos pramonė pakeitė pasaulį. Taigi kodėl Simonyi nusprendė perrašyti visas jo taisykles? Problema tokia didelė, kad atrodo, kad tai yra nusistovėjusios dalykų tvarkos dalis. Simonyi pasiūlytas sprendimas gali užtrukti dešimtmečius, o jo kritikai yra labai skeptiški. Niekas jo neprašo palikti žinomų programavimo rutinos ir žengti į naują pasaulį. Tačiau tokios migracijos jam praeityje pasiteisino.

Mašinos kalba

Simonyi gimė Budapešte 1948 m. Fizikos profesoriaus sūnus būdamas 15 metų pamilo savo pirmąjį kompiuterį – mamutą Rusijos Ural II Vengrijos Centrinėje statistikos biure. 1960-aisiais Uralas, kuris gavo nurodymus per kasos aparato tipo klavišus ir turėjo daugybę vakuuminių vamzdžių skaičiavimams atlikti, jau būtų buvęs reliktas bet kurioje kitoje pasaulio vietoje. Tačiau Vengrijos komunistų lyderiai bandė panaudoti sovietų atmetimą, kad optimizuotų geležinkelių ir krovinių vežimo grafikus. Uralas neatitiko užduoties: nebuvo galimybės realiuoju laiku įvesti siuntų duomenų. Tai buvo visiškai beviltiška, prisimena Simonyi. Tai galėjo padaryti labai lengvai pagal pasiūlą ir paklausą. Deja, tai buvo politiškai neteisinga.

Bet Simonyi nerūpėjo. Jis sako, kad man patiko tas kompiuteris, nors jis buvo nenaudingas. Vaikystėje jis sukonstravo Erector Set automobilį su keturių greičių pavarų dėže – ne tiek dėl to, kad norėjo su juo žaisti, kiek paprasčiausiai suprasti, kaip jis veikia. Buvęs tėvo mokinys Simonyi susirado Uralo naktinės slaugės darbą. Kadangi aparatas kiekvieną kartą išjungdamas ir įjungdamas išpūtdavo vamzdelį, Statistikos tarnyba pageidavo leisti jam veikti visą naktį. Taigi nuo sutemų iki aušros pagrindinis kompiuteris priklausė Simonyi; jis turėjo asmeninį kompiuterį prieš tokių dalykų egzistavimą. Jis išmoko jį programuoti rašydamas protingas, bet nenaudingas procedūras, skirtas sukurti stebuklingus kvadratus – skaitines matricas, kuriose sutampa eilučių, stulpelių ir įstrižainių sumos.

Programuotojai kitur pasaulyje jau buvo išradę programavimo kalbų Babelį – Fortran, Cobol, Lisp (pasakų kalba: žr. Senovės tekstą, p. 20) ir tt, kad palengvintų savo darbą, kurį anuomet kaip ir dabar sudarė kruopštus rašymas. sudėtingi instrukcijų rinkiniai kompiuteriams vykdyti. Tomis kalbomis instrukcijos buvo teksto eilutės, kurios buvo įvedamos klaviatūromis ir dažnai saugomos perfokortelėse. Tada šis šaltinio kodas buvo sukompiliuotas arba išverstas į mašininį kodą vienas smėlis 0 s, kurią galėtų suprasti skaitmeninis kompiuteris. Šis metodas iš esmės nesikeičia ir šiandien, net jei dauguma programuotojų dabar naudoja programavimo įrankius, veikiančius įprastuose kompiuteriuose. Tačiau Urale Simonyi išmoko programuoti primityvesniu lygmeniu, sunkiai įveikdamas mašininės kalbos opkodus, nurodymais pagal instrukcijas nurodydamas atminties paėmimų, papildymų, atminties saugyklų ir šuolių, kuriuos turėjo sekti kompiuterio procesorius, sekas. kad būtų galima atlikti net menkiausią operaciją. Taip buvo (kaip Simonyi sakė autoriui Steve'ui Lohrui 2001 m. knygoje Eiti į ) Akmens amžiaus programavimas. Simonyi vis dar prisimena kodus. Dvidešimt du yra JUMP, sako jis šiandien. Jis įrašytas į mano ROM.

septintojo dešimtmečio Vengrija, vis dar blykčiojanti nuo sovietų numalšinto 1956 m. sukilimo, nebuvo vieta ambicingam jaunuoliui, turinčiam problemų sprendimo skonį. Būdamas 17 metų Simonyi stažavosi Danijos kompiuterių kompanijoje, rodydamas kai kuriems jos programuotojams savo rankomis užkoduotų Uralo programų pavyzdžius. Vengrijos valdžia tikėjosi, kad Simonyi grįš; jis jau buvo laimėjęs trokštamą vietą universitete. Vietoj to, tėvo skatinamas, jis pabėgo į JAV.

Danijos programavimo eksperto Peterio Nauro rekomendacinis laiškas padėjo jam įstoti į Kalifornijos universitetą Berklyje. Jis apmokėjo sąskaitas dirbdamas Berklio kompiuterių centre, kur atkreipė fakulteto nario, vardu Butleris Lampsonas, dėmesį. Lampsonas buvo vienas iš JAV gynybos pažangių tyrimų projektų agentūros projekto „Genie“ – eksperimento su laiko pasidalijimo kompiuterinėmis sistemomis, kurio metu keli vartotojai, sėdintys prie terminalų, galėtų dalytis vieno kompiuterio smegenų laiku, lyderių. Kai projekto Genie kūrėjai įkūrė kompaniją, pavadintą Berkeley Computer Corporation (BCC), kurios tikslas buvo sukurti mašiną, kuri komercializuotų jų darbą, Lampsonas įdarbino Simonyi.

BCC įmonėje Simonyi visą naktį derindavo klaidinantį bendrovės prototipą, dirbdamas su sistemos dizaineriu Chucku Thackeriu. Vieną vakarą Simonyi pasirodė su permatoma juoda apranga – savotišku hipišku daiktu iš vienos iš Telegraph Avenue parduotuvių, sako jis. Šiandien jis tiksliai neprisimena, kodėl – galbūt iš vakarėlio? Tą vakarą derinimas sekėsi ypač gerai, o apranga tapo sėkmės žavesiu – Simoni derinimo kostiumu.

Vos po kelerių metų BCC susitraukė, tačiau Lampsonas, Thackeris ir didžioji dalis BCC komandos persikėlė į Xerox PARC. Simonyi – tuomet tik atsitiktinis vengrų bakalauras be žaliosios kortelės, kaip jis dabar sako, prisijungė prie jų 1972 m., dirbdamas „Xerox“ ir tuo pat metu siekdamas Stanfordo daktaro laipsnio. Bobas Tayloras, kuris dalį tos legendinės eros prižiūrėjo PARC kompiuterių mokslo laboratoriją, sako, kad Simonyi kūrybiškumas išsiskyrė net iš garsiosios laboratorijos minios: jis tiesiog galėjo įsivaizduoti būdus, kaip išreikšti kodą ir idėjas, dėl kurių jis buvo išstumtas iš topų.

Tai buvo svaiginantis laikas. Inžinierių komanda kūrė daugybę naujovių, kurios suformuos kitą ketvirtį amžiaus kompiuterių eros: grafinę vartotojo sąsają, tinklą (Ethernet), lazerinį spausdintuvą, objektinį programavimą (Smalltalk), nešiojamąjį kompiuterį ( Dynabook) ir kt. Visi šie laimėjimai susiliejo į prototipinį asmeninį kompiuterį, vadinamą Alto.

„Alto“ buvo nuostabus išradimas, tačiau nebuvo aišku, ką su juo galima padaryti, kol Simonyi ir jo kolegos nesukūrė žinomiausios jo programos: tekstų rengyklės, pavadintos „Bravo“, kurios ekrane rodomas tipas atitiko tai, ką sistema išves. prie naujojo lazerinio spausdintuvo. Esamos teksto rengyklės turėjo sudėtingas kodų sistemas teksto formatavimui ekrane (visi, kurie devintajame dešimtmetyje naudojo WordPerfect asmeniniame kompiuteryje, prisimins jos įterptus kodus); „Bravo“ leidžia pamiršti kodus, tiesiogiai manipuliuoti dokumento dizainu ir iškart pamatyti pokyčius. Atvykęs „Citibank“ vadovas peržiūrėjo demonstracinę versiją ir pacitavo komiko Flipo Wilsono įžūlios veikėjos Džeraldinos parašų eilutę: Ką matai, tą ir gauni! Vardas (sumažintas iki akronimo Wysiwyg ir tariamas wizzywig ) įstrigo. Staiga „Bravo“ turėjo vartotojų: PARC tyrėjų giminaičiai ir draugai pradėjo prašyti, kad jis galėtų spausdinti mokyklų informacinius biuletenius ir formatuoti akademinius darbus. Lampsono žmona išspausdino disertaciją naudodama sistemą, o kai Simonyi atėjo laikas atspausdinti savo, jis padarė tą patį.

Abstrakcijos lygiai

Wysiwyg yra abstrakcijos sluoksnio pavyzdys – aukštesnio lygio įrankis, leidžiantis kompiuterių vartotojams nepaisyti tam tikro žemesnio lygio sudėtingumo. Programuotojai visą laiką naudoja abstrakcijas. Tekstinis kodas, parašytas programavimo kalba, yra mašininio kodo, kurį kompiuteris iš tikrųjų supranta, abstrakcija. Žiniatinklio domeno vardas yra serverio skaitmeninio interneto protokolo adreso abstrakcija.

Tačiau dauguma kompiuterių sistemų abstrakcijos sluoksnių yra mažiau matomi ir paslaptingesni nei Wysiwyg. Nuo tada, kai programuotojai nustojo įsiminti operacinius kodus, kuriuos Simonyi naudojo savo jaunystėje, jie sluoksniavo naujas abstrakcijas ant senesnių abstrakcijų. Kiekviena programuotojų karta naudoja savo eros programavimo kalbas ir įrankius, kad sukurtų naujos kartos programas. Abstrakcijos sluoksniai susikaupė tarsi geologiniai sluoksniai. Pranešimai nuolat kyla iš dvejetainio jūsų mašinos pagrindo ir vėl grįžta žemyn, todėl spustelėjus pelę galima atlikti savo funkciją. Spustelėjus pelę, operacinėje sistemoje suaktyvinamas tam tikras kodas, kuris siunčia pranešimą teksto apdorojimo programai, nurodantį operacinei sistemai išsaugoti failą standžiajame diske. Tačiau tas iš pažiūros paprastas procesas įmanomas tik dėl daugybės abstrakcijos sluoksnių.

Programinės įrangos istorija yra šių sluoksnių istorija, kiekvienas iš jų pakelia programuotojus toliau nuo dvejetainių, todėl jie gali geriau įtikinti kompiuterius atlikti naudingas užduotis. Nuolat programuotojai įgijo daugiau galios. Tačiau jie taip pat sprendė vis ambicingesnes problemas. Programos didėjo, o programuotojai pradėjo pasiklysti vadinamojo spagečių kodo raizginiuose, kurių neįmanoma išnarplioti ir pataisyti. Taigi dideli programinės įrangos projektai tapo nusivylimo ir vėlavimo epais. Programų vadovai susidūrė su tokiomis verslo problemomis kaip: Kaip realiai planuoti projektą? Kaip gerinate individualų produktyvumą? Kaip koordinuojate sudėtingą darbą didelėje komandoje? Į kiekvieną iš šių klausimų buvo stebėtinai sunku atsakyti.

Komandos darbo koordinavimo sunkumai įkvėpė programinės įrangos inžinerijos žinomiausią posakį, žinomą kaip Brukso dėsnis: pridėjus darbo jėgos vėlyvam programinės įrangos projektui, jis tampa vėliau. Frederickas P. Brooksas jaunesnysis padarė tokią niūrią išvadą po to, kai septintajame dešimtmetyje vadovavo sudėtingoms IBM pastangoms kurti programinę įrangą savo 360 pagrindinių kompiuterių. Savo knygoje 1975 m. Mitinis žmogaus mėnuo Brooksas pastebėjo, kad didesnėse komandose darbas vyksta lėčiau dėl koordinavimo sąnaudų – programuotojai praranda laiką, kai vienas kitą informuoja apie savo darbą.

Tai buvo 1977 m. Simonyi disertacijos „Meta-programavimas: programinės įrangos gamybos metodas“ fonas. Simonyi pasiūlė naują produktyvumo optimizavimo metodą, pagal kurį vienas pagrindinis programuotojas arba metaprogramuotojas sukūrė produktą ir apibrėžė visas jo sąlygas, o tada perdavė projektą technikai, bitės darbuotojos programuotojams, kurie atliks diegimą. Simonyi siekė pabėgti nuo Brookso dėsnio, uždrausdamas technikai kalbėtis tarpusavyje: visas bendravimas turėjo vykti per metaprogramuotoją. Savo disertacijoje jis išbandė idėją naudodamas dvi grupes dviejuose projektuose – A ir B. Jo despotiškas požiūris į programavimą niekada neprigijo, bet vargu ar tai jam trukdė. Pagrindinis Simonyi tikslas tiriant disertaciją buvo ne įrodyti savo idėjų vertę, o greičiau parašyti Bravo, naują Wysiwyg tekstų rengyklę. Jam nepavyko įtikinti PARC komandos samdyti papildomų programuotojų, todėl jis panaudojo savo disertaciją kaip apgaulę, kad padėtų. Pats „Bravo“ buvo projektas B.

Aštuntajame dešimtmetyje Simonyi tapo nekantrus, nes „Xerox“ nesugebėjo paversti novatoriškų PARC tyrimų sėkmingais produktais. Vieną dieną draugas jam parodė VisiCalc – naują Apple II skaičiuoklių programą. Simonyi tai sujaudino. Čia buvo dar viena programa, pvz., „Bravo“, galinti pakeisti žmonių gyvenimus, tačiau skirtingai nei „Bravo“, ji veikė masiniame kompiuteryje, kurį žmonės galėjo sau leisti nusipirkti. Jis suprato, kad PARC darbas niekada neišvys dienos šviesos. Jis paprašė savo buvusio PARC kolegos Bobo Metcalfe'o, kuris 1979 m. paliko laboratoriją ir įkurti 3Com, rekomenduoti būsimus vadovus besikuriančioje kompiuterių pramonėje. Sąrašo viršuje buvo Billas Gatesas.

1981 m. Simonyi persikėlė į Sietlą, kad įkurtų naujų programų grupę „Microsoft“, kuri iki tol pardavinėjo programavimo kalbas ir operacines sistemas. Jam buvo 33 metai, bet dėl ​​to jis užaugo tarp „Microsoft“ jauniklių (Gatesui tada buvo 26 metai, Steve'ui Ballmeriui – 25).

Per visus metus, kai Simonyi prižiūrėjo produktus, kurie galiausiai susiliejo į programų rinkinį, žinomą kaip „Microsoft Office“, jis ir toliau siekė naujų efektyvumo naujų programavimo abstrakcijų srityje. Visų pirma, jis mokė „Microsoft“ programuotojų kartas, kaip sekti daugybę kintamųjų pavadinimų, naudojamų didelėse programose. Kompiuterių programavime kintamieji reiškia informaciją, kuri gali keistis programai veikiant. Pavyzdžiui, internetinės parduotuvės pirkinių krepšelio programoje bus kintamieji, rodantys kiekvienos rūšies perkamų prekių skaičių, kiekvienos prekės kainą ir siuntimo išlaidas bei mokesčius. Naudodamas šiuos kintamuosius, programuotojas gali parašyti paprastą kodo eilutę, kuri padaugina kiekį iš kainos, prideda siuntimo mokesčius ir mokesčius bei apskaičiuoja bendrą kainą, kuri tampa dar kito kintamojo verte.

Didelė programa gali turėti tūkstančius skirtingų kintamųjų, kuriuos programavimo komanda turi išlaikyti tiesiai. Labai svarbu juos atsargiai pavadinti. Šiandien daugumoje kodų yra kintamųjų pavadinimų, skirtų perteikti prasmę programuotojams, kurie jį skaitys, pvz., NumberOfItems arba ShoppingCartTotal. Simonyi vardų suteikimo schemoje, kurią jis sugalvojo savo reikmėms prieš daugelį metų, kiekvienas kintamojo pavadinimas pateikiamas su priešdėliu, kuris nurodo naudingą informaciją apie jį, pavyzdžiui, jo tipą (sveikasis skaičius, tarkime, dešimtainė trupmena arba raidžių eilutė). Kai kurios sistemos riboja kintamųjų pavadinimų ilgį iki aštuonių simbolių; Simonyi tiesiog paliko balses.

Gautas kodas buvo tankus ir sunkiai skaitomas. Pasak programavimo pradininko Andy Hertzfeldo, Simonyi sistema buvo žinoma kaip vengriškas užrašas, pagerbiant jos kūrėjo gimtinę, ir dėl to, kad programos atrodė taip, tarsi jos būtų parašytos kokia nors nesuvokiama užsienio kalba. Vengras yra plačiai prakeiktas savo niekintojų. Kanados Java ekspertas Roedy Greenas juokaudamas pavadino jį taktiniu branduoliniu šaltinio kodo užmaskavimo metodų ginklu. „Mozilla“ programuotojas Alecas Flettas parašė šią parodiją:

prepBut nI vrbLike adjvengrų kalba! qKas yra menasDidelė nProblema?

Hertzfeldas, rašydamas apie susidūrimą Apple su tam tikru vengrišku kodu, kurį parašė kolega, dirbusi su Simonyi PARC, sakė, kad vardai atrodė taip, lyg juos pasirinko Supermeno priešas iš 5-osios dimensijos, ponas Mxyzptlk.

Tačiau nors kritikai mano, kad vengrų kalba kodą daro neįskaitomu, Simonyi juo didžiuojasi ir naudojasi iki šiol.

Meta-euforija

Dešimtojo dešimtmečio pradžioje „Microsoft“ sėkmė padarė Simonyi turtus. (Keletą metų, Forbes apskaičiavo, kad tai yra 1 milijardas dolerių.) Tačiau jis vis tiek jautė nebaigtų darbų tempimą. Dėl programinės įrangos painiavos „Microsoft“ buvo sukurta „Office“ programa. Tačiau dabar, kai ant kiekvieno stalo kompiuteriai yra galingesni už Alto, o internetas juos jungia, programinės įrangos krizė buvo visų krizė. Simonyi pradėjo galvoti, kad laikas vėl pereiti prie meta.

Charlesas visada stengėsi kurti savo sistemas taip, kad būtų padidintas abstrakcijos lygis, kad galėtumėte valdyti sistemos sudėtingumą. Kadangi sudėtingumas yra mirtis, sako Chuckas Thackeris, senas Simonyi kolega iš BCC ir PARC, vadovaujantis „Microsoft“ kompiuterių architektūros tyrimų projektui. Ir, deja, šiais laikais teikiant patalpas žmonės iš tikrųjų nori rezultatų sudėtingoje sistemoje. Šiuo metu laikomės pirštų galiukais.

Perėjęs į „Microsoft Research“ pareigas, Simonyi pradėjo apibrėžti tyčinio programavimo arba trumpiau IP sąvoką. Tyčinis programavimas papildytų programinės įrangos rašymo praktiką visiškai nauju abstrakcijos sluoksniu. Tai leistų programuotojams reikšti savo ketinimus nenugrimzdami į vadinamųjų įgyvendinimo detalių liūną, kuris visada grasino juos praryti. Kaip ir Simonyi disertacijos metaprogramuotojai, perduodantys instrukcijas bitėms-darbininkams, tyčinis programuotojas perduos šį darbą, bet ne jaunesniam kolegai. Vietoj to, tyčinis programavimas reikalavo tam tikros kodų gamyklos, vadinamos generatoriumi, programos, kuri priima santykinai aukšto lygio komandų rinkinį ir išskleidžia išsamesnį darbo kodą. Tikslas buvo ne tiek palengvinti programavimo darbą, kiek leisti programuotojams išvalyti savo smegenis nuo smulkmenų, kad jie iš tikrųjų galėtų būti kūrybingi.

Nuo pat savo programavimo pradžios, kai paauglys permušė opkodus į Uralą, Simonyi kopė abstrakcijos laiptais. Tačiau jis jautė, kad nėra pakankamai aukštas. Daugeliu atžvilgių programavimas vis dar jautėsi primityvus. Kodėl programuotojai vis dar buvo apkrauti nesuderinamomis programavimo kalbos sintaksėmis? Kodėl buvo taip sunku išplėsti pageidaujamas kalbas į naujas sritis? Kodėl programuotojai vis dar dirbo su paprastu tekstu, sudėliodami nedidelį skaičių simbolių į linijines eilutes, kaip tai buvo perfokortų praeityje? Simonyi Wysiwyg darbas išlaisvino biuro darbuotojus kurti ir redaguoti sudėtingus dokumentus. Inžinieriai ir dizaineriai naudojo pažangius CAD/CAM įrankius kurdami ir modifikuodami dangoraižių ir lėktuvų brėžinius. Kodėl programuotojai, burtininkai, kurie padarė visa tai įmanoma, vis dar išskleidė savo kodą po vieną simbolį?

Jo „Microsoft Research“ komanda pradėjo dirbti ir iki 1995 m. kovo mėnesio sukūrė veikiančią programų kūrimo sistemą, naudojant tyčinio programavimo metodą. Simonyi teigė, kad IP pasiekė visišką savarankiškumą: tai yra, visas ateities darbas su IP bus atliktas naudojant patį IP. Savo komandą jis apdovanojo marškinėliais, ant kurių puikavosi vienas mėgstamiausių jo vaikystės paveikslų: barono Miunhauzeno atvaizdas, iškeliantis save ir savo arklį iš pelkės, tampydamasis už plaukų. Simonyi paskelbė apie tyčinį programavimą pasauliui 1995 m. rugsėjį paskelbtame dokumente „Kompiuterių kalbų mirtis“. Atėjo laikas, kaip jis vėliau pasakė, batsiuvio vaikams gauti batus.

Dešimtajame dešimtmetyje ir naujajame tūkstantmetyje – kol „Microsoft“ kariavo su „Netscape“ ir JAV teisingumo departamentu bei išmušė „dot-com“ burbulą ir žlugimą – Simonyi ir jo komanda dirbo ir mokėsi.

Tuo tarpu, pradedant 2001 m., „Microsoft“ pastūmėjo kūrėjų, kūrusių „Windows“ programinę įrangą, armijas priimti naują programavimo sistemą, vadinamą „.Net Framework“. Skirtingai nuo tyčinio programavimo, .Net buvo baigtas, todėl reikėjo mažiau radikalios pertraukos nuo esamų programavimo metodų. Simonyi norėjosi išimti savo idėją iš laboratorijos ir pristatyti ją klientams, bet tokiomis aplinkybėmis tai buvo nepatogu. Jis paaiškina: „Tai buvo nepraktiška, kai „Microsoft“ artimiausiu metu padarė milžinišką pažangą naudodama .Net, kažkaip išsiųsti ką nors iš tos pačios organizacijos, kuri sakytų: „Taip jūs neturėtumėte daryti dalykų – o jei darytumėte dalykus šioje kitoje , labiau trikdantis būdas?

Simonyi buvo įmonės žmogus daugiau nei 20 metų. Tačiau 2002 m. jis paliko „Microsoft“ ir įkūrė nepriklausomą įmonę. Jis išėjo su patentų kryžminės licencijos sutartimi, kuri leido jam naudotis tyčinio programavimo tyrimo koncepcijomis ir idėjomis, bet neleido su savimi pasiimti jokio savo seno kodo. Jis turėtų pradėti rašyti naują kodo bazę nuo nulio.

Po naujosios įmonės reklama Simonyi atsisakė žodžio programavimas ir pervadino savo projektą kaip tyčinę programinę įrangą. Pagrindinė idėja nepasikeitė, bet dabar jis pradėjo pabrėžti šio požiūrio vertę neprogramuotojams. Simonyi žingsnis buvo maždaug toks: šiandien tik programuotojas gali daryti tiesioginį poveikį programinei įrangai. Dalyko ekspertai arba srities ekspertai – žmonės, kurie iš tikrųjų supranta, ką turi daryti programinė įranga, nesvarbu, ar tai būtų medicininių įrašų tvarkymas, įmonės apskaita ar klimato modeliavimas – negali keisti savo įrankių; jie yra priversti pateikti tam tikrą nuolankų prašymą programuotojui. Intentional Software parduotų programinės įrangos kūrimo įrankius ne tik programuotojams, bet ir domenų ekspertams, kurie tikrai išmano savo sritis.

„Intentional Software“ strategija pasiskolinta iš programavimo tendencijos, žinomos kaip konkrečios srities kalbos arba DSL – mažai programavimo dialektų, pritaikytų konkrečių disciplinų poreikiams. Simonyi giria DSL, bet sako, kad jie nėra pakankamai toli. Juos sunku sukurti, todėl jie brangūs; galiausiai jums prireiks daugiau nei vienos (sąskaitų už medicininę apskaitą sistemai reikia bent jau medicininės ir finansinės kalbos); ir jie nesuderinami vienas su kitu. Intentional Software sistema yra tarsi kelių DSL, galinčių bendrauti tarpusavyje, gamykla.

Štai kaip tai gali veikti: Tarkime, kad tarptautinis bankas norėjo sukurti naują operacijų keliomis valiutomis valdymo sistemą. Pirma, paties banko srities ekspertai nustatytų sistemos funkcionalumą, naudodami jiems įprastus terminus ir simbolius bei nustatydami svarbiausius kintamuosius (operacijos laiką arba vertę arba dydį) ir dažniausiai taikomas procedūras (kapitalų konvertavimas iš vienos valiutos į kitą arba pirkimo apsidraudimas). prieš vertės kritimą). Tada programuotojai paimtų tą informaciją ir sukurtų konkrečios srities programų generatorių, įkūnijantį šią informaciją. Atskiras programinės įrangos įrankis leistų domeno ekspertams eksperimentuoti su skirtingais duomenų rinkiniais ir būdais peržiūrėti tuos duomenis taip pat lengvai, kaip šiandien verslininkai pertvarko savo skaičiuokles.

Programuotojo nereikėtų kviesti kiekvieną kartą, kai kuri nors naujovė tarptautinės bankininkystės pasaulyje ar bet kurioje kitoje srityje reikalauja naujos programinės įrangos funkcijos. Klientas nesijaustų suspaustas dėl programavimo kalbos. Visi būtų laimingi.

Simonyi teigia, kad jo požiūris išsprendžia keletą nuolatinių programinės įrangos inžinerijos problemų. Jis dažnai sako, kad šiandienos programuotojai yra nesąmoningi kriptografai: jie renka reikalavimus ir žinias iš savo klientų, o tada, pažodžiui, slepia tą vertingą informaciją įgyvendinimo detalių kalne, tai yra, kodo. Svarbiausia, kad parašius kodą programuotojai turi atlikti bet kokius papildymus ar pakeitimus modifikuodami pats kodas . Tas darbas yra skausmingas, lėtas ir linkęs į klaidas. Neturėtume liesti kodo, sako Simonyi. Turėtume turėti galimybę kurti funkcijas ir duomenų struktūras – kurias apgalvotas programavimas vaizduoja kaip tyčinius medžius – ir leisti generatoriui atitinkamai modifikuoti kodą. (Išsamesnį tyčinio programavimo aprašymą rasite skyriuje „Intentional Programming Explained“)

2002 m. Simonyi subūrė naują kūrimo komandą; šiandien ją sudaro keliolika programuotojų, pasidalijusių tarp Bellevue ir Vengrijos. Jie pradėjo kurti Simonyi sąmoningo programavimo kodą nuo nulio ir dirbti su saujele klientų, kad patikrintų jų prielaidas ir gautų atsiliepimų. Prieš metus, įkvėpti naujos įžvalgos, kaip pateikti kelis nevienalyčių duomenų tipų rodinius, jie išmetė daug kodo ir pradėjo iš naujo. Tai kūrybinis destrukcija, sako Simonyi. „Microsoft“ buvo gana sunku tai padaryti, viską išmesti. Bet jūs turite atsisakyti dalykų, kuriuos sunku pratęsti.

„ThoughtWorks“, pasaulinė IT konsultacijų įmonė, yra vienas ankstyvųjų „Intentional Software“ klientų. Tačiau „ThoughtWorks“ generalinis direktorius Roy'us Singhamas sako, kad daugelis jo kolegų iš bendrovės iš pradžių skeptiškai žiūrėjo į naują Simonyi projektą: Daugelis žmonių žiūri į tai ir sako: „Puiki idėja – bet jos neįmanoma įgyvendinti.“ Todėl paklausėme kai kurių mūsų geriausios techninės mintys nuėjo ieškoti, ir jie visi grįžo ir pasakė, kad eina teisingu keliu. Taip, tai sunku. Taip, tai užtruks – gal daug metų. Tačiau intelektualiai jam viskas pavyko. Tai tinkama problema, kurią reikia išspręsti.

Jaučiau tam tikrą nusivylimą, kad dar neturime to, ką galėtume panaudoti gamyboje, sako Martinas Fowleris, vyriausiasis „ThoughtWorks“ mokslininkas. Atrodo, kad Charlesas velniškai neskuba išsiųsti. Tačiau reikia turėti omenyje vieną dalyką, kad jis praeityje siuntė dalykus – gana dramatiškus dalykus su „Office“.

Iki šiol matomas „Intentional“ darbo vaisius yra puikus įrankis, vadinamas Domain Workbench, kuris saugo svarbią programos informaciją tyčinio medžio duomenų bazėje ir siūlo daugybę skirtingų tos informacijos projekcijų. „Intentional“ demonstracijoje, kurią pernai rudenį surengė dviejose konferencijose, „Workbench“, naudodamas funkciją, pavadintą „Kaleidoskopas“, paėmė kodo fragmentų seriją ir parodė juos svaiginančiais formatais. Nesvarbu, kaip buvo nurodyta kodo sintaksė; galite jį peržiūrėti ir pakeisti naudodami bet kokią pageidaujamą žymą. Galite redaguoti savo programą kaip tradicinį skliausteliuose ir įtraukoje esantį kodą arba perjungti į kontūro formą, arba padaryti ją panašią į schematinę elektros instaliacijos schemą, arba pasirinkti ką nors vadinamo geležinkelio schema, tam tikra schemos žyma, gauta iš senamadiškų traukinių žemėlapių. . Kiekvienas rodinys yra pagrindinio medžio vertimas, kurį taip pat galite peržiūrėti ir redaguoti.

Tyčinės programinės įrangos darbas sukelia dvi pagrindines kritikos kryptis. Kai kurie teoriškai nusiteikę skeptikai sako, kad Simonyi tikslas užfiksuoti kompiuterių vartotojų ketinimus yra neįtikėtinas. Kaip atstovaujate ketinimus? – klausia kompiuterių mokslininkas Jaronas Lanier. Kai tik žinome, kaip smegenys kaupia informaciją, galbūt galime išreikšti ketinimus. Man tai atrodo tik fantazija. Kitas argumentas, paplitęs tarp programuotojų, yra praktiškesnis. Daugelis programuotojų mėgsta savo tekstinius redaktorius ir nepasitiki įrankiais, kurie juos atskiria nuo neapdoroto kodo. Kalbant apie grafines programavimo kalbas, tokias kaip „Visual Basic“ ir integruotas kūrimo aplinkas (IDE), kurios automatizuoja įprastas programavimo užduotis, jie jas vertina nuolaidžiai: tokios priemonės, anot jų, primeta savo veiklos būdus, varžo kūrybiškumą ir neleidžia programuotojams kodas, su kuriuo anksčiau ar vėliau jie turės susidurti. (Norėdami suprasti, kodėl programuotojai yra tokie atsargūs, žr. Nesandarių abstrakcijų dėsnį) Skeptiški programuotojai žiūri į tyčinę programinę įrangą ir mato tik kito IDE perspektyvą. Tiems, kurie mano, kad tekstą rašo tikri programuotojai, tyčinis programavimas nėra nei labai originalus, nei labai pageidaujamas.

Tačiau dažniausiai stebėtinai mažai diskutuojama apie tyčinę programinę įrangą gausiuose interneto programuotojų forumuose. Iš dalies taip yra todėl, kad tiek mažai matė jos programinę įrangą. „Intentional“ darbas vyko šiek tiek slaptai.

Kai jis pradėjo „Intentional Software“, Simonyi bendradarbiavo su Britų Kolumbijos universiteto profesoriumi Gregoru Kiczalesu. Simonyi žavėjosi Kiczales darbu, susijusiu su į aspektą orientuotu programavimu – būdu organizuoti ir modifikuoti kodą, atsižvelgiant į įvairias problemas, panašias į tyčinį programavimą. Kiczalesas, kitas PARC veteranas, savo karjerą praleido ieškodamas būdų, kaip kodą padaryti taip, kaip dizainas. Kiczalesas prisijungimą prie Simonyi laikė galimybe pasiekti tą tikslą. Tačiau Kiczalesas pasitikėjo atvirojo kodo kūrimu, o Simonyi nepasitikėjo. „Microsoft“ tipo uždaros parduotuvės metodas Kiczalesui tiesiog neatrodė ekologiškas. Būčiau tai padaręs Java, sako jis. Pirmasis leidimas būtų buvęs po šešių mėnesių. Nesutarimas buvo draugiškas, bet nesutaikomas, sako abu vyrai, ir neilgai trukus Kiczalesas išvyko.

Kol kas, apsaugota Simonyi turtų, „Intentional Software“ neturi tikslios datos ar pristatymo termino. Tačiau vienas iš dviejų pagrindinių klientų teigia, kad yra arti Intentional įrankių diegimo. Capgemini – Paryžiuje įsikūrusi tarptautinė IT paslaugų ir konsultacijų įmonė, aptarnaujanti dideles įmones ir kurios CTO Andy Mulholland yra Simonyi pažįstamas – pradėjo dirbti su Intentional praėjusį kovą ir svarsto galimybę panaudoti Intentional sistemą projektams Europos pensijų versle. Labai sudėtingos šios srities taisyklės, susipynusios su sudėtinga verslo srities struktūra, leidžia Simonyi metodui atrodyti patraukliai, sako Henkas Kolkas, Capgemini finansinių paslaugų technologijų pareigūnas, vadovaujantis įmonės darbui su Intentional.

Žemės valdymas

Simonyi susižavėjimas kosmosu tęsiasi visą gyvenimą. Būdamas 13 metų jis laimėjo konkursą tapti Vengrijos jaunesniuoju astronautu ir išvyko į Maskvą susitikti su kosmonautu. 1981 m., kai buvo priimtas naujas „Microsoft“ darbuotojas, jis įtikino vieną iš įkūrėjų Paulą Alleną, kad jis nepasinaudotų naujosios IBM asmeninio kompiuterio operacinės sistemos kūrimu ir skristų į Floridą stebėti pirmojo erdvėlaivio skrydžio.

Artėjantis Simonyi sprogimas siūlo jam visą ratą susijungti su sovietmečio technologijomis, kurios nulėmė jo gyvenimo kryptį. Mėnesius jis treniravosi Rusijos Jurijaus Gagarino kosmonautų mokymo centre Žvaigždžių mieste, įvaldydamas kosminių kostiumų ir kosminių tualetų detales bei mokydamasis rusų kalbos.

Kelionė į kosmosą patvirtins Simonyi, kaip to labai mažai tikėtino dalyko, statusą: įžymybės programuotoją. Jis turi du reaktyvinius lėktuvus ir piloto licenciją jais skristi. Jis pasirodo bulvariniuose laikraščiuose kaip dažnas namų ruošos vyriausiosios kunigės Martos Stewart palydovas. Jis pastatė 233 pėdų jachtą su apvyniotu stiklu deniu. Jis finansavo Oksfordo profesoriaus vietą savo draugui Richardui Dawkinsui, darvino teoretikui.

Žinoma, niekas iš to neturės įtakos Simonyi siekiui palengvinti lėtines programinės įrangos srities bėdas. Neužtenka būti puikiu programuotoju, kartą pasakė Simonyi Michaelui Hiltzikui, PARC istorijos autoriui. Turite rasti didelę problemą. Tyčia gali niekada netesėti savo didžiųjų pažadų. Tačiau niekas negali apkaltinti Simonyi pasirinkus per kuklią problemą.

Jo namai šiais laikais yra dvaras prie Vašingtono ežero, žemiau kranto nuo Billo Gateso namo, su meno galerija, stikliniu baseinu, sraigtasparnių oro uostu, kompiuterių laboratorija su magnetinėmis sienomis ir tekinimo bei grąžto presu. rūsyje (kad išpildytų tuos Erector Set potraukius). Namo statyba kainavo 10 milijonų dolerių: jis pasviręs septynių laipsnių kampu ir atrodo, kad jį ištiko lengvas žemės drebėjimas. Niujorko laikas rašytoja Patricia Leigh Brown, kuri stebėjosi jos hermetišku matematiniu tikslumu ir nustatė, kad jis toks didelis, kad lankytojas gali pasijusti kaip vienišas asteroidas, barškantis aplink Saulės sistemą.

[Tik] Charlesas pastatys 20 000 kvadratinių pėdų namą su vienu miegamuoju, kartą pastebėjo Simonyi disertacijos patarėjas ir PARC kolega Butleris Lampsonas. Vienišame miegamajame yra į kabiną panašus valdymo centras, leidžiantis Simonyi pakoreguoti visas savo sistemas – šildymo, pramogų, telefono, apšvietimo ir laistymo – taip, kad jis būtų patenkintas. Kaip povandeninis laivas, paaiškino jis Brownui. Prieš panardinant jie visi turi būti žali. Taip pat yra pasukama lova, kurią Simonyi gali naudoti, kad patobulintų vaizdą į ežerą; arba į Sietlo panoramą, kur biuro darbuotojai grumiasi su savo dokumentais ir skaičiuoklėmis; arba į žvaigždėtą naktinį dangų, kur netrukus jį nuves paskutinė kelionė.

Scottas Rosenbergas yra Salon.com specialiųjų projektų viceprezidentas. Jis yra autorius Sapnuoti Kode.

Paaiškintas tyčinis programavimas
Simonyi ir kompanija kuria programavimo mygtuko metodą.

[ Paspauskite čia Simonyi planuojamo požiūrio diagramai]

Shane'as Cliffordas, „Intentional Software“ kūrėjas, pasakoja šią pasaką.

Kadaise čia buvo kaimas su keturiais parkais, kurį tvarkė keturios konkurencingos apylinkių asociacijos. Pirmoji asociacija nusprendė savo parką pagražinti nauju suoliuku. Ji paprašė trijų pirmaujančių pasaulio stendų gamintojų pasiūlymų. Nė vienas dizainas negavo daugumos kaimynų balsų, todėl asociacija išrinko patį populiariausią dizainą. Procesas buvo demokratiškas, tačiau galiausiai dauguma buvo nepatenkinti naujuoju suolu.

Antroji asociacija nusprendė, kad nori savo suoliuko, bet tokio, kuris patiko visiems. Jis rado gamintoją, kuris pagamino pritaikytus suolus iš maišytų ir suderintų dalių. Tačiau nariams patikusi medinė sėdynė nebuvo tinkamo ilgio, o dekoratyvinė nugara netiko su jiems patikusiomis žaliomis kojomis. Taigi jie padarė kompromisą dėl dalių, kurios veikė kartu. Kaimynai didžiavosi baigtu suoliuku, bet niekas ant jo nesėdėdavo labai dažnai.

Trečios asociacijos nariai pamatė, kiek pinigų išleido pirmieji du, ir nusprendė, kad gali geriau. Grupės meistrai paprašė visų pasiūlymų ir galiausiai pastatė paprastą, elegantišką suoliuką, kuris, visų nuomone, yra gražiausias kaime. Deja, jis pavojingai susvyravo.

Ketvirtoji asociacija taip pat norėjo suolo, bet nenorėjo kartoti kitų grupių klaidų. Kaimynai kreipėsi į mažai žinomą suolų gamintoją, kuris paskelbė apie naują suoliukų gaminimo patirtį. Suoliukų gamintojas atvyko su bortiniu sunkvežimiu, prikrautu keistai atrodančių mašinų. Jis pradėjo klausinėti, pavyzdžiui, kokia šio suoliuko savybė? Kokia yra kita svarbiausia funkcija? Kokios medžiagos jums patinka? Kokia jūsų mėgstamiausia suoliuko kojų forma?

Po kiekvieno atsakymo suoliuko gamintojas pasukiodavo keletą savo mašinų rankenėlių ir dideliame ekrane atsirasdavo naujas gaminamo suoliuko vaizdas. Kartais vaizdas būdavo ne visai teisingas, todėl kaimynai atsitraukdavo ir į klausimus atsakydavo skirtingai. Po 50 klausimų suolininkas paspaudė didelį mygtuką. Mašinos kurį laiką dūzgė, o paskui išmušė gražų stendą, atitinkantį galutinį vaizdą ekrane. Visi džiaugėsi, kad turėjo galimybę prisidėti, o į teisiamųjų suolą kasdien sėsdavo daug žmonių.

Norėdami gauti suolą, kuris džiugina visus, turite sukurti automatinę suoliukų gamybos mašiną; padėti klientams apibrėžti tikslias viltis dėl savo suolo; paverskite tas viltis instrukcijomis, kurias supranta stendo gamybos mašina; ir tada paspauskite mygtuką Make. Klientai gali atidžiai kontroliuoti rezultatą, o suolų gamintojai, išlaisvinti nuo pasikartojančių ir mechaninių suolelių gamybos dalių, gali praleisti daugiau laiko panaudodami savo įgūdžius, kad į mašiną padėtų klientų pageidavimus.

Pakeiskite suolus programinę įrangą, sako Cliffordas, ir jūs suprasite tyčinį programavimą – taip pavadintas, nes programuotojai orientuojasi į tai, kaip jų klientai numato programos veikimą, o ne į kodo netvarką, reikalingą tiems ketinimams įgyvendinti.

Tyčinis programavimas savo koncepcija yra panašus į teksto apdorojimo programas, kurias pamatė Charles Simonyi, Cliffordo viršininkas, tai, ką matai, tai, ką gauni. Wysiwyg teksto rengyklės leidžia kompiuterių naudotojams manipuliuoti dokumento išvaizda ekrane, nepriverčiant jų įsisavinti pagrindinio kodo. Panašiai tyčinis programavimas skatina kompiuterių vartotojus išreikšti savo poreikius jiems pažįstama kalba, tada parodo jiems suprantamus besiformuojančio dizaino vaizdus arba projekcijas prieš surenkant vykdomąjį kodą. Tai ne vienintelė programavimo filosofija, kuri remiasi tokiais grafiniais vaizdiniais; Unified Modeling Language (UML), sukurta dešimtojo dešimtmečio viduryje Rational Software (dabar priklauso IBM), taip pat naudoja grafines diagramas, kad pavaizduotų programos funkcijas, struktūrą ir elgesį. Tačiau UML diagramos negali būti paverstos baigta programine įranga, o tai yra Simonyi svajonė dėl sąmoningo programavimo.

Kaip „Intentional Software“ tikisi įgyvendinti šią svajonę? Įdėkime Simonyi planą į atskirą diagramą (spauskite čia). Programinės įrangos kūrimo procesas, žinoma, prasideda nuo kliento: bet kurios organizacijos, turinčios daug informacijos reikalaujančią užduotį, kurią reikia automatizuoti. Simonyi šių organizacijų žmones vadina srities ekspertais; jie, o ne programuotojai, žino, ką programa turi daryti.

Padedami programuotojų, domeno ekspertai išvardija visas sąvokas ir apibrėžimus, kuriuos turės apimti programinė įranga. Visi šie apibrėžimai patenka į duomenų bazę, kurią Simonyi vadina domeno schema.

Programuotojai, kaip ir staliukų kūrėjas, sukantis rankenėles, domeno schemoje esančius apibrėžimus įtraukia į domeno kodą – aukšto lygio programinės įrangos funkcijų atvaizdą, išreikštą konkrečiai domenui skirta kalba arba DSL, kurį galima pritaikyti, kad tiktų. atitinkama pramonė. Tačiau nors DSL gali skirtis, kiekvienas veiksmas, kurį turi atlikti programinė įranga, yra saugomas vienodame formate, tyčiame medyje. Tyčinių medžių pranašumas yra tai, kad jie yra vizualiai paprasti, bet logiškai išsamūs, o tai reiškia, kad jais galima manipuliuoti, juos peržiūrėti ir projektuoti arba peržiūrėti.

Pavyzdžiui, paprastas programos sakinys vaizduojamas skaičiavimas

grąžinti a = b / (c +1) ;

yra pavaizduotas tokiu tyčiniu medžiu:

Grįžti
(

Priskirti
(

į,
Div
(

b,
Daugiau
(

c,
vienas

)

)

)

)

Užkoduotas medžio forma, skaičiavimas gali būti projektuojamas daugeliu kitų būdų, kurie gali būti geriau žinomi domenų ekspertams, pvz.

b
grąžinti a = ——- ;
c + 1

Pirmoji konkreti užduotis Simonyi ir jo kolegos iš Intentional Software kuria specialų įrankį Domain Workbench, skirtą šioms prognozėms valdyti. Tiek domeno ekspertai, tiek programuotojai naudoja Domain Workbench, norėdami redaguoti ir iš naujo redaguoti projekcijas, kol jos atrodys tinkamai. Po to domeno kodas įvedamas į generatorių, atitinkantį staklių gamintojų sunkvežimio mašinų skaičių, kuris išskleidžia tikslinį kodą tokia kalba kaip C++ arba Java, kurią kiti kompiuteriai gali suprasti, kompiliuoti ir paleisti.

Sugeneravus tikslinį kodą, jo nebegalima paversti domeno kodu. Šiuo požiūriu generatorius yra tarsi šifravimo programa, kuri negrįžtamai paverčia paprastą tekstą į šifruotą tekstą.

Tačiau – ir tai turbūt didžiausias tyčinio programavimo pranašumas – lengva išbraukti seną tikslinį kodą ir nuo nulio sukurti patobulintą kodą. Tiesiog peržiūrėkite domeno kodą naudodami Domain Workbench Wysiwyg redaktorių ir dar kartą paleiskite jį per generatorių. Daugumoje senesnių metodų net menkiausias pradinių prielaidų pakeitimas gali reikalauti, kad programuotojai peržiūrėtų milijonus kodo eilučių, rankiniu būdu atnaujinant kiekvieną koncepcijos, apibrėžimo ar skaičiavimo atvejį.

Generatorius išlieka didžiausia juodoji dėžė Intentional Software procese. Techniniuose leidiniuose bendrovė apie šį paslaptingą komponentą pasakys tik tiek, kad prototipas yra parašytas Microsoft C# programavimo kalba ir kad jis pasiekia domeno schemą ir domeno kodą naudodamas taikomųjų programų programavimo sąsają, tai yra būdas dviem programoms bendrauti. kuri yra integruota į Domain Workbench. Tačiau aišku, kad paties generatoriaus rašymas arba pritaikymas konkrečiai pramonės šakai ar DSL bus didelė bet kokio sąmoningo programavimo projekto išlaidų dalis.

Įmonės tinklaraštyje Simonyi rašo, kad „Wysiwyg“ suteikė milijonams daugiau vartotojų kurti puikiai atrodančius dokumentus. Atėjo laikas tą patį padaryti ir programinės įrangos naudotojams.

Autorius Wade'as Roushas

Nesandarių abstrakcijų dėsnis
Ištrauka iš Svajoti kode: dvi dešimtys programuotojų, treji metai, 4732 klaidos ir vienas transcendentinės programinės įrangos ieškojimas , autorius Scottas Rosenbergas, paskelbs
„Crown Books“ 2007 m. sausio mėn.

Mes matėme, kad programinė įranga yra sluoksnių dalykas, kiekvienas sluoksnis verčia informaciją ir procesus aukščiau ir žemiau esančiuose sluoksniuose. Šios sluoksnių krūvos apačioje yra mašina su grynais dvejetainiais vienetais ir nuliais. Viršuje yra žmonės, statantys ir naudojantys šiuos sluoksnius. Simonyi tyčinė programinė įranga tiesiog siūlo dar vieną sluoksnį tarp mašinos ir mūsų.

Programinės įrangos sluoksniai yra jos esmė ir yra tai, kas skatina pažangą šioje srityje, tačiau jie turi nuolatinį silpnumą. Jie nuteka. Pavyzdžiui, daugelio „Microsoft Windows“ versijų naudotojai yra pavargę su mėlynojo mirties ekrano reiškiniu. Dirbate tam tikroje programinėje įrangoje, pvz., žiniatinklio naršyklėje ar Microsoft Word, ir staiga, iš niekur, ekranas pasidaro mėlynas ir jame matote baltą tekstą, panašų į tai:

Lemtinga išimtis 0E įvyko val
0167: BFF9DFFF.

Dabartinė programa bus nutraukta.

Žvelgdami į nespalvotą ekrano išvaizdą ir blokinį šriftą, veteranai vartotojai gali pajusti, kad kompiuterio naudojimo laikas buvo nustumtas atgal. Kai kurie netgi gali suprasti, kad pranešimo nerimą kelianti nuoroda į mirtiną išimtį reiškia, kad programa susidūrė su klaida, nuo kurios ji negali atsigauti, ir ji sustojo, arba kad paslaptingi šešioliktainiai (16 bazė) skaičiai apibūdina tikslią vietą kompiuterio atmintyje, kur įvyko gedimas. įvyko. Daugumai vartotojų jokia informacija nėra vertinga. Patogi, pažįstama jų naudotos programos sąsaja išnyko; gilesnis abstrakcijos sluoksnis – šiuo atveju „Windows“ apvalkalas arba žemesnio lygio valdymo programa – išsiveržė kaip nuožulnus pamatinės uolienos sluoksnis, besiveržiantis per naujesnius geologinius sluoksnius ir į saulės šviesą.

(Mėlynasis mirties ekranas yra gluminantis, bet iš tikrųjų buvo didelis pažanga, palyginti su ankstesnėmis Windows versijomis, nes kartais leidžia vartotojui išjungti pažeidžiančią programą ir tęsti darbą. Prieš mėlynąjį ekraną beveik visada sugenda viena Windows programa pašalino visą mašiną ir visas jo programas.)

Esė pavadinimu „Nutekėjusių abstrakcijų dėsnis“ Joelis Spolskis rašė: „Visos nebanalios abstrakcijos tam tikru mastu yra nesandarios“. Abstrakcijos nepavyksta. Kartais mažai, kartais daug. Yra nuotėkis. Viskas klostosi ne taip. Vartotojams tai reiškia, kad kartais jūsų kompiuteris elgiasi keistai, glumina, o kartais jūs to norėsite, kaip sakė Mitchas Kaporas. Programinės įrangos projektavimo manifestas , išmesk pro langą. Programuotojams tai reiškia, kad nauji įrankiai ir idėjos, kurios sujungia tam tikrą žemo lygio skaičiavimo sudėtingumą ir supakuoja ją į naują, lengviau valdomą abstrakciją, yra puikūs, bet tik tol, kol jie sugenda. Tada visas paslėptas sudėtingumas vėl nuteka į jų darbą. Teoriškai patogus naujas viršutinis sluoksnis programišiams leidžia pamiršti apie po juo esančią netvarką; praktikoje programuotojas dar turi suprasti tą netvarką, nes galiausiai jis į ją ir nusileis. Spolsky rašė:

Abstrakcijos iš tikrųjų nesupaprastina mūsų gyvenimo tiek, kiek buvo numatyta. ... Nesandarių abstrakcijų dėsnis reiškia, kad kai kas nors sugalvoja naują įmantrų kodų generavimo įrankį, kuris turėtų padaryti mus visus tokius efektyvius, girdite daug žmonių sakant: „Pirmiausia išmok tai padaryti rankiniu būdu, tada naudokite wizzy įrankį, kad sutaupytumėte laiko. Kodų generavimo įrankiai, kurie apsimeta, kad ką nors abstrahuoja, kaip ir visos abstrakcijos, nutekėjimas, ir vienintelis būdas kompetentingai susidoroti su nutekėjimais yra sužinoti, kaip abstrakcijos veikia ir ką jos abstrahuoja. Taigi abstrakcijos sutaupo mūsų darbo laiką, bet nesutaupo laiko mokytis. … Ir visa tai reiškia, kad paradoksalu, nors ir turime vis aukštesnio lygio programavimo įrankius su vis geresnėmis abstrakcijomis, tapti įgudusiu programuotoju darosi vis sunkiau ir sunkiau.

Taigi, nors abstrakcijos, kurias sukūrėme per daugelį metų, leidžia mums susidoroti su naujais sudėtingumo užsakymais programinės įrangos kūrimo srityje, su kuriomis neturėjome susidurti prieš dešimt ar penkiolika metų, ir nors šios priemonės leido mums gauti daug Spolskis rašė, kad darbas buvo atliktas neįtikėtinai greitai, staiga vieną dieną turime išsiaiškinti problemą, dėl kurios nutekėjo abstrakcija, ir tai užtrunka dvi savaites.

Nesandarių abstrakcijų įstatymas paaiškina, kodėl tiek daug programuotojų, su kuriais kalbėjau, skeptiškai nusuka akis, kai išgirsta tyčinio programavimo aprašymus ar kitas panašias idėjas, kaip peržengti programinės įrangos sudėtingumą. Tai nereiškia, kad jie nenorėtų žengti dar vieno laiptelio aukštyn abstrakcijos laiptais; bet jie baiminasi, kad nesvarbu, kaip aukštai užkoptų tomis kopėčiomis, jiems visada teks bėgti aukštyn ir žemyn daugiau nei norėtų – ir kuo jos aukštesnės, tuo kelionė ilgesnė.

paslėpti