Kuskure mafi ban kunya a cikin aikin shirye-shirye na (zuwa yanzu)

Kuskure mafi ban kunya a cikin aikin shirye-shirye na (zuwa yanzu)
Kamar yadda suke cewa, idan ba ku da kunya ga tsohon code ɗinku, to, ba ku girma a matsayin mai shirye-shirye - kuma na yarda da wannan ra'ayi. Na fara shirye-shirye don jin daɗi sama da shekaru 40 da suka gabata, kuma a cikin fasaha shekaru 30 da suka gabata, don haka ina da kurakurai da yawa. sosai. A matsayina na farfesa a kimiyyar kwamfuta, ina koya wa ɗalibaina koyi da kura-kurai—nasu, nawa, da sauransu. Ina ganin lokaci ya yi da zan yi magana game da kuskurena don kada in rasa tawali'u. Ina fatan za su zama masu amfani ga wani.

Wuri na uku - Microsoft C compiler

Malamin makaranta na ya yi imanin cewa Romeo da Juliet ba za a iya la'akari da bala'i ba saboda haruffan ba su da wani laifi mai ban tsoro - kawai sun yi wauta, kamar yadda matasa ya kamata. Ban yarda da shi ba a lokacin, amma a yanzu ina ganin tsabar hankali a ra'ayinsa, musamman dangane da shirye-shirye.

A lokacin da na kammala shekara ta biyu a MIT, ni matashi ne kuma ba ni da kwarewa, a rayuwa da kuma a cikin shirye-shirye. A lokacin rani, na shiga cikin Microsoft, a cikin ƙungiyar masu tarawa C. Da farko na yi abubuwa na yau da kullun kamar goyon bayan bayanan martaba, sannan aka ba ni amana da yin aiki a kan mafi kyawun ɓangaren mai tarawa (kamar yadda na yi tunani) - ingantawa na baya. Musamman, dole ne in inganta lambar x86 don maganganun reshe.

Na ƙudura don rubuta mafi kyawun lambar injin don kowane hali mai yuwuwa, na jefa kaina cikin tafkin da kaina. Idan yawan ƙimar ƙimar ya yi girma, na shigar da su teburin mika mulki. Idan suna da mai rarraba gama gari, na yi amfani da shi don sa teburin ya fi ƙarfin (amma idan za a iya yin rabon ta amfani da shi. bit motsi). Lokacin da duk ƙimar iko biyu ne, na yi wani ingantawa. Idan saitin dabi'u bai gamsar da sharadina ba, na raba shi zuwa lokuta masu ingantawa da yawa kuma na yi amfani da ingantaccen lambar da aka riga aka inganta.

Wani mafarki ne. Shekaru da yawa bayan haka aka gaya mini cewa mai shirye-shiryen da ya gaji code dina ya ƙi ni.

Kuskure mafi ban kunya a cikin aikin shirye-shirye na (zuwa yanzu)

Darasi da aka koya

Kamar yadda David Patterson da John Hennessy suka rubuta a cikin Gine-ginen Kwamfuta da Tsarin Tsarin Kwamfuta, ɗayan manyan ka'idodin gine-gine da ƙira shine gabaɗaya yin abubuwa suyi aiki da sauri da sauri.

Ƙaddamar da shari'o'in gama gari zai inganta aiki yadda ya kamata fiye da inganta lokuta masu wuyar gaske. Abin ban mamaki, shari'o'in gama gari galibi suna da sauƙi fiye da waɗanda ba kasafai ba. Wannan shawara mai ma'ana ta ɗauka cewa kun san ko wane irin shari'ar ake ɗaukar gama-gari - kuma wannan yana yiwuwa ne kawai ta hanyar aiwatar da gwaji da aunawa a hankali.

A cikin tsaro na, na yi ƙoƙarin gano yadda maganganun reshe suka kasance a aikace (kamar rassa nawa ne da kuma yadda ake rarraba ma'auni), amma a cikin 1988 wannan bayanin bai samu ba. Koyaya, bai kamata in ƙara lokuta na musamman ba a duk lokacin da mai tarawa na yanzu ya kasa samar da ingantacciyar lamba don misalin wucin gadi da na fito da shi.

Ina bukata in kira gogaggen mai haɓakawa kuma, tare da shi, kuyi tunani game da menene al'amuran gama gari kuma in magance su musamman. Zan rubuta ƙasa kaɗan, amma wannan abu ne mai kyau. Kamar yadda wanda ya kafa Stack Overflow Jeff Atwood ya rubuta, babban maƙiyin mai shirye-shirye shine mai shirin da kansa:

Na san kuna da kyakkyawar niyya, kamar yadda muke duka. Muna ƙirƙirar shirye-shirye kuma muna son rubuta lamba. Haka aka yi mu. Muna tsammanin cewa kowace matsala za a iya magance ta tare da tef ɗin bututu, ƙwanƙwasa na gida da tsutsa na lamba. Duk yadda yake wahalar da masu rikodin shigar da ita, mafi kyawun lambar ita ce lambar da ba ta wanzu. Kowane sabon layi yana buƙatar gyarawa da goyan baya, yana buƙatar fahimta. Lokacin da kuka ƙara sabon lambar, ya kamata ku yi haka tare da ƙin yarda da kyama saboda duk sauran zaɓuɓɓukan sun ƙare. Yawancin masu shirye-shirye suna rubuta lamba da yawa, suna mai da su abokan gaba.

Idan na rubuta mafi sauƙi lambar da ke rufe al'amuran gama gari, da zai kasance da sauƙin ɗaukakawa idan ya cancanta. Na bar barnar da babu wanda yake son magancewa.

Kuskure mafi ban kunya a cikin aikin shirye-shirye na (zuwa yanzu)

Wuri na biyu: talla a shafukan sada zumunta

Lokacin da nake aiki a Google akan tallan kafofin watsa labarun (tuna Myspace?), Na rubuta wani abu kamar wannan a 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)) {
  }
}

Masu shirye-shirye na iya ganin kuskure nan da nan: hujja ta ƙarshe yakamata ta zama j, ba i. Gwajin naúrar bai bayyana kuskuren ba, haka ma mai bita na bai bayyana ba. An yi wannan kaddamarwa, sai wata rana code dina ya je wurin uwar garken ya ci karo da dukkan kwamfutocin da ke cibiyar bayanai.

Babu wani abu mara kyau da ya faru. Babu wani abu da ya fashe ga kowa, saboda kafin ƙaddamar da duniya an gwada lambar a cikin cibiyar bayanai guda ɗaya. Sai dai idan injiniyoyin SRE sun daina buga wasan billiard na ɗan lokaci kuma sun ɗan yi birgima. Washegari na sami imel tare da juji mai haɗari, na gyara lambar kuma na ƙara gwaje-gwajen naúrar da za su bayyana kuskuren. Tunda na bi ka'idar - in ba haka ba lambara za ta kasa aiki kawai - babu wasu matsaloli.

Kuskure mafi ban kunya a cikin aikin shirye-shirye na (zuwa yanzu)

Darasi da aka koya

Mutane da yawa suna da tabbacin cewa irin wannan babban kuskuren ba shakka zai sa a kori mai laifi, amma wannan ba haka ba ne: na farko, duk masu shirya shirye-shirye suna yin kuskure, na biyu kuma, ba kasafai suke yin kuskuren sau biyu ba.

A gaskiya, ina da abokin shirye-shirye wanda ƙwararren injiniya ne kuma an kore ni don yin kuskure guda ɗaya. Bayan haka, an dauke shi aiki a Google (kuma ba da daɗewa ba) ya yi magana game da kuskuren da ya yi a cikin wata hira, kuma ba a yi la'akari da shi ba.

Shi ke nan gaya game da Thomas Watson, babban shugaban IBM:

An sanar da wani odar gwamnati na kimanin dala miliyan daya. Kamfanin IBM - ko kuma wajen, Thomas Watson Sr. da kansa - ya so ya samu. Abin takaici, wakilin tallace-tallace ya kasa yin wannan kuma IBM ya rasa tayin. Kashegari, wannan ma'aikaci ya shigo ofishin Mista Watson ya sanya ambulan a kan teburinsa. Mista Watson bai ko damu ya kalle shi ba - yana jiran ma'aikaci kuma ya san cewa wasikar murabus ce.

Watson ta tambayi me ya faru.

Wakilin tallace-tallace ya yi magana dalla-dalla game da ci gaba da tayin. Ya ambaci kurakuran da aka yi da za a iya kaucewa. A ƙarshe, ya ce, “Malam Watson, na gode da ka ba ni bayani. Na san nawa muke buƙatar wannan odar. Na san muhimmancinsa,” sannan ya shirya ya tafi.

Watson ya matso kusa da shi a bakin kofa, ya dube shi cikin idanunsa sannan ya mayar da ambulan tare da cewa: “Ta yaya zan iya barin ka ka tafi? Na saka dala miliyan daya kawai a cikin ilimin ku.

Ina da T-shirt da ke cewa: "Idan da gaske kuna koyo daga kurakurai, to na riga na zama jagora." A gaskiya, idan ya zo ga kurakurai, ni likita ne na kimiyya.

Wuri na farko: App Inventor API

Haƙiƙa munanan kurakurai suna shafar ɗimbin masu amfani, sun zama ilimin jama'a, suna ɗaukar lokaci mai tsawo don gyara, kuma waɗanda ba za su iya yin su ba. Babban kuskurena ya dace da duk waɗannan sharuɗɗan.

Mafi muni shine mafi kyau

na karanta rubutun Richard Gabriel game da wannan tsarin a cikin nineties a matsayin dalibi na digiri na biyu, kuma ina son shi sosai har na tambayi dalibai na. Idan ba ku tuna da shi da kyau, sake sabunta ƙwaƙwalwar ajiyar ku, ƙarami ne. Wannan rubutun ya bambanta sha'awar "samun daidai" da kuma "mafi muni shine mafi kyau" ta hanyoyi da yawa, ciki har da sauƙi.

Yadda ya kamata: zane ya kamata ya zama mai sauƙi a aiwatarwa da dubawa. Sauƙaƙan mahaɗin yana da mahimmanci fiye da sauƙin aiwatarwa.

Mafi muni, mafi kyau: zane ya kamata ya zama mai sauƙi a aiwatarwa da dubawa. Sauƙaƙan aiwatarwa ya fi mahimmanci fiye da sauƙi na dubawa.

Mu manta da wannan na minti daya. Abin takaici, na manta da shi tsawon shekaru da yawa.

Mai kirkirar App

Lokacin aiki a Google, ina cikin ƙungiyar Mai kirkirar App, ja-da-saukar da yanayin ci gaban kan layi don masu neman haɓaka Android. A shekarar 2009 ne, kuma mun yi gaggawar fitar da sigar alpha a cikin lokaci domin a lokacin rani mu sami damar yin manyan azuzuwan ga malaman da za su iya amfani da muhalli lokacin koyarwa a cikin bazara. Na ba da kai don aiwatar da sprites, mai ban sha'awa ga yadda nake rubuta wasanni akan TI-99/4. Ga wadanda ba su sani ba, sprite abu ne mai hoto mai nau'i biyu wanda zai iya motsawa da mu'amala da sauran abubuwan software. Misalai na sprites sun haɗa da jiragen ruwa, asteroids, marmara, da rackets.

Mun aiwatar da Inventor App mai dogaro da abu a cikin Java, don haka akwai tarin abubuwa a wurin. Tun da bukukuwa da sprites suna yin kama da juna, na ƙirƙiri ajin sprite mai ban sha'awa tare da kaddarorin (filaye) X, Y, Saurin (gudun) da Jagora (direction). Suna da hanyoyi iri ɗaya don gano karon juna, billa daga gefen allo, da sauransu.

Babban bambanci tsakanin ball da sprite shine abin da aka zana daidai - da'irar da aka cika ko raster. Tun lokacin da na fara aiwatar da sprites, yana da ma'ana don ƙayyade x- da y-coordinates na kusurwar hagu na sama na inda hoton yake.

Kuskure mafi ban kunya a cikin aikin shirye-shirye na (zuwa yanzu)
Da zarar sprites suna aiki, sai na yanke shawarar cewa zan iya aiwatar da abubuwan ball tare da ƙaramin lamba. Matsalar kawai ita ce na ɗauki hanya mafi sauƙi (daga ma'anar mai aiwatarwa), yana nuna x- da y-coordinates na kusurwar hagu na sama na kwane-kwane da ke tsara ƙwallon.

Kuskure mafi ban kunya a cikin aikin shirye-shirye na (zuwa yanzu)
A haƙiƙa, ya zama dole a nuna x- da y-coordinates na cibiyar da'irar, kamar yadda aka koyar a cikin kowane littafin ilimin lissafi da duk wani tushe da ya ambaci da'ira.

Kuskure mafi ban kunya a cikin aikin shirye-shirye na (zuwa yanzu)
Ba kamar kurakuran da na yi a baya ba, wannan ya shafi ba abokan aiki na kawai ba, har ma miliyoyin masu amfani da App Inventor. Yawancinsu yara ne ko kuma sabbin shirye-shirye. Dole ne su yi matakan da ba dole ba yayin aiki akan kowane aikace-aikacen da ƙwallon yake ciki. Idan na tuna da sauran kurakurai na da dariya, to wannan yana sa ni gumi har yau.

A ƙarshe na yi macijin wannan kwaro kwanan nan, bayan shekaru goma. “Patched”, ba “kafaffen” ba, domin kamar yadda Joshua Bloch ya ce, APIs madawwama ne. Rashin iya yin canje-canjen da zai shafi shirye-shiryen da ake da su, mun ƙara kayan OriginAtCenter tare da ƙimar ƙarya a cikin tsoffin shirye-shirye kuma gaskiya a duk masu zuwa. Masu amfani na iya yin tambaya mai ma'ana: wanda har ma yayi tunanin sanya wurin farawa a wani wuri banda cibiyar. Ga wa? Zuwa ga mai tsara shirye-shirye wanda ya yi kasala don ƙirƙirar API na yau da kullun shekaru goma da suka wuce.

Darussan Da Aka Koyi

Lokacin aiki akan APIs (wanda kusan kowane mai shirye-shirye dole ne ya yi wani lokaci), ya kamata ku bi mafi kyawun shawara da aka zayyana a cikin bidiyon Joshua Bloch "Yadda ake ƙirƙirar API mai kyau kuma me yasa yake da mahimmanci"Ko a cikin wannan gajeren jeri:

  • API ɗin na iya kawo muku fa'ida mai girma da lahani mai girma.. API mai kyau yana haifar da maimaita abokan ciniki. Mummunan ya zama mafarki na har abada.
  • APIs na jama'a, kamar lu'u-lu'u, suna dawwama har abada. Ka ba shi duka: ba za a taɓa samun wata dama don yin komai daidai ba.
  • Abubuwan API ɗin yakamata su kasance taƙaice - shafi ɗaya tare da sa hannu da sa hannun ajin da hanya, wanda bai wuce layi ba. Wannan zai ba ku damar sake fasalin API ɗin cikin sauƙi idan bai zama cikakke a karon farko ba.
  • Bayyana lokuta masu amfanikafin aiwatar da API ko ma aiki akan ƙayyadaddun sa. Ta wannan hanyar za ku guje wa aiwatarwa da ƙayyade API ɗin gaba ɗaya mara aiki.

Idan da na rubuta ko da ɗan gajeren taƙaitaccen bayani tare da rubutun wucin gadi, da alama zan gano kuskuren kuma in gyara shi. Idan ba haka ba, to tabbas ɗaya daga cikin abokan aikina zai yi hakan. Duk wani yanke shawara da ke da sakamako mai nisa yana buƙatar yin tunani game da shi na aƙalla yini ɗaya (wannan ya shafi ba kawai ga shirye-shirye ba).

Taken rubutun Richard Gabriel, “Mafi Muni Yafi Kyau,” yana nufin fa’idar da ke zuwa kasuwa ta farko-har da samfurin da bai dace ba—yayin da wani ya keɓe madawwami yana bibiyar cikakken. Tunani akan lambar sprite, na gane cewa ba ma sai na rubuta ƙarin lambar don samun daidai ba. Duk abin da mutum zai ce, na yi kuskure sosai.

ƙarshe

Masu shirye-shirye suna yin kuskure a kowace rana, ko suna rubuta buggy code ko kuma ba sa son gwada wani abu da zai inganta fasaha da haɓaka aikin su. Tabbas, za ku iya zama mai shirya shirye-shirye ba tare da yin manyan kurakurai kamar yadda na yi ba. Amma ba zai yuwu ka zama mai tsara shirye-shirye ba tare da sanin kurakuranka da koyi da su ba.

A koyaushe ina saduwa da ɗalibai waɗanda suke jin kamar sun yi kurakurai da yawa don haka ba a yanke su don shirye-shirye. Na san yadda ciwon impostor ya zama ruwan dare a cikin IT. Ina fatan za ku koyi darussan da na lissafta - amma ku tuna babban abu: kowannenmu yana yin kuskure - abin kunya, ban dariya, mai ban tsoro. Zan yi mamaki da damuwa idan a nan gaba ba ni da isasshen kayan da zan ci gaba da labarin.

source: www.habr.com

Add a comment