Kuronga kunopfuura kukodha

Kuronga kunopfuura kukodha

Ichi chinyorwa cheshanduro Seminari yeStanford. Asi zvisati zvaitika pane sumo pfupi. Ko zombies inogadzirwa sei? Wese munhu akazviwana ari mumamiriro ezvinhu aanoda kuunza shamwari kana waanoshanda naye kusvika padanho ravo, asi hazvishande. Uyezve, "hazviiti" kwete zvakanyanya kwauri, asi kwaari: kune rumwe rutivi rwechiyero kune muhoro wenguva dzose, mabasa, nezvimwe zvakadaro, uye kune imwe iyo inofanirwa kufunga. Kufunga hakufadzi uye kunorwadza. Anokurumidza kukanda mapfumo pasi uye anoenderera mberi nekunyora kodhi pasina kushandisa uropi hwake zvachose. Iwe unoziva kuti inhamburiko yakawanda sei inotora kukunda chipingamupinyi chekusabatsira kudzidza, uye iwe haungozviita. Aya ndiwo magadzirirwo eZombies, anoita senge anogona kurapa, asi zvinoita sekunge hapana achaita izvi.

Pandakaona kuti Leslie Lamport (hongu, shamwari imwe chete kubva kumabhuku ekuverenga) anouya kuRussia uye handisi kupa rondedzero, asi chikamu chemibvunzo-ne-mhinduro, ndanga ndiine hanya zvishoma. Zvingodaro, Leslie inyanzvi yesainzi ine mukurumbira pasi rose, munyori wezvekuita basa mumakomputa akagoverwa, uye unogonawo kumuziva nemabhii La muLaTeX - "Lamport TeX". Chechipiri chinotyisa chinodikanwa chake: munhu wese anouya anofanira (asingabhadharise zvachose) ateerere kune akati wandei mishumo yake pachine nguva, auye nemubvunzo mumwe chete pamusoro pazvo, uye chete wouya. Ndakafunga kuona zvaitepfenyurwa naLamport ipapo - uye zvakanaka! Ichi ndicho chaicho chinhu ichocho, mashiripiti link-piritsi rekurapa zombies. Ini ndinokuyambira: iwo mameseji anogona kupisa zvakanyanya avo vanoda super-agile nzira uye vasingade kuyedza izvo zvavakanyora.

Mushure mehabrokat, kududzirwa kwemusangano kunotanga. Nakidzwa nekuverenga!

Chero chero basa raunotora, iwe nguva dzose unofanirwa kupfuura nematanho matatu:

  • sarudza chinangwa chaunoda kuzadzisa;
  • sarudza kuti uchazadzisa sei chinangwa chako;
  • zadzisa chinangwa chako.

Izvi zvinoshandawo kune mapurogiramu. Patinonyora kodhi, tinoda:

  • sarudza izvo chaizvo chirongwa chinofanira kuita;
  • nyatsoona kuti inofanira kuita sei basa rayo;
  • nyora kodhi yakakodzera.

Nhanho yekupedzisira, hongu, yakakosha, asi handisi kuzotaura nezvazvo nhasi. Pane kudaro, tichakurukura mbiri dzokutanga. Wese programmer anoaita asati atanga kushanda. Iwe haugare pasi kuti unyore kunze kwekunge wafunga zvauri kunyora: browser kana dhatabhesi. Imwe pfungwa yechinangwa inofanira kunge iripo. Uye iwe unonyatso funga nezve izvo chaizvo zvichaitwa nechirongwa, uye usanyore zvisina tsarukano uine tariro yekuti iyo kodhi pachayo ichashanduka kuita browser.

Izvi zvinonyatsoita sei kufunga kwekodhi? Tinofanira kuisa nhamburiko yakawanda sei muna ikoku? Zvese zvinoenderana nekuoma kwakaita dambudziko ratiri kugadzirisa. Ngatitii tinoda kunyora a fault-tolerant distributed system. Muchiitiko ichi, tinofanira kufunga zvinhu nekuchenjerera tisati tagara pasi kune kodhi. Ko kana tichingoda kuwedzera nhamba izere ne1? Pakutanga kuona, zvinhu zvose pano hazvina maturo uye hapana kufunga kunodiwa, asi zvino tinoyeuka kuti kufashukira kunogona kuitika. Nokudaro, kunyange kuti unzwisise kana dambudziko riri nyore kana rakaoma, iwe unofanira kutanga wafunga.

Kana iwe ukafunga kuburikidza nezvinogoneka kugadzirisa dambudziko pachine nguva, unogona kudzivirira kukanganisa. Asi izvi zvinoda kuti kufunga kwako kuve kwakajeka. Kuti uite izvi, unofanirwa kunyora pasi pfungwa dzako. Ini ndinoda chirevo chaDick Guindon: "Paunonyora, zvisikwa zvinokuratidza kuti kufunga kwako kwakadii." Kana ukasanyora, unongofunga kuti uri kufunga. Uye iwe unofanirwa kunyora pasi pfungwa dzako muchimiro chezvirevo.

Madiresi anoshanda akawanda mabasa, kunyanya mumapurojekiti makuru. Asi ini ndichangotaura nezvemumwe wavo: vanotibatsira kufunga zvakajeka. Kufunga zvakajeka kwakakosha uye kwakaoma, saka tinoda chero rubatsiro pano. Tinofanira kunyora mitauro ipi? Kazhinji, uyu ndiwo mubvunzo wekutanga kune vanogadzira mapurogiramu: tichanyora mutauro upi? Hapana mhinduro yechokwadi: matambudziko atinogadzirisa akasiyana zvakanyanya. Kune vamwe vanhu, TLA+ mutauro wakatemwa wandakagadzira. Kune vamwe, zviri nyore kushandisa chiChinese. Zvose zvinoenderana nemamiriro ezvinhu.

Mubvunzo unonyanya kukosha ndewokuti: tingawana sei kufunga kwakajeka? Mhinduro: Tinofanira kufunga semasayendisiti. Iyi inzira yekufunga yakashanda zvakanaka mumakore 500 apfuura. Musainzi tinovaka masvomhu emhando dzechokwadi. Astronomy zvichida yakanga iri sainzi yekutanga mupfungwa yakasimba yeshoko racho. Mumuenzaniso wemasvomhu unoshandiswa mukuongorora nyeredzi, mitumbi yedenga inoratidzika semapoinzi ane huremu, chinzvimbo uye kukurumidza, kunyangwe hazvo zviri izvo zvinhu zvakaoma kunzwisisa zvine makomo nemakungwa, ebbs uye kuyerera. Iyi modhi, senge chero imwe, yakagadzirwa kugadzirisa mamwe matambudziko. Zvakanakira kuona pekunongedza teresikopu kana uchida kuwana nyika. Asi kana iwe uchida kufanotaura mamiriro ekunze pasi pano, iyi modhi haishande.

Masvomhu inotibvumira kuona zvimiro zvemuenzaniso. Uye sainzi inoratidza kuti zvinhu izvi zvinoenderana sei nechokwadi. Ngatitaure nezve sainzi yedu, sainzi yemakomputa. Chokwadi chatinoshanda nacho ndechekugadzira masisitimu emhando dzakasiyana siyana: processors, game consoles, makomputa anomhanyisa zvirongwa, zvichingodaro. Ini ndichataura nezve kuita chirongwa pakombuta, asi, zvakanyanya, zvese izvi mhedziso zvinoshanda kune chero komputa system. Musainzi yedu tinoshandisa mamodheru akasiyana siyana: muchina weTuring, akaodha zvikamu zvezviitiko, nezvimwe zvakawanda.

Chirongwa chacho chii? Iyi ndiyo chero kodhi inogona kutariswa pachayo. Ngatitii tinoda kunyora browser. Isu tinoita mabasa matatu: gadzira mharidzo yemushandisi yechirongwa, wobva wanyora dhizaini yepamusoro yechirongwa, uye pakupedzisira nyora kodhi. Sezvatinonyora kodhi, tinoona kuti tinoda kunyora fomati yemavara. Pano zvakare tinoda kugadzirisa matambudziko matatu: sarudza kuti chinyorwa chipi chichadzoka; sarudza algorithm yefomati; nyora kodhi. Iri basa rine subtask raro: kuisa hyphens mumashoko nemazvo. Isu tinogadzirisawo subtask iyi mumatanho matatu - sezvatinoona, anodzokororwa pamatanho mazhinji.

Ngatitarisei zvakanyanya padanho rekutanga: dambudziko ripi rinogadziriswa nechirongwa. Pano isu tinowanzo enzanisira chirongwa sebasa rinotora kumwe kupinza uye rinopa zvimwe zvinobuda. Mumasvomhu, basa rinowanzotsanangurwa seti yakarairwa yezviviri. Semuenzaniso, squaring basa remanhamba echisikigo rinotsanangurwa seti {<0,0>, <1,1>, <2,4>, <3,9>, ...}. Nzvimbo yetsanangudzo yebasa rakadaro seti yezvinhu zvekutanga zvepairi yega yega, kureva, nhamba dzechisikigo. Kuti titsanangure basa, tinoda kutsanangura dura rayo uye fomula.

Asi mabasa mumasvomhu haana kufanana nemabasa mumitauro yekuronga. Masvomhu ari nyore zvikuru. Sezvo ini ndisina nguva yemienzaniso yakaoma, ngatifungei iri nyore: basa muC kana nzira yakamira muJava inodzoreredza kupatsanurwa kukuru kwezvikamu zviviri. Mukutsanangurwa kwenzira iyi tichanyora: kuverenga GCD(M,N) nokuda kwenharo M ΠΈ Nkupi GCD(M,N) - basa rine dura rine seti yezvikamu zviviri zvemanhamba, uye kukosha kwekudzoka ndiyo nhamba huru inopatsanurwa ne M ΠΈ N. Chokwadi chinofananidzwa sei nemuenzaniso uyu? Iyo modhi inoshanda neintegers, uye muC kana Java tine 32-bit int. Iyi modhi inotibvumira kuti tisarudze kana iyo algorithm yakarurama GCD, asi hazvizodziviriri kukanganisa kunopfuura. Izvi zvingada imwe nzira yakaoma, iyo isina nguva.

Ngatitaurei pamusoro pekugumira kwebasa semuenzaniso. Mamwe mapurogiramu (senge masisitimu anoshanda) haangodzose kukosha kwakati kune dzimwe nharo; anogona kumhanya achienderera. Mukuwedzera, basa remuenzaniso harina kukodzera danho rechipiri: kuronga kugadzirisa dambudziko. Quicksort uye bubble mhando compute basa rimwechete, asi iwo akasiyana zvachose algorithms. Naizvozvo, kutsanangura nzira yekuzadzisa chinangwa chechirongwa, ndinoshandisa imwe modhi, ngatiidze iyo yakajairika maitiro emhando. Iyo purogiramu inomiririrwa mairi seti yeese maitiro akakodzera, imwe neimwe iyo, zvakare, inoteedzana yematunhu, uye nyika ndiko kugoverwa kwehunhu kune akasiyana.

Ngationei kuti nhanho yechipiri yeEuclidean algorithm ingaite sei. Tinofanira kuverenga GCD(M, N). Isu tinotanga M sei xuye N sei y, wobva wabvisazve zvidiki zvezvisiyana izvi kubva pazvikuru kusvika zvaenzana. Somuenzaniso, kana M = 12uye N = 18, tinogona kutsanangura maitiro anotevera:

[x = 12, y = 18] β†’ [x = 12, y = 6] β†’ [x = 6, y = 6]

Uye kana M = 0 ΠΈ N = 0? Zero inopatsanurwa nenhamba dzese, saka hapana kupatsanura kukuru mune iyi kesi. Mumamiriro ezvinhu aya, tinofanira kudzokera kunhanho yekutanga uye kubvunza: tinoda chaizvo kuverenga GCD yenhamba dzisina kunaka? Kana izvi zvisingakoshi, saka iwe unongoda kushandura yakatarwa.

A pfupi digression pamusoro goho rakarongeka pano. Inowanzoyerwa muhuwandu hwemitsara yekodhi yakanyorwa pazuva. Asi basa rako rinonyanya kubatsira kana ukabvisa imwe nhamba yemitsara, nekuti une nzvimbo shoma yezvipembenene. Uye nzira iri nyore yekubvisa kodhi iri mudanho rekutanga. Zvinogoneka kuti haudi mabhero ese uye muridzo wauri kuedza kuita. Iyo inokurumidza nzira yekurerutsa chirongwa uye kuchengetedza nguva ndeye kusaita zvinhu zvisingafanirwe kuitwa. Danho rechipiri rine chechipiri chepamusoro chekuchengetedza nguva. Kana iwe ukayera kubereka maererano nemitsara yakanyorwa, ipapo kufunga nezvekupedzisa basa kunokuita iwe kubereka zvishoma, nokuti iwe unogona kugadzirisa dambudziko rimwechete nekodhi shoma. Handikwanisi kupa nhamba chaiyo pano, nokuti handina nzira yekuverenga nhamba yemitsara yandisina kunyora nekuda kwenguva yandakapedza pane zvakatemwa, kureva, pamatanho ekutanga uye echipiri. Uye isu hatigone kuita kuyedza pano zvakare, nekuti mukuyedza hatina kodzero yekupedzisa nhanho yekutanga; basa rinotarwa pachine nguva.

Zviri nyore kufuratira matambudziko mazhinji mune zvisina kurongwa mataurirwo. Hapana chinhu chakaoma pakunyora zvakaomesesa zvemabasa; Ini handisi kuzokurukura izvi. Pane kudaro, isu tichataura nezve kunyora yakasimba zvirevo zvemaitiro akajairwa. Pane theorem inotaura kuti chero seti yemafambiro inogona kutsanangurwa uchishandisa iyo yekuchengetedza pfuma (chengetedzo) uye survivability properties (hupenyu). Kuchengeteka kunoreva kuti hapana chakaipa chichaitika, chirongwa hachizopa mhinduro isiriyo. Kupona kunoreva kuti nokukurumidza kana kuti gare gare chimwe chinhu chakanaka chichaitika, i.e. purogiramu ichakurumidza kupa mhinduro yakarurama. Sezvo mutemo, chengetedzo chiratidzo chakakosha; zvikanganiso zvinowanzoitika pano. Naizvozvo, kuchengetedza nguva, ini handisi kuzotaura nezvekupona, kunyangwe iyo, hongu, yakakoshawo.

Isu tinowana kuchengeteka nekutanga kutsanangura seti yezvingabvira yekutanga nyika. Uye chechipiri, hukama nezvose zvinogoneka zvinotevera nyika kune yega yega. Ngatizvibatei semasayendisiti uye titsanangure nyika nemasvomhu. Iyo seti yekutanga nyika inotsanangurwa neformula, semuenzaniso, mune iyo Euclidean algorithm: (x = M) ∧ (y = N). Kune mamwe maitiro M и N pane imwe chete yekutanga mamiriro. Ukama nehurumende hunotevera hunotsanangurwa nemaitiro umo zvinyorwa zvehurumende inotevera zvakanyorwa neprime, uye zvinyorwa zvemazuva ano zvinonyorwa pasina prime. Panyaya yeEuclidean algorithm, tichange tichibata nekupesana kwemafomati maviri, mune imwe yacho. x ndiyo yakakosha kukosha, uye yechipiri - y:

Kuronga kunopfuura kukodha

Muchiitiko chekutanga, kukosha kutsva kwa y kwakaenzana nehuwandu hwekare hwe y, uye tinowana hutsva hutsva hwe x nekubvisa mutsauko muduku kubva kune mukuru. Muchiitiko chechipiri, tinoita zvinopesana.

Ngatidzokere kuEuclidean algorithm. Ngatitii zvakare M = 12, N = 18. Izvi zvinotsanangura chimiro chimwe chete chekutanga, (x = 12) ∧ (y = 18). Isu tinobva tabatanidza aya ma values ​​muformula iri pamusoro towana:

Kuronga kunopfuura kukodha

Heino mhinduro chete inogoneka: x' = 18 - 12 ∧ y' = 12, uye tinowana maitiro: [x = 12, y = 18]. Nenzira imwecheteyo, isu tinokwanisa kutsanangura nyika dzese mumafambiro edu: [x = 12, y = 18] β†’ [x = 12, y = 6] β†’ [x = 6, y = 6].

In last state [x = 6, y = 6] zvikamu zviviri zvekutaura zvichange zviri zvenhema, saka hazvina mamiriro anotevera. Saka, tine tsanangudzo yakakwana yedanho rechipiri - sezvatinoona, iyi inongova masvomhu akajairika, seaya einjiniya nesainzi, uye kwete zvinoshamisa, senge musainzi yekombuta.

Aya mafomula maviri anogona kusanganiswa kuita imwe formula yenguva logic. Iyo yakanaka uye iri nyore kutsanangura, asi hapana nguva yayo ikozvino. Tingangoda pfungwa dzenguva pfupi chete kune zvinhu zvehupenyu; kune kuchengeteka hazvidiwi. Ini handifarire pfungwa dzenguva sekudaro, hadzisi dzakajairwa masvomhu, asi kana iri yehupenyu huipi hunodiwa.

MuEuclidean algorithm kune yega yega kukosha x ΠΈ y kune maitiro akasiyana x' ΠΈ y', izvo zvinoita kuti hukama nehunotevera huve hwechokwadi. Mune mamwe mazwi, iyo Euclidean algorithm ndeye deterministic. Kuenzanisira algorithm isingaite, nyika yazvino inofanirwa kuve neyakawanda inogoneka yenguva yemberi, uye kukosha kwega kwega kweiyo unprimed kusiyanisa kunofanirwa kuve nemakoshero akawanda eiyo primed variable zvekuti hukama kune inotevera nyika ndeyechokwadi. Izvi hazvina kuoma kuita, asi ini handisi kuzopa mienzaniso ikozvino.

Kuti ugadzire chishandiso chekushanda, unoda masvomhu epamutemo. Nzira yekuita sei chirevo chepamutemo? Kuti tiite izvi tichada mutauro wepamutemo, semuenzaniso. TLA+. Kutsanangurwa kweiyo Euclidean algorithm mumutauro uyu ichaita seizvi:

Kuronga kunopfuura kukodha

Chiratidzo chechiratidzo chakaenzana chine katatu chinoreva kuti kukosha kuruboshwe kwechiratidzo kunotarirwa kuenzana nehukoshi kurudyi kwechiratidzo. Muchidimbu, chirevo itsanangudzo, mune yedu tsananguro mbiri. Kune zvakatemwa muTLA+ iwe unofanirwa kuwedzera zviziviso uye imwe syntax, sezviri mune slide iri pamusoro. MuASCII zvaizoita seizvi:

Kuronga kunopfuura kukodha

Sezvauri kuona, hapana chakaoma. Iyo yakatarwa paTLA + inogona kusimbiswa, kureva, zvinokwanisika kunzvenga maitiro ese anogoneka mune diki modhi. Muchiitiko chedu, iyi modhi ichava humwe hutsika M ΠΈ N. Iyi inzira inoshanda uye yakapusa yekuongorora iyo inongoitika otomatiki. Mukuwedzera, zvinogoneka kunyora humbowo hwechokwadi hwechokwadi uye kuzviongorora nemashini, asi izvi zvinotora nguva yakawanda, saka hapana anoita izvi.

Chinhu chikuru chinokanganisa cheTLA + ndechekuti masvomhu, uye vanogadzira mapurogiramu uye masayendisiti epakombiyuta vanotya masvomhu. Pakutanga kuona izvi zvinonzwika sejee, asi, zvinosuruvarisa, ndinotaura izvi mune zvose zvakakomba. Mumwe wandaishanda naye aingondiudza kuti akaedza sei kutsanangura TLA+ kune vakati wandei vanogadzira. Pakangobuda maformula pascreen, maziso avo akabva aita kunge magirazi. Saka kana TLA + ichityisa, unogona kushandisa PlusCal, rudzi rwechitoyi programming mutauro. Chirevo muPlusCal chinogona kuve chero TLA+ kutaura, kureva, chero kutaura kwemasvomhu. Pamusoro pezvo, PlusCal ine syntax yeasiri-deterministic algorithms. Nekuti PlusCal inogona kunyora chero TLA + kutaura, inonyanya kutaura kupfuura chero chaiyo programming mutauro. Tevere, PlusCal inounganidzwa kuita iri nyore kuverenga TLA + yakatarwa. Izvi hazvireve, hongu, kuti iyo yakaoma PlusCal yakatarwa ichashanduka kuita iri nyore paTLA + - kungoti kunyorerana pakati pavo kuri pachena, hapana kuwedzera kuomarara kuchaonekwa. Chekupedzisira, iyi yakatarwa inogona kusimbiswa uchishandisa TLA + zvishandiso. Kazhinji, PlusCal inogona kubatsira kukunda phobia yemasvomhu; zviri nyore kunzwisisa kunyangwe kune vanogadzira mapurogiramu uye masayendisiti ekombuta. Ndakaburitsa algorithms pairi kwenguva yakati (anenge makore gumi) munguva yakapfuura.

Zvichida mumwe munhu acharamba kuti TLA+ nePlusCal masvomhu, uye masvomhu anoshanda chete nemienzaniso yakagadzirwa. Mukuita, iwe unoda mutauro chaiwo une marudzi, maitiro, zvinhu, nezvimwe zvakadaro. Izvi zvakaipa. Hezvino izvo Chris Newcomb, aishanda kuAmazon, anonyora: "Takashandisa TLA+ pamapurojekiti makuru gumi, uye mune zvese kushandiswa kwayo kwakaunza mutsauko wakakura mubudiriro nekuti takakwanisa kubata tsikidzi dzine ngozi dzisati dzatanga kugadzira, uye nekuti dzakatipa nzwisiso uye chivimbo chatinoda kuti tive nehukasha. performance optimizations pasina kufurira chokwadi chechirongwa". Iwe unogona kazhinji kunzwa kuti kana tichishandisa nzira dzepamutemo tinowana kodhi isingashande - mukuita, zvese zvakapesana. Pamusoro pezvo, pane fungidziro yekuti mamaneja haagone kugutsikana nezvekudiwa kwenzira dzepamutemo, kunyangwe kana vanogadzira zvirongwa vaine chokwadi chekubatsira kwavo. Uye Newcomb inonyora kuti: "Mamaneja arikusundidzira munzira dzese kunyora zvakatemwa muTLA +, uye vari kugovera nguva yeizvi". Saka kana mamaneja aona kuti TLA + inoshanda, vanoigamuchira. Chris Newcomb akanyora izvi anenge mwedzi mitanhatu yapfuura (October 2014), asi iye zvino, sezvandinoziva, TLA + inoshandiswa mumapurojekiti gumi nemana, kwete 14. Mumwe muenzaniso une chokuita nekugadzirwa kweXBox 10. Mumwe mudzidzi akauya kuna Charles Thacker uye akanyora zvirevo zvememory system. Nekuda kweiyo rondedzero, bug yakawanikwa ingadai isina kuwanikwa uye yaizokonzera yega yega XBox 360 kupunzika mushure memaawa mana ekushandiswa. Mainjiniya kubva kuIBM vakasimbisa kuti bvunzo dzavo dzingadai dzisina kuona iyi bug.

Iwe unogona kuverenga zvakawanda nezve TLA + paInternet, asi ikozvino ngatitaure nezve zvisina kurongwa zvakatemwa. Isu hatifanire kunyora zvirongwa zvinoverengera zvidiki diki divisor nezvimwe zvakadaro. Kunyanya kazhinji tinonyora zvirongwa seyakanaka-printer chishandiso chandakanyorera TLA+. Mushure mekugadzirisa kuri nyore, iyo TLA + kodhi yaizotaridzika seizvi:

Kuronga kunopfuura kukodha

Asi mumuenzaniso uri pamusoro, mushandisi angangodaro aida kuti mubatanidzwa uye zviratidzo zvakaenzana zvienderane. Saka iyo chaiyo fomati yaizotaridzika seizvi:

Kuronga kunopfuura kukodha

Ngatimbokurukurai mumwe muenzaniso:

Kuronga kunopfuura kukodha

Pano, pane zvinopesana, kurongeka kwezviratidzo zvakaenzana, kuwedzera uye kuwandisa mune sosi kwaive kwakasarudzika, saka iyo iri nyore kugadzirisa yakakwana. Kazhinji, hapana tsananguro yemasvomhu yekurongeka kwakaringana, nekuti "chaiyo" mune iyi nyaya inoreva "zvinoda mushandisi," uye izvi hazvigone kutsanangurwa nemasvomhu.

Zvingaita sekuti kana isu tisina tsananguro yechokwadi, saka iyo yakatarwa haina basa. Asi ichocho hachisi chokwadi. Kungoti hatizivi zvinofanira kuitwa nechirongwa hazvirevi kuti hatifanire kufunga kuti chinofanira kushanda seiβ€”pane kudaro, tinofanira kupedza simba rakawanda pachiri. Iyo yakatarwa inonyanya kukosha pano. Izvo hazvigoneke kuona iyo yakakwana chirongwa chekudhindwa kwakarongeka, asi izvi hazvireve kuti isu hatifanirwe kuzviita zvachose, uye kunyora kodhi serukova rwekuziva handizvo. Ndakapedza kunyora rondedzero yemitemo mitanhatu ine tsananguro muchimiro chemashoko mune Java file. Heino muenzaniso weimwe yemitemo: a left-comment token is LeftComment aligned with its covering token. Mutemo uyu wakanyorwa mukati, ngatitii, masvomhu Chirungu: LeftComment aligned, left-comment ΠΈ covering token - mazwi ane tsanangudzo. Aya ndiwo matsananguriro anoita masvomhu: vanonyora tsananguro dzematemu uye, zvichibva pazviri, vanogadzira mitemo. Kubatsira kweichi chirevo ndechekuti mitemo mitanhatu iri nyore kunzwisisa uye kugadzirisa pane 850 mitsetse yekodhi. Ndinofanira kutaura kuti kunyora mitemo iyi kwanga kusiri nyore; zvakatora nguva yakawanda kuigadzirisa. Ndakanyora kodhi yakanangana nechikonzero ichi yakandiudza kuti ndeupi mutemo waishandiswa. Nekuti ndakaedza iyi mitemo mitanhatu nemienzaniso mishoma, ini handina kufanira kugadzirisa mitsara 850 yekodhi, uye mabhugi aive nyore kuwana. Java ine maturusi makuru eizvi. Dai ndangonyora kodhi, zvingadai zvakanditorera nguva yakareba uye mafomati angadai ari emhando yakaderera.

Sei zvisina kufanira kushandiswa? Kune rimwe divi, kuuraya chaiko hakuna kunyanya kukosha pano. Kudhinda kwakarongeka kunosungirwa kusagutsa kune vamwe, saka handina kufanira kuita kuti ishande nemazvo mumamiriro ese asina kujairika. Chinotonyanya kukosha inyaya yekuti ndakanga ndisina maturusi akakwana. Iyo TLA + modhi yekutarisa haina basa pano, saka ndaizofanira kunyora mienzaniso neruoko.

Iyo yakapihwa yakatarwa ine zvimiro zvakafanana kune ese maratidziro. Iyo yakakwirira pane kodhi. Inogona kushandiswa mune chero mutauro. Hapana zvishandiso kana nzira dzekuinyora. Hapana programming kosi ichakubatsira iwe kunyora iyi yakatarwa. Uye hapana maturusi anogona kuita kuti kutsanangurwa uku kuve kusakosha, kunze kwekunge iwe uri kunyora mutauro wakanangana nekunyora zvirongwa zvakadhindwa muTLA+. Chekupedzisira, chirevo ichi hachitauri chero chinhu nezvekuti tichanyora sei kodhi, inongotaura izvo kodhi inoita. Isu tinonyora zvakatemwa kuti zvitibatsire kufunga kuburikidza nedambudziko tisati tatanga kufunga nezvekodhi.

Asi chirevo ichi zvakare chine zvinhu zvinochisiyanisa kubva kune mamwe maitiro. 95% yezvimwe zvirevo zvakapfupika uye zviri nyore:

Kuronga kunopfuura kukodha

Uyezve, iyi tsanangudzo igadziriro yemitemo. Ichi chinowanzova chiratidzo chekushomeka kwakashata. Kunzwisisa zvinokonzeresa seti yemitemo kwakaoma, ndosaka ndaifanira kupedza nguva yakawanda ndichiigadzirisa. Zvisinei, munyaya iyi handina kuwana nzira iri nani.

Zvakakodzera kutaura mazwi mashoma nezvezvirongwa zvinoenderera mberi. Kazhinji vanoshanda zvakafanana, senge masisitimu anoshanda kana masisitimu akagoverwa. Vanhu vashomanene zvikuru vanogona kuzvinzwisisa mundangariro dzavo kana kuti papepa, uye handisi mumwe wavo, kunyange zvazvo ndakambokwanisa kuzviita. Naizvozvo, tinoda zvishandiso zvinotarisa basa redu - semuenzaniso, TLA + kana PlusCal.

Nei ndaifanira kunyora zvakatemwa kana ini ndatoziva kuti kodhi yaifanira kuita sei? Ini ndaingofunga kuti ndaizviziva. Uye zvakare, nekutsanangurwa kuri munzvimbo, wekunze haachadi kutarisa mukodhi kuti anzwisise kuti chii chaizvo chaanoita. Ndine mutemo: hapafaniri kuva nemitemo yakawanda. Pane mutsauko kumutemo uyu hongu, uyu ndiwo wega mutemo wandinotevedzera: kutsanangurwa kwezvinoitwa nekodhi kunofanirwa kuudza vanhu zvese zvavanoda kuziva kana vachishandisa iyo kodhi.

Saka chii chaizvo icho vanogadzira mapurogiramu vanofanirwa kuziva nezve kufunga? Kutanga, zvakafanana kune wese wese: kana iwe ukasanyora, saka zvinongoratidzika kwauri kuti uri kufunga. Zvakare, unofanirwa kufunga usati wanyora, zvinoreva kuti unofanirwa kunyora usati wanyora. Tsanangudzo ndiyo yatinonyora tisati tatanga kukodha. Tsanangudzo inodiwa kune chero kodhi inogona kushandiswa kana kuchinjwa nemunhu wese. Uye uyu "mumwe munhu" angave munyori wekodhi mwedzi mushure mekunge yanyorwa. Tsanangudzo inodiwa kune makuru mapurogiramu uye masisitimu, emakirasi, kune nzira, uye dzimwe nguva kunyange kune yakaoma zvikamu zveimwe nzira. Chii chaizvo chaunofanira kunyora pamusoro pekodhi? Iwe unofanirwa kutsanangura zvazvinoita, ndiko kuti, chimwe chinhu chinogona kubatsira kune chero munhu anoshandisa iyi kodhi. Dzimwe nguva zvinogona zvakare kudikanwa kutsanangura kuti chaizvo kodhi inozadzisa chinangwa chayo sei. Kana isu takapfuura nenzira iyi mune algorithms kosi, saka tinoidaidza kuti algorithm. Kana chiri chimwe chinhu chakanyanya hunyanzvi uye chitsva, saka tinochidaidza chepamusoro-level dhizaini. Iko hakuna mutsauko wepamutemo pano: ese ari abstract modhi yechirongwa.

Iwe unofanirwa kunyora sei kodhi yakatarwa? Chinhu chikuru: inofanira kuva imwe nhanho yakakwirira kudarika code pachayo. Inofanira kutsanangura nyika uye maitiro. Inofanira kuva yakasimba sezvinoda basa racho. Kana iwe uri kunyora zvakatemwa nezve maitiro ekuita basa, saka rinogona kunyorwa mu pseudocode kana kushandisa PlusCal. Iwe unofanirwa kudzidza kunyora zvakatemwa uchishandisa zvakatemwa zvakatemwa. Izvi zvinokupa hunyanzvi hunodiwa hunozobatsirawo nevasina kurongeka. Ungadzidza sei kunyora zvakatemwa? Patakadzidza kuita purogiramu, tainyora mapurogiramu uye ndokuagadzirisa. Chinhu chimwe chete pano: iwe unofanirwa kunyora zvakatemwa, zvitarise nemuenzaniso cheki, uye gadzirisa zvikanganiso. TLA+ inogona kunge isiri iyo yakanakisa mutauro weiyo yakatarwa, uye mumwe mutauro ungangove wakanyatsokodzera zvaunoda chaizvo. Chinhu chikuru pamusoro peTLA + ndechekuti inoita basa rakakura rekudzidzisa kufunga kwemasvomhu.

Nzira yekubatanidza sei tsanangudzo uye kodhi? Kushandisa zvirevo zvinobatanidza pfungwa dzemasvomhu nekuita kwavo. Kana iwe ukashanda nemagrafu, ipapo padanho rechirongwa iwe unenge uine mitsara yemanodhi uye arrays ezvibatanidza. Saka iwe unofanirwa kunyora kuti chaizvo girafu rinoitwa sei neaya mapurogiramu ehurongwa.

Izvo zvinofanirwa kucherechedzwa kuti hapana chimwe chezviri pamusoro chinoshanda kune maitiro ekunyora kodhi pachayo. Paunonyora kodhi, ndiko kuti, ita danho rechitatu, iwe unofanirwawo kufunga uye kufunga kuburikidza nechirongwa. Kana subtask ikava yakaoma kana kuti isiri pachena, unofanirwa kunyora zvakatemwa nazvo. Asi handisi kutaura nezve kodhi pachayo pano. Iwe unogona kushandisa chero mutauro wechirongwa, chero nzira, izvi hazvisi pamusoro pavo. Zvakare, hapana chimwe chezviri pamusoro chinobvisa kukosha kwekuyedza uye kugadzirisa kodhi yako. Kunyangwe kana iyo abstract modhi yakanyorwa nemazvo, panogona kunge paine tsikidzi mukuitwa kwayo.

Manyorerwo ekunyora inhanho yekuwedzera muhurongwa hwekukodha. Kutenda kwazviri, zvikanganiso zvakawanda zvinogona kubatwa nekuedza kushoma - isu tinoziva izvi kubva pane zvakaitika kune vanogadzira mapurogiramu kubva kuAmazon. Nekutsanangurwa, mhando yezvirongwa inova yakakwirira. Saka nei tichiwanzoenda tisina ivo? Nekuti kunyora kwakaoma. Asi kunyora kwakaoma, nokuti nokuda kweizvi unoda kufunga, uye kufunga kwakaomawo. Zvinogara zviri nyore kunyepedzera kunge uri kufunga. Enzaniso inogona kudhonzwa pano nekumhanya - kana uchimhanya zvishoma, unononoka kumhanya. Iwe unofanirwa kudzidzisa tsandanyama dzako uye kudzidzira kunyora. Zvinoda kudzidzira.

Zvinorehwa zvinogona kunge zvisiri izvo. Iwe unogona kunge wakanganisa pane imwe nzvimbo, kana zvinodiwa zvingave zvachinja, kana kuvandudzwa kungada kuitwa. Chero kodhi iyo chero munhu anoshandisa inofanirwa kuchinjwa, saka nekukurumidza kana gare gare iyo yakatarwa haichazoenderana nechirongwa. Zvakanakisa, mune iyi kesi, iwe unofanirwa kunyora chirevo chitsva uye kunyora zvachose kodhi. Tinoziva chaizvo kuti hapana anoita izvi. Mukuita, isu tinoisa kodhi uye pamwe nekuvandudza iyo yakatarwa. Kana izvi zvichizoitika nokukurumidza kana kuti gare gare, saka sei kunyora zvinotsanangurwa zvachose? Chekutanga, kumunhu anozogadzirisa kodhi yako, rimwe nerimwe izwi rekuwedzera mune yakatarwa richakodzera huremu hwaro mugoridhe, uye munhu uyu anogona kunge ari iwe. Ini kazhinji ndinozvikanda pachangu nekuda kwekusanyatsojeka pandinogadzirisa kodhi yangu. Uye ini ndinonyora zvakawanda zvakatemwa pane kodhi. Naizvozvo, kana iwe uchigadzirisa kodhi, iyo yakatarwa inogara ichida kuvandudzwa. Chechipiri, nekugadziridza kwega kwega kodhi inowedzera, zvinova zvakaoma kuverenga nekuchengetedza. Uku ndiko kuwedzera kwe entropy. Asi kana ukasatanga netsanangudzo, ipapo mutsara wega wega waunonyora uchange uri gadziriso, uye kodhi ichave yakakura uye yakaoma kuverenga kubva pakutanga.

Sezvakataurwa Eisenhower, hapana hondo yakakundwa maererano nehurongwa, uye hapana hondo yakakundwa pasina kuronga. Uye aiziva chimwe chinhu pamusoro pehondo. Pane pfungwa yekuti kunyora zvakatemwa kutambisa nguva. Dzimwe nguva ichi ichokwadi, uye basa racho rakareruka zvekuti hapana chikonzero chekurifunga. Asi iwe unofanirwa kugara uchiyeuka kuti kana uchinge warairwa kuti usanyore zvakatemwa, zvinoreva kuti unorairwa kuti usafunge. Uye iwe unofanirwa kufunga nezvazvo nguva dzese. Kufunga nezvebasa hakuvimbisi kuti hauzokanganisa. Sezvatinoziva, hapana akagadzira mashiripiti wand, uye kuronga ibasa rakaoma. Asi kana ukasafunga nezvebasa racho, unovimbiswa kukanganisa.

Unogona kuverenga zvakawanda nezve TLA+ uye PlusCal pane yakakosha webhusaiti, unogona kuenda ikoko kubva kumba kwangu peji batanidzo. Ndizvo zvangu zvese, ndatenda nekutarisisa kwenyu.

Ndapota yeuka kuti iyi ishanduro. Paunonyora makomendi, yeuka kuti munyori haaverenge. Kana iwe uchida chaizvo kutaura nemunyori, iye achava pamusangano weHydra 2019, iyo ichaitwa muna July 11-12, 2019 muSt. Matikiti anogona kutengwa pane webhusaiti yepamutemo.

Source: www.habr.com

Voeg