Entry threshold: mataas, mababa, katamtaman
Sa mga programmer, madalas mong marinig ang tungkol sa "threshold of entry" - isang konsepto na sumasalamin sa dami ng pagsisikap na kinakailangan para sa isang indibidwal na "junior" upang makabisado ang isang programming language sa isang sapat na antas upang maisulat ang kanyang unang seryosong programa at makahanap ng trabaho. Ang “entry threshold” ay binubuo ng kaalaman:- mga tampok ng syntax at mga nuances ng wika;
- mga aklatan;
- mga algorithm at istruktura ng data.
Web o hindi Web?
Web
Ang mga web programmer ay maaaring nahahati sa mga developer ng Frontend at Backend . Ito ay nagkakahalaga ng pag-unawa kung ano ang ibig sabihin ng mga terminong ito. Nakikitungo ang mga developer ng “Frontend” sa tinatawag na client side - kung ano ang makikita ng user. Ang “Backend” ay ang software at hardware na bahagi ng serbisyo - kung ano ang tumatakbo sa server. Para sa isang Frontend developer na nagpapasya kung aling programming language ang pipiliin, ang dapat na magkaroon ay JavaScript at ang mga framework nito: Angular JS, React at iba pa. Ang mga JS dialect ay hindi kasing sikat ng kanilang magulang, ngunit maaari ding maging kapaki-pakinabang: CoffeeScript, TypeScript. Mayroon ding flash na AS, bago nagkaroon ng JScript at VBScript, ngunit ang mga dinosaur lamang ang nakakaalala na =) Bilang karagdagan, kailangan mong maunawaan ang HTML at CSS .Non-Web (Enterprise, Desktop, Mobile)
Partikular kong pinagsama-sama ang mga programming language na ito sa isang kategorya na may kakaibang pangalan. Karamihan sa mga ito ay maaaring gamitin upang magsulat ng enterprise, desktop, at kahit na mga mobile application. Ang Python , isang madaling maunawaang OOLP, ay naging napakapopular kamakailan dahil sa pag-unlad ng Machine Learning : ang mga sumusunod nito ay malawakang gumagamit ng Python. Ang ML ay isang medyo batang lugar sa IT, at kahit na ang mga unang bunga ay natanggap na, hindi ako magmamadaling sumisid sa industriyang ito kapag pumipili ng isang programming language. Una, kailangan mong maging napakahusay sa matematika. Pangalawa, ang alon ng katanyagan ay maaaring pumunta sa parehong paraan tulad ng sa "blockchain" o "nanotechnology". Bilang karagdagan, tulad ng naaalala mo, ginagamit ang Python sa pagbuo ng web. C++ : klasiko, ang lahat ay binuo batay sa mga "plus". Ang wikang ito ang ninuno ng lahat ng sikat na OOLP, at dapat talagang bigyang pansin ito ng isang baguhan. Maraming sikat na application ang nakabatay dito. Ngunit ang mataas na posibilidad ng "pagbaril sa iyong sarili sa paa" at ang mahirap na maunawaan na syntax ay nagpapawalang-bisa sa posibilidad ng isang baguhan na makabisado ang mastodon na ito ng programming. Kotlin - Java para sa mga hipsters - isang nakatutuwang halo ng OOP at functional programming. Kamakailan ay sikat dahil sa ang katunayan na ang isang bihasang developer na lumipat mula sa Java patungo sa Kotlin ay makabuluhang nagpapabuti sa kanyang pagiging produktibo. Mabilis na masasanay ang isang bihasang developer sa wikang ito. Sa pamamagitan ng paraan, ang parehong naaangkop sa Scala, ngunit ang Kotlin ay sikat sa Android. Ang Java ay madaling matutunan ng isang baguhan. Kasama, salamat sa JavaRush : dito ko naintindihan kung paano pumili ng isang programming language =) Ang Java syntax ay malinaw, may posibilidad na "pagbaril sa iyong sarili sa paa", ngunit hindi kritikal.OOP o POP?
Pamamaraan na 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 solong kabuuan upang epektibong malutas ang isang tiyak na hanay ng mga problema. Ang mga wikang ito ay kinabibilangan ng: C , PureBasic at Pascal . Ang parehong mga nagdudulot ng kawalan ng pag-asa sa mga mag-aaral sa high school at junior. Mayroon ding medyo batang GO . Gayunpaman, ang pamilyar sa mga wikang pamamaraan ay lubhang kapaki-pakinabang para sa isang potensyal na developer. Para sa akin, ang pagsasawsaw sa mga procedural na wika ay nauugnay sa Mathematica system (Wolfram) at mga aktibidad sa pananaliksik sa unibersidad. Salamat sa mga tamang algorithmic approach at simpleng pamamaraan, na gumagalaw nang linear mula sa simula ng programa hanggang sa katapusan nito, nagawa kong kalkulahin ang mga halaga na may kaugnayan sa modernong teoretikal na pisika. Ito ay salamat sa mga "sequential" na mga wika na sinimulan mong maunawaan na kung minsan ay mas madaling magsulat ng code kaysa magbilang sa iyong sarili. Ang pag-aaral ng PPP ay nagbibigay ng magandang algorithmic na pagsasanay, na halos palaging gustong makita ng isang employer sa isang kandidato kapag kumukuha. Ang mga pundasyon ng lahat ng bagay at lahat ng tao sa IT ay binuo sa pamamaraang mga wika, kaya huwag maliitin ang mga ito. Sa pamamagitan ng paraan, ang mga nagsisimula na nagpapasya kung aling programming language ang pipiliin upang matutunan ay madalas na iniisip na ang multithreading ay ang eksklusibong prerogative ng OOP. Mali ito. Pinapayagan ka rin ng mga procedural programming language na magsagawa ng mga parallel na kalkulasyon.Pamamaraan na nakatuon sa bagay
Ang mga nagsimula sa mga wikang pamamaraan ay kadalasang may mahusay na kaalaman sa matematika, algorithm at istruktura ng data (ito ay dahil sa pagbibigay-diin sa mga lugar na ito ng kaalaman sa mga teknikal na unibersidad). Gayunpaman, sa modernong mga katotohanan, ang mga matagumpay na programmer ay madalas na ang mga mahusay na pinagkadalubhasaan ang isa pang diskarte sa programming - object-oriented. Ginagawang posible ng ideolohiyang OOP na bumuo ng mga tunay na pandaigdigang sistema. Ang kakaiba ng diskarteng ito ay ang pagkakatulad nito sa totoong mundo:- ang iba't ibang bagay ay nakikipag-ugnayan sa isa't isa at nag-iisa sa isa't isa.
- Ang mga bagay ay may hierarchy at may kakayahang tanggapin o baguhin ang pag-uugali ng kanilang mga ninuno.
- Maaari kang magpatakbo gamit ang mga abstract na konsepto, ngunit ang mga talagang umiiral na bagay lamang ang maaaring makipag-ugnayan.
Halimbawa Ang mga procedural-oriented na wika ay mga tool para sa paglutas ng mga partikular na problema. At kung ang iyong gawain ay sumailalim sa isang pagbabago, kahit na isang maliit, malamang na kailangan mong gumugol ng oras at pagsisikap na muling isulat ang lahat ng mga algorithm. Представим программу, описывающую автосалон, который продает легковые и грузовые автомобor, How новые, так и подержанные. В proceduresном языке для каждого an object нужно описать функции, обрабатывающие ввод or вывод данных для нового легкового, нового грузового, б/у легкового и б/у грузового автомобилей. А что предлагает ООП? При an objectно-ориентированном подходе нужно просто описать базовый класс ТРАНСПОРТ, который будет хранить в себе характеристики, присущие и тому, и другому типу автомобилей:
И методы для ввода-вывода информации. Затем создадим an objectы, наследующие характеристики класса ТРАНСПОРТ: ЛЕГКОВУШКА и ГРУЗОВИК. Они содержат уточнённую информацию, присущую именно таким видам транспорта, а также методы ввода-вывода. Внезапно руководство салона решило расширить ассортимент и продавать еще и мотоциклы. Процедурный подход предложит переписать всю логику для новых и б/у мотоциклов с самого начала, в то время How ООП-язык позволит просто создать новый an object МОТОЦИКЛ, наследующий все характеристики суперкласса ТРАНСПОРТ и содержащий уточнения. А что будет, если добавлять разные транспортные средства? Процедурная реализация будет требовать больших трудозатрат, чем ООП. Причем чем больше ассортимент, тем меньше нужно будет делать манипуляций с an objectми. |
- ООП предполагает независимую разработку отдельных модулей, предоставляя программисту or команде выбирать способ и границы соприкосновений и обмена информацией.
- Разбиение на небольшие модули намного проще для восприятия, чем монолитные proceduresы. Благодаря этому сторонний разработчик быстро разберется в твоем codeе, а ты при необходимости войдешь в новый проект.
- Изменение одного an object может ниHow не отразиться на взаимодействии с другим, но способно повлиять на иерархию дочерних an objectов. Освоив такой подход, расширение и доработка программы становится тривиальной задачей.
-
Кроссплатформенность.
Java работает везде благодаря JVM —виртуальной машине Java. Один из главных плюсов этого языка — кроссплатформенность: не нужно думать о том, Howую библиотеку подключить, Howова архитектура у конкретного процессора. «Написано однажды —работает всегда».
-
Документация.
Ang pinakamalawak na base ng dokumentasyon: opisyal na dokumentasyon ng Oracle, mga portal ng pagsasanay, patuloy na umuunlad na komunidad. Ang mga sagot sa karamihan sa 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 i-type sa search engine =)
-
Katanyagan.
Ang Java ay ang pinakasikat na programming language sa mundo: bilang karagdagan sa mga nabanggit sa itaas na mga developer ng Android at web, halos lahat ng unang beses na developer ng enterprise ay nagsusulat sa Java. Ang negosyo ay isang in-house development na kinakailangan para sa mga pangangailangan ng malalaking korporasyon.
Bawat taon, hinuhulaan ng mga haters ang "kamatayan ng Java", sinasabi nila: " Hihinto ang Oracle sa pagsuporta dito, at sa pangkalahatan ay gumagawa ka ng walang kapararakan ." Mali ito! Ang mga bagong bersyon ng Java ay ipinangako na ilalabas tuwing anim na buwan. Ang pinakamahalagang inobasyon at tampok ng pinakabagong bersyon ay mababasa dito .
Para sa akin, ang mga lambdas sa Java 8 ay isang rebolusyon at isang pagtuklas, hindi banggitin ang mga bagong bersyon! Ngayon ay gumagawa ako ng isang "retrograde" na proyekto, kaya hindi ako nagsasaliksik sa mga inobasyon, ngunit ang katotohanang nabubuhay ang Java ay isang katotohanan.
-
Android.
Ang Android ay may kumpiyansa na sinakop ang higit sa 80% ng merkado ng mobile phone sa nakalipas na 4 na taon; Ang mga TV, media player at maging ang mga media system sa mga sasakyan ay tumatakbo sa ilalim ng operating system na ito. At ang pag-unlad para sa OS na ito ay pangunahing isinasagawa sa Java. Isipin mo na lang kung anong mga prospect ang nagbubukas. Nang makakuha ako ng trabaho bilang isang developer ng Android, naging interesado ako: magkano ang halaga ng produktong aking binubuo? Ito ay lumabas na ang presyo bawat taon ay humigit-kumulang $5. Isang makatwirang tanong ang lumitaw: saan nagmula ang mga pondo para sa opisinang ito, para sa mga suweldo, cookies, tennis table, mga robot at iba pang "magandang bagay"? Ito ay isang bagay ng dami: ang aming application ay may 20 milyong mga gumagamit.
-
Mga suweldo.
At para sa dessert: ang suweldo ng isang developer ng Java ay isa sa pinakamataas sa industriya. Matututo ka ng programming para sa isang partikular na layunin: upang makakuha ng magandang trabaho.
Popularidad ng isang programming language
Kapag pumipili ng isang programming language, kailangan mong pag-isipan ang sukdulang layunin ng pag-aaral - ang pagkuha ng iyong unang trabaho. Upang masuri ang katanyagan ng iba't ibang wika, nagpunta ako sa isang tanyag na portal ng pagre-recruit at nagsimulang tingnan ang bilang ng mga bakante para sa iba't ibang mga kahilingan para sa Moscow. Maaari mong makita ang mga resulta sa ibaba.Java: | 277 |
sawa: | 227 |
php: | 188 |
c#: | 147 |
c++: | 131 |
ruby: | 40 |
scala: | 24 |
kotlin: | 20 |
RESULTA
Narito kung ano ang dapat bigyang-pansin ng isang baguhan kapag pumipili ng isang programming language:- Popularidad (Patuloy na sinasakop ng Java ang isang nangungunang posisyon);
- Entry threshold (Para sa Java - average: ang hanay ng mga kakayahan na kinakailangan ng employer ay medyo malawak);
- Magagamit na mga materyales (walang mga portal na katulad ng JavaRush sa Russian, samakatuwid, ang palad ay napupunta upang hulaan kung sino =));
- Mga lugar ng aplikasyon: mas maraming industriya kung saan maaaring gamitin ang isang programming language, mas maraming mga espesyalista ang kinakailangan sa merkado. Napag-usapan ko na ang tungkol sa cross-platform, ngunit hindi ako mapapagod na ulitin ito.
GO TO FULL VERSION