Qhov kev txaj muag tshaj plaws hauv kuv txoj haujlwm programming (kom deb li deb)

Qhov kev txaj muag tshaj plaws hauv kuv txoj haujlwm programming (kom deb li deb)
Raws li lawv hais, yog tias koj tsis txaj muag ntawm koj tus lej qub, ces koj tsis loj hlob raws li tus programmer - thiab kuv pom zoo nrog qhov kev xav no. Kuv pib programming rau kev lom zem tshaj 40 xyoo dhau los, thiab kev tshaj lij 30 xyoo dhau los, yog li kuv muaj ntau yam yuam kev. ntau heev. Raws li tus kws tshaj lij computer science, kuv qhia kuv cov tub ntxhais kawm kom kawm los ntawm kev ua yuam kevβ€”lawv, kuv, thiab lwm tus'. Kuv xav tias nws yog lub sijhawm los tham txog kuv qhov kev ua yuam kev kom tsis txhob poob kuv lub siab. Kuv vam tias lawv yuav muaj txiaj ntsig rau ib tus neeg.

Qhov thib peb - ​​Microsoft C compiler

Kuv tus kws qhia ntawv hauv tsev kawm tau ntseeg tias Romeo thiab Juliet tsis tuaj yeem suav tias yog qhov xwm txheej tshwm sim vim tias cov cim tsis muaj kev txhaum loj - lawv tsuas coj tus cwj pwm ruam, raws li cov tub ntxhais hluas yuav tsum. Kuv tsis pom zoo nrog nws thaum ntawd, tab sis tam sim no kuv pom ib qho laj thawj ntawm nws txoj kev xav, tshwj xeeb tshaj yog nyob rau hauv kev sib txuas nrog kev ua haujlwm.

Thaum kuv kawm tiav xyoo kawm tiav ntawm MIT, kuv tseem hluas thiab tsis muaj kev paub, ob qho tib si hauv lub neej thiab hauv kev ua haujlwm. Thaum lub caij ntuj sov, kuv tau ua haujlwm hauv Microsoft, ntawm pab pawg C compiler thaum xub thawj kuv tau ua txhua yam xws li kev txhawb nqa profile, thiab tom qab ntawd kuv tau tso siab rau kev ua haujlwm ntawm qhov kev lom zem tshaj plaws ntawm cov compiler (raws li kuv xav) - backend optimization. Tshwj xeeb, kuv yuav tsum tau txhim kho x86 code rau ceg nqe lus.

Kev txiav txim siab los sau qhov pom zoo tshuab code rau txhua qhov ua tau, Kuv muab kuv tus kheej pov rau hauv lub pas dej ua ke. Yog hais tias qhov kev faib tawm ceev ntawm qhov tseem ceeb yog siab, kuv nkag mus rau hauv hloov lub rooj. Yog tias lawv muaj qhov sib faib ua ke, kuv siv nws los ua kom lub rooj nruj dua (tab sis tsuas yog qhov kev faib tuaj yeem ua tiav siv me ntsis hloov). Thaum tag nrho cov txiaj ntsig yog lub zog ntawm ob, kuv tau ua lwm qhov kev ua kom zoo dua. Yog tias cov txheej txheem ntawm qhov tseem ceeb tsis txaus siab rau kuv cov xwm txheej, kuv faib nws mus rau ntau qhov kev ua tau zoo thiab siv cov cai uas twb tau ua tiav lawm.

Nws yog ib tug npau suav phem. Ntau xyoo tom qab ntawd kuv tau hais tias tus programmer uas tau txais kuv cov lej ntxub kuv.

Qhov kev txaj muag tshaj plaws hauv kuv txoj haujlwm programming (kom deb li deb)

Zaj lus qhia

Raws li David Patterson thiab John Hennessy sau hauv Computer Architecture thiab Computer Systems Design, ib qho ntawm cov ntsiab lus tseem ceeb ntawm kev tsim vaj tsev thiab tsim qauv yog feem ntau ua kom txhua yam ua haujlwm sai li sai tau.

