CodeGym /Java Blog /Random /Pagpili ng isang programming language
John Squirrels
Antas
San Francisco

Pagpili ng isang programming language

Nai-publish sa grupo
Una akong nakatagpo ng programming sa paaralan, sa mga aralin tungkol sa computer science. Ang mga ito ay binubuo ng ilang nakakapagod na paliwanag kung paano gumagana ang mga n-ary number system. At, siyempre, may pagsubok na kailangan mong magsulat ng sarili mong website. Noong panahong iyon, tila sa akin ay wala nang mas nakakabagot na trabaho. Kung gaano ako nagkamali! Sa kasamaang palad, ang isang high school computer science program ay hindi nagbibigay ng kumpletong larawan ng IT work, at hindi nito ipinapaliwanag kung paano pumili ng programming language. Bago magtanong ng "Aling programming language ang dapat kong matutunan?", dapat pamilyar ang isang baguhan sa kanyang sarili sa kung anong mga wika ang naroroon at kung paano sila naiiba sa isa't isa. Pagpili ng isang programming language - 1

Entry threshold: Mataas, mababa, katamtaman

Madalas na pinag-uusapan ng mga programmer ang tungkol sa "entry threshold" — isang konsepto na sumasalamin sa dami ng pagsisikap na kinakailangan para sa sinumang ibinigay na "junior developer" upang makabisado nang sapat ang isang programming language upang maisulat ang kanyang unang seryosong programa at makahanap ng trabaho. Ang "entry threshold" ay binubuo ng kaalaman sa:
  • syntax peculiarities at nuances ng wika
  • mga aklatan
  • mga algorithm at istruktura ng data.
Ang pagtatrabaho sa Excel ay maaaring tawaging isang uri ng programming. Sa pamamagitan ng paraan, ang pamilyar na programa sa opisina ay hindi kasing simple ng tila. Para sa isang user, ang entry threshold ay maaaring ang kakayahang gumawa ng table. Para sa isa pa, maaaring ito ay kaalaman sa mga kumplikadong formula at macro. Sa alinmang kaso, maliit ang threshold na ito. Susunod ang mga quasi-language, gaya ng 1C -programming. Pagkatapos ay mayroong mga pinakasimpleng wika na matututunan, hal PHP . Dagdag pa, mayroon kaming mga wikang may katutubong syntax (karaniwang hinango sa Ingles) na hindi nangangailangan sa iyo na pangasiwaan ang pamamahala ng memorya, hal. Java at JS . Pagkatapos ay mayroong mga wika na nangangailangan ng lubos na maingat na paghawak ng memorya, mga istruktura ng data, at mga algorithm, halimbawa, C atC++ . Ang mga batang multi-paradigm na wika, halimbawa, Scala , ay marahil ang pinakamataas na threshold sa pagpasok, dahil ang pag-master ng mga ito ay nangangailangan sa iyo na sumisid nang malalim sa napakaraming paradigm ng programming. Ngunit bago ka pumili ng isang wika, dapat kang magpasya kung ano ang gusto mong gawin sa susunod: bumuo para sa web, enterprise, desktop, o mga mobile device.

Web o hindi web?

Web

Maaaring hatiin ang mga web programmer sa Frontend at Backend na mga developer. Dapat mong maunawaan kung ano ang ibig sabihin ng mga terminong ito. Ang mga developer ng frontend ay kasangkot sa panig ng kliyente, ibig sabihin, kung ano ang nakikita ng gumagamit. Ang "backend" ay tungkol sa pagmamanipula at pag-iimbak ng data — ang bahagi ng isang serbisyo na tumatakbo sa isang server. Para sa isang Frontend developer na nagpapasya kung aling programming language ang matutunan, ang JavaScript at JavaScript frameworks (Angular JS, React at iba pa) ay mahalaga. Ang mga JS dialect, gaya ng CoffeeScript at TypeScript, ay hindi kasing tanyag ng kanilang magulang, ngunit maaari rin silang maging kapaki-pakinabang. Mayroon ding Flash AS, at dati ay may JScript at VBScript, ngunit ang mga dinosaur lamang ang nakakaalala nito =) Bukod sa lahat ng ito, kailangan mong maunawaan ang HTMLat CSS . Pagpili ng isang programming language - 2Maraming mga nagsisimula ang nag-iisip na ang JavaScript at Java ay halos magkaparehong bagay. Huwag malito ang mga wikang ito. Ang JS ay dating tinatawag na "LiveScript" at nakuha ang kasalukuyang pangalan nito dahil lamang sa kasikatan ng salitang "Java". Para sa isang web backend developer, ang PHP, Python, Ruby, Perl, at Java ay angkop. Dito gusto kong tumuon sa PHP (pag-uusapan natin ang iba pang mga wika mamaya). Ang PHP ay isa sa pinakamadaling wikang matutunan, na may mababang entry threshold. Ayon sa isang survey ng mga kilalang web developer, si Ruby ay dahan-dahan ngunit tiyak na nakakakuha ng katanyagan — ito ay minamahal dahil sa pagiging maikli at kagandahan nito.

Hindi web (enterprise, desktop, mobile)

Sinadya kong pinagsama ang mga sumusunod na programming language sa kategoryang ito na may kakaibang pangalan. Maaari mong gamitin ang karamihan sa mga ito upang magsulat ng enterprise, desktop, at kahit na mga mobile application. Ang Python ay isang madaling maunawaan na object-oriented na programming language at naging napakapopular kamakailan dahil sa growth machine learning (ML): Ang mga developer ng ML ay gumagamit ng Python. MLay isang medyo bagong lugar sa IT, at bagama't nakita na natin itong nagbunga, hindi ako magmamadali sa industriyang ito kapag pumipili ng programming language. Una, kakailanganin mo ng MABUTING pag-unawa sa matematika. Pangalawa, ang alon ng kasikatan ay maaaring pumasa sa parehong paraan tulad ng nangyari para sa "blockchain" o "nanotechnology". Iyon ay sinabi, maaari mong maalala na ang Python ay ginagamit sa pagbuo ng web. C++: isang klasikong wika kung saan ang lahat ay binuo sa "plus-plus" na operator. Ang wikang ito ay ang ninuno ng lahat ng mga sikat na object-oriented programming language, at ang isang baguhan ay dapat talagang bigyang pansin ito. Maraming mga sikat na application ang naisulat gamit ito. Ngunit ang napakagandang pagkakataon na "mabaril ang iyong sarili sa paa" at ang mahirap na maunawaan na syntax ay nagdadala sa zero ang posibilidad na ang isang baguhan ay makabisado ang mastodon na ito ng programming. Kotlin, na tulad ng Java para sa mga hipsters, ay isang nakatutuwang halo ng OOP at functional programming. Ito ay naging sikat kamakailan dahil sa katotohanan na ang isang may karanasan na developer na lumilipat mula sa Java patungo sa Kotlin ay maaaring seryosong mapabuti ang kanyang pagiging produktibo. Mabilis na magiging komportable ang isang may karanasang developer sa programming language na ito. Sa pamamagitan ng paraan, ang parehong bagay ay nalalapat sa Scala, ngunit ang Kotlin ay sikat sa mundo ng Android. Ang Java ay madaling matutunan ng mga baguhan. Lalo na sa tulong ng CodeGym =) Ang Java syntax ay naiintindihan at kahit na may panganib na "pagbaril sa iyong sarili sa paa", hindi ito kritikal.

OOP o POP?

Ang pamamaraang pamamaraan

Ang pamamaraang nakatuon sa pamamaraan ay nagsasangkot ng pagsulat ng isang programa na binubuo ng mga sunud-sunod na pahayag na maaaring tipunin sa isang pinag-isang kabuuan upang epektibong malutas ang isang tiyak na hanay ng mga problema. Kabilang sa mga nasabing wika ang C , PureBasic at Pascal . Sa madaling salita, ang mga wikang nagdudulot ng kawalan ng pag-asa sa mga mag-aaral sa high school at undergraduates. Nandiyan din ang medyo batang GOwika. Sabi nga, ang pagiging pamilyar sa mga procedural na wika ay lubhang kapaki-pakinabang para sa isang potensyal na developer. Ang aking immersion sa mga procedural na wika ay kasama ng sistemang Wolfram Mathematica at pananaliksik sa unibersidad. Ang mga wastong algorithm at simpleng pamamaraan, na gumagalaw nang linear mula sa simula ng programa hanggang sa katapusan, ay nagpapahintulot sa akin na kalkulahin ang mga halaga na nauugnay sa modernong teoretikal na pisika. Ang "sequential" programming language na ito ay ang bagay lamang na makakatulong sa iyong maunawaan na kung minsan ay mas madaling magsulat ng code na manu-manong gumaganap ng mga kalkulasyon. Ang learning procedure-oriented programming (POP) ay nagbibigay ng magandang algorithmic na pagsasanay, na halos palaging gustong makita ng employer sa isang kandidato sa trabaho. Ganap na lahat ng bagay sa IT ay binuo sa pundasyon ng mga procedural na wika, kaya huwag maliitin ang mga ito. Siya nga pala, ang mga baguhan na nagpapasya kung aling programming language ang matututunan ay madalas na iniisip na ang mga wikang OOP lang ang sumusuporta sa multithreading. Hindi ito totoo. Pinapayagan din ng mga procedural programming language ang parallel computations. Pagpili ng isang programming language - 3

Ang object-oriented na diskarte

Ang mga nagsimula sa mga procedural na wika ay karaniwang bihasa sa matematika, algorithm, at istruktura ng data (dahil sa pagbibigay-diin ng mga teknikal na unibersidad sa mga lugar na ito). Gayunpaman, ang katotohanan ngayon ay ang mga matagumpay na programmer ay karaniwang yaong mga nakabisado ng ibang diskarte sa programming: ang object-oriented na paradigm. Hinahayaan ka ng ideolohiyang OOP na bumuo ng mga tunay na pandaigdigang sistema. Ang isang tampok ng diskarteng ito ay ang pagkakatulad nito sa totoong mundo:
  • Ang iba't ibang mga bagay ay nakikipag-ugnayan sa isa't isa at umiiral nang independiyente sa bawat isa.
  • Ang mga bagay ay may hierarchy at maaaring gamitin o baguhin ang pag-uugali ng kanilang mga ninuno.
  • Maaari kang gumamit ng mga abstract na konsepto, ngunit ang mga bagay lamang na aktwal na umiiral ang maaaring makipag-ugnayan.

Halimbawa

Ang mga wikang nakatuon sa pamamaraan ay mga kasangkapan para sa paglutas ng mga partikular na problema. Kung ang iyong gawain ay nagbabago, kahit na bahagya, malamang na kailangan mong gumugol ng oras at pagsisikap sa muling pagsulat ng lahat ng mga algorithm.

Isipin ang isang programa na naglalarawan ng isang dealership ng kotse na nagbebenta ng mga kotse at trak, parehong bago at ginamit. Sa isang pamamaraang wika, kailangan mong tukuyin ang mga function na nagpoproseso ng input o output ng data para sa bawat entity: isang bagong kotse, isang bagong trak, isang ginamit na kotse, at isang ginamit na trak. Ano ang inaalok ng OOP? Sa isang object-oriented na diskarte, kailangan lang nating tukuyin ang isang klase ng base ng Sasakyan na nag-iimbak ng mga katangiang ibinabahagi ng lahat ng uri ng sasakyan:

  • Gawin
  • Paglipat ng engine
  • Lakas ng kabayo
  • taon
  • Bago o ginamit
  • Presyo

At mga paraan para sa pagkuha at pagpapadala ng impormasyon. Pagkatapos ay gumagawa kami ng mga bagay na nagmamana ng mga katangian ng klase ng Sasakyan: Kotse at Truck. Naglalaman ang mga ito ng impormasyon na partikular na nauugnay sa mga ganitong uri ng sasakyan, pati na rin ang mga pamamaraan ng input/output.

Biglang nagpasya ang pamunuan ng dealership na palawakin ang lineup sa pamamagitan ng pag-aalok din ng mga motorsiklo. Sa ilalim ng pamamaraang pamamaraan, kailangan nating muling likhain ang lahat ng lohika para sa bago at ginamit na mga motorsiklo, habang ang isang wikang OOP ay nagbibigay-daan sa amin na gumawa lamang ng bagong klase ng Motorsiklo na nagmamana ng lahat ng katangian ng superclass ng Sasakyan at naglalaman ng mga pagpipino na partikular sa motorsiklo.

At ano ang mangyayari kung magdadagdag tayo ng iba't ibang sasakyan? Ang pagpapatupad ng pamamaraan ay mangangailangan ng mas maraming trabaho kaysa sa OOP. Higit pa rito, kung mas malaki ang lineup, mas kaunting mga operasyong kinasasangkutan ng mga bagay ang kakailanganin.

Kaya, ang OOP ay isang istilo ng programming na nagbibigay-daan sa iyong pagsamahin ang data at mga pamamaraan sa isang entity at gumana sa kanila bilang isang pinag-isang bagay. Maaaring isaayos ang mga entity sa isang hierarchy at makipag-ugnayan sa isa't isa nang hindi nagsusuri sa mga detalye ng panloob na pagpapatupad ng isa't isa. Ituturo ko ang tatlong dahilan kung bakit ang OOP ang mas progresibong diskarte para sa akin:
  1. Kasama sa OOP ang independiyenteng pagbuo ng mga indibidwal na module, na nagpapahintulot sa isang programmer o pangkat na pumili ng paraan at mga hangganan ng pakikipag-ugnayan at pagpapalitan ng impormasyon.
  2. Ang code na nahahati sa maliliit na module ay mas madaling basahin kaysa sa mga monolitikong pamamaraan. Bilang resulta, mabilis na mauunawaan ng isang tagalabas ang iyong code, at gayundin, maaari kang sumali sa isang bagong proyekto kung kinakailangan.
  3. Maaaring baguhin ang isang klase nang hindi naaapektuhan ang pakikipag-ugnayan ng isa pa, ngunit maaaring makaapekto ang naturang pagbabago sa hierarchy ng mga child object. Kapag napag-aralan mo na ang diskarteng ito, ang pagpapalawak at pagbabago ng isang programa ay magiging walang halaga.
Tandaan na ang isang diskarte ay hindi sumasalungat sa isa, ngunit ang OOP ay mas mataas pa rin sa hierarchy. Kaya, bakit ko inirerekomenda ang Java? I-highlight ko ang mga sumusunod na dahilan:
  1. Cross-platform.

    Ang Java ay gumagana sa lahat ng dako salamat sa Java virtual machine (JVM). Isa sa mga pangunahing bentahe ng wikang ito ay ang cross-platform na katangian nito: hindi na kailangang isipin kung aling library ang idaragdag o ang arkitektura ng isang partikular na processor. "Magsulat ng isang beses, tumakbo kahit saan."

  2. Dokumentasyon.

    Mayroong napakalaking base ng dokumentasyon: opisyal na dokumentasyon ng Oracle, mga portal ng pagsasanay, at isang patuloy na umuunlad na komunidad. Ang mga sagot sa karamihan ng mga tanong na lumitaw sa panahon ng pag-unlad ay matatagpuan sa loob ng ilang minuto. Ang pangunahing bagay ay upang maunawaan kung ano ang ipasok sa search engine =)

  3. Katanyagan.

    Ang Java ay ang pinakasikat na programming language sa mundo: bilang karagdagan sa mga nabanggit na Android at web developer, halos lahat ng enterprise developer ay nagsusulat sa Java. Ang negosyo ay tumutukoy sa panloob na pag-unlad ng korporasyon na kinakailangan para sa mga pangangailangan ng malalaking korporasyon.

    Taun-taon, hinuhulaan ng mga haters ang "kamatayan ng Java". Sabi nila, " Hihinto ang Oracle sa pagsuporta dito. You're totally waste your time. " This is not true! Nangangako silang maglalabas ng mga bagong bersyon ng Java tuwing anim na buwan.

    Para sa akin, ang mga expression ng lambda sa Java 8 ay rebolusyonaryo at isang paghahayag, upang walang masabi tungkol sa mga bagong bersyon! Kasalukuyan akong gumagawa ng isang "legacy" na proyekto, kaya hindi ko sinisiyasat ang pinakabagong mga inobasyon, ngunit ito ay isang katotohanan na ang Java ay buhay.

    Pagpili ng isang programming language - 4
  4. Android.

    Sa nakalipas na 4 na taon, patuloy na hawak ng Android ang higit sa 80% ng merkado ng mobile phone . Ang mga TV, media player, at maging ang mga car infotainment system ay tumatakbo sa operating system na ito. At ang pagbuo ng app para sa OS na ito ay nangyayari pangunahin sa Java. Isipin mo na lang ang mga prospect na nagbubukas. Nang makakuha ako ng trabaho bilang isang developer ng Android, naisip ko kung magkano ang halaga ng produktong aking binuo? Tulad ng nangyari, ang presyo ay humigit-kumulang $5 bawat taon. Iyon ay nagtatanong, "kung gayon, saan nanggagaling ang pera para sa opisinang ito, ang mga suweldo, meryenda, mesa ng ping-pong, mga robot, at iba pang mga perks? Ang sagot ay nasa dami: ang aming app ay may 20 milyong mga gumagamit.

  5. Mga suweldo.

    At ngayon ang icing on the cake: ang suweldo ng isang developer ng Java ay kabilang sa pinakamataas sa industriya. Pagkatapos ng lahat, nagpaplano kang mag-aral ng programming para sa isang tiyak na layunin: upang makakuha ng magandang trabaho.

Ang kasikatan ng programming language

May mga opisyal na pinagmumulan ng impormasyon, kaya't bumaling tayo sa kanila. Ayon sa TIOBE , ang Java ay nangunguna sa ranggo noong Oktubre 2019. Sa PYPL ranking, ang Java ay pumapangalawa, malayo sa unahan ng JS at kaagaw sa usong Python.

Konklusyon

Habang iniisip ng isang baguhan ang pagpili ng isang programming language, ito ang dapat niyang bigyang pansin:
  • Popularidad (Patuloy na sinasakop ng Java ang nangungunang posisyon)
  • Entry threshold (para sa Java, medium ito: nangangailangan ang mga employer ng medyo malawak na hanay ng mga kasanayan)
  • Magagamit na mga materyales (maligayang pagdating sa CodeGym =))
  • Mga larangan ng aplikasyon: mas maraming field kung saan ginagamit ang isang programming language, mas maraming mga espesyalista ang kinakailangan sa merkado. Nabanggit ko na kung paano sinusuportahan ng Java ang cross-platform development, ngunit hindi ako nagsasawang ulitin ito.
Siyempre, may mga pitfalls sa lahat ng dako, ngunit siya na gumagawa ng isang hakbang ay sumusulong: ikaw lamang ang makakapagpasya kung aling programming language ang pipiliin. Good luck sa pag-aaral!
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION