211service.com
Visu, ko tu vari, es varu izdarīt Meta
9. aprīlī Kazahstānas līdzenumos attālinātā palaišanas stacijā zemes kontrolieris pabeigs laika atskaiti; izšaus Sojuz raķete; un Čārlzs Simonijs — bijušais Microsoft galvenais arhitekts, tās slavenāko lietojumprogrammu aizbildnis, koda rakstīšanas metodes izgudrotājs, ko uzņēmuma programmētāji ir izmantojuši 25 gadus, un tagad vērienīga programmatūras pārprogrammēšanas projekta atbalstītājs. viņa pacelšanās kosmosā.

Charles Simonyi prezidents un izpilddirektors Intentional Software.
58 gadus vecais miljardieris, ģērbies krievu skafandra uzvalkā, jūtot, ka četri G iespiež viņu pieguļošā sēdekļa ieliktnī, kļūs par piekto kosmosa tūristu, kurš apmeklēs Starptautisko kosmosa staciju. Ceļojums, kas Simonyi izmaksās aptuveni 20 miljonus dolāru, piepildīs viņa sapni kļūt par nerdi kosmosā (lai aizņemtos vienu vārdu, ko viņš izvēlējās vietnei, kas dokumentē viņa ārpuszemes piedzīvojumu: www.nerdinspace.com ). Tas viņam arī dos iespēju apskatīt mūsu planētu no augšas un ārpus tās.
Šis vienmēr ir bijis Simonyi iecienītākais priekšnosacījums. Karjeras laikā, kas ilgst četras desmitgades, katru reizi, kad viņš ir saskāries ar kādu neatrisināmu programmatūras vai dzīves problēmu, viņš ir mēģinājis to atrisināt, izejot ārpus tās vai pāri tai. Viņam pat ir vārds savam iecienītākajam gambītam: viņš to sauc par gošanu meta. Savā jaunībā 1960. gados Ungārijā viņš apguva skaitļošanas pamatus novecojušā padomju lieldatorā, ko darbina vakuumlampas, un pēc tam izstrādāja pats savu bēgšanu uz Rietumiem. 1970. gados Xerox leģendārajā Palo Alto pētniecības centrā (PARC), būdams daļa no komandas, kas izgudroja personālo skaitļošanu, Simonyi uzrakstīja pirmo moderno lietojumprogrammu: tekstapstrādes programmu, kas izraidīja sarežģītos kodus, kas pēc tam tika izmantoti, lai atzīmētu tekstu un parādītu dokumentu kā tas izskatītos uz papīra. Gan viņa Stenfordas universitātes doktora disertācijā par metaprogrammēšanas pieeju programmētāju produktivitātes palielināšanai, gan viņa karjerai Microsoft, organizējot programmatūras izstrādātāju leģionus un mācot viņiem, kā strukturēt savu kodu, vai viņa plānoto ceļojumu Zemes orbītā šopavasar, pārsniedzot ierastos ceļus. darīt lietas vienmēr ir bijusi Simonyi metode. Tagad viņš plāno to, kas, viņaprāt, būs viņa visievērojamākais meta-gājiens. Simonyi uzskata, ka viņš var atrisināt daudzas spītīgas problēmas, kas vienmēr ir nomocījušas datorus, piedāvājot ikvienam, kas tos izmanto, un kodētājiem, kas tos programmē, augstākās pakāpes programmatūras skatījumu.
Bils Geitss sauc Simonyi par vienu no visu laiku izcilajiem programmētājiem. Patiešām, Simonyi neapšaubāmi ir lielākā daļa veiksmīgs kodētājs pasaulē, mērot pēc finansiālās atlīdzības un to cilvēku skaita, kuri izmanto viņa darbus. (Citi slaveni programmētāji-miljardāri, piemēram, Lerijs Elisons un pats Bils Geitss, nopelnīja naudu, dibinot un vadot tehnoloģiju uzņēmumus.) Simonijs varēja viegli izvēlēties atlikušo mūžu, ziedojot filantropiskus pasākumus, lidojot ar lidmašīnām vai kruīzējot savā teritorijā. jahta. Tā vietā viņš saka, ka viņš programmē, iespējams, grūtāk nekā jebkad agrāk. Viņš ir apsēsts ar projektu, kuru viņš ir īstenojis pusotru gadu desmitu un kas pirms četriem gadiem viņu iznesa tieši no Microsoft durvīm. Viņš lepojas ar savu profesiju. Taču viņu vajā arī doma par to, ar ko programmētājiem jācīnās katru reizi, kad viņi apsēžas pie kodēšanas. Viņš jautā: Kāpēc ir tik grūti izveidot labu programmatūru?
Multivide
Simonyi papildu fotoattēli
Napoleona kodekss
Mūsu civilizācija darbojas ar programmatūru, saka Bjarne Stroustrup, C++ programmēšanas valodas izgudrotājs. (skatiet Programmēšanas problēma) . Bet pati programmatūra nedarbojas ļoti labi. Visur, kur skatāties, programmatūra pārsniedz budžetu, atpaliek no grafika, nedroša, neuzticama un grūti lietojama. Ikreiz, kad organizācija mēģina ieviest jaunu sistēmu vai uzlabot veco, tā uzņemas milzīgu risku; mūsdienās lieli informācijas tehnoloģiju projekti ir tehnoloģiskas darvas bedres, kas imobilizē institūcijas. Pētījumi regulāri ziņo, ka divās trešdaļās šādu projektu tiek konstatēta liela kavēšanās, ievērojams izmaksu pārsniegums vai abi. ASV valdība ir atklājusi, ka ir gandrīz neiespējami ieviest vai uzlabot liela mēroga programmatūras sistēmas: Federālās aviācijas administrācijas un FIB desmitgadi ilgās pūles ir sabrukušas haosā. Uzņēmumiem nav veicies labāk. Piemēram, McDonald’s vadītāji sapņoja par tīmeklī balstītu pārvaldības sistēmu, ko viņi sauca par Innovate, kas reāllaikā izsekotu burgeru, kartupeļu un vistas tīrradņu plūsmai katrā viņu restorānā visā pasaulē. Līdz brīdim, kad viņi padevās un atcēla projektu, viņiem bija jānoraksta 170 miljoni USD no tā kopējām izmaksām 1 miljarda dolāru apmērā.
Šādas neveiksmes summējas. Saskaņā ar Nacionālā standartu un tehnoloģiju institūta 2002. gada pētījumu katru gadu programmatūras kļūmes izmaksā 59,5 miljardus ASV dolāru. Bet sliktas programmatūras cenu var izmērīt arī cilvēku ciešanās un pat zaudētās dzīvībās. 1991. gada Persijas līča kara laikā Patriot raķešu baterija nešāva uz ienākošo Scud programmatūras kļūdas dēļ; tiešajā triecienā kazarmās gāja bojā 28 ASV karavīri.
Pēdējais pusgadsimts skaitļošanas jomā ir pieredzējis brīnišķīgu progresu. Programmētāji ir atteikušies no perfokartēm un teletaipiem. Viņi ir piešķīruši mums datoru uz katras darbvirsmas, rīkus darbam, rotaļlietas spēlēšanai un tīklu, kas savieno mājas un uzņēmumus, veidojot globālu informācijas un izklaides kopumu. Šo progresu ir veicinājusi Mūra likuma eksponenciālā līkne, Intel dibinātāja Gordona Mūra prognoze, ka mikroshēmu jauda dubultosies (vai to izmaksas samazināsies uz pusi) ik pēc viena līdz diviem gadiem. Taču pat tā kā Mūra likums katru gadu jaunos datorus padarījis ātrākus un lētākus, mūsu datorsistēmu elastību un lietderību ierobežo lēnāka un nevienmērīga programmatūras attīstība. Viens šīs problēmas formulējums ir pazīstams kā Virta likums pēc programmēšanas eksperta Niklausa Virta: programmatūra kļūst lēnāka ātrāk nekā aparatūra.
Simonyi ir kopīga neapmierinātība ar programmatūru. Viņš saka, ka programmatūra, kādu mēs to zinām, ir digitālā pārpilnības raga sašaurinājums. Tas aizņem milzīgus resursus talantā un laikā. Tas rada vilšanos un to ir grūti mainīt. Tas bloķē inovācijas daudzās organizācijās.
Simonyi mērķis ir novērst šo programmatūras vājo vietu, kas raksturīgi, izmantojot meta. Viņš ir izstrādājis pieeju, ko viņš sauc par tīšu programmēšanu (vai pēdējā laikā par tīšu programmatūru), kas, viņaprāt, apgāzīs programmēšanu. Ja Simonyi darīs savu ceļu, programmētāji pārtrauks mēģināt pārvaldīt savu klientu vajadzības. Tā vietā katrai problēmai, kas jārisina — neatkarīgi no tā, vai tās ir krājumu izsekošana vai raķešu vadība, viņi izveidos vispārīgus rīkus, kurus paši datoru lietotāji var pārveidot, lai vadītu programmatūras turpmāko attīstību.
Kādā pelēkā pagājušā gada oktobra pēcpusdienā es sēdēju kopā ar Simonyi Bellevue, Vašingtonā, pie diviem blakus esošajiem ekrāniem viņa birojā Intentional Software — uzņēmumā, kuru viņš nodibināja pēc tam, kad 2002. gadā pameta Microsoft, lai attīstītu un komercializētu savu lielo ideju. Simonyi steidzināja mani caur prezentāciju, kurā viņš gatavojās gaidāmajai konferencei; viņš izmantoja Microsoft Office PowerPoint slaidus, lai izklāstītu savu redzējumu par ierosināto lielo lēcienu programmēšanas jomā. Viņš bija pa vidu, pārvietojot vienu slaidu, kad lietojumprogramma tikko pārstāja reaģēt.
Kreisās puses ekrāna stūrī parādījās papīra saspraude ar brillēm: plaši nomelnotais Office Assistant, ko Microsoft ieviesa 1997. gadā. Simonijs mēģināja ignorēt multfilmu palīga neprātīgo ņirgāšanos, taču viņš tika apmulsis. Nekas nedarbojas, viņš nopūtās. Tas ir tāpēc, ka Klipijs man sniedz palīdzību.
Es biju neizpratnē. Vai jūs domājat, ka neesat izslēdzis Clippy? Jau sen es meklēju Office izvēlnes un atzīmēju vajadzīgo lodziņu, lai vienreiz un uz visiem laikiem apturētu kaitinošo antropomorfu.
Es nezinu, kā, Simonijs atzina, nedaudz smiedamies, kas, šķiet, teica: Jā, es zinu, vai tas nav ironiski?
Tas bija. Simonyi pavadīja gadus, vadot lietojumprogrammu komandas Microsoft, Word un Excel izstrādātājiem, kuru produktus katru dienu izmanto desmitiem miljonu cilvēku. Viņš tiek plaši uzskatīts par Microsoft Word tēvu. (Es, protams, izmantoju Word, lai uzrakstītu šos teikumus.) Vai Čārlzs Simonijs varēja satikt savu spēli Clippy?
Simonijs skatījās uz savu pretinieku, it kā būtu ieslēgts telepātiskā cīņā. Tad viņš pagriezās pret mani, zilām acīm mirdzot. Man vajag palīgu: Super-Clippy, lai parādītu, kur viņu izslēgt! Simonijs vēlējās pēc meta-Clippy.
2004. gadā Simonijs ierosināja pats savu likumu: visu, ko var izdarīt, var izdarīt 'meta'. Jaunībā, kad viņš bija grandiozi nodēvējis projektu Simony's Infinitely Glorious Network, viņš, iespējams, būtu bijis augstprātīgāks: viss, ko varat darīt. dari, es varu meta! Taču, tāpat kā daudzi brīnumbērni, kuriem ir veicies labi un labi novecojuši, Simonijs ir iemācījies samazināt savu uzpūtību ar pazemības un žēlastības pieskārieniem. Pirms desmit gadiem viņš sevi raksturoja kā pinkaina izskata puisi ar svešu akcentu. Viņš dod priekšroku melniem bruņurupučiem un divrindu bleizeriem. Ar savu taisno stāju un kvadrātveida seju, tumšiem matiem, kas ķemmēti uz priekšu pār pieri, bieži tiek teikts, ka viņš atgādina Napoleonu ar lielākiem kauliem.
Tīša programmatūra ir grandioza shēma jomā, kurā grandiozas shēmas ir reti darbojušās. Katrs iepriekšējais jauninājums, kas tika ieviests kā pilnīgs programmatūras problēmu risinājums, ir nodrošinājis tikai nelielus, pakāpeniskus uzlabojumus. Taču Simonijs ir pārpilns ar pašizdomāta imigranta pārliecību, kurš vienmēr ir stingri turējis savus zābaku siksnas. Fotoattēlā, kas karājas virs viņa rakstāmgalda, viņš stāv Baltajā namā zem Ronalda Reigana portreta. Viņa platais smaids atspoguļo prezidenta smaidu. Paraksts skan Divi optimisti.
Simonyi jaunā uzņēmuma biroji atrodas elegantā stikla debesskrāpī, un, ja jūs pieliekat logu un paskatās uz leju, jūs varat redzēt jumtu pieguļošai, neaprakstāmai baltai ēkai, kurā 1981. gadā atradās viņa pirmais birojs uzņēmumā Microsoft. ( Tagad tā ir banka.) Kopš tā laika Microsoft ir izaugusi līdz nepazīšanai. Programmatūras industrija ir pārveidojusi pasauli. Tātad, kāpēc Simonyi nolēma pārrakstīt visus tā noteikumus? Problēma ir tik liela, ka šķiet, ka tā ir daļa no sakārtotās lietu kārtības. Simonyi piedāvātais risinājums varētu ilgt gadu desmitus, un viņa kritiķi ir ļoti skeptiski. Neviens viņam neprasa atstāt aiz sevis zināmās programmēšanas rutīnas un doties ceļā uz jaunu pasauli. Taču šādas migrācijas viņam agrāk ir atmaksājušās.
Mašīnas valoda
Simonyi dzimis Budapeštā 1948. gadā. Viņš bija fizikas profesora dēls, un viņš 15 gadu vecumā iemīlēja savu pirmo datoru — mamutu Krievijas Urāls II Ungārijas Centrālajā statistikas birojā. Pagājušā gadsimta 60. gados Urāls, kas saņēma norādījumus, izmantojot kases tipa taustiņus un kam bija pilna vakuuma caurule, lai veiktu aprēķinus, jau būtu bijis relikts jebkur citur pasaulē. Bet Ungārijas komunistu vadītāji mēģināja izmantot padomju spēku atgrūšanu, lai optimizētu dzelzceļa un kravu pārvadājumu grafikus. Urāls nebija uzdevumu augstumos: nebija iespējas ievadīt reāllaika datus par sūtījumiem. Tas bija pilnīgi bezcerīgi, Simonyi atceras. To varēja izdarīt ļoti vienkārši, ņemot vērā piedāvājumu un pieprasījumu. Diemžēl tas bija politiski nekorekti.
Bet Simonyi bija vienalga. Viņš saka, ka man patika tas dators, lai gan tas bija bezjēdzīgs. Bērnībā viņš bija uzbūvējis Erector Set automašīnu ar četrpakāpju pārnesumkārbu – ne tik daudz tāpēc, ka gribēja ar to spēlēties, bet gan vienkārši saprast, kā tā darbojas. Bijušais viņa tēva students atrada Simoni darbu par Urālu nakts medmāsu. Tā kā iekārta izpūta cauruli katru reizi, kad to izslēdza un ieslēdza, statistikas pārvalde deva priekšroku ļaut tai darboties visu nakti. Tādējādi no krēslas līdz rītausmai lielais dators bija Simonyi; viņam bija personālais dators pirms tādu lietu pastāvēšanas. Viņš iemācījās to programmēt, rakstot gudras, bet bezjēdzīgas rutīnas, lai ģenerētu maģiskus kvadrātus — ciparu masīvus, kuros sakrīt rindu, kolonnu un diagonāļu summas.
Programmētāji citur pasaulē jau bija izgudrojuši programmēšanas valodu Bābele — Fortran, Cobol, Lisp (pasakaina valoda: sk. Seno tekstu, 20. lpp.) un tā tālāk, lai atvieglotu savu darbu, kas toreiz, tāpat kā tagad, sastāvēja no rūpīgas rakstīšanas. izstrādātu instrukciju kopas datoriem izpildei. Šajās valodās instrukcijas izpaudās kā teksta rindiņas, kas tika ievadītas ar tastatūrām un bieži saglabātas perfokartēs. Pēc tam šis avota kods tika apkopots vai tulkots mašīnkodā viens smiltis 0 s, ko digitālais dators varētu saprast. Metode mūsdienās lielākoties nav mainīta, pat ja lielākā daļa programmētāju tagad izmanto programmēšanas rīkus, kas darbojas parastajos personālajos datoros. Bet uz Urāliem Simonijs iemācījās programmēt primitīvākā līmenī, darbietilpīgi iespiežot mašīnvalodas opkodus, instrukcijas pēc instrukcijas precizējot atmiņas ielādes, papildinājumu, atmiņas krātuvju un lēcienu secības, kurām datora procesoram bija jāseko. lai izpildītu pat visniecīgāko darbību. Tā bija (kā Simonijs stāstīja autoram Stīvam Loram 2001. gada grāmatā Iet uz ) Akmens laikmeta programmēšana. Simonyi joprojām atceras kodus. Divdesmit divi ir JUMP, viņš šodien saka. Tas ir ierakstīts manā ROM.
Ungārija 20. gadsimta 60. gados, kas joprojām raustījās no 1956. gada sacelšanās padomju apspiestības, nebija piemērota vieta ambiciozam jauneklim ar problēmu risināšanas garšu. 17 gadu vecumā Simonijs stažējās Dānijas datorkompānijā, parādot dažiem tā programmētājiem savu ar roku kodēto Urālu programmu paraugus. Ungārijas iestādes gaidīja, ka Simonyi atgriezīsies; viņš jau bija ieguvis kāroto vietu universitātē. Tā vietā, tēva mudināts, viņš aizbēga uz ASV.
Dānijas programmēšanas eksperta Pītera Naura ieteikuma vēstule palīdzēja viņam iegūt iestādi Kalifornijas universitātē Bērklijā. Viņš apmaksāja rēķinus, strādājot Bērklija datoru centrā, kur pievērsa kāda mācībspēka Batlera Lampsona uzmanību. Lampsons bija viens no ASV Aizsardzības progresīvo pētījumu projektu aģentūras Project Genie vadītājiem — eksperimentam ar laika dalīšanas datorsistēmām, kurā vairāki lietotāji, kas sēž pie termināļiem, varēja koplietot viena datora smadzeņu laiku. Kad Project Genie veidotāji nodibināja uzņēmumu ar nosaukumu Berkeley Computer Corporation (BCC), kura mērķis bija izveidot iekārtu, kas komercializētu viņu darbu, Lampsons pieņēma darbā Simonyi.
BCC Simonyi visu nakti atkļūdoja uzņēmuma trako prototipu, sadarbojoties ar sistēmas dizaineru Čaku Tekeru. Kādu vakaru Simonijs parādījās caurspīdīgā melnā tērpā — sava veida hipiju mantā no viena no Telegraph Avenue veikaliem, viņš saka. Šodien viņš nevar precīzi atcerēties, kāpēc — varbūt nāk no ballītes? Tovakar atkļūdošana noritēja īpaši labi, un tērps kļuva par veiksmes šarmu — Simonija atkļūdošanas uzvalku.
BCC jau pēc dažiem gadiem saslima, bet Lemsons, Tekers un liela daļa BCC komandas pārgāja uz Xerox PARC. Simonyi — toreiz tikai nejaušs Ungārijas bakalaura students bez zaļās kartes, kā viņš saka tagad — pievienojās viņiem 1972. gadā, strādājot Xerox, vienlaikus iegūstot Stenfordas doktora grādu. Bobs Teilors, kurš šajā leģendārajā laikmetā pārraudzīja PARC Datorzinātņu laboratoriju, saka, ka Simonyi radošums izcēlās pat laboratorijas slavenajā pūlī: viņš vienkārši varēja iedomāties veidus, kā izteikt kodu un idejas, kas viņu izstumj no topu saraksta.
Tas bija reibinošs laiks. Redzējušo inženieru komanda radīja virkni inovāciju, kas veidos nākamo datoru ēras ceturtdaļgadsimtu: grafiskais lietotāja interfeiss, tīkls (Ethernet), lāzerprinteris, objektorientētā programmēšana (Smalltalk), portatīvā skaitļošana ( Dynabook) un daudz ko citu. Visi šie sasniegumi saplūda prototipiskā personālajā datorā, ko sauc par Alto.
Alto bija pārsteidzošs izgudrojums, taču nebija skaidrs, ko ar to varētu darīt, līdz Simonyi un viņa kolēģi izveidoja tā pazīstamāko lietojumprogrammu: tekstapstrādes programmu Bravo, kuras ekrāna displeja tips atbilst tam, ko sistēma izvadīs. uz jauno lāzerprinteri. Esošajiem tekstapstrādes programmām bija izstrādātas kodu sistēmas teksta formatēšanai ekrānā (ikviens, kurš astoņdesmitajos gados izmantoja WordPerfect datorā, atcerēsies tā iegultos kodus); Bravo ļauj aizmirst par kodiem, tieši manipulēt ar dokumenta dizainu un nekavējoties redzēt izmaiņas. Kāds viesos Citibank vadītājs apskatīja demonstrāciju un citēja komiķa Flipa Vilsona atturīgās varones Džeraldīnas parakstu: Tas, ko redzat, ir tas, ko jūs saņemat! Nosaukums (reducēts līdz akronīmam Wysiwyg un izrunāts wizzywig ) iestrēdzis. Pēkšņi Bravo bija lietotāji: PARC pētnieku radinieki un draugi sāka lūgt to izmantot, lai drukātu skolu biļetenus un formatētu akadēmiskos darbus. Lempsona sieva izdrukāja savu disertāciju, izmantojot sistēmu, un, kad Simonyi bija pienācis laiks izdrukāt savu, viņš darīja to pašu.
Abstrakcijas līmeņi
Wysiwyg ir abstrakcijas slāņa piemērs — augstāka līmeņa rīks, kas ļauj datoru lietotājiem ignorēt dažas zemāka līmeņa sarežģītības. Programmētāji visu laiku izmanto abstrakcijas. Programmēšanas valodā rakstītais teksta kods ir mašīnkoda abstrakcija, ko dators faktiski saprot. Tīmekļa domēna nosaukums ir servera skaitliskās interneta protokola adreses abstrakcija.
Taču lielākā daļa abstrakcijas slāņu datorsistēmās ir mazāk redzami un noslēpumaināki nekā Wysiwyg. Kopš programmētāji pārtrauca iegaumēt operācijas kodus, ko Simonyi izmantoja jaunībā, viņi ir slāņojuši jaunas abstrakcijas uz vecākām abstrakcijām. Katra programmētāju paaudze izmanto sava laikmeta programmēšanas valodas un rīkus, lai izveidotu nākamās paaudzes programmas. Abstrakcijas slāņi sakrājušies kā ģeoloģiski slāņi. Ziņojumi nepārtraukti skrien augšup no jūsu iekārtas binārā pamatieža un atkal lejup, ļaujot ar peles klikšķi veikt savu funkciju. Ar peles klikšķi tiek aktivizēts kāds operētājsistēmas kods, kas nosūta ziņojumu tekstapstrādes programmai, kas norāda operētājsistēmai saglabāt failu cietajā diskā. Bet šis šķietami vienkāršais process ir iespējams tikai daudzu, daudzu abstrakcijas slāņu dēļ.
Programmatūras vēsture ir šo slāņu vēsture, katrs no tiem paceļ programmētājus tālāk no binārā, ļaujot tiem labāk pierunāt datorus, lai tie veiktu noderīgus uzdevumus. Vienmērīgi programmētāji ieguva lielāku spēku. Taču viņi risināja arī arvien vērienīgākas problēmas. Programmu apjoms palielinājās, un programmētāji sāka apmaldīties tā dēvētajā spageti koda mudžeklī, ko izrādījās neiespējami atšķetināt un salabot. Tādējādi lieli programmatūras projekti kļuva par vilšanās un kavēšanās episkām. Programmu vadītāji saskārās ar biznesa problēmām, piemēram, Kā jūs reāli plānojat projektu? Kā jūs uzlabojat individuālo produktivitāti? Kā jūs koordinējat sarežģītu darbu lielā komandā? Uz katru no šiem jautājumiem bija pārsteidzoši grūti atbildēt.
Grūtības koordinēt komandas darbu iedvesmoja programmatūras inženierijas slavenāko ieteikumu, kas pazīstams kā Brūksa likums. Ja vēlīnā programmatūras projektam pievienojot darbaspēku, tas kļūst vēlāks. Frederiks P. Brūkss jaunākais nonāca pie šāda drūmā secinājuma pēc tam, kad 1960. gados vadīja IBM grūtos centienus rakstīt programmatūru saviem 360 lieldatoriem. Savā 1975. gada grāmatā Mītiskais cilvēka mēnesis , Brūkss novēroja, ka lielākās komandās darbs norit lēnāk koordinācijas izmaksu dēļ — programmētājiem tiek zaudēts laiks, kad viens otru informē par savu darbu.
Tas bija fons Simonyi 1977. gada disertācijai Meta-programmēšana: programmatūras ražošanas metode. Simonyi ierosināja jaunu pieeju produktivitātes optimizēšanai, kurā viens vadošais programmētājs jeb metaprogrammētājs izstrādāja produktu un definēja visus tā terminus, pēc tam nodeva projektu tehniķiem, strādnieku programmētājiem, kuri veiks ieviešanu. Simonyi mērķis bija izvairīties no Brūksa likuma, aizliedzot tehniķiem sarunāties vienam ar otru: visai saziņai bija jānotiek caur metaprogrammētāju. Savā disertācijā viņš ideju pārbaudīja, izmantojot divas grupas divos projektos — A un B. Viņa despotiskā pieeja programmēšanai nekad nebija iepatikusies, taču tas viņu gandrīz nesatrauca. Simonyi galvenais mērķis, pētot savu disertāciju, nebija pierādīt savu ideju vērtību, bet gan panākt, lai Bravo, jaunais Wysiwyg tekstapstrādes līdzeklis, tiktu uzrakstīts ātrāk. Viņš nevarēja pārliecināt PARC misiņu algot papildu programmētājus, tāpēc viņš izmantoja savu disertāciju kā viltību, lai sniegtu palīdzību. Bravo pats bija projekts B.
Pagājušā gadsimta 70. gadu gaitā Simonyi kļuva nepacietīgs pret Xerox nespēju pārvērst PARC novatoriskos pētījumus veiksmīgos produktos. Kādu dienu draugs viņam parādīja VisiCalc — jauno Apple II izklājlapu programmu. Simoniju tas saviļņoja. Šeit bija vēl viena lietojumprogramma, piemēram, Bravo, kas varēja mainīt cilvēku dzīvi, taču atšķirībā no Bravo tā darbojās masu tirgus datorā, ko cilvēki varēja atļauties iegādāties. Viņš saprata, ka PARC darbs nekad neredzēs dienas gaismu. Viņš lūdza savam bijušajam PARC kolēģim Bobam Metkalfam, kurš 1979. gadā pameta laboratoriju, lai izveidotu 3Com, ieteikt potenciālos priekšniekus jaunizveidotajā datoru nozarē. Saraksta galvgalī bija Bils Geitss.
1981. gadā Simonyi pārcēlās uz Sietlu, lai izveidotu jaunu lietojumprogrammu grupu Microsoft, kas līdz tam pārdeva programmēšanas valodas un operētājsistēmas. Viņam bija 33 gadi, taču tas viņu padarīja par pieaugušo Microsoft jaundzimušo vidū (Gatesam toreiz bija 26 gadi, Stīvam Balmeram 25).
Visus gadus, kad Simonyi pārraudzīja produktus, kas galu galā apvienojās programmu komplektā, kas pazīstams kā Microsoft Office, viņš turpināja meklēt jaunas efektivitātes iespējas jauna veida programmēšanas abstrakcijās. Vissvarīgākais ir tas, ka viņš mācīja Microsoft programmētāju paaudzes disciplīnā, lai sekotu līdzi neskaitāmajiem mainīgo nosaukumiem, kas tiek izmantoti lielajās programmās. Datorprogrammēšanā mainīgie apzīmē informāciju, kas var mainīties programmas darbības laikā. Piemēram, tiešsaistes veikala iepirkumu groza programmā būs mainīgie, kas atspoguļo katra veida iegādājamo preču skaitu, katras preces cenu un piegādes izmaksas un nodokļus. Izmantojot šos mainīgos, programmētājs var uzrakstīt vienkāršu koda rindiņu, kas reizina daudzumu ar cenu, pievieno piegādes un nodokļus un aprēķina kopējās izmaksas, kas kļūst par vēl viena mainīgā lieluma vērtību.
Lielai programmai var būt tūkstošiem dažādu mainīgo, kas programmēšanas komandai ir jāsaglabā. To rūpīga nosaukšana kļūst ļoti svarīga. Mūsdienās lielākajā daļā koda ir mainīgi nosaukumi, kas izstrādāti, lai programmētājiem, kuri to lasīs, sniegtu nozīmi, piemēram, NumberOfItems vai ShoppingCartTotal. Simonyi nosaukšanas shēmā, ko viņš bija izgudrojis savām vajadzībām pirms vairākiem gadiem, katram mainīgā nosaukumam ir prefikss, kas sniedz noderīgu informāciju par to, piemēram, tā veidu (vesels skaitlis, teiksim, decimāldaļdaļa vai burtu virkne). Dažas sistēmas ierobežo mainīgo nosaukumu garumu līdz astoņām rakstzīmēm; Simonyi vienkārši izlaida patskaņus.
Iegūtais kods bija blīvs un grūti nolasāms. Simonyi sistēmu sāka dēvēt par ungāru apzīmējumu, gan godinot tās radītāja dzimteni, gan tāpēc, ka tā lika programmām izskatīties tā, it kā tās būtu rakstītas kādā nesaprotamā svešvalodā, norāda programmēšanas pionieris Endijs Hercfelds. Ungārijas nelabvēļi ir plaši nolādēti. Kanādiešu Java eksperts Rodijs Grīns to jokojot nosaucis par avota koda apmulsināšanas paņēmienu taktisko kodolieroci. Mozilla programmētājs Alec Flett uzrakstīja šo parodiju:
prepBut nI vrbLike adjungāriski! qKas ir mākslaLielā nProblēma?
Hercfelds, rakstot par Apple sastapšanos ar kādu Ungārijas kodu, ko uzrakstījis kolēģis, kurš strādāja kopā ar Simonyi PARC, sacīja, ka vārdus izskatījās tā, it kā tos būtu izvēlējies Supermena ienaidnieks no piektās dimensijas Mxyzptlk kungs.
Taču, lai gan kritiķi uzskata, ka ungāru valoda padara kodu nesalasāmu, Simonyi joprojām lepojas ar to un izmanto to līdz pat šai dienai.
Meta-Euforija
Deviņdesmito gadu sākumā Microsoft panākumi bija guvuši Simonyi bagātību. (Jau vairākus gadus, Forbes ir aplēsis, ka tas ir 1 miljards dolāru.) Taču viņš joprojām juta nepabeigto darbu vilcināšanos. Programmatūras apjukums bija padarījis Office izveidi Microsoft nervus kutinošu. Taču tagad, kad datori ir jaudīgāki par Alto uz katra galda un internets tos savieno, programmatūras krīze bija ikviena krīze. Simonyi sāka domāt, ka ir pienācis laiks atkal doties meta.
Čārlzs vienmēr ir centies veidot savas sistēmas tā, lai paaugstinātu abstrakcijas līmeni, lai jūs varētu pārvaldīt sistēmas sarežģītību. Tā kā sarežģītība ir nāve, saka Čaks Tekers, Simonyi vecais kolēģis no BCC un PARC, kurš vada pētījumu projektu par datoru arhitektūru uzņēmumā Microsoft. Un diemžēl mūsdienās, nodrošinot telpas, kuras cilvēki patiešām vēlas iegūt sarežģītā sistēmā. Mēs šobrīd turamies ar pirkstu galiem.
Pārejot uz amatu Microsoft Research, Simonyi sāka definēt jēdzienu tīša programmēšana vai saīsināti IP. Apzināta programmēšana programmatūras rakstīšanas praksē pievienotu pilnīgi jaunu abstrakcijas slāni. Tas ļautu programmētājiem paust savus nodomus, negrimstot tā saukto ieviešanas detaļu purvā, kas vienmēr draudēja tos norīt. Tāpat kā Simonyi disertācijas metaprogrammētāji, kas nodod norādījumus strādniekiem-bišu kodētājiem, arī tīšais programmētājs nodod šo darbu, bet ne jaunākajam kolēģim. Tā vietā tīša programmēšana prasīja sava veida kodu rūpnīcu, ko sauc par ģeneratoru, programmu, kas uzņem salīdzinoši augsta līmeņa komandu kopu un izspiež detalizētāku darba kodu. Mērķis nebija tik daudz atvieglot programmēšanas darbu, bet gan ļaut programmētājiem atbrīvot savas smadzenes no sīkumiem, lai viņi varētu būt radoši.
Kopš viņa programmēšanas sākuma, kad viņš bija pusaudzis, ievadot opkodus Urālos, Simonijs bija kāpis pa abstrakcijas kāpnēm. Bet viņš juta, ka nav pietiekami augsts. Daudzējādā ziņā programmēšana joprojām šķita primitīva. Kāpēc programmētājiem joprojām bija nesaderīgas programmēšanas valodas sintakses? Kāpēc bija tik grūti paplašināt viņu iecienītās valodas jaunās jomās? Kāpēc programmētāji joprojām strādāja ar vienkāršu tekstu, sakārtojot nelielu skaitu rakstzīmju lineārās virknēs, kā tas bija perfokartes pagātnē? Simonyi Wysiwyg darbs ļāva biroja darbiniekiem izveidot un rediģēt sarežģītus dokumentus. Inženieri un dizaineri izmantoja uzlabotus CAD/CAM rīkus, lai izstrādātu un modificētu debesskrāpju un lidmašīnu rasējumus. Kāpēc programmētāji, burvji, kas to visu padarīja iespējamu, joprojām izvilka savu kodu pa vienai rakstzīmei?
Viņa Microsoft pētniecības komanda sāka strādāt, un līdz 1995. gada martam viņi bija izveidojuši funkcionējošu sistēmu programmu veidošanai, izmantojot tīšas programmēšanas pieeju. Simonyi teica, ka IP ir sasniedzis pilnīgu pašpietiekamību: tas ir, viss turpmākais darbs pie IP tiks veikts, izmantojot pašu IP. Viņš apbalvoja savu komandu ar T-krekliem, uz kuriem bija viens no viņa mīļākajiem bērnības attēliem: barona Minhauzena tēls, kurš izceļas ar savu zirgu no purva, raustot aiz matiem. Simonyi paziņoja pasaulei par apzinātu programmēšanu 1995. gada septembra dokumentā ar nosaukumu The Death of Computer Languages. Kā viņš vēlāk teica, bija pienācis laiks kurpnieka bērniem dabūt apavus.
Deviņdesmitajos gados un jaunajā tūkstošgadē, kamēr Microsoft cīnījās ar Netscape un ASV Tieslietu ministriju un pārvarēja dot-com burbuli, Simonijs un viņa komanda strādāja un mācījās.
Tikmēr, sākot ar 2001. gadu, Microsoft mudināja izstrādātāju armijas, kas rakstīja programmatūru operētājsistēmai Windows, pieņemt jaunu programmēšanas sistēmu, ko sauc par .Net Framework. Atšķirībā no apzinātas programmēšanas, .Net tika pabeigts, un tas prasīja mazāk radikālu pārtraukumu no esošajām programmēšanas metodēm. Simonyi gribēja izņemt savu ideju no laboratorijas un nodot to klientiem, taču tas bija neērti šajos apstākļos. Viņš skaidro: 'Tas bija nepraktiski, kad Microsoft tuvākajā laikā veica milzīgus panākumus ar .Net, kaut kādā veidā izsūtīt kādu no tās pašas organizācijas, kurš saka: 'Tas nav tā, kā jums vajadzētu darīt lietas — kā būtu, ja jūs darītu lietas šajā citā , traucējošāks veids?
Simonyi bija uzņēmuma cilvēks vairāk nekā 20 gadus. Taču 2002. gadā viņš pameta Microsoft un izveidoja neatkarīgu uzņēmumu. Viņš aizgāja ar patentu savstarpējās licencēšanas līgumu, kas ļāva viņam izmantot tīšas programmēšanas pētījuma koncepcijas un idejas, bet neļāva viņam ņemt līdzi nevienu savu veco kodu. Viņam būtu jāsāk rakstīt jaunu kodu bāzi no nulles.
Zem sava jaunā uzņēmuma karoga Simonyi atteicās no vārda programmēšana un pārdēvēja savu projektu par tīšu programmatūru. Pamatideja nebija mainījusies, taču tagad viņš sāka uzsvērt šīs pieejas vērtību neprogrammētājiem. Simonyi prezentācija bija aptuveni šāda: šodien tikai programmētājs spēj tieši ietekmēt programmatūru. Priekšmeta eksperti vai jomu eksperti — cilvēki, kuri faktiski saprot programmatūras darbības, neatkarīgi no tā, vai tā ir medicīniskā uzskaite, uzņēmuma grāmatvedība vai klimata modelēšana, nevar veikt izmaiņas savos rīkos; viņi ir spiesti programmētājam iesniegt sava veida pazemīgu lūgumu. Intentional Software pārdotu programmatūras izstrādes rīkus ne tikai programmētājiem, bet arī domēna ekspertiem, kuri patiešām pārzina savas jomas.
Intentional Software stratēģija ir aizgūta no programmēšanas tendences, kas pazīstama kā domēnspecifiskas valodas vai DSL — mazi programmēšanas dialekti, kas pielāgoti konkrētu disciplīnu vajadzībām. Simonyi slavē DSL, taču saka, ka tie nav pietiekami tālu. Tos ir grūti izveidot un tāpēc tie ir dārgi; galu galā jums ir nepieciešams vairāk nekā viens (medicīnas norēķinu sistēmai jums ir nepieciešama vismaz medicīnas un finanšu valoda); un tie nav savienojami viens ar otru. Intentional Software sistēma ir kā rūpnīca vairākiem DSL, kas var sazināties savā starpā.
Lūk, kā tas varētu darboties. Pieņemsim, ka starptautiska banka vēlas izstrādāt jaunu sistēmu darījumu pārvaldībai vairākās valūtās. Pirmkārt, pašas bankas domēna eksperti definētu sistēmas funkcionalitāti, izmantojot savus ierastos terminus un simbolus un identificējot svarīgākos mainīgos (laiks vai darījuma vērtība vai apjoms) un izplatītākās procedūras (turējumu konvertēšana no vienas valūtas uz citu vai pirkšanas riska ierobežošana). pret vērtības krišanos). Tad programmētāji ņemtu šo informāciju un izveidotu domēna specifisku programmu ģeneratoru, kas iemieso šo informāciju. Atsevišķs programmatūras rīks ļautu domēna ekspertiem eksperimentēt ar dažādām datu kopām un veidiem, kā skatīt šos datus tikpat viegli, kā šodien uzņēmēji pārkārto savas izklājlapas.
Programmētājs nebūtu jāaicina katru reizi, kad kādai jaunai attīstībai starptautiskajā banku pasaulē vai jebkurā citā jomā ir nepieciešama jauna programmatūras funkcija. Klients nejustos programmēšanas valodas spiests. Visi būtu priecīgi.
Simonyi apgalvo, ka viņa pieeja atrisina vairākas programmatūras inženierijas visnoturīgākās problēmas. Viņš bieži saka, ka mūsdienās programmētāji ir neapzināti kriptogrāfi: viņi apkopo prasības un zināšanas no saviem klientiem un pēc tam burtiski slēpj šo vērtīgo informāciju ieviešanas detaļu kalnā, tas ir, koda. Nozveja ir tāda, ka pēc koda uzrakstīšanas programmētājiem ir jāveic jebkādi papildinājumi vai izmaiņas, veicot izmaiņas pats kods . Šis darbs ir sāpīgs, lēns un pakļauts kļūdām. Mums vispār nevajadzētu pieskarties kodam, saka Simonyi. Mums vajadzētu būt iespējai izstrādāt funkcijas un datu struktūras, kuras apzināta programmēšana attēlo kā tīšus kokus, un ļaut ģeneratoram attiecīgi modificēt kodu. (Pilnīgāku tīšas programmēšanas aprakstu skatiet sadaļā Apzinātās programmēšanas skaidrojums)
2002. gadā Simonyi sapulcināja jaunu izstrādes komandu; šodien tajā ir ducis programmētāju, kas ir sadalīti starp Bellevue un Ungāriju. Viņi sāka no jauna izveidot Simonyi tīšas programmēšanas kodu un sadarbojās ar dažiem klientiem, lai pārbaudītu viņu pieņēmumus un iegūtu atsauksmes. Pirms gada, iedvesmojoties no jauna ieskata par to, kā parādīt vairākus neviendabīgu datu veidu skatījumus, viņi izmeta lielu daļu sava koda un sāka no jauna. Tā ir radoša iznīcināšana, saka Simonijs. Uzņēmumā Microsoft to bija diezgan grūti izdarīt, visu izmest. Bet jums ir jāatsakās no lietām, kuras ir grūti pagarināt.
ThoughtWorks, globāls IT konsultāciju uzņēmums, ir viens no agrīnajiem Intentional Software klientiem. Taču ThoughtWorks izpilddirektors Rojs Singhems saka, ka daudzi viņa kolēģi uzņēmumā sākotnēji bija skeptiski noskaņoti pret Simonyi jauno projektu: daudzi cilvēki uz to skatās un saka: 'Lieliska koncepcija, taču to nav iespējams īstenot.' Tāpēc mēs jautājām dažiem mūsu darbiniekiem. labākie tehniskie prāti, lai dotos meklēt, un viņi visi atgriezās un teica, ka viņš ir uz pareizā ceļa. Jā, tas ir grūti. Jā, tas prasīs laiku - varbūt daudzus gadus. Bet intelektuāli viņam viss ir izdevies. Tā ir pareizā problēma, kas jāatrisina.
Esmu izjutis zināmu neapmierinātību, ka mēs vēl neesam ieguvuši kaut ko tādu, ko faktiski varētu izmantot ražošanā, saka Mārtins Faulers, ThoughtWorks galvenais zinātnieks. Šķiet, ka Čārlzs nesteidzas ar piegādi. Bet viena lieta, kas jāpatur prātā, ir tāda, ka viņš ir nosūtījis lietas pagātnē — diezgan dramatiskas lietas, izmantojot Office.
Intentional līdzšinējā darba redzamais auglis ir jauks rīks, ko sauc par domēna darbgaldu, kas saglabā programmas svarīgo informāciju tīšā koka datubāzē un pēc tam piedāvā daudzas dažādas šīs informācijas prognozes. Demonstrācijā, ko Intentional sniedza divās konferencēs pagājušajā rudenī, Workbench, izmantojot funkciju, ko sauc par Kaleidoskopu, paņēma virkni koda fragmentu un parādīja tos reibinoši dažādos formātos. Nav nozīmes tam, kā tika norādīta koda sintakse; varat to apskatīt un mainīt, izmantojot jebkuru izvēlēto apzīmējumu. Varat rediģēt savu programmu kā tradicionālu kodu ar iekavām un atkāpēm vai pārslēgties uz kontūru formu, vai padarīt to līdzīgu shematiskai elektroinstalācijas shēmai, vai izvēlēties kaut ko, ko sauc par dzelzceļa shēmu, kas ir blokshēmas apzīmējums, kas iegūts no vecmodīgām vilcienu kartēm. . Katrs skats ir pamatā esošā koka tulkojums, ko varat arī pārbaudīt un rediģēt.
Intentional Software darbs izraisa divas galvenās kritikas līnijas. Daži teorētiski domājoši skeptiķi saka, ka Simonyi mērķis tvert datoru lietotāju nodomus ir neticams. Kā jūs pārstāvat nodomu? jautā datorzinātnieks Džerons Lanjē. Tiklīdz mēs zinām, kā smadzenes uzglabā informāciju, iespējams, mēs varam pārstāvēt nodomu. Man tā šķiet tikai fantāzija. Vēl viens programmētāju vidū izplatīts arguments ir praktiskāks. Daudzi programmētāji mīl savus teksta redaktorus un neuzticas rīkiem, kas attālina viņus no neapstrādāta koda. Kas attiecas uz grafiskajām programmēšanas valodām, piemēram, Visual Basic un integrētajām izstrādes vidēm (IDE), kas automatizē rutīnas programmēšanas uzdevumus, tās uztver tās ar piekāpšanos: viņi saka, ka šādi rīki uzspiež savus darbības veidus, ierobežo radošumu un neļauj programmētājiem kodu, kas viņiem agrāk vai vēlāk būs jāsaskaras. (Lai saprastu, kāpēc programmētāji ir tik piesardzīgi, skatiet sadaļu The Law of Leaky Abstractions ) Skeptiski noskaņoti programmētāji aplūko tīšu programmatūru un redz vēl viena IDE izredzes. Tiem, kas domā, ka īsti programmētāji raksta tekstu, tīša programmēšana nav ne ļoti oriģināla, ne īpaši vēlama.
Taču pārsvarā interneta daudzajos kodētāju forumos par tīšu programmatūru ir pārsteidzoši maz diskusiju. Daļēji tas ir tāpēc, ka tik maz ir redzējuši tā programmatūru. Intentional darbs noritēja ar zināmu slepenību.
Kad viņš sāka Intentional Software, Simonyi sadarbojās ar Britu Kolumbijas universitātes profesoru Gregoru Kiczalesu. Simonyi apbrīnoja Kiczales darbu pie aspektiem orientētas programmēšanas — veids, kā organizēt un modificēt kodu atbilstoši transversāliem apsvērumiem, kas līdzinās tīšai programmēšanai. Kiczales, vēl viens PARC veterāns, ir pavadījis savu karjeru, strādājot pie veidiem, kā kods izskatīties pēc dizaina. Kiczales redzēja pievienošanos Simonyi kā iespēju turpināt šo mērķi. Bet Kiczales uzticējās atvērtā koda izstrādei, bet Simonyi neuzticējās. Microsoft stila slēgtā veikala pieeja Kiczalesam vienkārši nešķita organiska. Es to būtu izdarījis Java, viņš saka. Pirmā izlaišana būtu bijusi pēc sešiem mēnešiem. Nesaskaņas bijušas draudzīgas, bet nesamierināmas, stāsta abi vīrieši, un neilgi pēc tam Kiczales bija aizgājis.
Pagaidām, ko aizsargā Simonyi bagātība, Intentional Software nav mērķa datuma vai piegādes termiņa. Taču viens no diviem galvenajiem klientiem apgalvo, ka ir tuvu Intentional rīku izvietošanai. Capgemini — Parīzē bāzēta starptautisks IT pakalpojumu un konsultāciju uzņēmums, kas apkalpo lielus uzņēmumus un kura CTO Endijs Mulholands ir Simony’s paziņa, — sāka strādāt ar Intentional pagājušā gada martā un apsver iespēju izmantot Intentional sistēmu projektiem Eiropas pensiju biznesā. Jomas ļoti sarežģītie noteikumi, kas saistīti ar sarežģītu biznesa domēna struktūru, padara Simonyi pieeju pievilcīgu, saka Henks Kolks, Capgemini finanšu pakalpojumu tehnoloģiju speciālists, kurš vada uzņēmuma darbu ar Intentional.
Zemes vadība
Simonyi aizraušanās ar kosmosu ir bijusi visu mūžu. Būdams 13 gadus vecs, viņš uzvarēja konkursā, lai kļūtu par Ungārijas jaunāko astronautu, un devās uz Maskavu, lai satiktu kosmonautu. Kā jauns darbā Microsoft 1981. gadā viņš pārliecināja līdzdibinātāju Polu Alenu, lai viņš nedomā par labu IBM PC jaunās operētājsistēmas izstrādei un lidotu uz Floridu, lai noskatītos kosmosa kuģa pirmo lidojumu.
Simonyi gaidāmais sprādziens piedāvā viņam pilna apļa atkalapvienošanos ar padomju laika tehnoloģijām, kas noteica viņa dzīves kursu. Viņš vairākus mēnešus ir trenējies Krievijas Jurija Gagarina kosmonautu apmācības centrā Star City, apgūstot kosmosa tērpu un kosmosa tualetes detaļas un mācoties krievu valodu.
Kosmosa ceļojums apstiprinās Simonyi statusu kā ļoti maz ticamu lietu: slavenību programmētājs. Viņam ir divas lidmašīnas un pilota apliecība, lai ar tām lidotu. Viņš parādās tabloīdos kā mājturības augstās priesterienes Martas Stjuartes biežs pavadonis. Viņš ir uzbūvējis 233 pēdas garu jahtu ar klāju ar stikla sienām. Viņš ir finansējis Oksfordas profesora vietu savam draugam Ričardam Dokinsam, darvinisma teorētiķim.
Protams, nekas no tā nemainīs Simonyi centienus atvieglot programmatūras jomas hroniskās problēmas. Nepietiek ar būt izcilam programmētājam, Simonyi reiz teica Maiklam Hiltzikam, PARC vēstures autoram. Jums ir jāatrod liela problēma. Tīšais, iespējams, nekad nepildīs savus lielos solījumus. Taču neviens nevar apsūdzēt Simoniju par pārāk pieticīgas problēmas izvēli.
Mūsdienās viņa mājvieta ir savrupmāja Vašingtonas ezerā, lejā no Bila Geitsa mājas krasta ar mākslas galeriju, ar stiklu norobežotu peldbaseinu, helikopteru lidostu, datorlaboratoriju ar magnētiski izklātām sienām, kā arī virpu un urbjmašīnu. pagrabs (lai piepildītu tās Erector Set alkas). Mājas celtniecība izmaksāja 10 miljonus dolāru: tā ir sasvērusies septiņu grādu leņķī un izskatās, ka to būtu skārusi neliela zemestrīce. Ņujorkas Laiks rakstniece Patrīcija Lei Brauna, kura brīnījās par tās hermētiski noslēgto, matemātisko precizitāti un atklāja, ka tā ir tik liela, ka apmeklētājs var justies kā vientuļš asteroīds, kas grabē ap Saules sistēmu.
[Tikai] Čārlzs uzbūvēs 20 000 kvadrātpēdu māju ar vienu guļamistabu, reiz atzīmēja Simonyi disertācijas padomnieks un PARC kolēģis Batlers Lemsons. Vientuļajā guļamistabā ir kabīnei līdzīgs vadības centrs, kas ļauj Simonyi pielāgot visas savas sistēmas — apkuri, izklaidi, telefonu, apgaismojumu un laistīšanu —, lai viņš būtu apmierināts. Kā zemūdene, viņš paskaidroja Braunam. Pirms iegremdēšanas tiem visiem ir jābūt zaļiem. Ir arī pagriežama gultne, ko Simonyi var izmantot, lai precizētu savu skatu pāri ezeram; vai uz Sietlas panorāmu, kur biroja darbinieki cīnās ar saviem dokumentiem un izklājlapām; vai augšup uz zvaigžņotajām nakts debesīm, kur viņu drīz aizvedīs viņa jaunākais ceļojums.
Skots Rozenbergs ir Salon.com īpašo projektu viceprezidents. Viņš ir autors Sapņošana kodā.
Apzinātas programmēšanas skaidrojums
Simonyi un uzņēmums ir celmlauži, izmantojot spiedpogu pieeju programmēšanai.
[ Noklikšķiniet šeit Simonyi plānotās pieejas diagrammai]
Šo fabulu stāsta Šeins Klifords, Intentional Software izstrādātājs.
Kādreiz bija ciems ar četriem parkiem, ko uzturēja četras konkurētspējīgas apkaimes asociācijas. Pirmā biedrība nolēma savu parku izrotāt ar jaunu soliņu. Tā lūdza priekšlikumus no trim pasaules vadošajiem stendu ražotājiem. Neviens no dizainiem neieguva kaimiņu balsu vairākumu, tāpēc biedrība izvēlējās populārāko dizainu. Process bija demokrātisks, taču galu galā lielākā daļa nebija apmierināti ar jauno soliņu.
Otrā apvienība nolēma, ka vēlas savu soliņu, taču tādu, kas patika visiem. Tā atrada ražotāju, kas uzbūvēja pielāgotus soliņus no kombinētām detaļām. Taču koka sēdeklis, kas biedriem patika, nebija pareizā garumā, un dekoratīvā atzveltne nedarbojās ar zaļajām kājām, kas viņiem patika. Tāpēc viņi piekāpās daļām, kas darbojās kopā. Kaimiņi lepojās ar gatavo soliņu, bet neviens uz tā īpaši bieži nesēdās.
Trešās biedrības biedri redzēja, cik naudas pirmie divi ir iztērējuši, un nolēma, ka var labāk. Grupas amatnieki visiem lūdza ieteikumus, un beigās viņi uzbūvēja vienkāršu, elegantu soliņu, par kuru visi atzina, ka tas ir visjaukākais ciematā. Diemžēl tas bīstami šūpojās.
Arī ceturtā apvienība vēlējās soliņu, taču tā nevēlējās atkārtot citu grupu kļūdas. Kaimiņi vērsās pie mazpazīstama soliņu izgatavotāja, kurš reklamēja jaunu soliņu gatavošanas pieredzi. Soliņu izgatavotājs ieradās ar bortu kravas automašīnu, kas bija piekrauta ar dīvaina izskata mašīnām. Viņš sāka uzdot jautājumus, piemēram, Kāda ir šī sola vissvarīgākā iezīme? Kāda ir nākamā vissvarīgākā funkcija? Kādi materiāli jums patīk? Kāda ir jūsu iecienītākā sola pēdu forma?
Pēc katras atbildes sola izgatavotājs pagrieza dažus savu mašīnu kloķus, un uz lielā ekrāna parādījās jauns notiekošā stenda attēls. Dažreiz attēls nebija gluži pareizs, tāpēc kaimiņi atkāpās un atbildēja uz jautājumiem atšķirīgi. Pēc 50 jautājumiem soliņa taisītājs nospieda lielu pogu. Mašīnas kādu laiku dungoja, pēc tam izspieda skaistu soliņu, kas atbilst galīgajam attēlam ekrānā. Ikviens priecājās, ka viņiem bija iespēja dot savu ieguldījumu, un daudzi cilvēki katru dienu sēdēja uz soliņa.
Lai iegūtu soliņu, kas priecē visus, jāizbūvē automātiskā soliņu gatavošanas iekārta; palīdzēt klientiem definēt precīzas cerības uz savu soliņu; pārvērst šīs cerības instrukcijās, ko saprot stenda gatavošanas iekārta; un pēc tam nospiediet pogu Izveidot. Klienti iegūst ciešu kontroli pār iznākumu, un stendu izgatavotāji, atbrīvojušies no atkārtotām un mehāniskām solu izgatavošanas daļām, var pavadīt vairāk laika, izmantojot savas prasmes, lai iestrādātu iekārtā klientu vēlmes.
Klifords saka, ka aizstājiet soliņus ar programmatūru, un jūs sapratīsit apzinātu programmēšanu, jo programmētāji koncentrējas uz to, kā viņu klienti plāno programmas darboties, nevis uz koda jucekli, kas nepieciešams šo nodomu īstenošanai.
Tīša programmēšana pēc koncepcijas ir līdzīga tekstapstrādes programmām, ko redzat, tas ir tas, ko jūs saņemat, kuru aizsācējs bija Klifordas priekšnieks Čārlzs Simonijs. Wysiwyg teksta redaktori ļauj datoru lietotājiem manipulēt ar dokumenta izskatu ekrānā, neliekot viņiem apgūt pamatā esošo kodu. Tāpat tīša programmēšana mudina datoru lietotājus izteikt savas vajadzības savā pazīstamajā valodā, pēc tam parāda viņiem saprotamus jaunā dizaina skatus vai prognozes pirms izpildāmā koda salikšanas. Tā nav vienīgā programmēšanas filozofija, kas balstās uz šādiem grafiskiem attēlojumiem; Unified Modeling Language (UML), kas tika izstrādāta 90. gadu vidū uzņēmumā Rational Software (tagad daļa no IBM), arī izmanto grafiskās diagrammas, lai attēlotu programmas funkcijas, struktūru un uzvedību. Taču UML diagrammas nevar pārveidot par gatavu programmatūru, kas ir Simonyi sapnis par apzinātu programmēšanu.
Kā Intentional Software cer īstenot šo sapni? Ieliksim Simonyi plānu savā diagrammā (noklikšķiniet šeit). Programmatūras izveides process, protams, sākas ar klientu: jebkuru organizāciju, kas veic informācijas ietilpīgu uzdevumu, kas ir jāautomatizē. Simonyi sauc šo organizāciju darbiniekus par domēna ekspertiem; viņi, nevis programmētāji, zina, kas programmai jādara.
Ar programmētāju palīdzību domēna eksperti uzskaita visus jēdzienus un definīcijas, kas programmatūrai būs jāietver. Visas šīs definīcijas nonāk datu bāzē, ko Simonyi sauc par domēna shēmu.
Līdzīgi kā stenda izgatavotājs, kurš pagriež savus kloķus, programmētāji pēc tam iekļauj domēna shēmas definīcijas domēna kodā — programmatūras funkciju augsta līmeņa attēlojumā, kas izteikts domēnam specifiskā valodā jeb DSL, ko var pielāgot atbilstoši attiecīgajā nozarē. Taču, lai gan DSL var atšķirties, katra programmatūrai veiktā darbība tiek saglabāta vienotā formātā, tīšā kokā. Tīšiem kokiem ir priekšrocība, ka tie ir vizuāli vienkārši, bet loģiski visaptveroši, kas nozīmē, ka tos var manipulēt, pārskatīt un projicēt vai pārskatīt pēc vēlēšanās.
Piemēram, aprēķins, ko attēlo vienkāršais programmas priekšraksts
atgriezties a = b / (c +1) ;
tiek attēlots ar šādu apzinātu koku:
Atgriezties
(
Piešķirt
(
uz,
Div
(
b,
Vairāk
(
c,
viens
)
)
)
)
Kad aprēķins ir kodēts koka formā, to var projicēt daudzos citos veidos, kas varētu būt labāk pazīstami domēna ekspertiem, piemēram,
b
atgriezties a = ——- ;
c+1
Kā pirmais konkrētais uzdevums Simonyi un viņa kolēģi Intentional Software strādā pie īpaša rīka Domain Workbench izveides, kas paredzēts šo prognožu pārvaldībai. Gan domēna eksperti, gan programmētāji izmanto Domain Workbench, lai rediģētu un pārrediģētu projekcijas, līdz tās izskatās pareizi. Pēc tam domēna kods tiek ievadīts ģeneratorā — tas ir līdzvērtīgs stenda ražotāja daudzām mašīnām —, kas izdala mērķa kodu tādā valodā kā C++ vai Java, ko citi datori spēj saprast, apkopot un palaist.
Kad mērķa kods ir ģenerēts, to nevar pārvērst atpakaļ domēna kodā. Šajā ziņā ģenerators ir kā šifrēšanas programma, kas neatgriezeniski pārveido vienkāršu tekstu šifrētā tekstā.
Tomēr – un tā, iespējams, ir apzinātas programmēšanas lielākā priekšrocība – ir viegli izmest veco mērķa kodu un ģenerēt uzlabotu kodu no jauna. Vienkārši pārskatiet domēna kodu, izmantojot Domain Workbench Wysiwyg redaktoru, un vēlreiz palaidiet to caur ģeneratoru. Lielākajā daļā vecāku pieeju pat mazākās sākotnējo pieņēmumu izmaiņas varētu likt programmētājiem izsijāt miljoniem koda rindu, ar roku atjauninot katru jēdziena, definīcijas vai aprēķina gadījumu.
Ģenerators joprojām ir lielākā melnā kaste Intentional Software procesā. Tehniskajās publikācijās uzņēmums par šo noslēpumaino komponentu pateiks tikai to, ka prototips tiek rakstīts Microsoft C# programmēšanas valodā un ka tas piekļūst domēna shēmai un domēna kodam, izmantojot lietojumprogrammu saskarni, kas ir veids, kā sazināties divām programmām, kas ir iebūvēts domēna darbgaldā. Tomēr ir skaidrs, ka paša ģeneratora rakstīšana vai tā pielāgošana noteiktai nozarei vai DSL būs liela daļa no jebkura apzinātas programmēšanas projekta izmaksām.
Wysiwyg deva iespēju miljoniem vairāk lietotāju izveidot lieliskus dokumentus, uzņēmuma emuārā raksta Simonyi. Ir pienācis laiks darīt to pašu programmatūras lietotājiem.
Autors Veids Roušs
Noplūdušo abstrakciju likums
Izvilkums no Sapņot kodā: divi desmiti programmētāju, trīs gadi, 4732 kļūdas un viens meklējums pēc pārpasaulīgās programmatūras , Skots Rozenbergs, publicēs
Crown Books 2007. gada janvārī.
Mēs esam redzējuši, ka programmatūra ir slāņu lieta, un katrs slānis pārtulko informāciju un procesus slāņiem, kas atrodas augšā un apakšā. Šīs slāņu kaudzes apakšā atrodas iekārta ar tās tīrajiem binārajiem vieniniekiem un nullēm. Augšpusē ir cilvēki, kas veido un izmanto šos slāņus. Simony's Intentional Software sirdī vienkārši piedāvā vēl vienu slāni starp iekārtu un mums.
Programmatūras slāņi ir tās būtība, un tie ir tie, kas virza progresu šajā jomā, taču tiem ir pastāvīgs vājums. Viņi izplūst. Piemēram, daudzu Microsoft Windows versiju lietotāji ir noguruši pazīstami ar Blue Screen of Death fenomenu. Jūs strādājat kādā lietojumprogrammā, piemēram, tīmekļa pārlūkprogrammā vai Microsoft Word, un pēkšņi, nez no kurienes, ekrāns kļūst zils un uz tā redzat baltu tekstu, kas skan apmēram šādi:
Liktenīgs izņēmums 0E ir noticis plkst
0167: BFF9DFFF.
Pašreizējais pieteikums tiks pārtraukts.
Vērojot ekrāna vienkrāsaino izskatu un bloķēto šriftu, veterāni lietotāji var nojaust, ka viņi ir novirzīti atpakaļ datora laikā. Daži pat var saprast, ka ziņojuma satraucošā atsauce uz fatālu izņēmumu nozīmē, ka programma ir saskārusies ar kļūdu, no kuras tā nevar atkopties, un ir avarējusi, vai ka slepenie heksadecimālie (16. bāze) skaitļi apraksta precīzu vietu datora atmiņā, kur avārija. notika. Lielākajai daļai lietotāju šī informācija nav vērtīga. Ērtais, pazīstamais lietojumprogrammas interfeiss, ko viņi izmantoja, ir pazudis; dziļāks abstrakcijas slānis — šajā gadījumā Windows čaula vai zemāka līmeņa kontroles programma — ir izlauzies kā slīps pamatiežu slānis, kas izceļas cauri jaunākiem ģeoloģiskajiem slāņiem un nonāk saules gaismā.
(Lai arī cik mulsinoši ir Blue Screen of Death, tas patiesībā ir liels sasniegums salīdzinājumā ar iepriekšējām Windows versijām, jo dažreiz tas ļauj lietotājam izslēgt aizskarošo programmu un turpināt darbu. Pirms zilā ekrāna gandrīz vienmēr notika vienas Windows programmas avārija. noņēma visu iekārtu un visas tās programmas.)
Esejā ar nosaukumu The Law of Leaky Abstractions Džoels Spoļskis rakstīja: Visas netriviālās abstrakcijas zināmā mērā ir noplūdušas. Abstrakcijas neizdodas. Dažreiz nedaudz, dažreiz daudz. Ir noplūde. Lietas noiet greizi. Lietotājiem tas nozīmē, ka dažkārt jūsu dators uzvedas dīvaini, mulsinoši, un dažreiz jūs to vēlēsities, kā Mičs Kapors teica savā grāmatā. Programmatūras dizaina manifests , izmet to pa logu. Programmētājiem tas nozīmē, ka jauni rīki un idejas, kas apvieno zema līmeņa skaitļošanas sarežģītību un iepako to jaunā, vieglāk manipulējamā abstrakcijā, ir lieliski, taču tikai līdz brīdim, kad tie sabojājas. Tad visa šī slēptā sarežģītība atkal nonāk viņu darbā. Teorētiski parocīgais jaunais augšējais slānis ļauj programmētājiem aizmirst par putru zem tā; praksē programmētājam tas bardaks tomēr ir jāsaprot, jo galu galā viņš tajā iekritīs. Spolskis rakstīja:
Abstrakcijas patiesībā nevienkāršo mūsu dzīvi tik ļoti, kā bija paredzēts. … Noplūžu abstrakciju likums nozīmē, ka ikreiz, kad kāds nāk klajā ar gudru jaunu kodu ģenerēšanas rīku, kam vajadzētu padarīt mūs visus tik efektīvus, jūs dzirdat daudz cilvēku sakām: vispirms iemācieties to izdarīt manuāli un pēc tam. izmantojiet Wizzy rīku, lai ietaupītu laiku. Kodu ģenerēšanas rīki, kas izliekas, ka kaut ko abstrahē, piemēram, visas abstrakcijas, noplūde, un vienīgais veids, kā kompetenti tikt galā ar noplūdēm, ir uzzināt, kā abstrakcijas darbojas un ko tās abstrahē. Tātad abstrakcijas ietaupa mums darba laiku, bet neietaupa laiku mācībām. … Un tas viss nozīmē, ka paradoksālā kārtā, lai gan mums ir arvien augstāka līmeņa programmēšanas rīki ar labākām un labākām abstrakcijām, kļūt par prasmīgu programmētāju kļūst arvien grūtāk un grūtāk.
Tātad, lai gan abstrakcijas, ko esam radījuši gadu gaitā, ļauj mums tikt galā ar jaunām programmatūras izstrādes sarežģītības kārtām, ar kurām mums nebija jāsaskaras pirms desmit vai piecpadsmit gadiem, un lai gan šie rīki ļāva mums iegūt daudz Neticami ātri paveiktā darba, rakstīja Spolskis, pēkšņi kādu dienu mums ir jāatrod problēma, kur noplūda abstrakcija, un tas aizņem divas nedēļas.
Noplūdušo abstrakciju likums izskaidro, kāpēc tik daudzi programmētāji, ar kuriem esmu runājis, skeptiski izbola acis, dzirdot tīšas programmēšanas aprakstus vai citas līdzīgas idejas programmatūras sarežģītības pārsniegšanai. Nav tā, ka viņi nevēlētos spert vēl vienu pakāpi augstāk pa abstrakcijas kāpnēm; taču viņi baidās, ka neatkarīgi no tā, cik augstu viņi uzkāps pa šīm kāpnēm, viņiem vienmēr būs jāskrien pa tām augšup un lejup vairāk, nekā viņi vēlētos, un, jo garākas tās kļūst, jo ilgāks būs ceļojums.