Isang wika upang mamuno sa kanilang lahat

Nakatago sa ilalim ng isang layer ng code, ang isang wika ay nanghihina, nagnanais na matutunan.

Isang wika upang mamuno sa kanilang lahat

Sa pagsulat na ito, ang query na "pagprograma kung aling wika ang unang matutunan" ay nagbabalik ng 517 milyong resulta ng paghahanap. Ang bawat isa sa mga site na ito ay pupurihin ang isang partikular na wika, at 90% sa kanila ay magrerekomenda ng Python o JavaScript.

Nang walang karagdagang ado, nais kong itala na ang lahat ng 517 milyong website na ito ay mali at ang wikang dapat mong matutunan muna ay pangunahing lohika.

Ang pag-alam lamang kung paano mag-code ay hindi sapat. Ang merkado ay sobrang puspos ng mga nagtapos ng mga institute at kurso na halos hindi na umiral ang junior position*. Upang magtagumpay sa mundo ngayon, dapat kang mag-code at magkaroon ng advanced na pangunahing lohikal na pag-iisip.

*pagkatapos nito, mangyaring tandaan na ito ay isang pagsasalin, at ang sitwasyon sa merkado ng paggawa para sa may-akda at sa iyong bansa ay maaaring iba (pati na rin ang iba pang mga nuances), na, gayunpaman, sa kanyang sarili ay hindi nagpapalala sa orihinal na artikulo - tinatayang pagsasalin

Ang aking unang aralin sa computer science

Ang una kong pagkakalantad sa computer science ay isang elective na kinuha ko noong ika-10 baitang. Sa unang araw pa lang, pagpasok ko sa silid-aralan, natuwa ako nang makita sa harapan ko ang napakaraming balde ng ice cream at iba't ibang toppings. Matapos makaupo ang lahat, inihayag ng guro:

β€œNgayon ay matitikman natin ang mga self-prepared ice cream. Ngunit sa isang kondisyon: dapat kang gumawa ng isang listahan ng mga tiyak na tagubilin kung paano ihanda ang dessert, at susundin ko sila."

β€œWalang problema,” naisip ko, β€œhindi magtatagal ang araling ito.” Sa loob ng isang minuto o higit pa ay naisulat ko na ang perpektong recipe para sa ice cream ng aking mga pangarap:

  1. I-scoop at ilagay ang tatlong scoop ng raspberry ice cream sa isang mangkok
  2. Buksan ang sarsa ng tsokolate at magdagdag ng dalawang kutsara sa parehong mangkok
  3. Magdagdag ng whipped cream sa mangkok
  4. Budburan ang lahat ng ito ng mga stick ng asukal at maglagay ng cherry sa itaas

Ang aking guroβ€”ang β€œcomputer” sa cute na metapora na iyonβ€”ay naglagay ng mas sarcastic, literal na pagganap kaysa sa nakita ko dati. Masigasig niyang sinimulan ang pagsundot sa balde ng ice cream gamit ang isang scoop na scoop nang hindi man lang nahawakan ang takip.

"Okay, okay, pero kailangan mo munang buksan!" - bulalas ko, sinusubukang makuha ang paggamot sa lalong madaling panahon.

"Hindi mo isinulat ito sa mga tagubilin, at hindi kita magawang ice cream. SUSUNOD!"

Fast forward tayo para subukan ang #2

  1. Buksan ang raspberry ice cream sa pamamagitan ng pag-alis ng takip
  2. I-scoop at ilagay ang tatlong scoop ng raspberry ice cream sa isang mangkok
  3. Buksan ang sarsa ng tsokolate at magdagdag ng dalawang kutsara sa parehong mangkok
  4. Magdagdag ng whipped cream sa mangkok
  5. Budburan ang lahat ng ito ng mga stick ng asukal at maglagay ng cherry sa itaas

Well, ngayon ay tiyak na hindi dapat magkaroon ng anumang mga problema. Kung sakali, sinigurado kong bukas lahat ng sangkap sa paggawa ng culinary masterpiece ko.

Tinanggal ng guro ang takip, sumandok at naglagay ng tatlong scoop ng ice cream sa isang mangkok. "Sa wakas, ang aking magandang ice cream ay nagsimulang magkatotoo!" Binuksan niya ang chocolate sauce at nagdagdag ng dalawang kutsara sa mangkok. Hindi siya "nagdagdag ng sarsa ng tsokolate mula sa dalawang kutsara" - huwag isipin - siya, siyempre, inilagay mismo ang mga kutsara sa mangkok. Walang sauce sa kanila. Muli, hindi ako nag-abala na isulat ang lahat nang eksakto. Matapos magawa ang natitira sa parehong espiritu, nakatanggap ako ng isang mangkok ng ice cream at dalawang kutsara, halos hindi napapansin sa ilalim ng dagat ng whipped cream. Sa itaas ay isang pares ng mga stick ng asukal.

Tila sa sandaling ito sa wakas ay bumungad sa akin: ang isang computer ay lohika sa isang vacuum. Wala siyang kamalay-malay sa mga pangyayari sa paligid at hindi gumagawa ng mga pagpapalagay. Siya ay nagsasagawa lamang ng malinaw na nakabalangkas na mga tagubilin at sinusunod ang mga ito sa bawat salita.

Ang aking huling resulta ay resulta ng isang mahaba ngunit kinakailangang serye ng pagsubok at mga pagkakamali:

  1. Kung hindi mo pa nagagawa, buksan ang bawat isa sa mga sumusunod na pakete: raspberry ice cream, chocolate sauce, whipped cream, sugar sticks.
  2. Kumuha ng isang mangkok at ilagay ito sa harap mo
  3. Kumuha ng ice cream scoop at isa-isang ilagay ang tatlong scoop ng raspberry ice cream sa isang mangkok. Ilagay muli ang ice cream scoop sa lugar.
  4. Kumuha ng isang garapon ng chocolate sauce, i-scoop ang sauce at ibuhos ang laman ng isang kutsara sa isang mangkok. Ulitin ang proseso ng pagsalok at pagbuhos ng isa pang beses. Ibalik ang kutsara at garapon sa lugar.
  5. Kunin ang pakete ng whipped cream na nakabaligtad at, hawak ito sa ibabaw ng mangkok, ibuhos ito sa ice cream sa loob ng 3 segundo, pagkatapos ay ibalik ang pakete sa lugar nito.
  6. Kumuha ng isang garapon ng mga stick ng asukal, ibuhos ang halos apatnapung stick sa isang mangkok at ibalik ang garapon.
  7. Kumuha ng isang cherry mula sa mangkok ng mga cherry at ilagay ito sa ibabaw ng ice cream.
  8. Bigyan ang mag-aaral ng isang mangkok na may natapos na ice cream at isang kutsara.

Ang huling punto ay lalong mahalaga, dahil kung wala ito, ang huling oras na sinimulan lamang ng guro na kainin ang aking ice cream.

Ngunit ito ay programming. Ang stress ng paglikha ng isang maingat na hanay ng mga tagubilin para sa isang computer. Sa esensya, ito ay kung ano ang bawat programming language ay bumaba sa - pagsusulat ng mga tagubilin.

Karera sa programming

Ang programming ay umabot sa punto kung saan mahirap pag-usapan bilang isang industriya, tulad ng mahirap gamitin ang isang salitang "programmer" bilang isang paglalarawan ng trabaho. Ang dalawang developer ay maaaring pantay na hinihiling ng merkado, na alam ang ganap na magkakaibang mga wika, na nangangahulugan na ang kakayahang bumuo ay mas mahalaga kaysa sa kaalaman sa isang partikular na wika. Ang isang pangkalahatang katangiang ibinabahagi ng lahat ng matagumpay na developer ay pangunahing lohika.

Ang pinakamahusay na programmer ay ang isa na maaaring tumingin sa code mula sa isang bagong anggulo. At ito ay pangunahing mahalaga, dahil karamihan sa mga produkto ng software ay isang koleksyon ng mga hindi dokumentadong fragment ng masamang code. Patuloy silang kailangang pagsama-samahin, pinupunan ang mga puwang kung kinakailangan. Ang mga taong hindi makapagkonekta ng magkakaibang tuldok sa isang linya ay kailangang nasa sideline magpakailanman.

Ang lahat ng ito ay nagdadala sa akin sa isa pang deklarasyon, sa pagkakataong ito ay naka-bold: ang pangunahing kaalaman ay palaging at magiging pinakamahalaga para sa isang programmer.

Dumating at umalis ang mga wika. Ang mga frameworks ay nagiging lipas na, at ang mga kumpanya ay tumutugon sa pangangailangan sa pamamagitan ng pagbabago sa teknolohiya stack na ginagamit nila. Mayroon bang isang bagay na hinding-hindi magbabago? Oo - pangunahing kaalaman, na tinatawag na pundamental dahil pinagbabatayan nito ang lahat!

Paano pagbutihin ang pangunahing kaalaman

Isang wika upang mamuno sa kanilang lahatLarawan ni Christopher Jeschke sa Unsplash

Kung naghahanap ka ng panimulang punto upang mapabuti ang iyong pangunahing lohikal na pag-iisip, subukang magsimula dito:

Alamin ang pagiging kumplikado ng iyong programa

Tinatawag din Malaki O Ang "kumplikado ng algorithm" ay tumutukoy sa pagdepende sa oras na kinakailangan upang maisagawa ang isang programa sa laki ng data ng pag-input nito (n). Ang pagpapanatili ng iyong daliri sa pulso ng mga algorithm na ginagamit ay isang mahalagang hakbang.

Alamin ang iyong mga istruktura ng data

Ang mga istruktura ng data ay nasa puso ng bawat modernong programa. Ang pag-alam kung aling istraktura ang gagamitin kung saan ang kaso ay isang disiplina sa sarili nitong karapatan. Ang mga istruktura ng data ay direktang nauugnay sa pagiging kumplikado ng runtime, at ang pagpili ng maling istraktura ay maaaring humantong sa mga pangunahing problema sa pagganap. Ang paghahanap ng elemento sa isang array ay O (n), na nagpapahiwatig ng mataas na halaga ng paggamit ng mga array bilang input data. Hash table lookup βˆ’ O (1), na nangangahulugan na sa kasong ito ang oras upang maghanap ng isang halaga ay hindi nakasalalay sa bilang ng mga elemento.

Lumapit sa akin ang mga tao para sa isang panayam at sinabing mas mabilis ang paghahanap sa isang array kaysa sa paghahanap sa hash table. Ito ang pinakatiyak na senyales na hindi mo sila dapat kunin - alamin ang iyong mga istruktura ng data.

Magbasa / manood / makinig

Mga site tulad ng UdemyPluralsight ΠΈ CodeAcademy - Isang mahusay na pagpipilian para sa pag-aaral ng mga bagong programming language. Ngunit para sa mga pangunahing kaalaman, kumonsulta sa mga aklat tungkol sa mga pangkalahatang prinsipyo, kasanayan, at istilo ng coding. Ang pinaka-inirerekumendang mga libro ay "Mga Pattern ng Disenyo", "Refactoring. Pagpapabuti ng Umiiral na Code", "Perfect Code", "Clean Code" at "Pragmatist Programmer". Sa wakas, ang bawat developer ay dapat magtago ng kopya ng "Mga algorithm"sa kamay.

Magsanay!

Hindi ka makakapagluto ng piniritong itlog nang hindi binabasag ang mga itlog. Mga site tulad ng HackerRankMga CodeWarsCoderByte, TopCoder ΠΈ LeetCode nag-aalok ng libu-libong kawili-wiling palaisipan upang subukan ang iyong kaalaman sa mga istruktura at algorithm ng data. Subukan ang iyong kapalaran sa paglutas ng problemang gusto mo, i-post ang iyong solusyon sa Github, at pagkatapos ay tingnan kung paano ito nilapitan ng iba. Na nagdadala sa atin sa huling punto:

Basahin ang code ng ibang tao

Ang pinakamalaking pagkakamali na maaari mong gawin kapag bumaba sa landas ng pag-unlad ay ang gawin itong mag-isa. Ang pagbuo ng software ay higit sa lahat ay isang pagsisikap ng pangkat. Lumilikha tayo ng mga pamantayan nang magkasama, nagkakamali nang sama-sama at, sa kabila ng lahat ng kabiguan, nagiging mas mahusay na magkasama. Ang oras na ginugol sa pagbabasa ng code ng ibang tao ay magbubunga ng maganda. Siguraduhin lamang na ito ay magandang code.

Well, ang pinakamagandang payo na maibibigay ko ay huwag na huwag kang mahihiya na wala ka pang nalalaman. Gaya ng nasabi na, napakalaki ng ating industriya at walang katapusan ang dami ng teknolohiya. Ito ay nangangailangan ng maraming oras at pagsisikap upang bumuo ng isang pangkalahatang larawan, kahit na higit pa upang maging isang propesyonal sa isang partikular na bagay, at isang order ng magnitude higit pa upang mahasa ang iyong mga kasanayan sa iyong larangan. Ipapaalam ko sa iyo kapag naabot ko ito sa aking sarili.

Pinagmulan: www.habr.com

Magdagdag ng komento