211service.com
Garantēts kods
Ariels Deiviss
Ādams Člipala, MIT datorzinātņu asociētais profesors, domā, ka ir labāks veids, kā rakstīt datorprogrammas.
Lielākā daļa programmu tikai uzskaita darbības, kas datoram jāveic, saņemot noteikta veida datus. Programmētājam ir jāraksta testi, lai noteiktu, vai programma dara to, kas tai ir paredzēts, un tā kā ir praktiski neiespējami paredzēt visus veidus, kā programma varētu tikt izmantota, lielākajā daļā programmatūras ir kļūdas.
Chlipala dod priekšroku tā sauktajai funkcionālajai programmēšanai. Tā vietā, lai virknētu obligātas komandas, funkcionālais programmētājs definē funkciju kopu vai matemātiskas attiecības starp ieejām un izvadēm. Būtībā funkcionālā programmēšana izsaka to, ko programma dara kā vienādojumu kopu.
Domāt par programmām kā par funkciju kombinācijām var būt neintuitīva, taču cilvēkiem, kuriem tā darbojas, tas patiešām ir pārsteidzošs produktivitātes uzlabotājs, saka Chlipala. Pirmkārt, tas var novērst testēšanu. Funkcionālās programmas ir tik matemātiski precīzas, ka ir salīdzinoši vienkārši tās pārbaudīt vai pierādīt, ka tās dara to, kas tām vajadzētu, automātiski.
Viens no Chlipalas galvenās pētniecības intereses paplašina automātiskās verifikācijas jomu. Piemēram, viņa un kolēģu izstrādātie pārbaudes rīki ļāva izveidot pirmo failu sistēmu — operētājsistēmas daļu, kas pārvalda datu glabāšanu —, kas garantēja programmas datu nezaudēšanu sistēmas avārijas laikā.
Vēl viena funkcionālo valodu priekšrocība ir tā, ka tās novērš lielu programmēšanas darbu. Atkal, tā kā funkcionālās programmas ir tik precīzas, kompilatoriem — programmām, kas pārvērš kodu izpildāmos failos — ir viegli izdomāt, kā nodrošināt to visefektīvāko darbību.
Viens no populārākajiem Chlipala rīkiem ir funkcionālā valoda Ur/Web — vienīgā programmēšanas valoda, kas ļauj programmētājiem norādīt visas tīmekļa lietojumprogrammas funkcijas vienā programmā. Pēc tam Ur/Web kompilators automātiski ģenerē XML kodu, JavaScript kodu un datu bāzes vaicājumus, kas nepieciešami lietojumprogrammas ieviešanai. Tas arī nodrošina šo dažādo komponentu pareizu mijiedarbību.
Ur/Web ir līdzīgs citām funkcionālām valodām, taču tai ir pievienoti drošības līdzekļi, kas ļauj automātiski aizbāzt caurumus, kas bieži sastopami tīmekļa lietojumprogrammās. Piemēram, tas var garantēt, ka daļa no tās koda, kas importēta vienā lapas sadaļā (piemēram, reklāmā), nevar izspiegot citu (piemēram, kalendāra rīku).
Tāpat kā daudzi datorzinātnieki ap 30 gadiem, Člipala vidusskolā bija izmēģinājis spēkus videospēļu rakstīšanā. Taču šis uzņēmums viņu ātri aizveda citā virzienā. Kad viņš bija pirmkursnieks, mēģinājumi rakstīt spēles Texas Instruments grafiku kalkulatoram lika viņam izstrādāt ierīces kompilatoru.
Viņš turpināja koncentrēties uz kompilatoriem, būdams Kārnegija Melona universitātes bakalaura students, un savā pirmajā semestrī, būdams Kalifornijas Universitātes Bērklijas universitātes maģistrants, viņa topošais diplomdarba padomnieks jautāja viņam, vai viņš vēlētos piedalīties projektā par datoru. palīdzēja pārbaude. Chlipala uzreiz aizrāvās.
Viņš saka, ka ir sava veida paranojas personība, kas kļūst atkarīga no šāda veida darba, un tas noteikti esmu es. Šajā pasaulē nav daudz lietu, kas būtu pilnīgi drošas, taču, veicot mašīnpārbaudītus programmu pierādījumus, jūs nonākat diezgan tuvu.