Шармовартарин хатогиҳо дар касби барномасозии ман (то ҳол)

Шармовартарин хатогиҳо дар касби барномасозии ман (то ҳол)
Тавре ки мегӯянд, агар шумо аз коди кӯҳнаи худ шарм надоред, пас шумо ҳамчун барномасоз калон нестед - ва ман бо ин фикр розӣ ҳастам. Ман барномасозиро барои масхара зиёда аз 40 сол пеш ва аз ҷиҳати касбӣ 30 сол пеш оғоз кардам, аз ин рӯ ман хатогиҳои зиёде дорам. хеле зиёд. Ҳамчун профессори илмҳои компютерӣ ман ба донишҷӯёни худ таълим медиҳам, ки аз хатогиҳои худ, худам ва дигарон омӯзанд. Фикр мекунам, ваќти он расидааст, ки дар бораи хатоњоям њарф занам, то хоксориро аз даст надињам. Умедворам, ки онҳо ба касе муфид хоҳанд буд.

Ҷойи сеюм - компилятори Microsoft C

Муаллими мактаби ман бовар дошт, ки Ромео ва Ҷулеттаро фоҷиа ҳисобидан мумкин нест, зеро қаҳрамонҳо ягон гуноҳи фоҷиавӣ надоштанд - онҳо ҳамон тавре ки наврасон бояд беақл рафтор мекарданд. Ман он вақт бо ӯ розӣ набудам, аммо ҳоло дар андешаи ӯ як донаи оқилонаро мебинам, бахусус дар робита бо барномасозӣ.

Вақте ки ман соли дуюми худро дар MIT хатм кардам, ман ҳам дар зиндагӣ ва ҳам дар барномасозӣ ҷавон ва бетаҷриба будам. Дар тобистон ман дар Microsoft, дар гурӯҳи compiler C таҷрибаомӯзӣ кардам.Дар аввал ман корҳои муқаррариро ба мисли дастгирии профилсозӣ анҷом додам ва баъд ба ман супориш дода шуд, ки дар қисми ҷолибтарини компилятор кор кунам (чунон ки ман фикр мекардам) - optimization backend. Аз ҷумла, ман бояд рамзи x86-ро барои изҳороти филиал такмил диҳам.

Ман тасмим гирифтам, ки барои ҳар як ҳолати имконпазир рамзи оптималии мошинро нависам, ман худамро ба ҳавз партофтам. Агар зичии тақсимоти арзишҳо баланд бошад, ман онҳоро ворид кардам ҷадвали гузариш. Агар онҳо тақсимкунандаи умумӣ дошта бошанд, ман онро барои сахттар кардани ҷадвал истифода мебурдам (вале танҳо агар тақсимот бо истифода аз каме тағйир). Вақте ки ҳамаи арзишҳо қудрати ду буданд, ман оптимизатсияи дигар кардам. Агар маҷмӯи арзишҳо ба шароити ман ҷавобгӯ набошанд, ман онро ба якчанд ҳолатҳои оптимизатсияшуда тақсим кардам ва рамзи аллакай оптимизатсияшударо истифода мебарам.

Ин даҳшат буд. Пас аз чандин сол ба ман гуфтанд, ки барномасозе, ки рамзи маро мерос гирифтааст, аз ман нафрат дорад.

Шармовартарин хатогиҳо дар касби барномасозии ман (то ҳол)

Дарси омӯхташуда

Тавре ки Дэвид Паттерсон ва Ҷон Ҳеннесси дар меъмории компютерӣ ва тарҳрезии системаҳои компютерӣ менависанд, яке аз принсипҳои асосии меъморӣ ва тарроҳӣ ин аст, ки ба таври умум ҳарчи зудтар кор кунанд.

Суръат додани парвандаҳои умумӣ нисбат ба оптимизатсияи ҳолатҳои нодир самараноктар беҳтар хоҳад кард. Тааҷҷубовар аст, ки ҳолатҳои маъмулӣ одатан нисбат ба ҳолатҳои нодир соддатаранд. Ин маслиҳати мантиқӣ тахмин мекунад, ки шумо медонед, ки кадом ҳолат маъмул ҳисобида мешавад - ва ин танҳо тавассути раванди санҷиш ва андозагирии дақиқ имконпазир аст.

Дар химояи худ ман кушиш кардам, ки дар амалия чи гуна баёнияхои шоха доранд (масалан, чанд шоха мавчуданд ва константахо чи тавр таксим карда шудаанд), аммо соли 1988 ин маълумот дастрас набуд. Бо вуҷуди ин, ман набояд ҳолатҳои махсусро илова кунам, вақте ки компилятори ҷорӣ барои мисоли сунъӣ, ки ман таҳия кардам, рамзи оптималиро тавлид карда наметавонист.

Ба ман лозим буд, ки як таҳиягари ботаҷриба занг занам ва якҷоя бо ӯ дар бораи он, ки парвандаҳои маъмулӣ чӣ гунаанд, фикр кунам ва бо онҳо махсус кор кунам. Ман камтар код менависам, аммо ин кори хуб аст. Тавре ки муассиси Stack Overflow Ҷефф Атвуд навиштааст, душмани ашаддии барномасоз худи барномасоз аст:

Ман медонам, ки шумо ҳам мисли ҳамаи мо ниятҳои беҳтарин доред. Мо барномаҳо эҷод мекунем ва навиштани кодро дӯст медорем. Мо хамин тавр офарида шудаем. Мо фикр мекунем, ки ҳама гуна мушкилотро бо лента, асобачаи худсохт ва як рози код ҳал кардан мумкин аст. Ҳарчанд кодерҳоро эътироф кардан дарднок аст, беҳтарин код ин кодест, ки вуҷуд надорад. Ҳар як хати нав ба ислоҳ ва дастгирӣ ниёз дорад, онро фаҳмидан лозим аст. Вақте ки шумо рамзи нав илова мекунед, шумо бояд ин корро бо нохоҳамӣ ва нафрат кунед, зеро ҳамаи имконоти дигар тамом шудаанд. Бисёре аз барномасозон коди аз ҳад зиёд менависанд ва онро душмани мо мекунанд.

Агар ман рамзи соддатаре менависам, ки парвандаҳои маъмулиро дар бар мегирад, дар ҳолати зарурӣ навсозӣ кардан хеле осонтар мешуд. Ман дар паси худ бесарусомоние гузоштам, ки касе бо он мубориза бурдан намехост.

Шармовартарин хатогиҳо дар касби барномасозии ман (то ҳол)

Ҷойи дуюм: таблиғ дар шабакаҳои иҷтимоӣ

Вақте ки ман дар Google дар таблиғи шабакаҳои иҷтимоӣ кор мекардам (Myspace-ро дар хотир доред?), Ман дар 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)) {
  }
}

Барномасозон метавонанд дарҳол хатогиро бубинанд: далели охирин бояд j бошад, на i. Санҷиши воҳид хатогиро ошкор накард ва на барраси ман. Ифтитоҳ анҷом дода шуд ва як шаб рамзи ман ба сервер рафт ва ҳамаи компютерҳои маркази додаҳоро вайрон кард.

Ҳеҷ чизи бад рӯй надодааст. Ҳеҷ чиз барои касе шикаста нашуд, зеро пеш аз оғози глобалӣ код дар як маркази додаҳо санҷида шуд. Мабодо муҳандисони SRE барои муддате бозӣ билярдро бас накунанд ва каме бозгашт кунанд. Субҳи рӯзи дигар ман паёми электронӣ бо партови садама гирифтам, кодро ислоҳ кардам ва санҷишҳои воҳидиро илова кардам, ки хатогиро ошкор мекунанд. Азбаски ман протоколро риоя кардам - ​​вагарна рамзи ман кор намекунад - ҳеҷ мушкили дигар вуҷуд надошт.

Шармовартарин хатогиҳо дар касби барномасозии ман (то ҳол)

Дарси омӯхташуда

Бисёриҳо мутмаинанд, ки чунин иштибоҳи бузург бешубҳа барои аз кор озод кардани гунаҳкор арзиш дорад, аммо ин тавр нест: аввалан, ҳама барномасозон хато мекунанд ва дуюм, онҳо хеле кам ду маротиба хато мекунанд.

Дар асл, ман як дӯсти барномасоз дорам, ки муҳандиси олиҷаноб буд ва барои як хатогӣ аз кор ронда шуд. Пас аз он, вай дар Google ба кор қабул карда шуд (ва ба зудӣ пешбарӣ шуд) - ӯ дар бораи хатогие, ки дар мусоҳиба карда буд, ростқавлона гуфт ва он марговар ҳисобида нашуд.

Ин аст он чизе бигӯед Дар бораи Томас Уотсон, роҳбари афсонавии IBM:

Фармоиши ҳукумат ба маблағи тақрибан як миллион доллар эълон шуд. Корпоратсияи IBM - ё дурусттараш, Томас Уотсон С. Мутаассифона, намояндаи фурӯш ин корро карда натавонист ва IBM тендерро аз даст дод. Рӯзи дигар, ин корманд ба идораи ҷаноби Ватсон даромад ва лифофаро рӯи мизи ӯ гузошт. Чаноби Ватсон хатто ба он нигох кардан хам намешуд — вай мунтазири корманд буд ва медонист, ки ин мактуби истеъфо аст.

Ватсон пурсид, ки чӣ шуд?

Намояндаи савдо дар бораи рафти гузаронидани тендер муфассал сухан ронд. Ӯ хатогиҳоеро номбар кард, ки метавонистанд пешгирӣ кунанд. Ниҳоят, ӯ гуфт: «Ҷаноби Ватсон, ташаккур, ки ба ман иҷозат додед, ки фаҳмонед. Ман медонам, ки ин фармон ба мо чӣ қадар лозим буд. Ман медонам, ки ӯ то чӣ андоза муҳим буд” ва ба рафтан омода шуд.

Ватсон ба назди дар наздик шуда, ба чашмони ӯ нигарист ва лифофаро бо навиштаҷоти зерин баргардонд: «Чӣ тавр ман туро иҷозат медиҳам? Ман танҳо барои таҳсили шумо як миллион доллар сармоягузорӣ кардам.

Ман футболка дорам, ки дар он навишта шудааст: "Агар шумо дар ҳақиқат аз хатогиҳо дарс гиред, пас ман аллакай устод ҳастам." Дарвоқеъ, вақте сухан аз хатоҳо меравад, ман доктори илм ҳастам.

Ҷои аввал: API App Inventor

Хатогиҳои воқеан даҳшатнок ба шумораи зиёди корбарон таъсир мерасонанд, маълуманд, ки ислоҳи онҳо вақти зиёдро талаб мекунад ва аз ҷониби онҳое содир карда мешаванд, ки онҳоро карда натавонистанд. Бузургтарин хатои ман ба ҳамаи ин меъёрҳо мувофиқ аст.

Чӣ қадаре ки бадтар бошад, ҳамон қадар беҳтар аст

ман мехонам эссе аз ҷониби Ричард Габриэл дар бораи ин равиш дар солҳои навадум ҳамчун аспирантура ба ман хеле маъқул аст, ки онро аз шогирдонам мепурсам. Агар хуб дар ёд надошта бошӣ, хотираатро тароват кун, хурд аст. Ин очерк бо хоҳиши «дуруст ба даст овардани он» ва равиши «бадтараш беҳтар» аз бисёр ҷиҳатҳо, аз ҷумла соддагӣ муқоиса мекунад.

Ин чӣ гуна бояд бошад: тарҳ бояд дар татбиқ ва интерфейс оддӣ бошад. Содда будани интерфейс аз соддагии татбиқ муҳимтар аст.

Чӣ қадаре ки бадтар бошад, ҳамон қадар беҳтар аст: тарҳ бояд дар татбиқ ва интерфейс содда бошад. Оддии татбиқ аз соддагии интерфейс муҳимтар аст.

Биёед инро як дақиқа фаромӯш кунем. Мутаасифона, солхои зиёд онро фаромуш кардаам.