Kev ua kom ceev cov xwm txheej ntau yuav txhim kho kev ua haujlwm tau zoo dua li kev txhim kho cov xwm txheej tsawg. Ironically, cov xwm txheej feem ntau yog yooj yim dua li qhov tsis tshua muaj. Cov lus qhia zoo li no xav tias koj paub tias qhov xwm txheej twg yog qhov tshwm sim - thiab qhov no tsuas yog ua tau los ntawm cov txheej txheem ntawm kev ua tib zoo ntsuas thiab ntsuas.

Hauv kuv qhov kev tiv thaiv, kuv tau sim txheeb xyuas seb cov lus hais txog ceg zoo li cas hauv kev coj ua (xws li muaj pes tsawg ceg ntoo thiab yuav faib li cas), tab sis xyoo 1988 cov ntaub ntawv no tsis muaj. Txawm li cas los xij, kuv yuav tsum tsis txhob muaj cov xwm txheej tshwj xeeb ntxiv thaum twg lub compiler tam sim no tsis tuaj yeem tsim cov cai zoo rau cov piv txwv cuav uas kuv tuaj nrog.

Kuv xav tau hu rau tus tsim tawm txog kev paub thiab, nrog rau nws, xav txog qhov xwm txheej uas tshwm sim thiab cuam tshuam nrog lawv tshwj xeeb. Kuv yuav sau ntawv tsawg dua, tab sis qhov ntawd yog qhov zoo. Raws li Stack Overflow tus tsim Jeff Atwood sau, tus programmer tus yeeb ncuab phem tshaj yog tus programmer nws tus kheej:

Kuv paub tias koj muaj lub hom phiaj zoo tshaj plaws, ib yam li peb txhua tus. Peb tsim cov kev pab cuam thiab nyiam sau code. Yog li peb ua. Peb xav tias txhua qhov teeb meem tuaj yeem daws tau nrog cov kab xev nplaum, ib qho khoom siv hauv tsev thiab ib qho pinch ntawm code. Ntau npaum li nws mob coders lees nws, qhov zoo tshaj plaws code yog tus lej uas tsis muaj nyob. Txhua kab tshiab xav tau kev debugging thiab kev txhawb nqa, nws yuav tsum nkag siab. Thaum koj ntxiv cov cai tshiab, koj yuav tsum ua li ntawd nrog kev tsis txaus siab thiab kev qias neeg vim tias tag nrho lwm cov kev xaiv tau tas lawm. Ntau tus programmers sau code ntau dhau, ua rau peb tus yeeb ncuab.

Yog tias kuv tau sau cov lej yooj yim uas suav nrog cov xwm txheej, nws yuav yooj yim dua los hloov kho yog tias tsim nyog. Kuv tau tso tseg qhov kev ntxhov siab uas tsis muaj leej twg xav nrog.

Qhov kev txaj muag tshaj plaws hauv kuv txoj haujlwm programming (kom deb li deb)

Qhov thib ob: tshaj tawm hauv social networks

Thaum kuv ua haujlwm hauv Google ntawm kev tshaj tawm xov xwm (nco txog Myspace?), Kuv tau sau qee yam zoo li no hauv 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)) {
  }
}

Cov programmers tam sim ntawd pom qhov yuam kev: qhov kawg sib cav yuav tsum yog j, tsis yog i. Chav ntsuas ntsuas tsis tau qhia qhov yuam kev, thiab tsis yog kuv tus kws tshuaj xyuas. Lub community launch tau ua tiav, thiab ib hmo kuv tus lej tau mus rau lub server thiab tsoo tag nrho cov khoos phis tawj hauv cov ntaub ntawv chaw.

Tsis muaj dab tsi phem tshwm sim. Tsis muaj dab tsi cuam tshuam rau leej twg, vim tias ua ntej lub ntiaj teb tso tawm cov cai tau sim hauv ib lub chaw khaws ntaub ntawv. Tshwj tsis yog SRE engineers nres ua si billiards ib pliag thiab ua me ntsis rov qab. Tag kis sawv ntxov kuv tau txais email nrog kev sib tsoo pob pov tseg, kho cov cai thiab ntxiv cov kev sim ntsuas uas yuav ntes qhov yuam kev. Txij li thaum kuv ua raws li txoj cai - txwv tsis pub kuv cov cai yuav tsuas ua tsis tau - tsis muaj lwm yam teeb meem.

Qhov kev txaj muag tshaj plaws hauv kuv txoj haujlwm programming (kom deb li deb)

Zaj lus qhia

Ntau tus paub tseeb tias qhov kev ua yuam kev loj no yuav ua rau tus neeg raug foob raug tshem tawm, tab sis qhov no tsis yog li ntawd: thawj zaug, txhua tus programmers ua yuam kev, thiab qhov thib ob, lawv tsis tshua ua qhov yuam kev ib zaug ob zaug.

Qhov tseeb, kuv muaj ib tus phooj ywg programmer uas yog ib tus kws tshaj lij engineers thiab raug rho tawm haujlwm vim ua yuam kev ib zaug. Tom qab ntawd, nws raug ntiav hauv Google (thiab sai sai no) - nws ncaj ncees hais txog qhov yuam kev uas nws tau ua hauv kev xam phaj, thiab nws tsis suav tias yog neeg tuag.

Qhov ntawd yog dab tsi qhia Txog Thomas Watson, tus thawj coj legendary ntawm IBM:

Tsoom fwv txiav txim muaj nqis txog ib lab nyiaj tau tshaj tawm. IBM Corporation - lossis theej, Thomas Watson Sr. tus kheej - xav tau nws. Hmoov tsis zoo, tus neeg muag khoom tsis tuaj yeem ua qhov no thiab IBM poob qhov kev sib tw. Hnub tom qab, tus neeg ua haujlwm no tuaj rau hauv Mr. Watson lub chaw ua haujlwm thiab muab ib lub hnab ntawv rau ntawm nws lub rooj. Yawg Watson tseem tsis tau thab saib nws - nws tab tom tos ib tus neeg ua haujlwm thiab paub tias nws yog tsab ntawv tawm haujlwm.

Watson nug dab tsi tsis yog.

Tus neeg sawv cev muag tau hais meej meej txog kev nce qib ntawm kev sib tw. Nws hu ua yuam kev uas yuav zam tau. Thaum kawg, nws hais tias, β€œMr. Watson, ua tsaug uas koj tso kuv piav. Kuv paub ntau npaum li cas peb xav tau daim ntawv xaj no. Kuv paub tias nws tseem ceeb npaum li cas, "thiab tau npaj tawm mus.

Watson los cuag nws ntawm lub qhov rooj, ntsia nws lub qhov muag thiab xa rov qab lub hnab ntawv nrog cov lus: β€œKuv yuav tso koj mus li cas? Kuv nyuam qhuav nqis peev ib lab nyiaj hauv koj txoj kev kawm.

Kuv muaj lub tsho T-shirt uas hais tias: "Yog tias koj kawm los ntawm kev ua yuam kev tiag tiag, ces kuv twb yog tus tswv." Qhov tseeb, thaum nws los txog qhov yuam kev, kuv yog kws kho mob ntawm kev tshawb fawb.

Thawj qhov chaw: App Inventor API

Qhov tsis zoo tiag tiag cuam tshuam rau ntau tus neeg siv, dhau los ua kev paub txog pej xeem, siv sijhawm ntev los kho, thiab yog tsim los ntawm cov neeg uas tsis tuaj yeem tsim lawv. Kuv qhov yuam kev loj tshaj plaws haum rau tag nrho cov qauv no.

Qhov phem tshaj qhov zoo

kuv nyeem sau ntawv los ntawm Richard Gabriel hais txog qhov no nyob rau hauv lub nineties raws li ib tug kawm tiav, thiab kuv nyiam nws heev uas kuv nug nws rau kuv cov tub ntxhais kawm. Yog hais tias koj tsis nco qab zoo, refresh koj lub cim xeeb, nws yog me me. Cov ntawv sau no sib txawv ntawm qhov kev xav kom "ua kom raug" thiab "qhov phem dua yog qhov zoo dua" mus rau ntau txoj hauv kev, suav nrog kev yooj yim.

Yuav ua li cas nws yuav tsum: tus tsim yuav tsum yooj yim nyob rau hauv kev siv thiab interface. Simplicity ntawm lub interface yog qhov tseem ceeb tshaj qhov yooj yim ntawm kev siv.

Qhov tsis zoo, qhov zoo dua: tus tsim yuav tsum yooj yim hauv kev siv thiab kev sib tshuam. Kev yooj yim ntawm kev siv yog qhov tseem ceeb tshaj qhov yooj yim ntawm kev siv interface.

Cia peb tsis nco qab txog qhov ntawd ib feeb. Hmoov tsis zoo, kuv tsis nco qab txog nws tau ntau xyoo.

App Tus Tsim

Thaum ua haujlwm hauv Google, kuv yog ib feem ntawm pab pawg App Tus Tsim, rub-thiab-poob hauv online kev loj hlob ib puag ncig rau aspiring Android developers. Nws yog xyoo 2009, thiab peb tau maj mam tso cov alpha version hauv lub sijhawm kom lub caij ntuj sov peb tuaj yeem tuav cov chav kawm rau cov kws qhia ntawv uas tuaj yeem siv ib puag ncig thaum qhia lub caij nplooj zeeg. Kuv tau ua haujlwm pub dawb los siv sprites, nostalgic rau qhov kuv tau siv los sau ua si ntawm TI-99/4. Rau cov neeg tsis paub, sprite yog ob-dimensional graphical khoom uas tuaj yeem txav thiab cuam tshuam nrog lwm yam software. Piv txwv ntawm sprites muaj xws li spaceships, asteroids, marbles, thiab rackets.

Peb siv object-oriented App Inventor hauv Java, yog li tsuas muaj ib pawg ntawm cov khoom nyob rau ntawd. Txij li thaum cov pob thiab sprites coj zoo ib yam, Kuv tsim cov chav kawm paub daws teeb meem sprite nrog cov khoom (thaj chaw) X, Y, Ceev (ceev) thiab Heading (kev taw qhia). Lawv muaj tib txoj hauv kev txhawm rau txheeb xyuas kev sib tsoo, thaws tawm ntawm ntug ntawm lub vijtsam, thiab lwm yam.

Qhov sib txawv tseem ceeb ntawm lub pob thiab sprite yog qhov kos raws nraim - lub voj voog puv lossis lub raster. Txij li thaum kuv tau siv sprites ua ntej, nws yog qhov tsim nyog los qhia cov x- thiab y-coordinates ntawm lub ces kaum sab laug ntawm qhov chaw duab nyob.

Qhov kev txaj muag tshaj plaws hauv kuv txoj haujlwm programming (kom deb li deb)
Thaum cov sprites ua haujlwm, kuv txiav txim siab tias kuv tuaj yeem siv cov khoom siv pob nrog cov lej me me. Qhov teeb meem nkaus xwb yog tias kuv coj txoj kev yooj yim tshaj plaws (los ntawm qhov pom ntawm tus neeg siv), qhia txog x- thiab y-coordinates ntawm lub ces kaum sab laug ntawm lub contour framing lub pob.

Qhov kev txaj muag tshaj plaws hauv kuv txoj haujlwm programming (kom deb li deb)
Qhov tseeb, nws yog qhov tsim nyog los qhia qhov x- thiab y-coordinates ntawm qhov chaw ntawm lub voj voog, raws li qhia nyob rau hauv ib phau ntawv qhia lej thiab lwm qhov chaw uas hais txog lub voj voog.

Qhov kev txaj muag tshaj plaws hauv kuv txoj haujlwm programming (kom deb li deb)
Tsis zoo li kuv qhov kev ua yuam kev yav dhau los, qhov no cuam tshuam tsis yog kuv cov npoj yaig xwb, tab sis kuj tseem muaj ntau lab tus neeg siv App Inventor. Ntau tus ntawm lawv yog menyuam yaus lossis tshiab rau kev ua haujlwm. Lawv yuav tsum tau ua ntau yam tsis tsim nyog thaum ua haujlwm ntawm txhua daim ntawv thov uas muaj pob. Yog tias kuv nco qab kuv qhov yuam kev nrog luag, qhov no ua rau kuv tawm hws txawm niaj hnub no.

Thaum kawg kuv tau patched tus kab mob no tsis ntev los no, kaum xyoo tom qab. "Patched", tsis yog "kho", vim li Joshua Bloch hais, APIs nyob mus ib txhis. Tsis tuaj yeem hloov pauv uas yuav cuam tshuam rau cov kev pabcuam uas twb muaj lawm, peb ntxiv cov cuab yeej OriginAtCenter nrog tus nqi cuav hauv cov haujlwm qub thiab muaj tseeb hauv txhua qhov yav tom ntej. Cov neeg siv tuaj yeem nug cov lus nug uas xav tau: leej twg txawm xav txog qhov chaw pib qhov chaw uas tsis yog qhov chaw. Rau leej twg? Rau ib tus programmer uas tub nkeeg dhau los tsim API ib txwm kaum xyoo dhau los.

Cov Lus Qhia Kawm

Thaum ua haujlwm ntawm APIs (uas yuav luag txhua tus programmer yuav tsum ua qee zaum), koj yuav tsum ua raws li cov lus qhia zoo tshaj plaws tau teev tseg hauv Joshua Bloch's video "Yuav ua li cas los tsim API zoo thiab vim li cas nws tseem ceeb heev"Los yog hauv daim ntawv luv luv no:

  • API tuaj yeem coj koj ob qho txiaj ntsig zoo thiab muaj kev puas tsuaj loj.. API zoo tsim cov neeg siv khoom rov qab. Tus phem ua rau koj npau suav phem nyob mus ib txhis.
  • Pej xeem APIs, zoo li pob zeb diamond, nyob mus ib txhis. Muab rau koj tag nrho: yuav tsis muaj lwm txoj hauv kev los ua txhua yam zoo.
  • API cov txheej txheem yuav tsum luv luv - ib nplooj ntawv nrog rau chav kawm thiab txoj kev kos npe thiab cov lus piav qhia, tsis pub ntau tshaj ib kab. Qhov no yuav tso cai rau koj yooj yim restructure API yog tias nws tsis tig tawm zoo meej thawj zaug.
  • Piav txog cov kev sivua ntej siv API lossis txawm ua haujlwm ntawm nws qhov tshwj xeeb. Txoj kev no koj yuav zam kev siv thiab qhia meej txog qhov tsis ua haujlwm API kiag li.

Yog tias kuv tau sau txawm tias luv luv nrog cov ntawv sau, feem ntau kuv yuav tau txheeb xyuas qhov yuam kev thiab kho nws. Yog tsis yog, ces ib tug ntawm kuv cov npoj yaig yeej yuav ua nws. Txhua qhov kev txiav txim siab uas muaj qhov tshwm sim deb yuav tsum tau xav txog tsawg kawg ib hnub (qhov no tsis yog siv rau kev ua haujlwm nkaus xwb).

Lub npe ntawm Richard Gabriel cov ntawv sau, "Worse Is Better," hais txog qhov zoo dua uas mus ua ntej rau kev ua lag luam-txawm tias muaj cov khoom lag luam tsis zoo-thaum lwm tus siv sijhawm nyob mus ib txhis nrhiav qhov zoo tshaj plaws. Xav txog ntawm sprite code, kuv paub tias kuv tsis tas yuav sau cov lej ntxiv kom tau txais nws txoj cai. Txawm ib tug yuav hais li cas, kuv tau yuam kev loj heev.

xaus

Programmers ua yuam kev txhua hnub, txawm hais tias nws yog sau buggy code los yog tsis xav sim ib yam dab tsi uas yuav txhim kho lawv cov txuj ci thiab kev tsim khoom. Tau kawg, koj tuaj yeem ua tus programmer yam tsis tau ua yuam kev loj li kuv tau ua. Tab sis nws tsis yooj yim sua kom dhau los ua tus programmer zoo yam tsis paub txog koj qhov yuam kev thiab kawm los ntawm lawv.

Kuv niaj hnub ntsib cov tub ntxhais kawm uas xav tias zoo li lawv ua yuam kev ntau dhau thiab yog li tsis raug txiav tawm rau kev ua haujlwm. Kuv paub li cas impostor syndrome nyob rau hauv IT. Kuv vam tias koj yuav kawm cov lus qhia uas kuv tau teev tseg - tab sis nco ntsoov qhov tseem ceeb: peb txhua tus ua yuam kev - txaj muag, funny, txaus ntshai. Kuv yuav xav tsis thoob thiab chim siab yog tias yav tom ntej kuv tsis muaj cov ntaub ntawv txaus los txuas ntxiv rau tsab xov xwm.

Tau qhov twg los: www.hab.com

Ntxiv ib saib