JavaRush /Java Blog /Random-TL /Isang wika upang pamunuan silang lahat

Isang wika upang pamunuan silang lahat

Nai-publish sa grupo
Mayroong isang wika na nasa ilalim ng bawat layer ng code, sa anumang programming language. At naghihintay siyang matuklasan... Pagsasalin at adaptasyon ng isang artikulo ni Eric Girois mula sa Better programming community sa Medium. Isang wika upang mamuno sa kanilang lahat - 1Noong isinulat ko ang artikulong ito, ang bilang ng mga query sa paghahanap sa estilo ng "anong programming language ang matutunan" ay lumampas sa 517 milyon (!). Ang bawat pahina mula sa listahan ng mga resulta ng paghahanap ay nagsasabi tungkol sa mga pakinabang ng isang partikular na wika kumpara sa iba, at sa 90% ng mga kaso, irerekomenda sa iyo ang parehong bagay, tulad ng Python, JavaSctipt (o isang bagay mula sa nangungunang 3 awtoritatibong rating ng mga wika ng wika. Ang ang kasalukuyang rating para sa Hulyo ay narito ;) Hayaan akong maging matapang at opisyal na hindi sumasang-ayon sa lahat ng 517 milyong resulta at sabihin na ang unang programming language na dapat mong matutunan ay lohika . Hindi sapat na malaman lamang kung paano magsulat ng code. Ang merkado ay punung-puno ng mga nagtapos ng iba't ibang kurso, kaya naman ang posisyon ng junior developer ay hindi na umiral. Upang magtagumpay sa mga katotohanang ito, kailangan mo hindi lamang magsulat ng code, kundi magkaroon din ng lohikal na pag-iisip.

Ang aking unang aralin sa computer science

Ang una kong pagkakakilala sa computer science ay nangyari sa isang elective class sa ikasampung baitang. Dumating ako sa klase at nakaramdam ako ng kasiyahan: mayroong isang bungkos ng mga kahon ng ice cream at mga garapon ng mga syrup sa silid-aralan. Nang makaupo na kami, inihayag ng guro: “Ngayon ay gagawa kami ng Linggo ( isang dessert na gawa sa ice cream at syrups - tala ng editor ). Ngunit sa isang kondisyon: kailangan mong isulat ang eksaktong mga tagubilin para sa paghahanda ng dessert, at susundin ko sila. " Walang tanong ," naisip ko, " magiging madali ito ." Sa loob lamang ng isang minuto, isinulat ko ang perpektong mga tagubilin: Maglagay ng tatlong scoop ng raspberry ice cream sa isang tasa Ibuhos ang dalawang kutsara ng chocolate syrup sa tasang iyon Magdagdag ng whipped cream sa tasa Magdagdag ng sprinkles at isang cherry sa tuktok ng Linggo. guro—na kumikilos bilang “computer”—ang eksaktong sinunod ang mga tagubilin, ginawa niya ang pinaka-caustic na performance na nakita ko. Siya ay nagsimulang galit na galit na "atakehin" ang karton na kahon ng ice cream, ngunit ang matibay na takip ay nanatiling hindi nasaktan. "Sige, tanggalin mo muna ang takip," sabi ko, umaasang makakuha ng dessert nang mabilis. "Nabigo kang isulat nang tama ang mga tagubilin para sa akin, kaya sa kasamaang-palad ay hindi ako nakagawa ng Sunday NEXT para sa iyo!"

Fast forward para subukan ang #2

Magbukas ng karton ng raspberry ice cream sa pamamagitan ng pagtanggal ng takip Maglagay ng tatlong scoop ng raspberry ice cream sa isang tasa Buksan ang chocolate syrup at magdagdag ng dalawang kutsara sa tasang iyon Buksan ang whipped cream at magdagdag ng kaunti sa tasa Magdagdag ng sprinkles at cherry sa itaas ng Linggo ay tiwala ako na napako ko ang isang ito minsan. Tinanggal ng guro ang takip, sumandok ng tatlong scoop ng ice cream at inilagay sa isang tasa. Sa wakas, malapit nang maging handa ang aking Linggo! Binuksan niya ang chocolate syrup at naglagay ng dalawang kutsara sa tasa. Ngunit hindi dalawang kutsara ng syrup - mga kutsara lamang, nang wala ito! Ang aking mga tagubilin ay hindi sapat na tumpak. Nang matapos ang lahat, nakatanggap ako ng isang tasa ng ice cream, dalawang metal na kutsara, isang toneladang whipped cream, at mga 300 scoop ng sprinkles. Tila sa sandaling iyon ay naging malinaw sa akin ang lahat: ang computer ay isang nilalang na ginagabayan ng purong lohika. Hindi niya naiintindihan ang konteksto at hindi gumagawa ng mga pagpapalagay. Sinusunod niya ang isang mahigpit na hanay ng mga tagubilin at sinusunod ang mga ito sa liham. Ang huling mga tagubilin para sa paggawa ng Linggo ay napakatagal, ngunit ito ay kinakailangan: Kung hindi pa nabubuksan, buksan ang packaging ng lahat ng mga sumusunod na item: Raspberry Ice Cream, Chocolate Syrup, Toppings at Whipped Cream Kumuha ng isang tasa mula sa ang istante at ilagay ito sa harap mo Kumuha ng isang ice cream scoop at, Isa-isang, scoop at ilagay ang tatlong scoop ng ice cream sa isang tasa. Kapag tapos na ang lahat, ilagay ang kutsara sa mesa. Kumuha ng kutsarang chocolate syrup kung wala ka pa nito. Pagkatapos ay kumuha ng isang kutsarang chocolate syrup at ibuhos ito sa isang tasa. Gawin ang pagkilos na ito nang dalawang beses. Ilagay ang chocolate syrup sa isang istante kapag tapos na. Baligtarin ang bote ng whipped cream at pindutin ang buton malapit sa spout ng bote gamit ang iyong daliri sa loob ng tatlong segundo, pagkatapos ay ibalik ang bote sa orihinal nitong posisyon. Magwiwisik ng 40 butil ng sprinkles sa ibabaw ng ice cream at chocolate syrup sa tasa, pagkatapos ay ibalik ang sprinkle shaker sa orihinal nitong posisyon. Alisin ang isang cherry mula sa cherry jar at maingat na ilagay ito sa ibabaw ng Linggo. Bigyan ang mag-aaral ng kutsarang Linggo at panghimagas. Ang huling utos sa mga tagubilin ay napakahalaga, dahil kung wala ito ang guro ay nagsimulang kumain ng Linggo mismo. Ito ang katotohanan ng programming - kailangan mong ibigay ang pinakatumpak na mga tagubilin sa computer. Sa esensya, ang lahat ng mga programming language ay binubuo ng mga tagubilin.

Mga Karera sa Software Development

Ang pag-unlad ng software ay nasa yugto ng pag-unlad nito kung saan ang pag-uusap tungkol dito bilang isang hiwalay na industriya ay tila masyadong pangkalahatan. At ang posisyon na "developer ng software" ay tila malabo dahil dito. Dalawang developer na may magkakaibang hanay ng kasanayan ay maaaring pantay na hinihiling sa merkado ng trabaho, na nagmumungkahi na ang isang matagumpay na karera sa pag-unlad ay nangangailangan ng higit pa sa mga kasanayan sa programming. Ang mga karanasang developer ay may karaniwang katangian na hiwalay sa programming- logic . Ang pinakamahusay na mga developer ay malakas sa kritikal na pag-iisip. Ito ay makabuluhan dahil karamihan sa mga proyekto ng software development ay hindi maganda ang pagkakadokumento ng tagpi-tagping bangungot. Kakailanganin ng isang taong may kritikal na pag-iisip upang mangolekta ng lahat ng data at punan ang mga puwang. Samakatuwid, ang mga espesyalista na hindi kayang ikonekta ang mga katotohanan sa isang solong kabuuan ay nasa likod. Ang lahat ng ito ay humahantong sa isa pang napakahalagang pahayag: Ang mga batayan ng agham ng kompyuter - kapwa ngayon at sa hinaharap - ay pangunahin. Mas mahalaga sila kaysa sa kakayahang magsulat ng code. Dumating at umalis ang mga sikat na wika. Ang mga balangkas ay nagiging lipas na, at ang mga kumpanya ay tumutugon sa pagbabago ng mga pangangailangan sa merkado sa pamamagitan ng pagsasama-sama ng salansan ng mga teknolohiyang ginamit. Ano ang nananatiling hindi nagbabago? Mga pangunahing kaalaman sa mga pangunahing kaalaman.

Paano bumuo ng lohikal na pag-iisip

Ang lohika at kritikal na pag-iisip ay maaari at dapat na paunlarin. Pinapayuhan ko kayong bigyang pansin ang mga sumusunod:

1. Pag-aralan ang pagiging epektibo ng mga algorithm sa mga runtime na kapaligiran

Kilala bilang Big-O notation ay ginagamit upang ilarawan ang pagiging kumplikado ng mga algorithm. Kung nasusuri mo ang iyong code sa mga tuntunin ng Big O at nasusuri ang bilang ng mga hakbang na ginawa kumpara sa oras na ginugol, isaalang-alang na ginawa mo ang unang hakbang sa tamang direksyon.

2. Alamin ang mga istruktura ng data

Ang istraktura ng data ay ang batayan ng bawat kumplikadong programa. Ang pag-alam kung aling uri ang pinakamahusay na gamitin kung saan ay isang mahalagang kasanayan. Ang mga istruktura ng data ay direktang nauugnay sa pagiging kumplikado ng mga algorithm, dahil ang pagpili ng maling istraktura ay maaaring pumatay sa programa.

3. Magbasa/manood/makinig

Kaya, para maunawaan ang mga pangunahing kaalaman, magbasa ng mga aklat tungkol sa mga konsepto ng disenyo, pinakamahuhusay na kagawian, at istilo ng coding. Ang mga nag-aaral ng programming ay lubos na inirerekomendang basahin:
  • "Mga diskarte sa disenyo na nakatuon sa bagay. Mga Pattern ng Disenyo” (E. Gamma R. Helm R. Johnson J. Vlissides),
  • “Refactoring. Pagpapabuti ng umiiral na code” (M. Fowler),
  • “Perpektong Code” (S. McConnell)
  • “Clean Code” (B. Martin)
  • “Pragmatic programmer” (E. Hunt)
  • "Mga Algorithm: pagbuo at pagsusuri" (T. Cormen, C. Leiserson, R. Rivest at K. Stein)

4. Magsanay!

Hindi ka maaaring maging isang mahusay na cellist nang walang daan-daang oras ng pagsasanay. Ang pang-araw-araw na pagsasanay ay ang susi sa tagumpay ng programming. Sa ngayon, maraming online na platform kung saan makakahanap ka ng libu-libong gawain na nangangailangan ng pag-unawa sa mga istruktura at algorithm ng data (HackerRank, LeetCode, CodeWars at iba pa).
Ang mga problema sa Java programming, mula sa simple hanggang sa kumplikado, ay magagamit sa JavaRush. Mayroong higit sa 1200 sa kanila sa kurso. At pati na rin ang mga mini-proyekto at gawaing-laro .
Para sa akin, ang pinaka-epektibong paraan upang gumana sa mga naturang platform ay ang mag-isip ng isang natatanging diskarte sa problema at i-post ang iyong solusyon sa Github. Pagkatapos ay tingnan ang mga nangungunang solusyon sa isang katulad na problema at suriin ang mga diskarte ng iba pang mga programmer. Dinadala tayo nito sa aming huling tip:

5. Suriin ang code ng ibang tao

Ang pangunahing pagkakamali sa pag-aaral ng programming at sa mga unang yugto ng trabaho ay ang pag-iisa sa sarili. Ang pagbuo ng software ay isang larangan na higit na nakadepende sa pagtutulungan ng magkakasama. Lumilikha kami ng mga pamantayan nang magkasama, nagkakamali, at sa paglipas ng panahon (muli, sa pamamagitan ng pagsubok at pagkakamali) nalaman namin kung ano ang pinakamahusay na gumagana. Ang paglalaan ng oras upang basahin ang code ng mga nakaranasang developer ay magbubunga. Siguraduhin lamang na ang code ay talagang mahusay.

Konklusyon

Personal na payo: huwag mong ikahiya ang hindi mo (pa) alam. Tulad ng nabanggit sa itaas, ang industriya na ito ay napakalaki, ang bilang ng mga wika ay hindi kapani-paniwala, at mayroong isang dagat ng impormasyon. Ito ay nangangailangan ng maraming oras at pagsisikap upang bumuo ng hindi bababa sa isang pangkalahatang ideya ng programming, kahit na higit pa upang makakuha ng karanasan, at maraming beses pa upang maging isang tunay na pro. Kapag nagtagumpay ako, ipapaalam ko sa iyo :)
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION