Mabilis na Tugon: Database Debugging at Profiling sa Pagsagip

May -Akda: Roger Morrison
Petsa Ng Paglikha: 22 Setyembre 2021
I -Update Ang Petsa: 1 Hulyo 2024
Anonim
Mabilis na Tugon: Database Debugging at Profiling sa Pagsagip - Teknolohiya
Mabilis na Tugon: Database Debugging at Profiling sa Pagsagip - Teknolohiya

Takeaway: Tinalakay ni Host Eric Kavanagh ang pag-debug ng database at pag-profile kay Dr. Robin Bloor, Dez Blanchfield at IDERAs Bert Scalzo.



Kasalukuyan kang hindi naka-log in. Mangyaring mag-log in o mag-sign up upang makita ang video.

Eric Kavanagh: Okay, mga kababaihan at mga ginoo, ito ay 4:00 Eastern time sa isang Miyerkules, at syempre nangangahulugan iyon.

Robin Bloor: Cant pakinggan mo, Eric.

Eric Kavanagh: Ako ay may mga araw na ang nakakaraan, kaya hindi ka nag-iisa. Ngunit kaya ang paksa ngayon ay talagang kawili-wiling bagay. Ito ang uri ng bagay na nais mong tiyakin na nangyayari sa background sa iyong kumpanya, maliban kung ikaw ay gawin ang taong gumagawa nito, kung saan nais mong tiyakin na ginagawa mo ito nang maayos. Sapagkat pinag-uusapan ang pag-debug. Walang sinuman ang nagnanais ng mga bug, walang sinuman ang nagnanais kapag ang software ay tumigil sa pagtatrabaho - ang mga tao ay nagagalit, ang mga gumagamit ay nagkakaibigan. Ang mga hindi maganda. Kaya, pag-usapan ang tungkol sa "Rapid Response: Database Debugging and Profiling to the Rescue."


Theres isang lugar tungkol sa iyo tunay na, pindutin ako sa, @eric_kavanagh siyempre.

Mainit ang taong ito. At ang pag-debug ay magiging mainit, kahit na ano. Ito ay talagang magiging isa sa mga problemang ito na hindi mawawala, kahit gaano kagaling makuha natin ang mga bagay na ito, palaging magiging mga isyu ang theres, kaya ang susi ay paano ka makakarating sa kung saan maaari mong malutas ang mga isyung iyon nang mabilis? Sa isip, mayroon kang mahusay na mga programmer, mahusay na mga kapaligiran, kung saan hindi masyadong maraming nagkakamali, ngunit habang ang lumang kasabihan ay nangyayari, "Ang mga aksidente ay nangyayari sa pinakamahusay na mga pamilya." At ang parehong ay totoo para sa mga samahan. Kaya, nangyari ang mga bagay na ito, mangyayari, ang tanong ay kung ano ang magiging solusyon mo sa pagharap nito at paglutas ng mga problemang iyon?

Maaring pakinggan mula kay Dr. Robin Bloor, kung gayon ang aming sariling Dez Blanchfield mula sa ilalim, at siyempre, ang aming mabuting kaibigan, si Bert Scalzo, mula sa IDERA. At sa katunayan, ako ay ihahatid ang mga susi kay Robin Bloor, ilayo ito. Ang sahig ay iyo.


Robin Bloor: OK. Ito ay isang kawili-wiling paksa. Naisip ko dahil malamang na magpapatuloy si Dez tungkol sa mga aktwal na pamamaraan at kwento tungkol sa digmaan tungkol sa pag-debug, naisip ko na si Id ay gumawa lamang ng isang talakayan sa background upang makakuha kami ng isang buong bilog na larawan ng kung ano ang nangyayari. Ginawa ko ito ng mahabang panahon, at dati akong naging coder, kaya tulad nito, at halos tinukso ako sa presentasyong ito upang simulan ang pag-usbong ng liriko tungkol sa ideya ng bukas na mapagkukunan ngunit naisip kong iwanan iyon ng ibang tao.

Tumingin sa isang listahan ng mga sikat na bug, at ang karamihan sa mga ito ay pumapasok sa listahan ng kahit sino na kahit sino, talaga, lahat maliban sa huling dalawang gastos ng hindi bababa sa $ 100 milyon. Ang una ay ang Mars Climate Orbiter, nawala sa espasyo at ito ay dahil sa isang problema sa coding, kung saan nalilito ang mga tao na mga yunit ng metric na may (mga tawa) na mga paa at pulgada. Ang Ariane Limang Paglipad 501 ay may isang pagkakamali sa pagitan ng isang makina na inilagay at ang mga computer na dapat na tumatakbo sa rocket nang ilunsad ito. Maramihang mga pagkabigo sa computer, pagsabog ng rocket, balita sa headline. Ang pipeline ng gas ng Sobyet noong 1982, ay sinabi na ang pinakamalaking pagsabog sa kasaysayan ng planeta; Hindi ko sigurado kung ito ay. Nakawin ng mga Ruso ang ilang awtomatikong software na kontrol, at natanto ng CIA na gagawin nila iyon at maglagay ng mga bug dito, at ipinatupad ito ng mga Sobyet nang walang pagsubok. Kaya, pumutok ang isang pipeline, naisip na nakakatawa.

Ang worm ng Morris ay isang eksperimento sa pag-coding, na biglang naging isang malulupit na uod na lumibot sa lahat ng tao - tila nagdulot ito ng $ 100 milyong halaga ng pinsala; iyon ay isang pagtatantya ng kurso. Gumawa ang Intel ng isang sikat na error sa isang matematika ng matematika - isang pagtuturo sa matematika sa Pentium chip noong 1993 - na dapat ay nagkakahalaga ng higit sa $ 100 milyon. Ang programa ng Mga Mapa ng mansanas ay marahil ang pinakamasama at pinaka-nakapipinsalang paglulunsad ng anumang bagay na nagawa ng Apple. Ang mga taong sinubukan ang paggamit nito, ay, ibig sabihin, may isang taong nagmamaneho kasama ang 101, at natuklasan na sinabi ng Apple Map na nasa gitna sila ng San Francisco Bay. Kaya, sinimulan ng mga tao na sumangguni sa Apple Maps app bilang iLost. Ang - ang aming pinakamahabang pagdagit noong 1990 - ang nakakaakit lamang mula sa isang punto ng pagtingin sa gastos ng isang bagay na katulad nito - Ang AT&T ay humigit-kumulang sa halos siyam na oras at nagkakahalaga ng mga $ 60 milyon sa mga pangmatagalang tawag.

At ako ay nasa isang kumpanya ng seguro sa U.K., at ang database, nagpatupad sila ng isang bagong bersyon ng database at nagsimula itong punasan ang data. At naalala ko na napakahusay, dahil tinawag ako pagkatapos na makilahok sa ilang uri ng pagpili ng database dahil doon. At ito ay napaka-kagiliw-giliw na kumuha sila ng isang bagong bersyon ng database, at mayroon silang isang baterya ng mga pagsubok na ginawa nila para sa mga bagong bersyon ng database na pinasa nito ang lahat ng mga pagsubok. Natagpuan nito ang isang tunay na malabo na paraan upang punasan ang data.

Kaya, pa rin, iyon. Akala ko ang pag-uusap ni Id tungkol sa impedance mismatch at inilabas ng SQL. Ang kagiliw-giliw na mga pamanggit na database ay nag-iimbak ng data sa mga talahanayan at ang mga coder ay may posibilidad na manipulahin ang data sa mga istruktura ng object na talagang hindi mapa sa mga talahanayan. At dahil doon, nakakakuha ka ng kung ano ang tinatawag na impedance mismatch, at ang isang tao ay kailangang harapin ito sa ilang paraan o iba pa. Ngunit kung ano ang talagang nangyayari, dahil ang isang modelo, ang modelo ng coders at database ng isa pang modelo, ay hindi partikular na nakahanay. Makakakuha ka ng mga bug na hindi mangyayari kung ang industriya ay nagtayo ng mga bagay na nagtutulungan, na sa palagay ko ay masayang-maingay. Kaya, talaga, sa gilid ng coders, kapag nakakakuha ka ng hierarchies maaari itong maging mga uri, maaari itong magresulta ng mga set, maaari itong maging mahihirap na kakayahan sa API, maaari itong maging maraming mga bagay na itatapon lamang ang mga bagay sa pakikipag-ugnay sa database. Ngunit ang bagay na higit sa lahat para sa akin, talagang kawili-wili; palaging namangha ako na mayroon kang hadlang na SQL na ito ay isang uri din ng impedance sa isang paraan na ang mga coder at database ay nagtatrabaho sa bawat isa. Kaya, ang SQL ay may pagkilala sa data, na kung saan ay maayos at mayroon itong DML para sa piling, proyekto at sumali, na kung saan ay maayos. Maaari kang magtapon ng maraming kakayahan sa mga tuntunin ng pagkuha ng data sa database kasama nito. Ngunit napakakaunting wika ng matematika para sa paggawa ng mga bagay. Ito ay may isang maliit na ito at iyon, at mayroon itong napakaliit na mga bagay na batay sa oras. At dahil doon, ang SQL ay isang hindi sakdal, kung gusto mo, ay nangangahulugan ng pagkuha ng data. Kaya, ang mga database ng guys ay nagtayo ng naka-imbak na mga pamamaraan upang mabuhay sa database at ang dahilan para sa naka-imbak na mga pamamaraan na naninirahan doon ay hindi mo talaga nais na itapon pabalik-balik ang data sa isang programa.

Para sa ilan sa mga pag-andar ay napaka-tiyak na data, kaya't hindi lamang sangguniang ito ay integridad at mga pagtanggal ng cascading at mga bagay na tulad nito, ang database ay nag-aalaga sa lahat ng biglaang pag-andar na naglalagay ng isang pag-andar sa isang database, na sinadya syempre ang pag-andar para sa isang maaaring mahati ang application sa pagitan ng coder at ang database mismo. At iyon ang gumawa ng trabaho sa pagpapatupad ng ilang mga uri ng mga pag-andar na talagang mahirap at samakatuwid ay mas madaling kapitan ng pagkakamali. Kaya, iyon sa isang bahagi ng laro ng database, dahil nangangahulugan ito na nakuha mo ang maraming pagpapatupad halimbawa, na si Ive ay kasangkot sa mga nakabatay na mga database ng mga tunay na isang kakila-kilabot na maraming code na nakaupo sa naka-imbak na mga pamamaraan na hawakan nang hiwalay mula sa code na nakaupo sa mga aplikasyon. At parang isang kakaibang bagay na dapat gawin, ang dapat na maging matalino sa paggawa ng iba't ibang mga bagay.

Akala ko din na pinag-uusapan din ni Id ang tungkol sa pagganap ng database dahil ang mga error sa pagganap ay madalas na itinuturing na mga bug, ngunit karaniwang maaari kang magkaroon ng isang bottleneck sa CPU, sa memorya, sa disk, sa network at maaari kang magkaroon ng mga isyu sa pagganap dahil sa pag-lock. Ang ideya ay na ang coder ay hindi kailangang mag-alala tungkol sa pagganap at ang database ay talagang aktwal na gumanap nang maayos. Ito ay dapat na dinisenyo upang ang coder ay hindi kailangang malaman. Gayunpaman, nakakakuha ka ng masamang disenyo ng database, nakakakuha ka ng masamang disenyo ng programa, nakakakuha ka ng pagkakatugma sa paghahalo ng workload, na maaari ring humantong sa mga isyu sa pagganap. Nakakakuha ka ng pagbabalanse ng pagkarga, nakakakuha ka ng pagpaplano ng kapasidad, paglaki ng data - na maaaring maging sanhi ng paghinto lamang ng isang database, o pabagalin. Ito ay isang kagiliw-giliw na bagay, kapag ang mga database ay nakakakuha ng halos puno, bumagal sila. At maaari kang magkaroon ng isyu sa mga layer ng data sa mga tuntunin ng pagtitiklop at ang pangangailangan upang magtiklop at ang kailangang gawin backup at pagbawi. Pa rin, iyon ay isang pangkalahatang pangkalahatang-ideya.

Ang tanging bagay na nais kong sabihin ay ang pag-debug ng database ay maaaring maging tulad lamang sa mabigat at di-walang halaga - at sinasabi ko na dahil nagawa ko si Ive - at madalas mong matutuklasan ang tulad nito sa lahat ng mga sitwasyon sa pag-debug na naranasan ko ay, ang unang bagay na nakikita mo ay isang gulo. At kailangan mong subukan at pumunta mula sa gulo upang gumana kung paano naganap ang gulo. At madalas kapag nakikita mo ang isang isyu sa database ng lahat ng nakikita mo ay sira ang data at nag-iisip ka, "Paano nangyari ang impiyerno?"

Pa rin, ipapasa ko kay Dez, na marahil ay magsasabi ng mas maraming mga salita ng karunungan kaysa sa lumabas ako. Hindi ko alam kung paano ipasa sa iyo ang bola, Dez.

Eric Kavanagh: Sakit ito, tumayo, hawakan.

Awtomatikong tinig: Ang mga linya ng kalahok ay naka-mute.

Eric Kavanagh: Sige, mag-hang sa isang segundo, hayaan kong bigyan si Dez ng bola.

Dez Blanchfield: Salamat, Eric. Oo, Dr Robin Bloor, talagang totoo ka: ito ay isang paksa, isang habang buhay na bugbear kung mapatawad mo ang pun, sorry hindi ko maiwasang tulungan ang aking sarili sa isang iyon. Sana makita mo ang aking unang screen doon, ang aking paghingi ng tawad para sa problema sa laki ng font sa tuktok. Ang paksa ng mga bug ay isang daylong lecture, sa maraming kaso sa aking karanasan. Ito ay tulad ng isang malawak at malawak na paksa, kaya ako pagpunta sa ilagay ang pokus sa dalawang pangunahing mga lugar, partikular ang konsepto ng kung ano ang itinuturing namin na isang bug, ngunit isang isyu sa programming. Sa palagay ko ang mga araw na ito ay nagpapakilala ng isang bug per se sa pangkalahatan ay makakakuha ng mga pinagsama-samang kapaligiran sa pag-unlad, bagaman maaaring sila ay mga pangmatagalang bug. Ngunit madalas na ito ay isang kaso ng isang profiling code at posible na magsulat ng code na gumana, dapat itong maging isang bug. Kaya, ang aking pamagat slide dito, ako ay talagang nagkaroon ng isang kopya nito sa napakataas na resolusyon A3, ngunit sa kasamaang palad nasira ito sa isang paglipat ng bahay. Ngunit ito ay isang sulat-kamay na tala sa isang programming sheet mula circa 1945, kung saan ang ilang mga tao sa Harvard University sa USA, ang kanilang pangalawang pagtatayo ng isang makina na tinatawag na Mark II. Ipinagpaubaya nila ang ilang isyu, sa karaniwang wika, ngunit sinusubukan nilang makahanap ng isang pagkakamali, at lumiliko na ang isang bagay na bahagyang naiiba sa kung ano ang isang hardware at isang parang software na isyu ay sumama.

Kaya, ang alamat ng lunsod ay tungkol sa ika-9 ng Setyembreika, Noong 1945, isang koponan sa Harvard University ang naghihiwalay sa isang makina, natagpuan nila ang isang bagay na tinawag nilang "relay pitumpu" - sa mga araw na iyon ay naganap ang pagprograma sa isang pisikal na kahulugan, nasugatan mo ang code sa paligid ng isang board, at iyon ay kung paano mo epektibong na-program machine - at natagpuan nila ang relay number na pitumpu mayroong isang mali sa ito, at lumiliko ang aktwal na salitang "bug" na naganap dahil medyo literal na isang uod - diyan ay mayroong isang tangkay na ipinagkasal sa pagitan ng ilang piraso ng tanso na tanso mula sa isang lugar patungo sa isa pa. At ang kuwento ay napunta sa ang maalamat na Grace Hopper bilang caption na ito, para sa aking pamagat slide, "unang aktwal na kaso ng isang bug na natagpuan" quote unquote.

Ngunit tulad ng pag-highlight ni Robin nang mas maaga sa kanyang unang slide, ang konsepto ng isang bug ay napunta sa malayo hangga't maaari nating isipin ang mga tao na gumagawa ng compute, mga konsepto tulad ng isang patch. Ang salitang "patch" ay nagmula sa isang aktwal na piraso ng tape na na-tap sa isang butas sa isang suntok card. Ngunit ang buong punto nito, ay ang salitang "debugging" ay lumabas sa konseptong ito ng paghahanap ng isang bug sa isang pisikal na makina.At mula pa noon, ginamit ng weve ang terminolohiya na iyon sa pagsisikap na harapin ang mga isyu, alinman sa hindi tulad ng mga isyu sa pag-cod sa isang programa na hindi pinagsama-sama, ngunit bilang isang programa na hindi tatakbo nang maayos. At partikular na hindi na-profile ay makahanap lamang ng mga bagay tulad ng mga walang katapusang mga loop na wala kahit saan.

Ngunit mayroon din kaming isang senaryo, at naisip ko na naglagay si Id ng ilang nakakatawang mga slide bago ako makakuha ng mas detalyado. Tumingin sa klasikong cartoon, na tinatawag na XKCD sa web, at ang cartoonist ay may ilang mga nakakatawang pananaw sa mundo. At ito tungkol sa isang bata na tinawag na "Little Bobby Tables" at dapat na pinangalanan ng kanyang mga magulang ang batang batang ito na si Robert); GUSTO NG MAG-AARAL NG MAG-AARAL; - at tinawag, at uri ng "Kumusta, ito ang iyong anak na lalaki na may problema sa computer," at sumagot ang magulang, "Oh mahal, may sinira ba siya?" At sinabi ng guro, "Well, sa isang paraan, "at nagtanong ang guro," Talaga bang pinangalanan mo ang iyong anak na si Robert); MAG-AARAL NG MAG-AARAL NG MAG-AARAL; -? "At sinabi ng magulang," Oh oo, maliit na Bobby Tables na tinawag namin siya. "Pa rin, sasabihin nila ngayon na nawala sila sa mga tala ng mga mag-aaral, inaasahan kong masaya ka. At ang sagot ay, "Well, dapat mong linisin at i-sanitize ang iyong mga input ng database." At ginagamit ko na maraming beses upang pag-usapan ang tungkol sa ilan sa mga problema na mayroon kami sa paghahanap ng mga bagay sa code, na madalas na ang code ay hindi rin tumingin sa data. .

Ang isa pang nakakatawa, hindi ko alam kung ito ay totoo o hindi - Pinaghihinalaan ko ang isang buwaya nito - ngunit muli, nahipo din nito ang aking nakakatawang buto. Isang tao na nagpapalit ng plaka ng lisensya sa harap ng kanilang sasakyan, sa isang katulad na pahayag na nagiging sanhi ng pagbagsak ng mga database ng mga bilis ng camera at iba pa na kumukuha ng mga plaka ng lisensya ng mga kotse. At lagi kong tinutukoy ito na nagdududa ako sa anumang programista na inaasahan ang isang hit at pagpapatakbo ng kanilang code sa pamamagitan ng isang aktwal na sasakyan ng motor, ngunit hindi kailanman maliitin iyon - kapangyarihan ng isang galit na geek.

(Tawa)

Ngunit ito ay humahantong sa akin sa aking pangunahing punto, sa palagay ko, at iyon ay sa sandaling oras, maaari nating i-debug at profile code bilang mga mortal lamang. Ngunit napakalaki ng pananaw na lumipas ang oras na iyon, at anecdotally sa aking karanasan, ang una ko - at thisll edad ako ng kakila-kilabot, sigurado ako; Malugod akong tinatanggap ni Robin you na sundin ang saya sa akin - ngunit ang kasaysayan ay nagmula sa isang background sa edad na 14 na gumala sa dulo ng bayan, at kumatok sa pintuan ng isang data center na tinatawag na "Data Com" sa New Zealand at nagtanong kung Maaari akong kumita ng pera sa bulsa sa paaralan sa pamamagitan ng pagkuha ng huli na bus sa bahay, mga 25 km ng isang commute araw-araw, sa pamamagitan ng paglalagay ng papel sa ers, at mga teyp sa tape drive, at pagiging isang pangkalahatang admin. At kakaiba ang ibinigay nila sa akin ng isang trabaho. Ngunit sa paglipas ng panahon, pinamamahalaang ko ang aking sarili sa staffing at hanapin ang mga programmer at natanto kong mahal ko ang pag-cod at dumaan sa proseso ng pagpapatakbo ng mga script at mga trabaho sa batch, na sa pagtatapos ng araw ay code pa rin. Kailangan mong sumulat ng mga script at mga trabaho sa batch na mukhang mga mini program at pagkatapos ay dumaan sa buong proseso ng pag-upo sa isang 3270 terminal code sa pagsulat sa pamamagitan ng kamay.

Sa katunayan, ang una kong karanasan ay nasa isang teletype terminal, na talagang 132-haligi na pisikal er. Mahalaga, isipin tulad ng isang napaka matandang makinilya na may papel na naka-scroll sa pamamagitan nito, sanhi na wala silang isang tubo ng CRT. At ang pag-debug ng code sa iyon ay isang napaka-walang kabuluhan na isyu, kaya't nais mong isulat ang lahat ng iyong code sa pamamagitan ng kamay, at pagkatapos ay kumilos tulad ng isang typist, na ginagawa ang iyong makakaya na hindi makakuha ng mga pagkakamali upang mapanlinlang, dahil ang labis na pagkabigo na kailangang sabihin ang isang editor ng linya upang pumunta sa isang tiyak na linya at pagkatapos ay ang linya at pagkatapos ay i-type ito muli. Ngunit sa isang beses, iyon ay kung paano namin isinulat ang code at kung paano namin nag-debug, at nakuha namin, napakahusay dito. At sa katunayan, pinilit namin ito na magkaroon ng napakahusay na mga diskarte sa pagprograma, dahil ito ay isang tunay na abala upang ayusin ito. Ngunit ang paglalakbay pagkatapos ay dumaan - at pamilyar sa lahat - ito ay nagmula sa 3270 na karanasan sa terminal sa aking mundo, sa Digital Equipment VT220 kung saan makakakita ka ng mga bagay sa screen, ngunit muli, ginagawa mo rin ang parehong bagay na ginawa mo sa uri ng papel tape ng format na ed lamang sa isang CRT, ngunit mas madali mong tinanggal ang pagtanggal at hindi mo na "tunog ng" dit dit dit "na tunog.

At pagkatapos ay alam mo, ang mga terminal ng Wyse - tulad ng Wyse 150, marahil ang aking paboritong interface sa isang computer kailanman - at pagkatapos ay ang PC at pagkatapos ang Mac, at pagkatapos ng mga araw na ito ang mga modernong GIT at ID na nakabase sa web. At isang hanay ng mga programa sa pamamagitan ng na, programming sa isa at magtipon at PILOT at Logo at Lisp at at Fortran at Pascal at mga wika na maaaring gumawa ng mga tao. Ngunit ito ay mga wika na nagpilit sa iyo na magsulat ng magandang code; hindi nila hinayaan kang lumayo sa masamang kasanayan. C, C ++, Java, Ruby, Python - at lalo nating makuha ang yugto ng programming, nakakakuha kami ng mas maraming script, tulad ng mas malapit kami sa Structured Query Language at mga wika tulad ng PHP na aktwal na ginagamit upang maanyayahan ang SQL. Ang punto ng pagsasabi sa iyo na, nagmula sa aking background, nagturo ako sa sarili sa maraming paraan at yaong nakatulong sa akin na matuto, nagturo sa akin ng napakahusay na mga kasanayan sa pagprograma at napakahusay na kasanayan sa paligid ng disenyo at mga proseso upang matiyak na hindi ko ipinakilala ang maraming surot code.

Mga paraan ng pag-Programming sa mga araw na ito, mga bagay tulad ng, halimbawa, Structured Query Language, SQL, ito ay isang napakalakas, simpleng wika ng query. Ngunit ang weve ay naging isang programming language at hindi ako naniniwala na ang SQL ay kailanman dinisenyo upang maging isang modernong programming language, ngunit weve skewed ito upang maging iyon. At ipinakikilala nito ang isang buong pangkat ng mga isyu, sanhi kapag iniisip namin ang tungkol sa dalawang punto ng view: mula sa coding point of view at mula sa DBA point of view. Napakadaling sumama at ipakilala ang mga bug para sa mga bagay tulad ng mga mahihirap na pamamaraan sa pagprograma, tamad na pagsisikap sa pagsulat ng code, kakulangan ng karanasan, ang klasikong alagang hayop ng alaga na mayroon ako halimbawa sa mga taong SQL na tumatalon sa Google at naghahanap ng isang bagay at paghahanap ng isang website na Nakakuha ng isang halimbawa at paggawa ng isang kopya at i-paste ang umiiral na code. At pagkatapos ay pagtutuon ng isang masamang pag-coding, pag-iwas at paglalagay nito sa paggawa, sapagkat nangyayari lamang ito upang mabigyan sila ng mga resulta na gusto nila. Nakakuha ka ng iba pang mga hamon, halimbawa, sa mga araw na ito ay lahat ay nagmamadali patungo dito, na tinatawag nating lahi sa zero: sinusubukan na gawin ang lahat nang mura at napakabilis, na mayroon kaming isang sitwasyon kung saan hindi gumagamit ng mas mababang mga suweldo. At hindi ko ibig sabihin na sa isang hindi kanais-nais na paraan, ngunit hindi umupa ng mga eksperto para sa bawat posibleng trabaho. Minsan sa anumang bagay na gagawin sa mga computer ay rocket science; ito ay kasangkot sa mga bagay na napupunta at napakalakas, o napunta sa puwang o mga inhinyero ay mabibigat na karapat-dapat na mga kalalakihan at kababaihan na gumawa ng mga degree at may mahigpit na mga edukasyon na nagpigil sa kanila sa paggawa ng mga mabaliw na bagay.

Sa mga araw na ito, ang mga pulutong ng mga tao sa pagkuha sa pag-unlad at disenyo at database na hindi nagkaroon ng maraming taon ng karanasan, hindi kinakailangan ng parehong pagsasanay o suporta. At sa gayon nagtatapos ka sa isang senaryo ng lamang tradisyonal na amateur kumpara sa dalubhasa. At ang isang sikat na linya, hindi ko talaga naaalala kung sino ang lumikha ng quote, ang linya ay napupunta, "Kung sa palagay mo na ang mahal nitong pag-upa ng isang dalubhasa upang gumawa ng trabaho, maghintay hanggang umarkila ka ng ilang mga amateurs na lumikha ng isang problema at kailangan mong linisin ito. "At sa gayon ang SQL ay may isyu na iyon, at napakadali nitong matutunan, napakadaling gamitin. Ngunit hindi nito, sa aking pananaw, isang perpektong wika sa programming. Napakadaling gawin ang mga bagay tulad ng isang napiling bituin mula saanman at hilahin ang lahat sa isang programming language na mas komportable ka tulad ng PHP at Ruby o Python, at gamitin ang programming language na ikaw ay katutubong pamilyar, upang gawin ang pagmamanipula ng data, kaysa sa paggawa ng isang mas kumplikadong query sa SQL. At nakikita namin ito ng maraming, at pagkatapos ay nagtataka ang mga tao kung bakit ang database ay tumatakbo nang mabagal; nito dahil isang milyong tao ang nagsisikap na bumili ng isang form ng tiket sa isang online na sistema ng tiket, kung saan ginagawa nito ang isang piling bituin mula saanman.

Ngayon, iyon ay isang talagang matinding halimbawa, ngunit natatanggal mo ang punto ng lahat ng iyon. Kaya, upang talagang manuntok sa puntong iyon sa bahay, nagmamalasakit ng isang halimbawa na marami akong dinadala. Ako ay isang malaking tagahanga ng matematika, mahilig ako sa kaguluhan sa kaguluhan, gustung-gusto ko ang mga set ng Mandelbrot. Sa kanang bahagi ay nagpapakita ng isang paglalagay ng Mandelbrot set, na tiyak kong pamilyar ang lahat. At sa kaliwang kamay ang isang piraso ng SQL na aktwal na nag-aalok na. Ngayon, sa tuwing inilalagay ko ito sa isang screen sa isang lugar, naririnig ko ang "Oh diyos ko, may nag-render sa Mandelbrot series kasama ang SQL, seryoso ka ba? Masiraan ng loob! "Buweno, ang buong punto ng iyon ay upang ilarawan kung ano lamang ang aking naipalabas doon, at iyon ay oo, sa katunayan maaari mo na ngayong iprograma ang halos anumang bagay sa SQL; ito ay isang napaka mabigat na binuo, malakas, modernong programming language. Kapag orihinal na ito ay isang wika ng query, dinisenyo ito upang makakuha lamang ng data. Kaya, ngayon nakakakuha kami ng napaka kumplikadong mga konstruksyon at nakuha namin ang naka-imbak na mga pamamaraan, nakuha namin ang pamamaraan ng programming na inilalapat sa isang wika at sa gayon napakadali para sa mahirap na kasanayan sa pagprograma, kakulangan ng karanasan, cut-and-paste code, mababang-bayad na kawani na sinusubukan na maging kawani na may mataas na bayad, ang mga tao na nagpapanggap na alam nila, ngunit kailangan nilang matuto sa trabaho.

Ang isang buong hanay ng mga bagay kung saan ang code profiling at kung ano ang tinutukoy namin bilang pag-debug, na hindi gaanong paghahanap ng mga bug na huminto sa mga programa mula sa pagtatrabaho, ngunit ang mga bug na nasasaktan lamang ang system at hindi maganda ang nakabalangkas na code. Kapag tiningnan mo ang screen na ito ngayon, at sa palagay mo, iyon lang, ang uri ng cute at sa palagay mo, "Wow, kung ano ang isang mahusay na grapiko, Gustung-gusto mong patakbuhin iyon." Ngunit isipin mo na tumatakbo sa ilang piraso ng lohika ng negosyo. Mukhang malinis ito, ngunit nagsasalita ito ng isang matematika na graphically na ginawang gulo ng chaos theory, ngunit kapag iniisip mo ang tungkol sa kung ano ito ay maaaring magamit para sa isang lohika sa negosyo, makuha mo ang larawan nang napakabilis. At upang talagang ilarawan iyon - at Ikinalulungkot ko ang mga kulay ay nababaligtad, ang dapat na itim na background at berde upang maging isang berdeng screen, ngunit maaari mo pa ring basahin iyon.

Nagpunta ako at nagkaroon ng isang mabilis na pagtingin sa isang halimbawa ng kung ano ang maaari mong gawin kung talagang mabaliw ka at walang karanasan kahit ano at nagmula sa ibang background ng pag-programming at inilapat ang mga gusto ng C ++ sa SQL, upang mailarawan ang aking punto, bago Iniabot ko ang aming natutunan na panauhin mula sa IDERA. Ito ay isang nakabalangkas na query na isinulat tulad ng C ++, ngunit ang naka-code sa SQL. At ito ay aktwal na isinasagawa, ngunit nagpapatupad ito ng halos tatlo hanggang limang minuto na tagal. At ito ay kumukuha ng pabalik na isang linya ng data ng maraming mga database, maraming mga sumali.

Muli, ang buong punto ng ito ay kung wala kang tamang mga tool, kung wala kang tamang mga platform at kapaligiran upang mahuli ang mga bagay na ito, at makukuha sila sa paggawa, at pagkatapos ay mayroon kang 100,000 mga tao na naghagupit ng isang sistema bawat araw, o oras, o minuto, sa lalong madaling panahon magtapos ka ng isang karanasan sa Chernobyl kung saan nagsisimula ang pagkatunaw ng malaking bakal at inilibing ang sarili sa core ng planeta, dahil ang piraso ng code na ito ay hindi kailanman dapat makuha sa paggawa. Ang iyong mga system at iyong mga tool, humingi ng paumanhin, ay dapat pumili na bago ito mapunta sa kahit saan malapit sa - kahit na sa pamamagitan ng proseso ng pagsubok, kahit sa pamamagitan ng UAT at pagsasama ng mga sistema, ang piraso ng code ay dapat kunin at i-highlight at may dapat isama at na nagsasabing, "Tingnan mo, talagang maganda ang code, ngunit hinahayaan kang makakuha ng isang DBA upang matulungan kang mabuo nang maayos ang nakabalangkas na query, dahil lantaran, na bastos lang." At ang mga URL doon, maaari kang pumunta at magkaroon ng isang hitsura - tinukoy ito bilang pinaka kumplikadong query sa SQL na iyong sinulat. Dahil sa paniwalaan sa akin, na talagang nagtitipon, tumatakbo ito. At kung gupitin mo at i-paste iyon at pakutitin lamang ang database, medyo bagay na dapat itong panoorin; kung nakuha mo ang mga tool upang mapanood ang database subukan lamang at matunaw sa loob ng isang tatlo hanggang limang minuto na panahon, upang balikan kung ano ang isang linya ng.

Kaya, upang mai-summarize, sa pag-iisip, ang aking buong background sa coding ay nagturo sa akin na maaari mong bigyan ang mga tao ng baril at kung hindi sila mag-ingat ay kukunan nila ang kanilang sarili sa paa; ang trick ay upang ipakita sa kanila kung nasaan ang mekanismo ng kaligtasan. Gamit ang mga tamang tool at tamang software sa iyong mga daliri, matapos mong gawin ang coding, maaari mong suriin ang iyong code, maaari kang makahanap ng mga isyu sa pamamagitan ng pag-file ng code, maaari mong makita ang mabisang hindi sinasadyang mga bug na mga isyu sa pagganap, at tulad ng sinabi ko nang mas maaga sa , minsan, magagawa mo itong tumingin sa isang berdeng screen. Cant mo pa; may mga daan-daang libong mga linya ng code, may mga sampu-sampung libong mga app na na-deploy, may mga milyon-milyong mga database sa ilang mga pagkakataon, at kahit na ang mga super tao ay hindi pa talaga ginagawa ito sa pamamagitan ng kamay. Talagang literal na kailangan mo ang tamang software at mga tamang kasangkapan sa iyong mga daliri at kailangan mo ang koponan na gagamitin ang mga tool na iyon, upang maaari mong mahanap ang mga isyung ito at matugunan ang mga ito nang napakabilis, bago ka makarating sa puntong iyon, samantalang kay Dr. Binigyang diin ni Robin Bloor, ang mga bagay ay maaaring maging kapinsalaan, at ang mga bagay ay sumabog, o mas karaniwan, nagsisimula lamang silang magastos sa iyo ng maraming dolyar at maraming oras at pagsisikap at pagsira sa moral at mga bagay-bagay, kapag hindi nila magawa ang mga bagay isang mahabang oras upang tumakbo.

At sa pag-iisip na iyon, Inaalalahanan ko ang aming panauhin at inaasahan kong marinig kung paano nila malutas ang isyung ito. At lalo na ang demo na sa palagay ko ay malapit nang matanggap. Eric, Sakit na bumalik.

Eric Kavanagh: OK, Bert, ilabas mo na.

Bert Scalzo: Sige salamat. Si Bert Scalzo dito mula sa IDERA, Im ang manager ng produkto para sa aming mga tool sa database. At Pupunta ako upang makipag-usap tungkol sa pag-debug. Sa palagay ko ang isa sa mga pinakamahalagang bagay na sinabi kanina ni Robin - at ang tunay na totoo ay ang debugging ay napakabigat at hindi walang kabuluhan, at kapag nagpunta ka sa database ng pag-debug nito ng isang order ng magnitude kahit na mas malala at hindi walang kabuluhan - kaya, iyon ay isang mahalagang quote.

OK. Nais kong magsimula sa kasaysayan ng pagprograma, dahil sa maraming beses nakikita ko ang mga taong hindi debugging, hindi sila gumagamit ng isang debugger, nagprograma lamang sila sa anumang wika na ginagamit nila, at maraming beses na sinasabi nila sa akin, "Well, ang mga bagay na debugger ay bago, at hindi pa namin sinimulan ang paggamit ng mga iyon. "At kung ano ang gagawin ko ay ipinapakita ko sa kanila ang timeline chart na ito, uri ng paunang kasaysayan, ang katandaan, ang gitnang edad, ang uri nito kung nasaan tayo sa mga term ng mga wika sa programming. At mayroon kaming mga matandang wika na nagsisimula noong 1951 na may code ng pagpupulong, at ang Lisp at FACT at COBOL. Pagkatapos ay makarating kami sa susunod na grupo, ang mga Pascals at Cs at pagkatapos ay ang susunod na grupo, ang C ++ s, at tignan kung saan ang tanda ng tanong na iyon - ang marka ng tanong ay humigit-kumulang sa paligid ng 1978 hanggang marahil 1980. Kahit saan sa saklaw na iyon magagamit ng sa amin ang mga debugger, at sa gayon, "Uy, hindi ako gumagamit ng isang debugger, na sanhi ng isa sa mga bagong bagay," pagkatapos ay dapat mong sinimulan ang pagprograma, alam mo, noong mga dekada ng 1950, na nagiging sanhi lamang ng paraan malayo sa pag-angkin na iyon.

Ngayon ang iba pang bagay na nakakatawa tungkol sa tsart na ito ay gumawa lamang ng komento si Dez tungkol sa Grace Hopper, alam ko talaga si Grace, kaya ang uri ng nakakatawa. At pagkatapos ay ang iba pang bagay na pinagtawanan ko ay pinag-uusapan niya ang tungkol sa mga teletype at Im na nakaupo doon, "Man, iyon ang pinakadakilang paglukso na mayroon tayo sa pagiging produktibo, kapag nagpunta kami mula sa mga kard sa teletypes, iyon ang pinakamalaking pagtalon." , at na-program na si Ive sa lahat ng mga wika dito, kabilang ang SNOBOL, na hindi naririnig ng una, ito ay isang CDC, Control Data Corporation, kaya't hulaan kong ako ay nakakakuha ng kaunting matanda para sa industriya na ito.

Dez Blanchfield: Sasabihin ko, napakaraming edad mo sa amin.

Bert Scalzo: Oo, Sinasabi ko sa iyo, pakiramdam ko tulad ni Lolo Simpson. Kaya't tinitingnan ko ang pag-debug at ang iba't ibang mga paraan ng paggawa ng pag-debug. Maaari mong pag-usapan ang tungkol sa kung ano ang naiisip nating lahat bilang tradisyonal na pagkuha sa isang debugger at pagtapak sa code. Ngunit gayunpaman, ang mga tao ay gagamitan ng kanilang code; na kung saan idikit mo ang mga pahayag sa iyong code at marahil gumawa ka ng isang output file, isang trace file o isang bagay, at sa gayon isinasagawa mo ang iyong code. Inaasahan kong bilang debugging, medyo mahirap, isang paraan ng paggawa nito, ngunit binibilang ito. Ngunit gayon din, nakuha namin ang sikat na pahayag: pinapanood mo at ang mga tao ay talagang naglalagay ng mga pahayag at talagang nakita ko ang isang tool kung saan - at ang isang tool sa database nito - kung hindi mo alam kung paano gumamit ng isang debugger, itulak mo ang isang pindutan at ito ay mananatili mga pahayag sa buong iyong code para sa iyo at pagkatapos mong magawa ay itulak mo ang isa pang pindutan at pinalabas ito. Dahil iyon kung gaano karaming mga tao ang nag-debug.

At ang dahilan ng pag-debug namin ay dalawa: una sa lahat, kailangan nating makahanap ng mga bagay na hindi epektibo ang aming code. Sa madaling salita, karaniwang nangangahulugang nagkakamali ng isang pagkakamali sa lohika o napalampas namin ang isang kinakailangan sa negosyo, ngunit kung ano ito, ay hindi epektibo ang code; hindi nito ginagawa ang inaasahan nating gawin. Sa ibang oras na pupunta tayo at gumawa tayo ng pag-debug, para sa kahusayan at maaaring maging isang pagkakamali sa lohika, ngunit kung ano ito, ay ginawa ko ang tamang bagay, hindi lamang ito bumalik nang sapat nang sapat. Ngayon, ginagawa ko ang puntong iyon dahil marahil mas mahusay ang isang profile para sa ikalawang senaryo at pag-uusapan ang tungkol sa kapwa debugger at mga profile. Bilang karagdagan, ang konsepto ng konseptong ito ng remote na pag-debug; ito ay mahalaga dahil sa maraming beses kung ikaw ay nakaupo sa iyong personal na computer, at gumagamit ka ng isang debugger, na nag-hit sa isang database kung saan ang code ay aktwal na naisakatuparan sa database, ikaw ay talagang gumagawa ng kung ano ang tinatawag na liblib na pag-debug. Maaaring hindi mo ito napagtanto, ngunit iyon ang nangyayari. At pagkatapos, napaka-pangkaraniwan sa mga debugger na ito na magkaroon ng mga break point, mga puntos ng panonood, hakbang sa hakbang at ilang iba pang mga karaniwang bagay, na ipapakita ko sa mga nasa isang snapshot ng screen sa isang sandali.

Ngayon, profiling: maaari kang gumawa ng profiling sa isang iba't ibang mga paraan. Sasabihin ng ilang mga tao na ang pagkuha ng workload at i-replay kung saan kinukuha ang lahat, na ang bilang ay profiling. Ang aking karanasan ay naging mas mahusay kung ang nagawa nitong sampling. Walang dahilan ang mga Theres na mahuli ang bawat solong pahayag, dahil ang ilang mga pahayag ay maaaring tumakbo lamang nang mabilis na wala kang pag-aalaga, kung ano ang talagang sinusubukan mong makita ay, mabuti, na kung saan ay ang patuloy na nagpapakita ng paulit-ulit, dahil ang mga ito ay masyadong tumatakbo . Kaya, kung minsan ang profiling ay maaaring nangangahulugang sampling kaysa sa pagpapatakbo ng buong bagay. At karaniwang, makakakuha ka ng ilang uri ng output na maaari mong gamitin, ngayon ay maaaring maging visual sa loob ng isang kapaligiran ng pag-unlad ng IDE, kung saan maaari itong bigyan ka tulad ng isang histogram ng pagganap ng iba't ibang mga linya ng code, ngunit maaari pa rin maging ito ay gumagawa ng isang trace file.

Una nang lumitaw ang mga profile noong 1979. Kaya, ang mga matagal nang nasa paligid din. Mahusay para sa paghahanap ng pagkonsumo ng mapagkukunan, o mga isyu sa pagganap, sa ibang salita na kahusayan na bagay. Sa pangkalahatan, ang hiwalay at natatanging mula sa debugger, kahit na nakatrabaho ko ang mga debugger na parehong ginagawa sa parehong oras. At habang ang mga profileer sa palagay ko ay mas kawili-wili sa dalawang mga tool, kung sa palagay ko na hindi sapat ang mga debug ng mga tao, pagkatapos ay tiyak na hindi sapat ang profile ng mga tao, dahil ang isa sa sampung debugger ay magiging profile, tila. At iyon ay isang kahihiyan, dahil ang pag-profile ay maaaring gumawa talaga ng malaking pagkakaiba. Ngayon, ang mga wika sa database, tulad ng pinag-uusapan ni weve tungkol sa naunang, nakuha mo ang SQL - at weve uri ng pinilit ang round peg sa square hole dito at pinilit itong maging isang programming language - at Oracle.Thats PL / SQL - thats pamamaraan ng wika SQL - at SQL Server, nito Transact-SQL, nito SQL-99, SQL / PSM - para sa palagay ko, ang Pamamaraan na Naka-istilong Module. Binibigyan ito ng mga postgres ng isa pang pangalan, DB2 pa ang isa pang pangalan, Informix, ngunit ang punto ay pinilit ng lahat ang mga 3GL-type na mga konstruksyon; sa madaling salita, PARA sa mga loops, sa variable na mga pagpapahayag at lahat ng iba pang mga bagay na dayuhan sa SQL na ngayon ay bahagi ng SQL sa mga wikang iyon. At sa gayon, kailangan mong mag-debug ng isang PL / SQL o isang Transact-SQL tulad ng nais mong isang Visual Basic na programa.

Ngayon, ang mga bagay sa database, mahalaga ito dahil sasabihin ng mga tao, "Well, anong mga bagay ang kailangan kong i-debug sa isang database?" At ang sagot ay, mabuti, anuman ang maaari mong maiimbak sa database bilang code - kung ginagawa ko ang T- SQL, o PL / SQL - at Im nag-iimbak ng mga bagay sa database, marahil ito ay naka-imbak na pamamaraan o naka-imbak na function. Ngunit ang mga theres ay nag-trigger din: ang isang trigger ay uri ng tulad ng isang naka-imbak na pamamaraan, ngunit nagpapaputok ito sa ilang uri ng kaganapan. Ngayon, ang ilang mga tao sa kanilang mga nag-trigger ay maglagay ng isang linya ng code at tatawag ng isang naka-imbak na pamamaraan upang mapanatili nila ang lahat ng kanilang mga naka-imbak na code at pamamaraan, ngunit ang parehong konsepto: ang pa-trigger pa rin ay maaaring kung ano ang nagsisimula sa buong bagay. At pagkatapos bilang Oracle, mayroon silang isang bagay na tinatawag na isang package, na kung saan ay uri ng tulad ng isang library kung gugustuhin mo. Inilagay mo ang 50 o 100 na naka-imbak na mga pamamaraan sa isang pagpangkat, na tinatawag na isang package, kaya ang uri nito tulad ng isang library. Kaya, nakikita ng debugger ang dating daan; ito ay talagang isang tool na talagang pupunta at idikit ang lahat ng mga pahayag na ito ng debug sa iyong code para sa iyo. Kaya, kung saan saan mo nakikita ang debug block, huwag alisin, ang awtomatikong pag-debugger ay nagsisimula at bakas, ang lahat ay natigil ng ilang tool. At ang mga linya sa labas ng iyon, na kung saan ay ang minorya ng code, na rin, na ang di-manu-manong pamamaraan ng pag-debug.

At ang dahilan kung bakit ko ito isinasagawa, kung sinusubukan mong gawin ito sa pamamagitan ng kamay, ikaw ay tunay na mag-type ng higit pang debugging code upang ilagay sa lahat ng mga pahayag na ito kaysa sa kasama mo ang code. Kaya, habang ito ay maaaring gumana, at habang ito ay mas mahusay kaysa sa wala, ito ay isang napakahirap na paraan upang i-debug, lalo na mula pa, paano kung kukuha ng 10 oras para sa bagay na ito upang tumakbo, at kung saan ito ay may problema sa linya ng tatlo? Kung gumagawa ako ng isang interactive na sesyon ng pag-debug, malalaman ko sa linya tatlo - limang minuto sa loob nito - hey, theres isang problema dito, maaari akong huminto. Ngunit kasama nito, dapat kong hintayin na tumakbo ito, sa lahat ng paraan upang makumpleto at pagkatapos ay kailangang tingnan ni Ive ang ilang mga trace file na marahil ay mayroong lahat ng mga pahayag na ito, at subukan at hanapin ang karayom ​​sa haystack. Muli, ito ay mas mahusay kaysa sa wala, ngunit hindi ito ang pinakamahusay na paraan upang gumana. Ngayon, ito ang magiging hitsura ng file na iyon mula sa naunang slide; sa madaling salita, pinatakbo ko ang programa, at nakuha lamang nito ang isang bungkos ng mga pahayag sa trace file na ito at maaaring hindi ko masusuka ito at hanapin kung ano ang kailangan kong hanapin. Kaya, muli, hindi ko sigurado na ito ang paraan na nais mong magtrabaho.

Ngayon, ang mga interactive na debugger - at kung ginamit mo ang isang bagay tulad ng Visual Studio upang magsulat ng mga programa, o Eclipse, mayroon kang mga debugger at ginamit mo ito sa iyong iba pang mga wika - hindi mo naisip na gamitin ang mga ito dito sa iyong database. At mayroong mga tool sa labas, tulad ng aming DB Artisan at aming Rapid SQL, ito ay Rapid SQL dito, na mayroong debugger, at maaari mong makita sa kaliwang bahagi, mayroon akong isang naka-imbak na pamamaraan na tinatawag na "suriin para sa mga duplicate." Karaniwang, pupunta lang ito at tingnan at tingnan kung mayroon akong maraming mga hilera sa talahanayan na may parehong pamagat ng pelikula. Kaya, ang database ay para sa mga pelikula. At maaari mong makita sa kanang bahagi, sa itaas na pangatlo, nakuha ko ang aking source code sa gitna, nakuha ko ang tinatawag na mga variable ng relo ko at ang aking mga salansan ng tawag, at pagkatapos ay sa ilalim ay nakuha ko ang ilang mga output s. At kung ano ang mahalaga dito, kung titingnan mo ang unang pulang arrow, kung mouse ako sa isang variable, nakikita ko talaga kung anong halaga ang variable sa sandaling iyon sa oras, tulad ng Im stepping through the code. At iyon ay talagang kapaki-pakinabang, at pagkatapos ay maaari kong mag-hakbang ng isang linya sa bawat oras sa pamamagitan ng code, hindi ko na kailangang isakatuparan, masasabi kong hakbang ng isang linya, hahanapin ko ang nangyari, hakbangin ang isa pang linya, hayaan mo akong makita kung ano ang nangyari, at Ginagawa ko ito sa database. At kahit na nakaupo ako sa Rapid SQL sa aking PC at ang aking database ay nasa ulap, magagawa ko pa rin ang malayong debugging na ito at makita ito at makontrol ito mula dito, at gawin ang pag-debug tulad ng nais ko sa ibang wika.

Ngayon, ang susunod na arrow doon - maaari mong makita ang maliit na tulad ng arrow na tumuturo sa kanan, patungo sa output na DBMS, na kung saan ang aking cursor ay sa sandaling ito - kaya sa madaling salita, humakbang si Ive at na kung saan ako sa sandaling ito. Kaya, kung sasabihin ko, "Hakbang muli," Pupunta ako sa susunod na linya. Ngayon lamang sa ibaba na makikita mo ang pulang tuldok. Kaya, iyon ay isang takbo, na nagsasabing "Hoy, ayaw kong tumapak sa mga linyang ito." Kung gusto ko lang tumalon sa lahat at makarating sa kung saan ang pulang tuldok, maaari kong pindutin ang pindutan ng pagtakbo at ito ay tatakbo mula rito alinman sa ang wakas, o sa isang breakpoint, kung mayroong anumang mga set ng breakpoints, at pagkatapos ay titigil ito at hayaan kong gawin ulit ang hakbang. At ang dahilan na lahat ito ay mahalaga at makapangyarihan ay, dahil kapag ginagawa ko ang lahat ng ito, kung ano ang nangyayari sa gitna at maging sa ilalim - ngunit ang pinakamahalaga sa gitna - ay magbabago at makikita ko ang mga halaga mula sa aking mga variable, maaari kong tingnan ang aking bakas ng tawag na tawag, alam mo, at sa gayon ang lahat ng impormasyong iyon ay ipinapakita doon bilang Im stepping through the code, kaya talagang nakikita ko at makaramdam ako at makakuha ng isang pag-unawa sa kung ano ang nangyayari at kung paano aktwal na gumagana ang code sa oras ng pagpapatupad. . At karaniwang makakahanap ako ng isang problema, kung mayroong isa, o kung sapat na ang AK upang mahuli ito.

OK, ngayon Gusto kong pag-usapan ang tungkol sa isang profiler, at sa kasong ito, ito ay isang profiler na maaari kong makita sa pamamagitan ng isang debugger. Tandaan na sinabi kong minsan ay magkahiwalay sila at kung minsan maaari silang magkasama? Sa kasong ito, at muli, Im sa Rapid SQL, at nakikita ko ang isang theres na isang margin, sa kaliwang bahagi, sa tabi ng mga numero ng linya. At kung ano iyon, ay ang bilang ng mga segundo o microsecond na kinuha upang maisagawa ang bawat linya ng code, at nakikita ko nang malinaw, ang lahat ng aking oras ay ginugol sa isang ito para sa isang loop kung saan Pinipili ko ang lahat mula sa isang talahanayan. At kung gayon, ang mga whatever na nangyayari sa loob ng PARA sa loop marahil ay isang bagay na kailangan kong tingnan, at kung mas mapapaganda ko ito, babayaran ito ng mga dibidendo. Hindi ako makakakuha ng anumang mga pagpapabuti sa pamamagitan ng pagtatrabaho sa mga linya na tulad ng 0.90 o 0.86; hindi gaanong oras ang ginugol doon. Ngayon, sa kasong ito, at muli, Sa Rapid SQL, nakikita mo kung paano ko magagawa ang profiling na magkakaugnay sa aking pag-debug. Ngayon, ano ang maganda ay pinapayagan ka rin ng Rapid SQL na gawin mo ito sa ibang paraan. Pinapayagan ka ng Rapid SQL na sabihin, "Alam mo kung ano? Ayaw kong maging nasa debugger, nais kong patakbuhin ito at pagkatapos ay nais kong tingnan ang graphic o biswal na parehong uri ng impormasyon. "

At makikita mo na wala na si Im sa debugger at pinapatakbo nito ang programa at pagkatapos na maisagawa ang pagpapatupad, binibigyan ako nito ng mga tsart upang sabihin sa akin ang mga bagay upang makita kong nakuha ni Ive ang isang pahayag na mukhang ang pagkuha ng halos lahat ng pie tsart at kung titingnan ko, nakikita ko sa grid na iyon sa ilalim, linya 23, theres the FOR loop again: hes taking up the most time, siya ay sa katunayan na ang madilim na pulang chewing up ang lahat ng tsart ng pie. At sa gayon, ito ay isa pang paraan para sa paggawa ng profiling. Nangyayari kaming tawaging "Code Analyst" sa aming tool. Ngunit ito talaga isang profiler na hiwalay sa isang debugger. Ang ilang mga tao ay nais na gawin ito sa unang paraan, ang ilang mga tao ay nais na gawin ito sa pangalawang paraan.

Bakit tayo gumagawa ng debugging at profiling? Hindi ito dahil nais naming isulat ang mga pinakadakilang code sa mundo at makakuha ng pagtaas ng suweldo - maaaring iyon ang dahilan namin, ngunit hindi iyon ang tunay na dahilan na ginagawa mo ito - nangako ka sa negosyo na gagawin mo nang tama, na magiging epektibo ang iyong programa. Thats kung ano ang iyong gamitin ang debugger para sa. Bilang karagdagan, ang mga gumagamit ng pagtatapos ng negosyo; hindi sila masyadong matiyaga: nais nila ang mga resulta kahit na bago nila pinindot ang susi. Dapat basahin ang kanilang isip at gawin ang lahat agad. Sa madaling salita, dapat maging mahusay. At kung gayon, iyon ang gagamitin namin sa profiler. Ngayon, nang walang mga tool na ito, naniniwala ako na ikaw ang taong ito sa suit ng negosyo na may bow at arrow at ikaw ay bumaril sa target at ikaw ay nabulag. Sapagkat paano ka makakahanap ng kung paano naglalabas ang isang programa sa pamamagitan lamang ng pagtingin sa static code at paano mo malalaman kung aling linya ang kung saan ito ay talagang gugugol ng oras sa pagpapatupad, muli, sa pamamagitan lamang ng pagtingin sa static code? Ang isang pagsusuri sa code ay maaaring o hindi maaaring i-up ang ilan sa mga bagay na ito, ngunit walang garantiya na makikita ng lahat ang pagsusuri sa code. Gamit ang isang debugger at profiler dapat mong mahanap ang lahat ng mga bug.

OK, Pupunta lang ako sa isang tunay na mabilis na demo dito. Hindi nito intensyon na itulak ang produkto, nais kong ipakita sa iyo kung ano ang hitsura ng isang debugger na sanhi ng maraming beses na sasabihin ng mga tao, "Hindi ko pa nakita ang isa sa mga ito bago." At mukhang maganda ito sa mga snap slide ng screen, ngunit ano itsura ba kapag nasa paggalaw nito? Kaya, narito sa aking screen Im na nagpapatakbo ng aming produkto ng DB Artisan; mayroon din kaming debugger doon. Ang DB Artisan ay nangangahulugang higit pa para sa mga DBA, ang Rapid SQL ay higit pa para sa mga nag-develop, ngunit nakita ko ang mga developer na gumagamit ng DB Artisan, at nakita ni Ive ang mga DBA na gumagamit ng Rapid. Kaya, huwag mahuli sa produkto. At narito, may pagpipilian akong paggawa ng isang debug, ngunit bago ko ilunsad ang debug, kukuha ako ng kunin ang code na ito upang makita mo kung ano ang hitsura ng code bago ko simulan ang pagpapatakbo nito. Kaya, narito ang eksaktong parehong code na nasa snapshot ng screen, ito ang aking tseke para sa mga duplicate. At nais kong i-debug ito, kaya pinindot ko ang debug. At ngayon, tumatagal ng ilang sandali at sasabihin mo, "Well, bakit tumatagal ng ilang sandali?" Alalahanin ang malayong pag-debug: ang debugging ay talagang nangyayari sa aking server ng database, hindi sa aking PC. Kaya, kailangan itong tumawid at lumikha ng isang session doon, lumikha ng isang malayuang bagay na pag-debug, ikabit ang aking session sa liblib na sesyon ng pag-debug at mag-set up ng isang channel ng komunikasyon.

Kaya, ngayon, nakikita ang aking arrow, nasa itaas nito, sa pamamagitan ng linya ng isa, na kung saan ang Im sa code. At kung pinindot ko ang pangatlong icon doon, na kung saan ay isang hakbang sa, makikita mo na ang arrow ay lumipat lamang, at kung patuloy ko itong pipilitin, makikita mo itong patuloy na gumagalaw. Ngayon, kung nais kong pumunta sa lahat ng ito upang PUMUNTA, dahil alam ko na kung saan ang problema, maaari akong magtakda ng isang takbo. Akala ko itinakda ko iyon. Oh shoot, ako ay isa sa aking mga susi sa pagkuha ng screen na nai-mapa sa parehong key tulad ng debugger, na kung ano ang sanhi ng pagkalito. OK, kaya mano-mano lamang akong nagtakda ng isang breakpoint doon, kaya ngayon sa halip na gumawa ng isang hakbang, hakbang, hakbang, hakbang hanggang sa makarating ako, talagang masasabi ko lang, "Sige at patakbuhin ang bagay na ito," at titigil ito. Pansinin itong inilipat ako sa lahat ng dako hanggang sa kung saan ang break point ay, kaya't ako na ngayon ang nasa pagpapatakbo ng loop na ito, maaari kong makita kung ano ang itinakda ng lahat ng aking mga variable, na hindi isang sorpresa, dahilan na sinimulan ko silang lahat sa zero. At ngayon, makakapasok ako sa loop na ito at magsimulang tingnan kung ano ang nangyayari sa loob ng loop na ito.

Kaya, ngayon ang paggawa ng isang piling bilang mula sa aking mga upa at maaari kong mag-mouse sa ibabaw ng taong iyon at tingnan, dalawa, dalawa ang mas malaki kaysa sa isa, kaya marahil ay gagawin nito ang susunod na piraso ng code na ito. Sa madaling salita, may nakita itong isang bagay. Pupunta lang ako sa unahan at hayaan itong tumakbo. Ayaw kong dumaan sa lahat ng bagay dito; ang nais kong ipakita sa iyo ay kapag tapos na ang isang debugger, natatapos ito tulad ng isang normal na programa. Nakuha ko ang set ng breakpoint, kaya't sinabi kong tumakbo, bumalik ito sa susunod na breakpoint. Pinapayagan kong tumakbo ito hanggang sa wakas, sanhi ng gusto kong makita mo na ang isang debugger ay hindi nagbabago sa pag-uugali ng programa: kapag natapos na ito, dapat kong makuha ang eksaktong parehong mga resulta kung hindi ko ito pinapatakbo sa loob ng isang debugger.

At kasama nito, Sususpinde kong i-suspinde ang demo at bumalik dahil gusto naming tiyakin na mayroon kaming oras para sa mga katanungan at sagot. At sa gayon, bubuksan ko ito para sa mga katanungan at sagot.

Eric Kavanagh: Sige, Robin, marahil isang tanong mula sa iyo at pagkatapos ay mula sa ilang Dez?

Robin Bloor: Oo, sigurado, nahanap ko ang kaakit-akit na ito, siyempre. Nagtrabaho si Ive sa mga bagay na tulad nito, ngunit si Ive ay hindi kailanman nagtrabaho sa anumang bagay na katulad nito sa database. Maaari mo bang bigyan ako ng ilang ideya kung ano ang ginagamit ng mga tao sa profiler? Dahil ang kagaya nito, tinitingnan ba nila - dahilan kung bakit ipinapalagay ko na sila - nakikita nila ang mga isyu sa pagganap, makakatulong ba ito sa iyo na makilala sa pagitan ng oras na ang isang database ay tumatagal ng oras at kung kailan kumukuha ng oras ang isang code?

Bert Scalzo: Alam mo, iyon ay isang kamangha-manghang tanong. Hinahayaan kong ako ay nagtatrabaho sa Visual Basic, at ako, sa loob ng aking Visual Basic Im na tatawag sa isang Transact-SQL o isang PL / SQL. Hayaan akong gawin ang PL / SQL, dahil ang Oracle ay hindi naglalaro nang maayos sa mga tool ng Microsoft. Maaaring isama ko ang aking Visual Basic code, at maaaring sabihin ng profile na, "Uy, tinawag ko ang naka-imbak na pamamaraan na ito at matagal na." Ngunit pagkatapos ay makakapunta ako sa naka-imbak na pamamaraan at magagawa ko ang isang profile ng database sa naka-imbak pamamaraan at sabihin, "OK, sa 100 na mga pahayag na narito, nakikita ang lima na sanhi ng problema." At kaya, kailangan mong gumawa ng isang tag ng koponan, kung saan kailangan mong gumamit ng maraming mga profile.

Ang ideya ay kung sakaling masabihan mo ang problema sa pagganap ay nasa iyong database, ang isang profile sa database ay maaaring makatulong sa iyo na makahanap ng karayom ​​sa haystack kung saan ang mga pahayag ay talagang ang kung saan mayroon kang isang problema. Sasabihin ko sa iyo ang isa pang bagay na naka-profile sa: kung mayroon kang isang piraso ng code na tatawag ng isang milyong beses, ngunit tumatagal lamang ito ng isang microsecond bawat isa sa milyong beses, ngunit tinawag itong isang milyong beses, kung ano ang ipapakita ng profiler , ang bagay na iyon ay tumakbo para sa maraming mga yunit ng oras. At sa gayon habang ang code ay maaaring maging mahusay, maaari mong tingnan at sabihin, "Ooh, ay madalas na ginagawa ang tawag na ito sa piraso ng code na ito nang madalas. Marahil ay dapat nating tawagan ito tuwing madalas, sa halip na sa bawat oras na pinoproseso namin ang isang talaan, ”o isang bagay. At sa gayon maaari mong aktwal na mahanap kung saan may mahusay na code na tinatawag na madalas na madalas, at iyon talaga ang isang problema sa pagganap.

Robin Bloor: Oo, kamangha-manghang iyon. Hindi ko ito nagawa. Nakikita mo, siyempre, kapag mayroon akong mga problema sa database na tulad ko ay sa isang paraan o sa alinman sa alinman sa pakikitungo sa database o pakikitungo sa code; Hindi ako kailanman makitungo sa kanilang dalawa sa parehong oras. Ngunit doon, muli, hindi ako gumawa ng - Hindi ko talaga nasangkot sa pagbuo ng mga aplikasyon kung saan naka-imbak kami ng mga pamamaraan, kaya sa palagay ko ay hindi talaga ako tumatakbo sa mga problema na ginamit upang himukin ako ng ligaw, ang ideya na pinaghiwalay mo ang code sa pagitan ng isang database at isang programa. Ngunit gayon, gawin ang lahat - Ipinapalagay ko ang mga sagot na magiging oo, ngunit ito ay bahagi ng isang aktibidad ng pag-unlad ng koponan, kapag ikaw ay sa isang paraan o ibang sinusubukan na ayusin ang isang bagay na nasira, o marahil sinusubukan mong magsama ng isang bagong aplikasyon. Ngunit naaayon ba ito sa lahat ng iba pang mga sangkap na nais kong asahan sa kapaligiran? Maaari ba akong asahan na maaari kong i-clip ito kasama ang lahat ng aking mga pack pack at lahat ng iba pang mga bagay na gagawin ko at kasama ang aking mga bagay sa pamamahala ng proyekto, ito ba ay kung paano ang lahat ng mga clip na ito magkasama?

Bert Scalzo: Oo, maaari itong maging bahagi ng anumang nakabalangkas na proseso upang gawin ang iyong mga pagsisikap sa pag-unlad o pag-unlad. At ang nakakatawa, noong nakaraang linggo ay mayroon akong isang customer na nagtatayo ng isang web application, at ang kanilang database ay maliit, kasaysayan, at sa gayon ang katotohanan na sila ay napakahusay na mga programmer ay hindi saktan sila. Buweno, ang kanilang database ay lumago sa mga nakaraang taon, at ngayon ay tumatagal ng 20 segundo sa isang web page, sa pagitan ng sinabi mo, "Mag-log in ako at bigyan ako ng ilang data upang makita" at kapag ang screen ay talagang bumangon, at kaya ngayon isang problema sa pagganap. At alam nila ang problema ay wala sa alinman sa kanilang Java o alinman sa iba pang mga lugar. Ngunit mayroon silang libu-libong mga naka-imbak na pamamaraan at sa gayon ay dapat nilang simulan ang pag-profile ng mga naka-imbak na pamamaraan upang malaman kung bakit ang web page na ito ay tumatagal ng 20 segundo na darating? At natagpuan talaga namin na sila ay sumali sa isang Cartesian sa isa sa kanilang mga piling pahayag at hindi alam ito.

Robin Bloor: Wow.

Bert Scalzo: Ngunit may isang taong nagsabi sa akin ng isang beses, "Well paano sila makakasali sa isang Cartesian at hindi alam ito?" At talagang nakakatakot ang tunog na ito; kung minsan ang isang programmer na hindi masyadong komportable sa SQL ay gagawa ng isang bagay tulad ng bigyan ako ng isang Cartesian na sumali, ngunit pagkatapos ay ibalik lamang sa akin ang unang tala, kaya alam kong nakakakuha ako ng isang bagay, at kailangan ko lamang ang una. At sa gayon, hindi nila napagtanto na ibabalik lamang nila ang isang bilyong talaan o tinitingnan nila ang isang bilyong talaan, dahilan na nakuha nila ang isa na interesado sila.

Robin Bloor: Wow, alam ko, na kung ano ang tinatawag na - well, na kung ano ang nangyayari sa Dez, sa mga tuntunin ng mga tao na hindi eksakto tulad ng kasanayan na marahil dapat, alam mo. Kung ikaw ay isang programmer, dapat mong malaman kung ano ang mga implikasyon ng paglabas ng anumang utos. Ibig kong sabihin, talaga, walang dahilan ang antas ng katangahan. Ipinapalagay ko rin na ikaw, sa isang paraan o sa iba pa, wika lamang ng wika tungkol sa ito, sapagkat lahat ito ay nakatuon sa gilid ng database. Tama ba ako diyan? Pareho lang ito, kahit anong gamit mo sa coding side?

Bert Scalzo: Talagang, magagawa mo ito sa Fortran o C o C ++. Sa katunayan, sa ilang mga Unixes maaari mo ring gawin ito para sa kanilang mga wika ng script; talagang nagbibigay sila ng parehong mga tool. At pagkatapos ay nais kong bumalik ng isang segundo para sa iyong sinabi nang walang dahilan. Bibigyan ko ng pahinga ang mga programmer, dahilan kung bakit ayaw kong itapon ang mga programmer sa ilalim ng bus. Ngunit ang problema ay ang pang-akademikong kapaligiran sapagkat kapag pupunta ka upang malaman kung paano maging isang programmer, tinuruan mo ng record-at-a-time na pag-iisip. Hindi ka tinuruan na itakda ang pag-iisip, at iyon ang kung ano ang Structured Query Language, o gumagana ang SQL; na kung bakit mayroon tayong unyon, intersect at ang minus operator. At ang napakahirap nito minsan para sa isang tao na kahit kailan ay hindi naisip sa mga tuntunin ng mga set, upang tumigil, palabasin ang pag-proseso sa oras-pag-proseso at magtrabaho kasama ang mga set.

Robin Bloor: Oo, kasama kita sa iyon. Ibig kong sabihin, nakukuha ko ngayon, na may isyu sa edukasyon; Sa palagay ko ay ganap na isang isyu sa edukasyon, sa palagay ko ang natural nito para sa mga programmer ay mag-isip nang maayos. At ang SQL ay hindi pamamaraan, ang pagpapahayag nito. Sinasabi mo lang talaga, "Ito ang gusto ko at wala akong pakialam kung paano mo ito ginagawa," alam mo? Sapagkat ang mga wika sa pag-programming mo ay madalas na nakakuha ng iyong mga manggas at lumusot sa minutiae kahit na pamamahala ng mga bilang, habang gumagawa ka ng isang loop. Sakit na kamay sa -

Bert Scalzo: Hindi. OK, magpatuloy.

Oo, sasabihin ko na nagdala ka ng isa pang halimbawa na ang isang profiler ay magagaling na makunan ng, uri ng pagpunta sa pagproseso ng record-at-a-time na ito. Minsan, ang isang programmer na magaling sa isang tala-sa-isang-oras na lohika, ay hindi maaaring malaman kung paano gawin ang SQL program. Kaya, sabihin na gumawa siya ng dalawang PARA sa mga loop at talaga ay sumali, ngunit ginagawa niya ito sa panig ng kliyente. Kaya, ang paggawa ng parehong epekto bilang isang pagsali, ngunit hes gawin ang kanyang sarili, at mahuhuli ito ng isang profile, dahil marahil ay magtatapos ka ng paggastos ng mas maraming oras sa paggawa ng samahan nang mano-mano kaysa sa pagpapaalam sa database server na gawin ito para sa iyo.

Robin Bloor: Oo, magiging kapahamakan iyon. Ibig kong sabihin, sasabog ka lang. Ang mga thrashings ay palaging masama.

Pa rin, sakit ipapasa kay Dez; Tiyak na nakakuha ako ng ilang mga kagiliw-giliw na katanungan.

Dez Blanchfield: Salamat, oo, ginagawa ko. Pupunta ako sa iyo sa hindi pagtapon ng mga programmer sa ilalim ng bus. Ibig kong sabihin, ginugol ni Ive ng maraming taon sa buhay ko ang pagiging isang coder sa aking sarili, sa bawat antas, alam mo, alinman sa sinabi mo, nakaupo sa command line ng Unix machine, at sa ilang mga kaso, nasangkot din ako sa isang ilang mga iba't ibang mga port ng Unix mula sa isang platform ng hardware papunta sa isa pa. At maiisip mo ang mga hamon na mayroon kami doon. Ngunit ang katotohanan ay kanya-kanya na get-out-of-jail card para sa bawat coder at scripter sa mundo. Ito ay isang agham na rocket, na literal, upang magsulat ng talagang masikip sa bawat oras, sa lahat ng oras, ay isang agham na rocket. At ang mga kilalang kwento ng mga taong tulad nina Dennis Ritchie at Brian Kernahan na nagtatrabaho sa ilang piraso ng code nang nakapag-iisa at pagkatapos ay bumaling sa isang pagsusuri sa isang code ng pagsusuri sa isang kape at alamin ang nasulat nila nang eksakto sa parehong piraso ng code, sa eksaktong parehong programa, sa eksaktong sa parehong paraan. At ginawa nila ito sa C. Ngunit ang purist na antas ng programming ay umiiral nang bihirang.

Ang katotohanan ay sa isang pang-araw-araw na batayan, ang mga lamang ng 24 na oras sa isang araw, pitong araw sa isang linggo, at kailangan nating gawin. At sa gayon, pagdating sa hindi lamang tradisyunal na programmer, ang mga DBA, at mga coder, at mga script, at sysadmin, at mga admin ng network, at kawani ng seguridad, at lahat ng paraan hanggang sa data ng mamamayan sa mga araw na ito; naririnig namin, ang bawat araw ay sinusubukan lamang gawin ang kanilang trabaho. At sa palagay ko ang mahusay na pag-alis mula sa buong bagay na ito ay mahal ko ang iyong demo at mahal ko ang takeaway na iniwan mo kami doon, sandali lang, nakikipag-usap kay Robin tungkol sa katotohanan na mayroon itong isang partikular - marahil hindi masyadong isang angkop na lugar - ngunit isang malawak na puwang na nalalapat sa, tulad ng pag-aayos ng code at SQL at mga database. Ngunit nasasabik talaga ako nang marinig mong sabihin na maaari mong sundin ito sa isang script ng shell at makahanap ng ilang mga isyu, dahil alam mo, sa mga araw na ito at edad ay palaging nagtatrabaho sa pinakamababang gastos sa lahat.

Ang dahilan na maaari kang bumili ng isang $ 6 na shirt sa isang lugar, ay dahil ang isang tao na nagtayo ng isang sistema ng murang sapat upang aktwal na gumawa at magpadala at mag logistically naghahatid at magbenta at tingi at kumuha ng online na pagbabayad upang makuha ang $ 6 na shirt. At hindi iyon mangyayari kung nakuha mo ang mga tao na binayaran $ 400,000 sa isang taon upang magsulat ng code sa perpektong paraan; ang buong pag-unlad nito. Kaya, sa puntong iyon, hulaan ko ang isa sa mga tanong na mahal ka talaga ng Id na bigyan mo lang kami ng higit pang pananaw, kung ano ang lawak at pag-abot ng uri ng mga taong nakikita mo sa kasalukuyan na nagtataglay ng mga ganitong uri ng mga tool upang mag-profile ng isang code at hitsura para sa mga isyu sa pagganap? Sa una, sa kasaysayan, saan sila nanggaling? Sila ba ang naging malaking bahay ng engineering? At pagkatapos, pasulong, ito ba ang kaso, tama ba ako sa pag-iisip na mas maraming mga kumpanya ang nagpapatupad ng tool na ito, o mga tool na ito, upang subukan at tulungan ang mga coder, na alam nila kung sino ang nagsisimula pa lamang gawin ang mga bagay upang matapos ang trabaho at mailabas ito sa pintuan? At kung minsan kailangan ba natin ng get-out-of-jail card? Tama ba ako sa pag-iisip na ang kasaysayan ay mayroon kaming isang mas pokus at pag-unlad sa engineering? Na ngayon, nakakakuha ng mas kaunti, tulad ng sinabi ni Robin, diskarte sa akademiko, at ngayon itinuro sa sarili, o cut-and-paste code, o mabuo lamang ang mga bagay? At tumutugma ba ito sa uri ng mga taong kumukuha ng produkto ngayon?

Bert Scalzo: Oo eksakto. At ang sakit ay nagbibigay sa iyo ng isang napaka tukoy na halimbawa, nais lamang namin upang makagawa ang trabaho, maging sanhi ng mga taong walang negosyo na nais ang pagiging perpekto. Ang uri nito tulad ng isang computerized chess game: ang chess game ay hindi naghahanap ng perpektong sagot; ito ay naghahanap para sa isang sagot na sapat na sapat sa isang makatwirang halaga ng oras, kaya kung paano namin programa. Ngunit kung ano ang hinahanap ko ngayon, ang karamihan sa mga tao sa halip na sabihin na nais nila ang isang profiler bilang bahagi ng kanilang pagsusuri sa yunit - kung saan ay kung paano ko ito gagawin, sanhi hindi ko ito nakikita bilang isang pag-aaksaya ng panahon - kung ano ang nangyayari ngayon na ginagawa mamaya, kung minsan, sa pagsasama ng pagsubok o pagsubok sa stress, kung masuwerteng. Ngunit sa karamihan ng mga oras na bahagi nito ng isang pagdaragdag, kung saan ang mga araw na napunta sa produksyon, tumakbo ito ng ilang sandali, marahil kahit na tumakbo nang maraming taon, at ngayon hindi ito tumatakbo nang maayos, at ngayon ay mahusay itong profile. At iyon ay tila ang mas karaniwang senaryo ngayon.

Dez Blanchfield: Oo, at sa palagay ko ang salitang "teknikal na utang" ay marahil isa sa higit sa pamilyar sa; Alam kong si Robin at tiyak na ako. Sa palagay ko mga araw na ito, lalo na sa mga maliksi na pamamaraan sa pagbuo at pagbuo ng system, sa akin, ang konsepto ng mga teknikal na utang ngayon ay isang tunay na bagay, at aktwal nating ginagampanan ito sa mga proyekto. Alam ko, ang ibig kong sabihin, nakuha namin ang aming sariling mga proyekto tulad ng mga Lens ng Media at iba pa, kung saan nakuha namin ang coding na nangyayari sa pang araw-araw, at iba't ibang mga bagay sa buong Bloor Group. At sa tuwing may pagtatayo ng isang bagay, uri kami ng pagtingin, tinitingnan ko ito, at palaging tinitingnan mula sa punto ng pananaw kung ano ang magastos sa akin upang ayusin ito ngayon, kumpara maaari ko bang makuha ito sa lata at ilabas mo roon, at pagkatapos ay panoorin at tingnan kung ang mga bagay na ito ay masisira. At magmana sa teknikal na pagkakautang na alam kong may sakit na ibalik sa bandang huli at ayusin.

At ang ibig kong sabihin, nagawa ni Ive na sa huling pitong araw: Sumulat si Ive ng ilang mga tool at script, isinulat ni Ive ang isang piraso ng wika ng Python, at inilagay ito ni Ive sa likuran ng Mongo, na tinitiyak nito na maganda at malinis at ligtas, ngunit nakakakuha lamang ito ng query na kailangan kong gawin, alam na kailangan ko ang pagpapaandar na iyon upang magtrabaho, upang makarating sa mas malaking palaisipan; na kung saan ang aking tunay na sakit. At sa gayon ikaw ay nagkakaroon ng teknikal na utang na ito, at sa palagay ko ito ay hindi lamang isang paminsan-minsang bagay, sa palagay ko ito ay bahagi ng DNA ng pagbuo ngayon. Ang mga tao lang - hindi disingenuously - tinatanggap lamang nila ang mga teknikal na utang ay isang normal na uri ng isyu ng modus operandi, at kailangan lamang nila itong mabigyan. Nito kung saan nagkakaroon ka ng teknikal na utang. At sa palagay ko ang mahusay na bagay tungkol sa kung ano ang ipinakita mo sa amin sa demo ay maaari mong literal na mag-profile at panoorin kung gaano katagal ang isang bagay na tumatakbo. At iyon ay maaaring isa sa aking mga paboritong bagay. Ibig kong sabihin, nagtayo talaga si Ive ng mga tool sa pag-profile - ginamit namin upang magtayo ng mga tool sa Sed at Lex at Orc upang patakbuhin ang aming code at makita kung nasaan ang mga loop, bago magagamit ang mga tool - at kapag ikaw ay nagtayo ng code upang pumunta at suriin ang iyong sariling code , makakakuha ka ng napakahusay na hindi na kailangang suriin ang iyong sariling code. Ngunit hindi iyon ang kaso ngayon. Sa pag-iisip, mayroon bang isang partikular na segment ng merkado na tumatagal ng higit pa kaysa sa iba pa? Nakakakita ng isang misa—

Bert Scalzo: Oh oo, nakuha ko - Pupunta ako upang gumuhit ng isang pagkakatulad para sa iyo, at ipakita sa iyo na ang mga hindi programmer ay ginagawa ito sa lahat ng oras. Sanhi kung Ako ay nagtuturo ng isang debugger at klase ng profile o session, Masasabihan ko ang mga tao, "OK, gaano karaming mga tao ang pumapasok sa Microsoft Word at hindi sinasadya na hindi gumagamit ng spell checker?" alam nating lahat na makakagawa tayo ng mga pagkakamali sa Ingles, at sa gayon ginagamit ng lahat ang spell checker. At sinabi ko, "Well, paano darating kapag ikaw ay sumulat sa iyong IDE tulad ng Visual Basic, hindi mo ginagamit ang debugger? Ang parehong bagay, tulad ng isang spell checker. "

Dez Blanchfield: Oo, talaga, iyon ay isang mahusay na pagkakatulad. Hindi ko talaga naisip, kailangan kong aminin na talagang gumagawa ako ng isang katulad na isang pares ng mga tool na ginagamit ko. Sa katunayan, ang isa, ODF, ang paborito ko kasama ang Eclipse ay pinutol lamang at i-paste ang code doon at pumunta ng paghahanap ng mga bagay na ipinapakita lamang kaagad at napagtanto na gumawa ako ng isang typo sa ilang tawag sa klase. At, ngunit ang kagiliw-giliw na ngayon sa tool na tulad nito maaari mong gawin ito sa totoong oras kumpara sa pagbabalik at tiningnan ito sa ibang pagkakataon, na uri ng masarap na mahuli ito. Ngunit oo, iyon ay isang mahusay na pagkakatulad ng paglalagay lamang sa isang processor ng salita, maging sanhi ng isang kagiliw-giliw na pagising na tawag na iyon, napagtanto lamang na gumawa ka ng ilang mga typo o kahit na isang error sa grammar, di ba?

Bert Scalzo: Eksakto.

Dez Blanchfield: Kaya, nakikita mo ba ang higit pa sa isang pag-aalsa mula sa palagay ko, ang ibig kong sabihin, ang pangwakas na tanong mula sa akin, bago ko itapon sa aming Q&A marahil, para sa aming mga dadalo. Kung bibigyan ka ng ilang uri ng rekomendasyon sa paligid ng diskarte upang gawin ito - Akala ko ito ay retorika - ito ba ang kaso na maaga kang maipapatupad habang ikaw ay umuunlad, bago ka pa umuunlad? O ito ay ang kaso na nakararami kang nakakakuha ng gusali, gumagalaw, magtayo ng isang bagay pagkatapos ay papasok at profile ito? Inaasahan ko ang kaso nito na makapagsimula nang maaga at siguraduhing malinis ang iyong mga code. O ito ba ay isang kaso na dapat nilang isaalang-alang ang bahaging ito ng kanilang post-deploy?

Bert Scalzo: Sa isip, gagawin nila ito nang paitaas, ngunit dahil ang lahat ay nasa pagmamadali, nagmamadali na mundo kung saan nagawa nilang gawin ang mga bagay-bagay, malamang na hindi nila ito gagawin hanggang sa tumakbo sila sa isang problema sa pagganap na hindi nila kayang lutasin sa pamamagitan ng pagdaragdag ng higit pang mga CPU at memorya sa isang virtual machine.

Dez Blanchfield: Oo. Kaya, talagang nabanggit mo ang isang bagay na kawili-wili, kung kaya kong mabilis? Nabanggit mo bago na maaari itong patakbuhin mula sa kahit saan, at maaaring makipag-usap sa database sa likuran. Kaya komportable ito sa uri ng konsepto ng bimodal na pinag-uusapan natin ngayon, ng on-premise / off-premise cloud, sa pamamagitan ng mga hitsura ng mga bagay pati na rin, sa pagtatapos ng araw, kung maaari itong makipag-usap sa likurang dulo at makita ang code, wala talagang pakialam, di ba?

Bert Scalzo: Eksakto, oo, maaari mo itong patakbuhin sa ulap.

Dez Blanchfield: Napakahusay, sanhi ng palagay ko na uri ng kung saan pupunta ang aming bagong matapang na mundo. Kaya, Eric. Babalik ako sa iyo ngayon at makita na mayroon kaming ilang mga katanungan dito at nais kong manatili pa rin ang aming mga dadalo, kahit na lumipas ang oras.

Eric Kavanagh: Oo, theres ng ilang mga tao sa labas, Masamang gumawa lamang ng isang mabilis na puna: Bert, sa palagay ko na ang talinghaga, ang pagkakatulad na ibinigay mo sa paggamit ng spell check ay lantaran na maliwanag. Iyon ay karapat-dapat sa isang blog o dalawa, na lantaran, dahil ang isang mahusay na paraan upang i-frame ang con ng kung ano ang ginagawa mo, at kung gaano kahalaga ito, at kung paano ito dapat maging isang pinakamahusay na kasanayan upang gumamit ng isang debugger sa isang regular na batayan, di ba? Pusta ko na nakakakuha ka ng ilang mga ulo ng pagtango kapag itinapon mo ang isang iyon, di ba?

Bert Scalzo: Ganap, sanhi kung ano ang sinasabi ko sa kanila ay, "Bakit ako nagpapatakbo ng isang tseke ng spell sa aking mga dokumento? Ayaw kong mapahiya sa mga hangal na pagkakamali sa pagbaybay. "Well, ayaw nilang mapahiya sa mga hangal na pagkakamali sa coding!

Eric Kavanagh: Tama. Oo, naman. Buweno, ang mga tao, sinusunog ng isang oras at limang minuto dito, napakaraming salamat sa inyong lahat doon sa iyong oras at atensyon. Ginagawa namin ang pag-archive ng lahat ng mga web chat na ito, huwag mag-atubiling bumalik sa anumang oras at suriin ang mga ito. Pinakamahusay na lugar upang mahanap ang mga link na ito ay marahil sa techopedia.com, sa gayon ay idagdag pa ito sa listahang ito.

At kasama roon, ay mag-bid sa iyo ng paalam, mga tao. Muli, mahusay na trabaho, Bert, salamat sa aming mga kaibigan mula sa IDERA. Mahusay na makipag-usap sa iyo sa susunod, makipag-usap sa iyo sa susunod na linggo, sa katunayan. Ingat! Paalam.