Ихтироъкори барнома

Ҳангоми кор дар Google ман як қисми даста будам Ихтироъкори барнома, муҳити таҳияи онлайн барои кашола ва партофтан барои таҳиягарони майли Android. Соли 2009 буд ва мо шитоб мекардем, ки версияи алфаро сари вақт нашр кунем, то дар тобистон барои муаллимоне, ки дар тирамоҳ ҳангоми дарс аз муҳити зист истифода бурда тавонанд, дарсҳои маҳорат баргузор кунем. Ман ихтиёрӣ барои татбиқи спрайтҳо, ҳасрат барои он ки чӣ гуна ман дар TI-99/4 бозиҳо менависам. Барои онҳое, ки намедонанд, спрайт як объекти графикии дученака аст, ки метавонад бо дигар унсурҳои нармафзор ҳаракат ва ҳамкорӣ кунад. Намунаҳои спрайтҳо киштиҳои кайҳонӣ, астероидҳо, мармарҳо ва ракетҳоро дар бар мегиранд.

Мо дар Java барномаи Inventor-ро ба объект нигаронидашуда татбиқ кардем, бинобар ин дар он ҷо танҳо як қатор объектҳо мавҷуданд. Азбаски тӯбҳо ва спрайтҳо хеле монанд рафтор мекунанд, ман як синфи абстрактии спрайтро бо хосиятҳо (майдонҳо) X, Y, суръат (суръат) ва сарлавҳа (самт) сохтам. Онҳо усулҳои якхела барои ошкор кардани бархӯрдҳо, ҷаҳиш аз канори экран ва ғайра доштанд.

Фарқи асосии байни тӯб ва спрайт дар он аст, ки маҳз он чизе кашида шудааст - доираи пур ё растр. Азбаски ман аввал спрайтҳоро амалӣ кардам, мантиқан муайян кардани координатҳои x ва y-и кунҷи чапи болоии он ҷое, ки тасвир ҷойгир аст, буд.

Шармовартарин хатогиҳо дар касби барномасозии ман (то ҳол)
Вақте ки спрайтҳо кор мекарданд, ман қарор додам, ки ман метавонам объектҳои тӯбро бо рамзи хеле кам амалӣ кунам. Ягона мушкилӣ дар он буд, ки ман масири оддитаринро (аз нуқтаи назари иҷрокунанда) пеш гирифтам, ки координатҳои x ва y-и кунҷи чапи болоии контури чаҳорчӯбаи тӯбро нишон медиҳанд.

Шармовартарин хатогиҳо дар касби барномасозии ман (то ҳол)
Дарвоқеъ, нишон додани координатҳои x ва y-и маркази доира лозим буд, чунон ки дар ҳама китоби дарсии риёзӣ ва дигар сарчашмае, ки доираҳоро зикр мекунад, таълим дода мешавад.

Шармовартарин хатогиҳо дар касби барномасозии ман (то ҳол)
Баръакси хатогиҳои гузаштаи ман, ин на танҳо ба ҳамкорони ман, балки ба миллионҳо корбарони App Inventor низ таъсир расонд. Аксари онҳо кӯдакон буданд ва ё тамоман нав ба барномасозӣ буданд. Ба онхо лозим омад, ки хангоми кор дар хар як замима, ки дар он туб мавчуд буд, бисьёр кадамхои нодаркорро ичро кунанд. Агар хатогиҳои дигарамро бо ханда ба ёд орам, пас ин хато имрӯз ҳам маро арақи он мекунад.

Ман ниҳоят ин хатогиро танҳо ба наздикӣ, пас аз даҳ сол ислоҳ кардам. "Ямоқи карда шудааст", на "сот", зеро тавре ки Ҷошуа Блок мегӯяд, APIҳо абадӣ мебошанд. Тағйироте ворид карда натавонистем, ки ба барномаҳои мавҷуда таъсир расонанд, мо амволи OriginAtCenter-ро бо арзиши false дар барномаҳои кӯҳна ва дар ҳама барномаҳои оянда true илова кардем. Истифодабарандагон метавонанд як саволи мантиқӣ диҳанд: онҳо ҳатто фикр карданд, ки нуқтаи ибтидоиро дар ҷои дигар ба ҷои марказ ҷойгир кунанд. Ба онҳое? Ба як барномасоз, ки даҳ сол пеш барои сохтани API муқаррарӣ хеле танбал буд.

Дарсхои омухташуда

Ҳангоми кор дар API (ки онро қариб ҳар як барномасоз бояд баъзан иҷро кунад), шумо бояд маслиҳати беҳтаринеро, ки дар видеои Ҷошуа Блок оварда шудааст, риоя кунед "Чӣ гуна API-и хуб эҷод кардан мумкин аст ва чаро он ин қадар муҳим астдар ин рӯйхати кӯтоҳ:

  • API метавонад ба шумо ҳам фоида ва ҳам зарари калон расонад.. API-и хуб муштариёни такрориро эҷод мекунад. Бад ба даҳшати абадии шумо табдил меёбад.
  • API-ҳои ҷамъиятӣ, ба монанди алмос, то абад боқӣ мемонанд. Ҳама чизро ба он диҳед: дигар ҳеҷ гоҳ имкони дуруст кардани ҳама чиз нахоҳад буд.
  • Нақшаҳои API бояд мухтасар бошанд — як саҳифа бо имзо ва тавсифи синф ва усул, на бештар аз як сатр. Ин ба шумо имкон медиҳад, ки API-ро ба осонӣ аз нав созед, агар он бори аввал комил набошад.
  • Ҳолатҳои истифодашударо тавсиф кунедпеш аз татбиқи API ё ҳатто кор кардан дар мушаххасоти он. Бо ин роҳ шумо аз татбиқ ва муайян кардани API-и комилан ғайрифаъол худдорӣ мекунед.

Агар ман ҳатто конспекти кӯтоҳеро бо скрипти сунъӣ менавиштам, ба эҳтимоли зиёд иштибоҳро муайян карда, ислоҳ мекардам. Агар не, пас яке аз ҳамкорони ман ҳатман ин корро мекард. Ҳар як қароре, ки оқибатҳои васеъ дорад, бояд ҳадди аққал як рӯз андеша карда шавад (ин на танҳо ба барномасозӣ дахл дорад).

Сарлавҳаи эссеи Ричард Габриэл, "Бадтар аст, беҳтар аст" ба бартарияте ишора мекунад, ки аввалин шуда дар бозор - ҳатто бо маҳсулоти номукаммал - дар ҳоле ки ягон каси дигар барои дунболи моли комил аст. Дар бораи рамзи спрайт фикр карда, ман мефаҳмам, ки барои дуруст ба даст овардани он ба ман ҳатто коди бештар навиштан лозим набуд. Ҳар чӣ гӯяд, ман сахт хато кардам.

хулоса

Барномасозон ҳар рӯз хато мекунанд, новобаста аз он ки ин навиштани рамзи хатогӣ ё намехоҳад чизеро санҷанд, ки маҳорат ва маҳсулнокии онҳоро беҳтар кунад. Албатта, шумо метавонед барномасоз бошед, мисли ман хатоҳои ҷиддие содир накунед. Аммо бе эътирофи хатогиҳои худ ва аз онҳо ибрат нагирифта, барномасози хуб шудан ғайриимкон аст.

Ман ҳамеша бо донишҷӯёне вомехӯрам, ки эҳсос мекунанд, ки хатогиҳои аз ҳад зиёд мекунанд ва аз ин рӯ барои барномасозӣ дур нестанд. Ман медонам, ки синдроми қаллобӣ дар IT то чӣ андоза маъмул аст. Умедворам, ки шумо дарсҳои номбаркардаамро меомӯзед - аммо асосиашро дар хотир доред: ҳар яки мо хато мекунем - хиҷолатовар, хандаовар, даҳшатнок. Агар дар оянда барои идомаи матлаб матолиби кофӣ надошта бошам, ҳайрон мешавам ва нороҳат мешавам.

Манбаъ: will.com

Илова Эзоҳ