ʻO nā hewa hilahila loa i kaʻu ʻoihana papahana (i kēia manawa)

ʻO nā hewa hilahila loa i kaʻu ʻoihana papahana (i kēia manawa)
E like me kā lākou e ʻōlelo nei, inā ʻaʻole ʻoe e hilahila i kāu code kahiko, a laila ʻaʻole ʻoe e ulu nei ma ke ʻano he polokalamu - a ʻae wau i kēia manaʻo. Ua hoʻomaka wau i ka hoʻolālā ʻana no ka leʻaleʻa ma mua o 40 mau makahiki i hala aku nei, a ma ka ʻoihana 30 mau makahiki i hala aku nei, no laila ua nui kaʻu mau hewa. nui loa. Ma ke ʻano he polopeka ʻepekema lolouila, aʻo wau i kaʻu mau haumāna e aʻo mai nā hewa—ʻo kā lākou, koʻu, a me nā mea ʻē aʻe. Manaʻo wau ʻo ka manawa kēia e kamaʻilio ai i kaʻu mau hewa i ʻole e nalowale koʻu haʻahaʻa. Manaʻo wau e pono lākou i kekahi.

Wahi ʻekolu - Microsoft C compiler

Ua manaʻo koʻu kumu kula ʻaʻole hiki ke manaʻo ʻia ʻo Romeo lāua ʻo Juliet he pōʻino no ka mea ʻaʻohe hewa pōʻino o nā kiʻi - ua hana naʻaupō wale lākou, e like me ka poʻe ʻōpio. ʻAʻole wau i ʻae me ia i kēlā manawa, akā i kēia manawa ke ʻike nei au i kahi ʻano o ka noʻonoʻo i kona manaʻo, ʻoi loa i ka pili ʻana i ka papahana.

I ka pau ʻana o kaʻu makahiki ʻelua ma MIT, he ʻōpio wau a ʻike ʻole, ma ke ola a me ka papahana. I ke kauwela, ua hoʻokomo au ma Microsoft, ma ka hui C compiler. I ka wā mua, hana wau i nā mea maʻamau e like me ke kākoʻo profiling, a laila ua hāʻawi ʻia iaʻu e hana i ka ʻāpana leʻaleʻa o ka mea hoʻopili (e like me kaʻu i manaʻo ai) - backend optimization. ʻO ka mea kūikawā, pono wau e hoʻomaikaʻi i ka code x86 no nā ʻōlelo lālā.

Ua hoʻoholo wau e kākau i ka code mīkini maikaʻi loa no kēlā me kēia hihia hiki, ua hoʻolei wau iaʻu iho i loko o ke poʻo poʻo. Inā kiʻekiʻe ka puʻupuʻu o nā waiwai, ua hoʻokomo wau iā lākou papa hoʻololi. Inā loaʻa iā lākou kahi mahele maʻamau, hoʻohana wau ia e hoʻopaʻa paʻa i ka papaʻaina (akā inā hiki ke hana ʻia ka mahele me ka hoʻohana ʻana. hoʻololi iki). I ka mana o nā waiwai a pau, ua hana au i kahi optimization hou. Inā ʻaʻole i hoʻokō ka hoʻonohonoho waiwai i kaʻu mau kūlana, ua hoʻokaʻawale wau iā ia i nā hihia optimizable a hoʻohana i ke code i hoʻopaʻa ʻia.

He moeʻuhane. Ma hope o nā makahiki he nui, ua haʻi ʻia iaʻu ua inaina mai ka mea programmer nāna i hoʻoili i kaʻu code.

ʻO nā hewa hilahila loa i kaʻu ʻoihana papahana (i kēia manawa)

Haʻawina i aʻo ʻia

E like me kā David Patterson lāua ʻo John Hennessy i kākau ai ma Computer Architecture and Computer Systems Design, ʻo kekahi o nā kumu nui o ka hoʻolālā ʻana a me ka hoʻolālā ʻana ʻo ia ka hana maʻamau i nā mea e like me ka hiki.

ʻO ka wikiwiki ʻana i nā hihia maʻamau e hoʻomaikaʻi maikaʻi i ka hana ma mua o ka hoʻopaʻa ʻana i nā hihia kakaʻikahi. ʻO ka mea hoʻohenehene, ʻoi aku ka maʻalahi o nā hihia maʻamau ma mua o nā mea liʻiliʻi. Manaʻo kēia ʻōlelo aʻoaʻo e ʻike ʻoe i ka hihia i manaʻo ʻia he mea maʻamau - a hiki wale kēia ma o ke kaʻina o ka hoʻāʻo a me ke ana ʻana.

I koʻu pale ʻana, ua hoʻāʻo wau e noʻonoʻo i ke ʻano o nā ʻōlelo lālā i ka hoʻomaʻamaʻa (e like me ka nui o nā lālā a me ke ʻano o ka puʻunaue ʻana i nā mea mau), akā i ka makahiki 1988 ʻaʻole i loaʻa kēia ʻike. Eia naʻe, ʻaʻole pono iaʻu e hoʻohui i nā hihia kūikawā i kēlā me kēia manawa ʻaʻole hiki i ka mea hōʻuluʻulu o kēia manawa ke hoʻopuka i nā code maikaʻi loa no ke kumu hoʻohālike aʻu i hele mai ai.

Pono wau e kāhea i kahi mea hoʻomohala ʻike a, me ia, e noʻonoʻo e pili ana i nā hihia maʻamau a pili pono iā lākou. E kākau au i nā code liʻiliʻi, akā he mea maikaʻi kēlā. E like me ka mea nāna i hoʻokumu ʻo Stack Overflow ʻo Jeff Atwood i kākau ai, ʻo ka ʻenemi maikaʻi loa o ka mea polokalamu polokalamu ʻo ia ka mea papahana.

ʻIke wau he mau manaʻo maikaʻi loa kāu, e like me mākou a pau. Hana mākou i nā papahana a makemake mākou e kākau i nā code. Pēlā mākou i hana ʻia ai. Manaʻo mākou e hiki ke hoʻoponopono ʻia kekahi pilikia me ka duct tape, kahi koʻokoʻo homemade a me kahi kiko o ke code. E like me ka ʻeha o nā coders e ʻae iā ia, ʻo ka code maikaʻi loa ke code ʻaʻole i loaʻa. Pono kēlā me kēia laina hou i ka debugging a me ke kākoʻo, pono e hoʻomaopopo ʻia. Ke hoʻohui ʻoe i ke code hou, pono ʻoe e hana pēlā me ka makemake ʻole a me ka huhū no ka mea ua pau nā koho ʻē aʻe. Nui nā polokalamu polokalamu e kākau i nā code he nui, e lilo ia i ʻenemi no mākou.

Inā wau i kākau i ka code maʻalahi i uhi i nā hihia maʻamau, ʻoi aku ka maʻalahi o ka hoʻonui inā pono. Ua haʻalele au i kahi haunaele ʻaʻohe mea i makemake e hana.

ʻO nā hewa hilahila loa i kaʻu ʻoihana papahana (i kēia manawa)

ʻO ka lua: hoʻolaha ma nā pūnaewele kaiaulu

I koʻu hana ʻana ma Google ma ka hoʻolaha pāʻoihana kaiapili (e hoʻomanaʻo iā Myspace?), Ua kākau wau i kekahi mea e like me kēia ma 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)) {
  }
}

Hiki i nā polokalamu polokalamu ke ʻike koke i ka hewa: ʻo ka hoʻopaʻapaʻa hope he j, ʻaʻole i. ʻAʻole hōʻike ka hoʻāʻo ʻana i ka hewa, a ʻaʻole hoʻi kaʻu loiloi. Ua hoʻokō ʻia ka hoʻomaka ʻana, a i hoʻokahi pō ua hele aku kaʻu code i ke kikowaena a hāʻule i nā kamepiula āpau i ke kikowaena data.

ʻAʻohe mea ʻino. ʻAʻohe mea i haki no kekahi, no ka mea ma mua o ka hoʻomaka ʻana o ka honua ua hoʻāʻo ʻia ke code i loko o kahi kikowaena data. Inā ʻaʻole i hoʻōki ka ʻenekinia SRE i ka pāʻani pila no kekahi manawa a hana i kahi rollback liʻiliʻi. I ke kakahiaka aʻe ua loaʻa iaʻu kahi leka uila me ka crash dump, hoʻoponopono i ke code a hoʻohui i nā hoʻāʻo ʻāpana e hopu ai i ka hewa. No koʻu hahai ʻana i ka protocol - inā ʻaʻole e holo kaʻu code - ʻaʻohe pilikia ʻē aʻe.

ʻO nā hewa hilahila loa i kaʻu ʻoihana papahana (i kēia manawa)

Haʻawina i aʻo ʻia

Manaʻo ka poʻe he nui ka hewa nui o ka hoʻokuʻu ʻana i ka mea hewa, akā ʻaʻole pēlā: ʻo ka mea mua, hana hewa nā mea polokalamu a pau, a ʻo ka lua, ʻaʻole lākou e hana i ka hewa like ʻelua.

ʻO kaʻoiaʻiʻo, loaʻa iaʻu kahi hoaaloha programmer he ʻenekinia akamai a ua hoʻopau ʻia no ka hana hewa hoʻokahi. Ma hope o kēlā, ua hoʻolimalima ʻia ʻo ia ma Google (a hoʻolaha koke ʻia) - ua ʻōlelo ʻoiaʻiʻo ʻo ia e pili ana i ka hewa āna i hana ai ma kahi ninaninau, ʻaʻole i manaʻo ʻia he make.

ʻO ia ka mea hai aku e pili ana iā Thomas Watson, ke poʻo kaulana o IBM:

Ua hoʻolaha ʻia kahi kauoha aupuni ma kahi o hoʻokahi miliona kālā. IBM Corporation - a i ʻole, ʻo Thomas Watson Sr. ponoʻī - makemake maoli e kiʻi iā ia. ʻO ka mea pōʻino, ʻaʻole hiki i ka mea kūʻai aku ke hana i kēia a ua nalowale ʻo IBM. I kekahi lā aʻe, ua komo kēia limahana i loko o ke keʻena o Mr. Watson a kau i kahi envelopp ma luna o kāna pākaukau. ʻAʻole ʻo Mr. Watson i ʻoluʻolu e nānā iā ia - e kali ana ʻo ia i kahi limahana a ʻike ʻo ia he leka haʻalele.

Ua nīnau ʻo Watson i ka mea i hewa.

Ua kamaʻilio nui ka luna kūʻai e pili ana i ka holomua o ka tender. Ua kapa ʻo ia i nā hewa i hiki ke pale ʻia. ʻO ka hope, ʻōlelo ʻo ia, “Mr. Watson, mahalo iā ʻoe no kou ʻae ʻana iaʻu e wehewehe. ʻIke wau i ka nui o kā mākou makemake i kēia kauoha. Ua ʻike wau i kona koʻikoʻi," a mākaukau e haʻalele.

Ua hoʻokokoke ʻo Watson iā ia ma ka puka, nānā iā ia ma nā maka a hoʻihoʻi i ka envelopp me nā huaʻōlelo: “Pehea wau e hoʻokuʻu ai iā ʻoe e hele? Ua hoʻokomo wale au i hoʻokahi miliona kālā i kāu hoʻonaʻauao.

He T-shirt kaʻu e ʻōlelo nei: "Inā ʻoe e aʻo maoli mai nā hewa, a laila ua haku wau." ʻOiaʻiʻo, i ka wā e pili ana i nā hewa, he kauka ʻepekema wau.

Kahi mua: App Inventor API

Hoʻopilikia maoli nā hewa weliweli i ka nui o nā mea hoʻohana, lilo i ʻike lehulehu, lōʻihi ka manawa e hoʻoponopono ai, a hana ʻia e ka poʻe i hiki ʻole ke hana. ʻO kaʻu hewa nui i kūpono i kēia mau pae hoʻohālike.

ʻO kaʻinoʻoi aku ka maikaʻi

Heluhelu au ʻatikala na Richard Gabriel e pili ana i kēia ʻano hana i ka makahiki kanaiwa ma ke ʻano he haumāna puka, a makemake nui wau ia mea a nīnau wau i kaʻu mau haumāna. Inā ʻaʻole ʻoe e hoʻomanaʻo maikaʻi, e hōʻoluʻolu i kou hoʻomanaʻo, he liʻiliʻi. Hoʻohālikelike kēia ʻatikala i ka makemake e "hoʻokō pono" a ʻo ke ala "ʻoi aku ka maikaʻi" ma nā ʻano he nui, me ka maʻalahi.

Pehea e pono ai: e maʻalahi ka hoʻolālā i ka hoʻokō a me ka interface. ʻOi aku ka nui o ka maʻalahi ma mua o ka maʻalahi o ka hoʻokō.

ʻO kaʻino,ʻoi aku ka maikaʻi: pono e maʻalahi ka hoʻolālā i ka hoʻokō a me ka pilina. ʻOi aku ka nui o ka maʻalahi o ka hoʻokō ma mua o ka maʻalahi o ka interface.

E poina kāua no hoʻokahi minute. ʻO ka mea pōʻino, ua poina iaʻu no nā makahiki he nui.

Mea Hana Hana

ʻOiai e hana ana au ma Google, he ʻāpana au o ka hui Mea Hana Hana, he kaiapuni hoʻomohala pūnaewele huki a hāʻule no nā mea hoʻomohala Android. ʻO 2009 ia, a ua wikiwiki mākou e hoʻokuʻu i ka alpha alpha i ka manawa i hiki ai i ke kauwela ke mālama i nā papa kumu no nā kumu hiki ke hoʻohana i ke kaiapuni i ke aʻo ʻana i ka hāʻule. Ua hāʻawi manawaleʻa wau e hoʻokō i nā sprites, nostalgic no ke ʻano o kaʻu kākau ʻana i nā pāʻani ma ka TI-99/4. No ka poʻe ʻike ʻole, ʻo ka sprite he mea kiʻi ʻelua ʻāpana hiki ke neʻe a launa pū me nā mea lako polokalamu ʻē aʻe. ʻO nā laʻana o nā sprites e pili ana i nā moku ākea, asteroids, marbles, a me nā rackets.

Ua hoʻokō mākou i ka App Inventor e pili ana i nā mea i Java, no laila aia kahi pūʻulu o nā mea i laila. Ma muli o ka hana like ʻana o nā pōpō a me nā sprites, ua hana au i kahi papa sprite abstract me nā waiwai (mau kahua) X, Y, Speed ​​​​(speed) a me Heading (direction). Loaʻa iā lākou nā ʻano like no ka ʻike ʻana i nā hui ʻana, ka hoʻokuʻi ʻana mai ka lihi o ka pale, etc.

ʻO ka ʻokoʻa nui ma waena o ka pōpō a me ka sprite ka mea i huki ʻia - kahi pōʻai piha a i ʻole raster. Ma muli o koʻu hoʻokō mua ʻana i nā sprites, ua kūpono ke kuhikuhi i nā x- a me y-coordinate o ka ʻaoʻao hema hema o kahi i loaʻa ai ke kiʻi.

ʻO nā hewa hilahila loa i kaʻu ʻoihana papahana (i kēia manawa)
I ka wā e hana ana nā sprites, ua hoʻoholo wau e hiki iaʻu ke hoʻokō i nā mea pōpō me ka liʻiliʻi liʻiliʻi. ʻO ka pilikia wale nō ʻo ia kaʻu i hele ai i ke ala maʻalahi loa (mai ka ʻike o ka mea hoʻokō), e hōʻike ana i nā x- a me y-coordinate o ka ʻaoʻao hema hema o ka contour e hoʻopili ana i ka pōpō.

ʻO nā hewa hilahila loa i kaʻu ʻoihana papahana (i kēia manawa)
ʻO ka ʻoiaʻiʻo, pono e hōʻike i nā x- a me y-coordinate o ke kikowaena o ka pōʻai, e like me ka mea i aʻo ʻia ma nā puke haʻawina makemakika a me nā kumu ʻē aʻe e haʻi ana i nā pōʻai.

ʻO nā hewa hilahila loa i kaʻu ʻoihana papahana (i kēia manawa)
ʻAʻole e like me kaʻu mau hewa i hala, ʻaʻole i pili kēia i kaʻu mau hoa hana, akā he miliona miliona o nā mea hoʻohana App Inventor. He poʻe kamaliʻi ka nui o lākou a i ʻole he mea hou loa i ka papahana. Pono lākou e hana i nā ʻanuʻu pono ʻole i ka wā e hana ai i kēlā me kēia noi i loaʻa ai ka pōleʻa. Inā hoʻomanaʻo wau i kaʻu mau hewa ʻē aʻe me ka ʻakaʻaka, a laila e hoʻoluhi mai iaʻu i kēia lā.

Ua hoʻopaʻa hope wau i kēia bug i kēia manawa, he ʻumi makahiki ma hope. "Patched", ʻaʻole "paʻa", no ka mea e like me kā Joshua Bloch i ʻōlelo ai, mau loa nā API. ʻAʻole hiki iā mākou ke hana i nā hoʻololi e pili ana i nā papahana e kū nei, ua hoʻohui mākou i ka waiwai OriginAtCenter me ka waiwai wahaheʻe i nā papahana kahiko a ʻoiaʻiʻo i nā polokalamu āpau e hiki mai ana. Hiki i nā mea hoʻohana ke nīnau i kahi nīnau kūpono: ʻo wai ka mea i manaʻo e kau i ka wahi hoʻomaka ma kahi ʻē aʻe ma mua o ke kikowaena. Iā wai? I kekahi mea polokalamu moloā loa i ka hana ʻana i API maʻamau he ʻumi makahiki i hala.

Nā haʻawina i aʻo ʻia

I ka hana ʻana i nā API (kahi kokoke i kēlā me kēia polokalamu polokalamu e hana i kekahi manawa), pono ʻoe e hahai i ka ʻōlelo aʻo maikaʻi loa i hōʻike ʻia ma ka wikiō a Joshua Bloch "Pehea e hana ai i kahi API maikaʻi a no ke aha he mea nui ia"a i ʻole ma keia papa inoa pokole:

  • Hiki i kahi API ke lawe mai iā ʻoe i ka pōmaikaʻi nui a me ka pōʻino nui.. Hoʻokumu kahi API maikaʻi i nā mea kūʻai hou. ʻO ka mea ʻino e lilo i kou moeʻuhane mau loa.
  • ʻO nā API lehulehu, e like me nā daimana, mau loa. Hāʻawi iā ʻoe a pau: ʻaʻohe manawa hou e hana pono i nā mea āpau.
  • Pono e pōkole nā ​​papa kuhikuhi API - hoʻokahi ʻaoʻao me nā pūlima papa a me ke ʻano a me nā wehewehe ʻana, ʻaʻole i ʻoi aku ma mua o kahi laina. E ʻae kēia iā ʻoe e hoʻoponopono hou i ka API inā ʻaʻole i kūpono ka manawa mua.
  • E wehewehe i nā hihia hoʻohanama mua o ka hoʻokō ʻana i ka API a i ʻole ka hana ʻana i kāna kikoʻī. Ma kēia ala e pale aku ai ʻoe i ka hoʻokō ʻana a me ka wehewehe ʻana i kahi API hana ʻole.

Inā wau i kākau i kahi hōʻuluʻulu pōkole me kahi ʻatikala artificial, ʻike paha wau i ka hewa a hoʻoponopono. Inā ʻaʻole, e hana maoli kekahi o koʻu mau hoa hana. Pono e noʻonoʻo ʻia kēlā me kēia hoʻoholo i loaʻa i nā hopena lōʻihi no ka liʻiliʻi o hoʻokahi lā (ʻaʻole pili kēia i ka polokalamu wale nō).

ʻO ke poʻo inoa o ka moʻolelo a Richard Gabriel, "ʻOi aku ka maikaʻi," e pili ana i ka pōmaikaʻi e hele mua i ka mākeke - ʻoiai me kahi huahana maikaʻi ʻole - aʻo kekahi e hoʻolilo i ka wā pau ʻole e alualu i ka mea kūpono. Ma ka noʻonoʻo ʻana i ke code sprite, ʻike wau ʻaʻole pono iaʻu e kākau i nā code hou aʻe e hoʻokō pono ai. ʻO kēlā me kēia mea e ʻōlelo mai ai, ua kuhihewa loa wau.

hopena

Hana hewa nā polokalamu polokalamu i kēlā me kēia lā, inā paha e kākau ana i nā code buggy a i ʻole makemake e hoʻāʻo i kahi mea e hoʻomaikaʻi ai i ko lākou mākaukau a me ka huahana. ʻOiaʻiʻo, hiki iā ʻoe ke lilo i mea polokalamu me ka hana ʻole i nā hewa koʻikoʻi e like me kaʻu i hana ai. Akā ʻaʻole hiki ke lilo i polokalamu polokalamu maikaʻi me ka ʻike ʻole i kāu mau hewa a aʻo mai iā lākou.

Kūleʻa mau wau i nā haumāna e manaʻo nei ua hana hewa lākou a no laila ʻaʻole ʻoki ʻia no ka hoʻolālā. ʻIke wau i ka maʻamau o ka maʻi hoʻopunipuni ma IT. Manaʻo wau e aʻo ʻoe i nā haʻawina aʻu i helu ai - akā e hoʻomanaʻo i ka mea nui: hana hewa kēlā me kēia - hilahila, ʻakaʻaka, weliweli. E kāhāhā a huhū au inā ʻaʻole lawa kaʻu mea e hiki mai ana e hoʻomau i ka ʻatikala.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka