Sama sa ilang giingon, kung dili ka maulaw sa imong daan nga code, nan dili ka motubo isip usa ka programmer - ug miuyon ako niini nga opinyon. Nagsugod ako sa pagprograma alang sa kalingawan kapin sa 40 ka tuig ang milabay, ug sa propesyonal nga 30 ka tuig ang milabay, mao nga daghan ako mga sayup. daghan kaayo. Isip propesor sa computer science, gitudloan nako ang akong mga estudyante sa pagkat-on gikan sa mga sayopβsa ila, sa akoa, ug sa uban. Nagtuo ko nga panahon na nga maghisgot sa akong mga sayop aron dili mawala ang akong pagkamakasaranganon. Nanghinaut ko nga kini mapuslanon sa usa ka tawo.
Ikatulong dapit - Microsoft C compiler
Nagtuo ang akong magtutudlo sa eskuylahan nga si Romeo ug Juliet dili maisip nga usa ka trahedya tungod kay ang mga karakter walay trahedya nga pagkasad-an - sila nagbinuotan lamang, sama sa mga tin-edyer. Wala ako makauyon kaniya kaniadto, apan karon nakita nako ang usa ka lugas sa rationality sa iyang opinyon, labi na sa koneksyon sa programming.
Sa dihang nahuman nako ang akong sophomore nga tuig sa MIT, bata pa ko ug walay kasinatian, sa kinabuhi ug sa programming. Sa ting-init, nag-intern ako sa Microsoft, sa C compiler team. Sa sinugdan gibuhat nako ang naandan nga mga butang sama sa pagsuporta sa profiling, ug dayon gisaligan ako sa pagtrabaho sa labing makalingaw nga bahin sa compiler (sama sa akong gihunahuna) - backend optimization. Sa partikular, kinahanglan nakong pauswagon ang x86 code alang sa mga pahayag sa sanga.
Determinado nga isulat ang labing kamalaumon nga code sa makina alang sa matag posible nga kaso, gihulog nako ang akong kaugalingon sa pool headlong. Kung ang densidad sa pag-apod-apod sa mga kantidad taas, gisulod ko kini
Usa kadto ka damgo. Daghang tuig ang milabay gisultihan ako nga ang programmer nga nakapanunod sa akong code nagdumot kanako.
Nakat-onan ang leksyon
Sama sa gisulat ni David Patterson ug John Hennessy sa Computer Architecture ug Computer Systems Design, usa sa mga nag-unang prinsipyo sa arkitektura ug disenyo mao ang paghimo sa mga butang sa labing madali nga panahon.
Ang pagpadali sa kasagarang mga kaso makapauswag sa performance nga mas epektibo kay sa pag-optimize sa talagsaong mga kaso. Katingad-an, ang kasagaran nga mga kaso kasagaran mas simple kaysa sa mga talagsaon. Kini nga lohikal nga tambag nagtuo nga nahibal-an nimo kung unsang kaso ang giisip nga komon - ug kini posible lamang pinaagi sa proseso sa mabinantayon nga pagsulay ug pagsukod.
Sa akong depensa, gisulayan nako nga mahibal-an kung unsa ang hitsura sa mga pahayag sa sanga sa praktis (sama sa kung pila ang mga sanga ug kung giunsa ang pag-apod-apod sa mga makanunayon), apan kaniadtong 1988 kini nga kasayuran wala magamit. Bisan pa, dili ako kinahanglan nga magdugang mga espesyal nga kaso kung ang karon nga compiler dili makahimo og labing maayo nga code alang sa artipisyal nga pananglitan nga akong nahimo.
Kinahanglan kong tawagan ang usa ka eksperyensiyado nga developer ug, kauban niya, hunahunaa kung unsa ang kasagaran nga mga kaso ug atubangon kini nga piho. Mosulat ako og gamay nga code, apan kana usa ka maayong butang. Sama sa gisulat sa magtutukod sa Stack Overflow nga si Jeff Atwood, ang labing daotan nga kaaway sa usa ka programmer mao ang programmer mismo:
Nahibal-an ko nga ikaw adunay labing kaayo nga katuyoan, ingon usab kami tanan. Naghimo kami og mga programa ug ganahan nga magsulat og code. Ingon niana ang paghimo kanamo. Nagtuo kami nga ang bisan unsang problema masulbad gamit ang duct tape, usa ka homemade crutch ug usa ka pinch of code. Sama sa kasakit sa mga coder sa pag-angkon niini, ang pinakamaayo nga code mao ang code nga wala maglungtad. Ang matag bag-ong linya nanginahanglan pag-debug ug suporta, kinahanglan kini sabton. Kung magdugang ka bag-ong code, kinahanglan nimo nga buhaton kini nga adunay pagduha-duha ug pagkasuko tungod kay ang tanan nga uban nga mga kapilian nahurot na. Daghang mga programmer ang nagsulat og daghan kaayo nga code, nga naghimo niini nga atong kaaway.
Kung nagsulat ako og mas simple nga code nga naglangkob sa komon nga mga kaso, mas sayon ββββang pag-update kung gikinahanglan. Nagbilin ko ug kagubot nga walay gustong atubangon.
Ikaduhang dapit: advertising sa mga social network
Sa dihang nagtrabaho ko sa Google sa social media advertising (hinumdomi ang Myspace?), Nagsulat ko og sama niini sa C++:
for (int i = 0; i < user->interests->length(); i++) {
for (int j = 0; j < user->interests(i)->keywords.length(); j++) {
keywords->add(user->interests(i)->keywords(i)) {
}
}
Mahimong makita dayon sa mga programmer ang sayup: ang katapusan nga argumento kinahanglan nga j, dili i. Ang pagsulay sa yunit wala magpadayag sa sayup, ug ni ang akong tigrepaso. Ang paglansad gihimo, ug usa ka gabii ang akong code miadto sa server ug na-crash ang tanan nga mga kompyuter sa data center.
Walay daotang nahitabo. Walaβy nabuak alang sa bisan kinsa, tungod kay sa wala pa ang global nga paglansad ang code gisulayan sa sulod sa usa ka sentro sa datos. Gawas lang kon ang mga inhenyero sa SRE mihunong sa pagdula og billiard sa makadiyot ug nihimo og gamay nga rollback. Pagkasunod buntag nakadawat ko og email nga adunay crash dump, gitul-id ang code ug gidugang ang mga unit test nga makadakop sa sayop. Tungod kay gisunod nako ang protocol - kung dili ang akong code mapakyas sa pagdagan - walaβy ubang mga problema.
Nakat-onan ang leksyon
Daghan ang nakasiguro nga ang ingon nga usa ka dako nga kasaypanan siguradong gasto ang hinungdan sa pagpalagpot, apan kini dili mao: una, ang tanan nga mga programmer masayop, ug ikaduha, sila panagsa ra makahimo sa sama nga sayop sa makaduha.
Sa tinuud, naa koy higala nga programmer nga usa ka maayo nga inhenyero ug gipalagpot tungod sa usa ka sayup. Pagkahuman niana, gisuholan siya sa Google (ug sa wala madugay gi-promote) - matinud-anon niyang gisulti ang sayup nga iyang nahimo sa usa ka interbyu, ug wala kini giisip nga makamatay.
Mao na
Usa ka mando sa gobyerno nga nagkantidad ug mga usa ka milyon nga dolyar ang gipahibalo. IBM Corporation - o hinoon, personal nga si Thomas Watson Sr. - gusto gyud nga makuha kini. Ikasubo, ang sales representative wala makahimo niini ug ang IBM nawala ang bid. Pagkasunod adlaw, kini nga empleyado misulod sa opisina ni Mr. Watson ug nagbutang ug sobre sa iyang lamesa. Si Mr. Watson wala gani magtagad sa pagtan-aw niini - naghulat siya sa usa ka empleyado ug nahibal-an nga kini usa ka sulat sa pagluwat.
Gipangutana ni Watson kung unsa ang nahitabo.
Ang sales representative misulti sa detalye mahitungod sa pag-uswag sa tender. Iyang gihinganlan ang mga sayop nga nahimo nga unta malikayan. Sa katapusan, siya miingon, βMr. Watson, salamat sa pagtugot kanako sa pagpasabut. Nahibal-an ko kung unsa ka dako ang among gikinahanglan niini nga order. Nahibal-an ko kung unsa siya ka hinungdanon," ug nangandam sa pagbiya.
Giduol siya ni Watson sa pultahan, gitan-aw siya sa mga mata ug gibalik ang sobre uban ang mga pulong: βUnsaon ko nimo buhian? Namuhunan lang ko og usa ka milyon nga dolyar sa imong edukasyon.
Duna koy T-shirt nga nag-ingon: "Kung nakakat-on ka gikan sa mga sayup, nan master na ako." Sa pagkatinuod, kon bahin sa mga sayop, ako usa ka doktor sa siyensiya.
Unang dapit: App Inventor API
Ang tinuod nga makalilisang nga mga kasaypanan makaapekto sa daghang mga tiggamit, mahimong kahibalo sa publiko, dugay nga matul-id, ug gihimo sa mga dili makahimo niini. Ang akong pinakadako nga sayop mohaum sa tanan niini nga mga criteria.
Ang mas grabe mas maayo
nagbasa ko
Unsa man kini: ang disenyo kinahanglan nga yano sa pagpatuman ug interface. Ang kayano sa interface mas importante kay sa kayano sa pagpatuman.
Ang mas grabe, mas maayo: ang disenyo kinahanglan nga yano sa pagpatuman ug interface. Ang kayano sa pagpatuman mas importante kay sa kayano sa interface.
Kalimtan nato kana sa makadiyot. Ikasubo, nakalimtan nako kini sa daghang mga tuig.
App Imbentor
Samtang nagtrabaho sa Google, kabahin ko sa team
Among gipatuman ang object-oriented nga App Inventor sa Java, mao nga adunay usa ka hugpong sa mga butang didto. Tungod kay ang mga bola ug mga sprite parehas kaayo ang paggawi, naghimo ako usa ka abstract sprite nga klase nga adunay mga kabtangan (mga field) X, Y, Speed ββββ(speed) ug Heading (direksyon). Sila adunay parehas nga mga pamaagi sa pag-ila sa mga pagbangga, pag-bounce sa ngilit sa screen, ug uban pa.
Ang nag-unang kalainan tali sa usa ka bola ug usa ka sprite mao ang eksakto nga gilaraw - usa ka puno nga lingin o usa ka raster. Tungod kay una nakong gipatuman ang mga sprite, makatarunganon nga ipiho ang x- ug y-coordinate sa ibabaw nga wala nga suok diin nahimutang ang imahe.
Sa dihang nagtrabaho na ang mga sprite, nakahukom ko nga mahimo nakong ipatuman ang mga butang sa bola nga gamay ra ang code. Ang bugtong problema mao nga akong gikuha ang pinakasimple nga ruta (gikan sa punto sa panglantaw sa implementer), nga nagpakita sa x- ug y-coordinate sa ibabaw nga wala nga suok sa contour framing sa bola.
Sa pagkatinuod, gikinahanglan nga ipakita ang x- ug y-coordinate sa sentro sa lingin, ingon sa gitudlo sa bisan unsang libro sa matematika ug bisan unsang tinubdan nga naghisgot sa mga lingin.
Dili sama sa akong nangaging mga kasaypanan, kini nga usa nakaapekto dili lamang sa akong mga kauban, apan usab milyon-milyon nga mga tiggamit sa App Inventor. Daghan kanila mga bata o bag-o pa sa programming. Kinahanglan nila nga buhaton ang daghang dili kinahanglan nga mga lakang kung nagtrabaho sa matag aplikasyon diin ang bola naa. Kung mahinumdoman nako ang uban nakong mga sayop uban sa pagkatawa, nan kini makapasingot kanako bisan karon.
Sa katapusan akong gi-patch kini nga bug bag-o lang, napulo ka tuig ang milabay. "Gipatch", dili "giayo", tungod kay sama sa giingon ni Joshua Bloch, ang mga API walay katapusan. Dili makahimo og mga kausaban nga makaapektar sa kasamtangan nga mga programa, among gidugang ang OriginAtCenter nga propyedad nga adunay bili nga bakak sa daan nga mga programa ug tinuod sa tanang umaabot nga mga programa. Ang mga tiggamit mahimoβg mangutana usa ka lohikal nga pangutana: kinsa nakahunahuna nga ibutang ang pagsugod sa usa ka lugar gawas sa sentro. Para kang kinsa? Sa usa ka programmer nga tapolan kaayo sa paghimo ug normal nga API napulo ka tuig na ang milabay.
Mga Leksyon nga Nakat-onan
Kung nagtrabaho sa mga API (nga kinahanglan buhaton usahay sa matag programmer), kinahanglan nimong sundon ang labing kaayo nga tambag nga gilatid sa video ni Joshua Bloch "
- Ang usa ka API makahatag kanimo og dakong kaayohan ug dakong kadaot.. Ang usa ka maayo nga API nagmugna og balik nga mga kustomer. Ang daotan mahimong imong mahangturong damgo.
- Ang mga publikong API, sama sa mga diamante, molungtad hangtod sa hangtod. Ihatag ang tanan: wala nay laing higayon nga buhaton ang tanan nga husto.
- Ang mga outline sa API kinahanglan nga mubo β usa ka panid nga adunay mga pirma ug mga deskripsyon sa klase ug pamaagi, nga dili molapas sa usa ka linya. Makatugot kini kanimo nga dali nga ma-restructure ang API kung dili kini perpekto sa unang higayon.
- Ihulagway ang mga kaso sa paggamitsa wala pa ipatuman ang API o bisan ang pagtrabaho sa espesipikasyon niini. Niining paagiha malikayan nimo ang pagpatuman ug pagpiho sa usa ka hingpit nga dili magamit nga API.
Kung nagsulat ako bisan usa ka mubo nga synopsis nga adunay artipisyal nga script, lagmit nahibal-an nako ang sayup ug gitul-id kini. Kung dili, usa sa akong mga kauban sigurado nga mobuhat niini. Ang bisan unsang desisyon nga adunay daghang mga sangputanan kinahanglan nga hunahunaon sa labing menos usa ka adlaw (kini magamit dili lamang sa pagprograma).
Ang titulo sa sanaysay ni Richard Gabriel, "Mas Mas Maayo," nagtumong sa bentaha nga mahimong una sa merkado-bisan sa usa ka dili perpekto nga produkto-samtang ang usa ka tawo naggugol sa usa ka kahangturan sa paggukod sa usa nga perpekto. Sa pagpamalandong sa code sa sprite, akong naamgohan nga dili na kinahanglan nga magsulat pa ako og dugang nga code aron kini husto. Bisag unsa pay isulti sa usa, nasayop gyud ko.
konklusyon
Ang mga programmer masayop kada adlaw, nagsulat man kini og buggy code o dili gusto nga sulayan ang usa ka butang nga makapauswag sa ilang kahanas ug produktibidad. Siyempre, mahimo ka nga usa ka programmer nga walaβy nahimo nga grabe nga mga sayup sama sa akong gibuhat. Apan imposible nga mahimong usa ka maayong programmer nga wala makaila sa imong mga sayup ug nakakat-on gikan niini.
Kanunay kong makasugat og mga estudyante nga mibati nga sila nakahimo og daghan kaayong mga sayop ug busa dili giputol alang sa programming. Nahibal-an ko kung unsa ka sagad ang impostor syndrome sa IT. Nanghinaut ko nga makakat-on ka sa mga leksyon nga akong gilista - apan hinumdomi ang panguna: matag usa kanato masayop - makauulaw, kataw-anan, makalilisang. Matingala ako ug maguol kung sa umaabot wala akoy igong materyal aron mapadayon ang artikulo.
Source: www.habr.com