
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.
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 .
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.
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:
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. |
- 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.
- 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.
- 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.
-
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."
-
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 =)
-
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.
-
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.
-
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.
GO TO FULL VERSION