Ny fandaharana dia mihoatra noho ny coding

Ny fandaharana dia mihoatra noho ny coding

Dikanteny ity lahatsoratra ity Seminera Stanford. Fa alohan'ny fampidirana kely azy. Ahoana no fiforonan'ny zombies? Ny olon-drehetra dia niditra tao amin'ny toe-javatra iray izay te-hisintona namana na mpiara-miasa ho amin'ny haavony, saingy tsy mandeha izany. Ary tsy dia be loatra aminao toy ny miaraka aminy fa "tsy mandeha": amin'ny lafiny iray amin'ny ambaratonga dia karama mahazatra, asa, sy ny sisa, ary amin'ny lafiny iray, mila mieritreritra. Ny fisainana dia tsy mahafinaritra sy maharary. Vetivety izy dia nilavo lefona ary nanohy nanoratra kaody nefa tsy nampitodika ny atidohany mihitsy. Alao sary an-tsaina hoe manao ahoana ny ezaka ilaina mba handresena ny sakana amin'ny tsy fahampian'ny fianarana, ary tsy manao izany ianao. Toy izany no niforonan'ny zombies, izay toa azo sitranina, saingy toa tsy misy olona hanao izany.

Rehefa hitako izany Leslie Lamport (eny, ilay namana avy amin'ny boky fianarana) tonga any Rosia ary tsy manao tatitra, fa fanontaniana sy valiny, dia nitandrina kely aho. Raha sanatria, i Leslie dia mpahay siansa malaza eran-tany, mpanoratra ny asa fototra amin'ny informatika mizara, ary azonao atao koa ny mahafantatra azy amin'ny litera La amin'ny teny LaTeX - "Lamport TeX". Ny lafin-javatra faharoa manaitra dia ny fitakiana azy: izay rehetra tonga dia tsy maintsy (maimaim-poana tanteraka) mihaino ny tatiny roa mialoha, mametraka fanontaniana iray farafahakeliny momba azy ireo, ary avy eo vao tonga. Nanapa-kevitra ny hijery izay nalefan'i Lamport tany aho - ary mahafinaritra izany! Izany indrindra no izy, ilay pilina majika hanasitranana zombies. Mampitandrina anao aho: avy amin'ny lahatsoratra, ireo tia ny metodolojia super-flexible sy ireo izay tsy tia manandrana izay voasoratra dia mety ho may.

Aorian'ny habrokat, raha ny marina, dia manomboka ny fandikana ny seminera. Ankafizo ny mamaky!

Na inona na inona asa ataonao dia mila mandalo dingana telo foana ianao:

  • manapaha hevitra izay tanjona tianao hotratrarina;
  • manapaha hevitra hoe ahoana no hanatratraranao ny tanjonao;
  • tongava amin'ny tanjonao.

Izany koa dia mihatra amin'ny fandaharana. Rehefa manoratra code isika dia mila:

  • manapa-kevitra izay tokony hataon'ny programa;
  • mamaritra ny fomba tokony hanatanterahany ny asany;
  • soraty ny code mifanaraka aminy.

Ny dingana farany, mazava ho azy, dia tena zava-dehibe, fa tsy hiresaka momba izany aho anio. Ny roa voalohany kosa no hodinihintsika. Ny programmer tsirairay dia manao azy ireo alohan'ny hanombohan'ny asa. Tsy mipetraka hanoratra ianao raha tsy efa nanapa-kevitra ianao na manoratra navigateur na database. Tsy maintsy misy hevitra iray momba ny tanjona. Ary tena mieritreritra ianao hoe inona marina no hataon'ny programa, ary aza manoratra amin'ny fomba iray amin'ny fanantenana fa hivadika ho navigateur ny code.

Ahoana marina no nitrangan'io eritreritra mialoha io? Ohatrinona ny ezaka tokony hataontsika amin'izany? Izany rehetra izany dia miankina amin'ny fahasarotan'ny olana atrehintsika. Eritrereto hoe te hanoratra rafitra zaraina mahazaka fahadisoana isika. Amin'ity tranga ity, tokony hieritreritra tsara isika alohan'ny hipetrahana amin'ny code. Ahoana raha mila mampitombo ny fari-piadidiana integer amin'ny 1 isika? Raha vao jerena dia tsinontsinona ny zava-drehetra eto, ary tsy ilaina ny mieritreritra, fa avy eo dia tsaroantsika fa mety hitranga ny fihoaram-pefy. Noho izany, na dia mba hahatakatra na tsotra na sarotra ny olana, dia mila mieritreritra aloha.

Raha mieritreritra mialoha ny vahaolana mety ho an'ny olana ianao, dia azonao atao ny misoroka ny fahadisoana. Mitaky ny hazavainao anefa izany. Mba hahatratrarana izany dia mila manoratra ny eritreritrao ianao. Tena tiako ilay tenin'i Dick Guindon hoe: "Rehefa manoratra ianao, dia asehon'ny natiora anao ny fihevitry ny fisainanao." Raha tsy manoratra ianao dia mieritreritra fotsiny fa mieritreritra. Ary mila manoratra ny eritreritrao amin'ny endrika famaritana ianao.

Ny famaritana dia manao asa maro, indrindra amin'ny tetikasa lehibe. Saingy ny iray amin'izy ireo ihany no horesahiko: manampy antsika hieritreritra tsara izy ireo. Tena zava-dehibe sy sarotra ny mieritreritra mazava tsara, ka mila fanampiana isika eto. Amin'ny fiteny inona no tokony hanoratana famaritana? Amin'ny ankapobeny, io foana no fanontaniana voalohany ho an'ny mpandrindra: fiteny inona no hosoratantsika. Tsy misy valiny marim-pototra amin'izany: samihafa loatra ny olana vahantsika. Ho an'ny sasany, ny TLA+ dia fiteny manokana novolavolaiko. Ho an'ny hafa dia mety kokoa ny mampiasa sinoa. Ny zava-drehetra dia miankina amin'ny toe-javatra.

Ny zava-dehibe kokoa dia fanontaniana iray hafa: ahoana no hahazoana fisainana mazava kokoa? Valiny: Tsy maintsy mieritreritra toy ny mpahay siansa isika. Fomba fisainana efa nanaporofo ny tenany nandritra ny 500 taona lasa izany. Ao amin'ny siansa dia manangana modely matematika momba ny zava-misy isika. Ny astronomia angamba no siansa voalohany amin'ny dikan'ny teny henjana. Ao amin'ny maodely matematika ampiasaina amin'ny astronomia, ny vatana selestialy dia miseho ho teboka misy faobe, toerana ary haingo, na dia zavatra tena sarotra aza izy ireo miaraka amin'ny tendrombohitra sy ranomasimbe, onja ary onja. Ity modely ity, toy ny hafa rehetra, dia noforonina mba hamahana olana sasany. Tena tsara amin'ny famaritana ny toerana hanondroana ny teleskaopy raha mila mahita planeta ianao. Fa raha te haminavina ny toetr'andro eto amin'ity planeta ity ianao, dia tsy mandeha io modely io.

Ny matematika dia mamela antsika hamantatra ny toetran'ny modely. Ary ny siansa dia mampiseho ny fifandraisan'ireo fananana ireo amin'ny zava-misy. Andeha isika hiresaka momba ny siansa, informatika. Ny zava-misy iarahantsika dia rafitra informatika isan-karazany: processeurs, consoles lalao, ordinateur, executing programs, sns. Hiresaka momba ny fampandehanana programa amin'ny ordinatera aho, fa amin'ny ankapobeny, ireo fehin-kevitra rehetra ireo dia mihatra amin'ny rafitra informatika rehetra. Amin'ny siansa dia mampiasa modely maro samihafa izahay: ny milina Turing, andian-dahatsary voafaritry ny ampahany, sy ny maro hafa.

Inona no atao hoe programa? Ity dia fehezan-dalàna rehetra azo heverina ho mahaleo tena. Eritrereto hoe mila manoratra navigateur isika. Manao asa telo izahay: mamolavola ny fomba fijerin'ny mpampiasa ny programa izahay, avy eo manoratra ny kisary avo lenta amin'ny programa, ary farany manoratra ny code. Rehefa manoratra ny kaody isika dia mahatsapa fa mila manoratra mpamoaka lahatsoratra. Eto indray dia mila mamaha olana telo isika: mamaritra hoe inona no lahatsoratra haverin'ity fitaovana ity; mifidiana algorithm ho an'ny fandrafetana; manoratra kaody. Ity asa ity dia manana ny safidiny manokana: asio tsipika mahitsy amin'ny teny. Mamaha ity subtask ity amin'ny dingana telo ihany koa izahay - araka ny hitanao dia miverimberina amin'ny ambaratonga maro izy ireo.

Andeha hodinihintsika amin'ny antsipiriany ny dingana voalohany: inona no olana voavaha ny programa. Eto isika dia matetika manao modely ny programa ho toy ny asa izay maka ny fampidirana sasany ary mamokatra vokatra sasany. Amin'ny matematika, ny asa iray dia matetika no lazaina ho andiana tsiroaroa. Ohatra, ny squaring function ho an'ny isa voajanahary dia faritana ho ny set {<0,0>, <1,1>, <2,4>, <3,9>, …}. Ny sehatry ny asa toy izany dia ny fitambaran'ny singa voalohany amin'ny mpivady tsirairay, izany hoe ny isa voajanahary. Mba hamaritana ny asa iray, dia mila mamaritra ny sehatra sy ny formula.

Fa ny asa amin'ny matematika dia tsy mitovy amin'ny asa amin'ny fiteny fandaharana. Mora kokoa ny matematika. Koa satria tsy manam-potoana hanaovana ohatra sarotra aho dia andeha hojerentsika tsotra iray: fiasa ao amin'ny C na fomba static ao Java izay mamerina ny fisaratsarahana mahazatra indrindra amin'ny isa roa. Ao amin'ny famaritana ity fomba ity, dia hanoratra: kajy GCD(M,N) ho an'ny hevitra M и Nizay GCD(M,N) - asa iray izay ny sehatra dia ny fitambaran'ny isa tsiroaroa, ary ny sanda miverina dia ny isa lehibe indrindra azo zaraina amin'ny M и N. Ahoana no ifandraisan'io modely io amin'ny zava-misy? Ny modely dia miasa amin'ny integers, raha ao amin'ny C na Java isika dia manana 32-bit int. Ity modely ity dia ahafahantsika manapa-kevitra raha marina ny algorithm GCD, fa tsy misoroka ny hadisoana tafahoatra. Mitaky modely sarotra kokoa izany, izay tsy misy fotoana.

Andeha isika hiresaka momba ny fetran'ny asa ho modely. Ny programa sasany (toy ny rafitra miasa) dia tsy mamerina sanda iray ho an'ny tohan-kevitra sasany, fa afaka mandeha tsy tapaka. Fanampin'izany, ny fiasa amin'ny maha-modely dia tsy mifanentana tsara amin'ny dingana faharoa: manomana ny fomba hamahana ny olana. Ny karazana haingana sy ny bubble sort dia manao kajy mitovy, saingy algorithm hafa tanteraka izy ireo. Noho izany, mba hamaritana ny fomba hahatratrarana ny tanjon'ny programa dia mampiasa modely hafa aho, andao hiantso azy io ho modely fitondran-tena mahazatra. Ny fandaharana ao aminy dia aseho ho andiana fitondran-tena rehetra azo ekena, ny tsirairay amin'izy ireo dia filaharan'ny fanjakana, ary ny fanjakana dia ny fanendrena ny soatoavina amin'ny variables.

Andeha hojerentsika hoe inona ny dingana faharoa ho an'ny algorithm Euclid. Mila manao kajy isika GCD(M, N). Manomboka isika M Ahoana no xary N Ahoana no y, dia avereno esorina amin'ny lehibe kokoa ny kely kokoa amin'ireo fari-pahalalana ireo mandra-pahatongany ho mitovy. Ohatra, raha M = 12ary N = 18, azontsika atao ny mamaritra ireto fihetsika manaraka ireto:

[x = 12, y = 18] → [x = 12, y = 6] → [x = 6, y = 6]

Ary raha M = 0 и N = 0? Ny zero dia azo zaraina amin'ny isa rehetra, noho izany dia tsy misy mpizara lehibe indrindra amin'ity tranga ity. Amin'ity toe-javatra ity, mila miverina amin'ny dingana voalohany isika ary manontany hoe: tena mila manao kajy ny GCD ho an'ny isa tsy misy tsara ve isika? Raha tsy ilaina izany, dia mila manova ny famaritana fotsiny ianao.

Eto isika dia tokony hanao digression kely momba ny famokarana. Matetika izy io no refesina amin'ny isan'ny andalana kaody voasoratra isan'andro. Saingy mahasoa kokoa ny asanao raha esorinao ny andalana maromaro, satria kely kokoa ny toerana misy ny bibikely. Ary ny fomba tsotra indrindra hanesorana ny kaody dia amin'ny dingana voalohany. Azo atao tanteraka fa tsy ilainao fotsiny ny lakolosy sy sioka rehetra ezahinao hampiharina. Ny fomba haingana indrindra hanatsorana programa iray sy hitsitsiana fotoana dia ny tsy manao zavatra tsy tokony hatao. Ny dingana faharoa dia ny faharoa mety mitsitsy fotoana. Raha mandrefy ny vokatra ianao amin'ny lafin'ny tsipika nosoratana, dia hieritreritra ny fomba hanatanterahana asa iray ianao tsy dia mamokatra, satria afaka mamaha olana mitovy amin'ny code kely kokoa ianao. Tsy afaka manome antontan'isa marina aho eto, satria tsy manana fomba hanisa ny isan'ny andalana tsy nosoratako aho noho ny nandaniako fotoana tamin'ny famaritana, izany hoe tamin'ny dingana voalohany sy faharoa. Ary tsy azo apetraka eto koa ny andrana, satria amin'ny andrana dia tsy manan-jo hamita ny dingana voalohany isika, efa voafaritra mialoha ny asa.

Mora ny manadino ny fahasarotana maro amin'ny famaritana tsy ara-dalàna. Tsy misy sarotra amin'ny fanoratana fepetra hentitra momba ny asa, tsy hiresaka momba izany aho. Ho solon'izay, hiresaka momba ny fanoratana fepetra hentitra ho an'ny fitondrantena mahazatra isika. Misy teoria milaza fa ny fitondran-tena rehetra dia azo faritana amin'ny fampiasana ny fananana fiarovana (fiarovana) ary fananana mahavelona (velona). Ny fiarovana dia midika fa tsy hisy zavatra ratsy hitranga, ny programa dia tsy hanome valiny diso. Ny survivability dia midika fa na ho ela na ho haingana dia hisy zavatra tsara hitranga, izany hoe ny programa dia hanome ny valiny marina na ho ela na ho haingana. Amin'ny maha-fitsipika, ny fiarovana dia famantarana manan-danja kokoa, ny fahadisoana matetika mitranga eto. Noho izany, mba hamonjy fotoana, dia tsy hiresaka momba ny survivability, na dia mazava ho azy fa zava-dehibe ihany koa.

Mahazo fiarovana isika amin'ny alàlan'ny fanoritsoritana, voalohany, ny fitambaran'ny fanjakana voalohany. Ary faharoa, ny fifandraisana amin'ny fanjakana manaraka rehetra ho an'ny fanjakana tsirairay. Andao isika hanao toy ny mpahay siansa ary hamaritra fanjakana amin'ny fomba matematika. Ny fitambaran'ny fanjakana voalohany dia faritana amin'ny alàlan'ny formula, ohatra, amin'ny trangan'ny algorithm Euclid: (x = M) ∧ (y = N). Ho an'ny soatoavina sasany M и N tokana ihany ny fanjakana voalohany. Ny fifandraisana amin'ny fanjakana manaraka dia nofaritana amin'ny alàlan'ny formula iray izay soratana miaraka amin'ny prime ny faribolan'ny fanjakana manaraka, ary ny fari-piadidian'ny fanjakana ankehitriny dia nosoratana tsy misy prime. Amin'ny trangan'ny algorithm an'i Euclid, dia hiresaka momba ny fisarahana ny formulas roa isika, amin'ny iray amin'izy ireo. x no sanda lehibe indrindra, ary amin'ny faharoa - y:

Ny fandaharana dia mihoatra noho ny coding

Amin'ny tranga voalohany, ny sanda vaovao an'ny y dia mitovy amin'ny sanda teo aloha an'ny y, ary mahazo ny sanda vaovaon'ny x isika amin'ny fanesorana ny fari-piainana kely kokoa amin'ny lehibe kokoa. Amin'ny tranga faharoa dia manao ny mifanohitra amin'izany isika.

Andao hiverina amin'ny algorithm an'i Euclid. Andeha hojerentsika indray izany M = 12, N = 18. Izany dia mamaritra fanjakana iray voalohany, (x = 12) ∧ (y = 18). Avy eo dia ampidiro ao amin'ny formula ambony ireo soatoavina ireo ary mahazo:

Ny fandaharana dia mihoatra noho ny coding

Izao ihany no vahaolana azo atao: x' = 18 - 12 ∧ y' = 12ary mahazo ny fitondran-tena isika: [x = 12, y = 18]. Toy izany koa, azontsika atao ny mamaritra ny fanjakana rehetra amin'ny fitondrantenantsika: [x = 12, y = 18] → [x = 12, y = 6] → [x = 6, y = 6].

Amin'ny fanjakana farany [x = 6, y = 6] ho diso ny ampahany roa amin'ilay fitenenana, ka tsy misy fanjakana manaraka azy. Noho izany, manana famaritana feno ny dingana faharoa - araka ny hitanao, dia tena tsotra matematika, toy ny amin'ny injeniera sy ny mpahay siansa, fa tsy hafahafa, toy ny amin'ny informatika.

Ireo raikipohy roa ireo dia azo atambatra ho raikipohy iray amin'ny lojika ara-nofo. Kanto sy mora hazavaina izy, nefa tsy misy fotoana ho azy izao. Mety mila lojika ara-nofo ihany isika ho an'ny fananana mahavelona, ​​tsy ilaina amin'ny fiarovana. Tsy tiako ny lojika ara-nofo toy izany, tsy matematika tsotra izany, fa amin'ny resaka fahavitrihana dia zava-dratsy ilaina.

Ao amin'ny algorithm Euclid, ho an'ny sanda tsirairay x и y manana soatoavina miavaka x' и y', izay mahatonga ny fifandraisana amin'ny fanjakana manaraka ho marina. Amin'ny teny hafa, ny algorithm Euclid dia voafaritra. Mba hamolavola algorithm tsy voafaritra, ny fanjakana ankehitriny dia mila manana fanjakana maro mety ho avy, ary ny sanda miovaova tsy voatanisa tsirairay dia manana soatoavina miovaova primed maro toy ny hoe marina ny fifandraisana amin'ny fanjakana manaraka. Mora ny manao izany, fa tsy hanome ohatra aho izao.

Mba hanaovana fitaovana miasa dia mila matematika ofisialy ianao. Ahoana ny fomba hanaovana ny tolotra ho ofisialy? Mba hanaovana izany dia mila fiteny ofisialy isika, ohatra, TLA+. Ny famaritana ny algorithm Euclid dia ho toy izao amin'ity fiteny ity:

Ny fandaharana dia mihoatra noho ny coding

Ny mari-pamantarana mitovy amin'ny telozoro dia midika fa ny sanda eo ankavian'ny famantarana dia voafaritra ho mitovy amin'ny sanda eo ankavanan'ny famantarana. Amin'ny ankapobeny, ny famaritana dia famaritana, amin'ny tranga misy antsika dia famaritana roa. Ho an'ny famaritana ao amin'ny TLA +, mila manampy fanambarana sy syntax sasany ianao, toy ny amin'ny sary etsy ambony. Ao amin'ny ASCII dia toa izao:

Ny fandaharana dia mihoatra noho ny coding

Araka ny hitanao, tsy misy sarotra. Ny famaritana ny TLA+ dia azo andrana, izany hoe mandingana ny fihetsika rehetra azo atao amin'ny modely kely. Amin'ny tranga misy antsika, ity modely ity dia ho soatoavina sasany M и N. Ity dia fomba fanamarinana tena mahomby sy tsotra izay mandeha ho azy tanteraka. Azo atao koa ny manoratra porofo ara-dalàna momba ny fahamarinana sy manamarina azy ireo amin'ny fomba mekanika, saingy mitaky fotoana be izany, ka saika tsy misy olona manao izany.

Ny fatiantoka lehibe amin'ny TLA+ dia ny matematika, ary matahotra ny matematika ny programmer sy ny mpahay siansa momba ny informatika. Raha vao jerena dia toa vazivazy izany, saingy, indrisy, amin'ny fahamatorana rehetra no tiako holazaina. Ny mpiara-miasa amiko dia nilaza tamiko ny fomba nanandramany nanazava ny TLA + tamin'ny mpamorona maromaro. Raha vao niseho teo amin'ny efijery ireo formulas dia lasa maso fitaratra avy hatrany. Ka raha mampatahotra anao ny TLA+ dia azonao ampiasaina PlusCal, karazana fiteny fandaharana kilalao izy io. Ny fitenenana ao amin'ny PlusCal dia mety ho fanehoana TLA+ rehetra, izany hoe, amin'ny ankapobeny, izay fomba fiteny matematika. Ankoatr'izay, PlusCal dia manana syntax ho an'ny algorithm tsy voafaritra. Satria ny PlusCal dia afaka manoratra teny TLA+ rehetra, ny PlusCal dia maneho hevitra kokoa noho ny fiteny fandaharana tena izy. Manaraka izany, ny PlusCal dia natambatra ho famaritana TLA+ mora vakiana. Mazava ho azy fa tsy midika izany fa ny famaritana PlusCal be pitsiny dia hivadika ho tsotra amin'ny TLA + - ny fifandraisana misy eo amin'izy ireo ihany no miharihary, tsy hisy fahasarotana fanampiny. Farany, ity famaritana ity dia azo hamarinin'ny fitaovana TLA+. Amin'ny ankapobeny, ny PlusCal dia afaka manampy amin'ny fandresena ny phobia matematika ary mora azo na dia ho an'ny programmer sy ny mpahay siansa momba ny informatika aza. Taloha, namoaka algorithm momba izany aho nandritra ny fotoana kelikely (eo amin'ny 10 taona eo ho eo).

Angamba hisy hanohitra fa ny TLA + sy PlusCal dia matematika, ary ny matematika dia tsy miasa afa-tsy amin'ny ohatra noforonina. Amin'ny fampiharana, mila fiteny tena izy ianao miaraka amin'ny karazana, fomba fiasa, zavatra, sns. Diso izany. Izao no nosoratan'i Chris Newcomb, izay niasa tao amin'ny Amazon: "Nampiasa TLA + tamin'ny tetikasa lehibe folo izahay, ary isaky ny tranga tsirairay, ny fampiasana azy io dia nitondra fiovana lehibe teo amin'ny fampandrosoana satria afaka nisambotra bibikely mampidi-doza izahay talohan'ny namelezana ny famokarana, ary satria nanome anay ny fahatakarana sy ny fahatokisan-tena ilainay. manao fanatsarana fampisehoana mahery vaika nefa tsy misy fiantraikany amin'ny fahamarinan'ny programa". Matetika ianao no mandre fa rehefa mampiasa fomba ofisialy isika dia mahazo fehezan-dalàna tsy mahomby - amin'ny fampiharana, ny zavatra rehetra dia mifanohitra tanteraka. Ankoatra izany, misy ny fiheverana fa ny mpitantana dia tsy ho resy lahatra amin'ny filàna fomba ofisialy, na dia resy lahatra amin'ny maha-ilaina azy aza ny mpandrindra. Ary Newcomb nanoratra hoe: "Miezaka mafy hanoratra toromarika ho an'ny TLA + ny mpitantana, ary manokana fotoana hanaovana izany". Ka rehefa hitan'ny mpitantana fa miasa ny TLA+ dia faly izy ireo manaiky izany. Chris Newcomb dia nanoratra izany tokony ho enim-bolana lasa izay (Oktobra 2014), fa ankehitriny, raha ny fahalalako azy, TLA + dia ampiasaina amin'ny tetikasa 14, fa tsy 10. Ohatra iray hafa mifandraika amin'ny famolavolana ny XBox 360. Nisy mpianatra iray tonga tany Charles Thacker ary nanoratra famaritana ho an'ny rafitra fitadidiana. Noho io fanondroana io dia nisy bibikely hita izay mety tsy ho voamarika, ary noho izany dia hianjera ny XBox 360 rehetra aorian'ny fampiasana adiny efatra. Ny injeniera IBM dia nanamafy fa ny fitsapana nataon'izy ireo dia tsy hahita ity bug ity.

Azonao atao ny mamaky bebe kokoa momba ny TLA + amin'ny Internet, fa andao hiresaka momba ny famaritana tsy ara-potoana. Mahalana isika no tsy maintsy manoratra programa izay manao kajy ny fisaratsarahana kely indrindra sy ny toy izany. Matetika izahay no manoratra fandaharana toy ny fitaovana fanontam-pirinty tsara tarehy nosoratako ho an'ny TLA+. Aorian'ny fanodinana tsotra indrindra, ny kaody TLA + dia ho toy izao:

Ny fandaharana dia mihoatra noho ny coding

Saingy amin'ity ohatra etsy ambony ity, ny mpampiasa dia tena tian'ny mpampiasa hampifanitsy ny fampifanarahana sy ny famantarana mitovy. Ka ny fandrafetana marina dia toa izao:

Ny fandaharana dia mihoatra noho ny coding

Diniho ny ohatra iray hafa:

Ny fandaharana dia mihoatra noho ny coding

Eto, ny mifanohitra amin'izany, ny fampifanarahana ny mitovy, fanampiny sy ny fampitomboana famantarana ao amin'ny loharano dia kisendrasendra, noho izany dia ampy ny fanodinana tsotra indrindra. Amin'ny ankapobeny, tsy misy famaritana matematika marina momba ny fandrafetana marina, satria ny "marina" amin'ity tranga ity dia midika hoe "izay tadiavin'ny mpampiasa", ary tsy azo hamaritana ara-matematika izany.

Hoatran'ny hoe raha tsy manana famaritana ny fahamarinana isika dia tsy misy ilàna azy ny famaritana azy. Saingy tsy izany. Raha tsy fantatsika hoe inona no tokony hataon'ny programa iray dia tsy midika akory izany fa tsy mila mieritreritra ny fomba fiasan'izy io isika—mifanohitra amin'izany, mila miezaka bebe kokoa amin'izany isika. Ny famaritana dia manan-danja indrindra eto. Tsy azo atao ny mamaritra ny programa tsara indrindra ho an'ny fanontam-pirinty voarafitra, saingy tsy midika izany fa tsy tokony handray izany mihitsy isika, ary ny fanoratana fehezan-dalàna ho toy ny reniranon'ny fahatsiarovan-tena dia tsy zavatra tsara. Tamin'ny farany dia nanoratra famaritana fitsipika enina misy famaritana aho amin'ny endrika fanehoan-kevitra amin'ny rakitra java. Ity misy ohatra iray amin'ny fitsipika iray: a left-comment token is LeftComment aligned with its covering token. Ity fitsipika ity dia voasoratra amin'ny teny anglisy matematika: LeftComment aligned, left-comment и covering token - teny misy famaritana. Toy izao ny fomba filazan'ny mpanao matematika ny matematika: manoratra famaritana ny teny izy ireo ary, mifototra amin'izany, fitsipika. Ny tombony amin'ny famaritana toy izany dia ny fitsipika enina dia mora azo kokoa sy mora kokoa noho ny andalana code 850. Tsy maintsy milaza aho fa tsy mora ny fanoratana ireo fitsipika ireo, mila fotoana be ny debug azy ireo. Indrindra ho an'ity tanjona ity, dia nanoratra fehezan-dalàna aho izay nitatitra izay fitsipika nampiasaina. Noho ny nanandramako ireo fitsipika enina ireo tamin'ny ohatra maromaro, dia tsy nila nanao debug 850 andalana code aho, ary ny bibikely dia nanjary mora hita. Java dia manana fitaovana lehibe amin'izany. Raha vao nanoratra ny kaody aho dia naharitra ela kokoa, ary ny fandrafetana dia ho ratsy kalitao.

Nahoana no tsy azo ampiasaina ny famaritana ofisialy? Amin'ny lafiny iray, ny famonoana marina dia tsy dia zava-dehibe loatra eto. Ny fanontam-pirinty ara-drafitra dia tsy maintsy tsy hampifaly na iza na iza, noho izany dia tsy voatery nanao izany aho mba hiasa tsara amin'ny toe-javatra hafahafa rehetra. Ny tena zava-dehibe dia ny hoe tsy nanana fitaovana ampy aho. Tsy misy ilàna azy ny mpitsikilo modely TLA + eto, ka tsy maintsy manoratra an-tànana ireo ohatra aho.

Ny famaritana etsy ambony dia manana endri-javatra mahazatra amin'ny fepetra rehetra. Avo kokoa noho ny kaody izany. Azo ampiharina amin'ny fiteny rehetra izany. Ny fitaovana na fomba rehetra dia tsy ilaina amin'ny fanoratana azy. Tsy misy fampianarana fandaharana hanampy anao hanoratra ity famaritana ity. Ary tsy misy fitaovana mety hahatonga an'io famaritana io tsy ilaina, raha tsy hoe, mazava ho azy, manoratra fiteny manokana hanoratana programa fanontana voarafitra ao amin'ny TLA+ ianao. Farany, ity famaritana ity dia tsy milaza na inona na inona momba ny fomba hanoratana ny kaody, fa milaza fotsiny izay ataon'ity code ity. Manoratra ny famaritana izahay mba hanampiana anay hieritreritra ny olana alohan'ny hanombohantsika mieritreritra ny kaody.

Saingy ity fepetra ity dia manana endri-javatra izay mampiavaka azy amin'ny fepetra hafa. 95% amin'ny specs hafa dia fohy kokoa sy tsotra kokoa:

Ny fandaharana dia mihoatra noho ny coding

Fanampin'izany, ity famaritana ity dia andian-dalàna. Amin'ny maha-fitsipika, izany dia famantarana ny mahantra specification. Ny fahatakarana ny vokatry ny andian-dalàna dia tena sarotra, ka izany no antony tsy maintsy nandany fotoana be amin'ny debugging azy ireo. Na izany aza, amin'ity tranga ity dia tsy nahita fomba tsara kokoa aho.

Tsara ny milaza teny vitsivitsy momba ny programa izay mandeha tsy tapaka. Amin'ny maha-fitsipika, miasa amin'ny parallèle, ohatra, ny rafitra miasa na ny rafitra fizarana. Vitsy ny olona afaka mahatakatra azy ireo ara-tsaina na an-taratasy, ary tsy anisan’izy ireo aho, na dia afaka nanao izany aza aho taloha. Noho izany, mila fitaovana hanamarina ny asantsika isika - ohatra, TLA + na PlusCal.

Nahoana no nilaina ny nanoratra famaritana iray raha efa fantatro izay tokony hataon'ny kaody? Raha ny marina dia noheveriko fa fantatro izany. Ankoatr'izay, miaraka amin'ny fepetra manokana, tsy mila miditra ao amin'ny code intsony ny vahiny iray vao mahazo izay tena ataony. Manana fitsipika aho: tsy tokony hisy fitsipika ankapobeny. Misy maningana an'io fitsipika io, mazava ho azy, io no hany fitsipika ankapobeny arahiko: ny famaritana ny zavatra ataon'ny code dia tokony hilaza amin'ny olona ny zavatra rehetra tokony ho fantany rehefa mampiasa ny code.

Inona marina no tokony ho fantatry ny mpandrindra momba ny fisainana? Ho fanombohana, mitovy amin'ny olon-drehetra: raha tsy manoratra ianao dia toa anao ihany no mieritreritra. Ankoatra izany, mila mieritreritra ianao alohan'ny hanaovanao code, izay midika fa mila manoratra alohan'ny code ianao. Ny famaritana dia izay soratanay alohan'ny hanombohantsika coding. Ilaina ny fanondroana ho an'izay kaody azo ampiasaina na ovain'iza na iza. Ary io "olona" io dia mety ho mpanoratra ny code mihitsy iray volana taorian'ny nanoratana azy. Ilaina ny famaritana ho an'ny programa sy rafitra lehibe, ho an'ny kilasy, ho an'ny fomba, ary indraindray aza ho an'ny fizarana sarotra amin'ny fomba tokana. Inona marina no tokony hosoratana momba ny kaody? Mila mamaritra ny ataony ianao, izany hoe inona no mety hahasoa ny olona mampiasa an'io code io. Indraindray dia ilaina ihany koa ny mamaritra ny fomba hanatanterahan'ny fehezan-dalàna ny tanjony. Raha nandalo an'io fomba io isika tamin'ny alàlan'ny algorithm, dia antsoina hoe algorithm izany. Raha zavatra manokana sy vaovao kokoa izany, dia antsoinay hoe famolavolana avo lenta izany. Tsy misy fahasamihafana amin'ny fomba ofisialy eto: samy maodely tsy misy dikany amin'ny programa iray.

Ahoana marina no tokony hanoratanao famaritana fehezan-dalàna? Ny zava-dehibe indrindra: tokony ho iray ambaratonga ambony noho ny fehezan-dalàna. Tokony hilazalaza fanjakana sy fitondran-tena izany. Tokony ho hentitra araka izay ilain’ny asa izany. Raha manoratra toromarika momba ny fomba fampiharana ny asa iray ianao dia azonao atao ny manoratra izany amin'ny pseudocode na amin'ny PlusCal. Mila mianatra manoratra toromarika momba ny fepetra ofisialy ianao. Izany dia hanome anao ny fahaiza-manao ilaina izay hanampy anao amin'ny tsy ara-potoana ihany koa. Ahoana no hianaranao manoratra toromarika ofisialy? Rehefa nianatra fandaharana izahay dia nanoratra programa ary avy eo dia nanao debugging azy ireo. Toy izany koa eto: soraty ny spec, jereo miaraka amin'ny mpanamarina modely, ary amboary ny bibikely. Ny TLA+ dia mety tsy ny fiteny tsara indrindra amin'ny famaritana ara-dalàna, ary ny fiteny hafa dia mety ho tsara kokoa amin'ny filanao manokana. Ny tombony amin'ny TLA + dia ny mampianatra tsara ny fisainana matematika.

Ahoana no mampifandray ny famaritana sy ny code? Miaraka amin'ny fanampian'ny fanehoan-kevitra mampifandray ny foto-kevitra matematika sy ny fampiharana azy. Raha miasa amin'ny grafika ianao, dia eo amin'ny sehatry ny programa dia hanana laharan'ny nodes sy rohin'ny rohy ianao. Noho izany, mila manoratra tsara ny fomba ampiharan'ireo rafitra fandaharana ireo ny grafika.

Marihina fa tsy misy amin'ireo voalaza etsy ambony ireo no mihatra amin'ny tena fizotran'ny fanoratana kaody. Rehefa manoratra ny kaody ianao, izany hoe manao ny dingana fahatelo, mila mieritreritra sy mieritreritra amin'ny alalan'ny programa ihany koa ianao. Raha toa ka sarotra na tsy miharihary ny subtask iray, dia mila manoratra toromarika momba izany ianao. Fa tsy ilay code mihitsy no resahiko eto. Azonao atao ny mampiasa fiteny fandaharana, na fomba fiasa, fa tsy momba azy ireo. Ary koa, tsy misy amin'ireo voalaza etsy ambony ireo manafoana ny filàna fitiliana sy debug code. Na dia nosoratana araka ny tokony ho izy aza ny maodely abstract, dia mety hisy bibikely amin'ny fampiharana azy.

Ny famaritana ny fanoratana dia dingana fanampiny amin'ny fizotran'ny fanodinana. Noho izany, fahadisoana maro no azo tratrarina amin'ny ezaka kely kokoa - fantatsika izany avy amin'ny traikefan'ny programer avy any Amazon. Miaraka amin'ny fepetra manokana, mihamitombo ny kalitaon'ny programa. Koa nahoana àry isika no mandeha tsy misy azy ireny matetika? Satria sarotra ny manoratra. Ary sarotra ny manoratra, satria mila mieritreritra ianao, ary sarotra koa ny mieritreritra. Mora foana ny mody manao izay eritreretinao. Eto ianao dia afaka manao fanoharana amin'ny hazakazaka - arakaraka ny hazakazakao no mihamalemy kokoa. Mila mampiofana ny hozatrao ianao ary mizatra manoratra. Mila fanazaran-tena.

Mety ho diso ny famaritana. Mety nanao fahadisoana tany ho any ianao, na mety niova ny fepetra takiana, na mety mila fanatsarana. Izay kaody ampiasain'ny olona rehetra dia tsy maintsy ovaina, ka na ho ela na ho haingana dia tsy hifanaraka amin'ny programa intsony ny famaritana. Ny tsara indrindra, amin'ity tranga ity, mila manoratra famaritana vaovao ianao ary mamerina manoratra tanteraka ny code. Fantatsika tsara fa tsy misy manao izany. Amin'ny fampiharana, mametaka ny kaody izahay ary mety hanavao ny famaritana. Raha toa ka tsy maintsy hitranga izany na ho ela na ho haingana, nahoana no manoratra manokana? Voalohany, ho an'ilay olona hanova ny kaodinao, ny teny fanampiny rehetra ao amin'ny famaritana dia mendrika ny lanjany amin'ny volamena, ary mety ho anao io olona io. Matetika aho no manevateva ny tenako noho ny tsy fahampian'ny fepetra takiana rehefa manitsy ny code-ko. Ary manoratra famaritana bebe kokoa noho ny code aho. Noho izany, rehefa manitsy ny kaody ianao dia mila havaozina foana ny famaritana. Faharoa, isaky ny fanavaozana dia miharatsy ny kaody, mihasarotra ny mamaky sy mitazona azy. Izany dia fitomboan'ny entropy. Fa raha tsy manomboka amin'ny spec ianao, dia ho fanitsiana ny andalana rehetra soratanao, ary ho sarotra sy sarotra vakiana hatrany am-piandohana ny code.

Araka ny voalaza Eisenhower, tsy nisy ady azo tamin’ny fikasana, ary tsy nisy ady azo raha tsy nisy fikasana. Ary nahafantatra zavatra iray na roa momba ny ady izy. Misy ny fiheverana fa fandaniam-potoana ny fanoratana ny fepetra. Marina izany indraindray, ary tena tsotra ny asa ka tsy misy na inona na inona azo eritreretina. Saingy tokony ho tsaroanao foana fa rehefa tenenina ianao mba tsy hanoratra specifications dia lazaina fa tsy tokony hieritreritra. Ary tokony hieritreritra izany foana ianao. Ny fieritreretana an'ilay asa dia tsy miantoka fa tsy hanao fahadisoana ianao. Araka ny fantatsika, tsy nisy namorona ny majika wand, ary ny fandaharana dia asa sarotra. Fa raha tsy mieritreritra ny olana ianao dia azo antoka fa hanao fahadisoana.

Afaka mamaky bebe kokoa momba ny TLA + sy PlusCal ianao amin'ny tranokala manokana, afaka mandeha any amin'ny pejiko ianao rohy. Izay ihany no ho ahy, misaotra anao amin'ny fiheveranao.

Mariho fa fandikan-teny ity. Rehefa manoratra fanamarihana ianao dia tadidio fa tsy hamaky azy ireo ny mpanoratra. Raha tena te hiresaka amin'ny mpanoratra ianao dia ho any amin'ny fihaonambe Hydra 2019, izay hatao ny 11-12 Jolay 2019 any Saint-Pétersbourg. Azo vidiana ny tapakila ao amin'ny tranokala ofisialy.

Source: www.habr.com

Add a comment