JavaRush /Java Blog /Random-TL /Pagpili ng isang programming language

Pagpili ng isang programming language

Nai-publish sa grupo
Una kong nakatagpo ng programming sa paaralan, sa mga klase sa computer science. Ito ay ilang nakakapagod na paliwanag ng mga prinsipyo ng n-ary number system. Well, bilang isang pagsubok, kailangan kong magsulat ng sarili kong website. Pagkatapos ay tila sa akin na wala nang nakakainip na aktibidad sa mundo. Kung gaano ako nagkamali! Sa kasamaang palad, ang kurikulum ng computer science ng paaralan ay hindi nagbibigay ng kumpletong larawan ng gawain ng IT, at hindi malinaw kung paano pumili ng isang programming language. Pagpili ng programming language - 1Bago magtanong ng tanong na "Aling programming language ang pipiliin upang matutunan," ang isang baguhan ay dapat maging pamilyar sa kung anong mga wika ang umiiral at kung ano ang kanilang mga pagkakaiba.

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.
Sa katunayan, kahit na 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 isa, ang threshold para sa pagpasok ay ang kakayahang bumuo ng isang talahanayan, para sa isa pa - kaalaman sa mga kumplikadong formula at macro. Sa anumang kaso, maliit ang threshold na ito. Susunod na mga quasi-languages: halimbawa, 1C programming. Pagkatapos - ang pinakamadaling wikang matutunan: halimbawa, PHP . Susunod ay ang mga wikang may katutubong (karaniwang nagmula sa Ingles) na syntax na hindi nangangailangan ng manu-manong pakikipag-ugnayan sa memorya: halimbawa, Java , JS . Pagkatapos ay mayroong mga wika na nangangailangan ng labis na maingat na paghawak ng memorya, mga istruktura ng data at mga algorithm: halimbawa, C , C++ . Ang mga batang multi-paradigm na wika ay may, marahil, ang pinakamataas na hadlang sa pagpasok, dahil upang makabisado ang mga ito kailangan mong kumain ng higit sa isang aso sa iba pang mga programming language: halimbawa, Scala . Ngunit una sa lahat, kapag pumipili ng isang wika, dapat kang magpasya kung ano ang gusto mong gawin sa susunod: bumuo ng web, enterprise, desktop o mobile application.

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 .
Pagpili ng isang programming language - 2
Maraming mga nagsisimula ang nag-iisip na ang JavaScript at Java ay halos magkaparehong bagay; ang mga wikang ito ay hindi dapat malito. Ang JS ay dating tinatawag na "LiveScript" at nakuha ang kasalukuyang pangalan nito dahil sa kasikatan ng salitang "Java". Ang PHP, Python, Ruby, Pearl, Java ay angkop para sa web backend . Dito nais kong bigyang pansin ang PHP - pag-uusapan natin ang tungkol sa iba pang mga wika sa ibang pagkakataon - isa sa mga pinakamadaling wika na matutunan, na may mababang limitasyon ng pagpasok. Si Ruby, na hinuhusgahan ng isang survey ng mga pamilyar na web developer, ay dahan-dahan ngunit tiyak na nakakakuha ng katanyagan: ito ay minamahal dahil sa kaiklian at kagandahan nito.

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.
Pagpili ng isang programming language - 3

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но-ориентированном подходе нужно просто описать базовый класс ТРАНСПОРТ, который будет хранить в себе характеристики, присущие и тому, и другому типу автомобилей:

  • Марка
  • Объем двигателя
  • Мощность
  • Год выпуска
  • Новый or б/у
  • Цена

И методы для ввода-вывода информации. Затем создадим an objectы, наследующие характеристики класса ТРАНСПОРТ: ЛЕГКОВУШКА и ГРУЗОВИК. Они содержат уточнённую информацию, присущую именно таким видам транспорта, а также методы ввода-вывода.

Внезапно руководство салона решило расширить ассортимент и продавать еще и мотоциклы. Процедурный подход предложит переписать всю логику для новых и б/у мотоциклов с самого начала, в то время How ООП-язык позволит просто создать новый an object МОТОЦИКЛ, наследующий все характеристики суперкласса ТРАНСПОРТ и содержащий уточнения.

А что будет, если добавлять разные транспортные средства? Процедурная реализация будет требовать больших трудозатрат, чем ООП. Причем чем больше ассортимент, тем меньше нужно будет делать манипуляций с an objectми.

Итак, ООП — это стиль программирования, позволяющий объединять данные и методы одной сущности и работать с ними How с цельным an objectом. Сущности могут выстраиваться в иерархии и взаимодействовать между собой, не вдаваясь в подробности внутренней реализации друг друга. Для себя я выделяю три причины, по которым ООП — более прогрессивный подход:
  1. ООП предполагает независимую разработку отдельных модулей, предоставляя программисту or команде выбирать способ и границы соприкосновений и обмена информацией.

  2. Разбиение на небольшие модули намного проще для восприятия, чем монолитные proceduresы. Благодаря этому сторонний разработчик быстро разберется в твоем codeе, а ты при необходимости войдешь в новый проект.

  3. Изменение одного an object может ниHow не отразиться на взаимодействии с другим, но способно повлиять на иерархию дочерних an objectов. Освоив такой подход, расширение и доработка программы становится тривиальной задачей.
Нужно помнить о том, что один подход не противоречит другому, но иерархически ООП всё же находится выше. Собственно, почему я рекомендую именно Java? Я бы выделил следующие причины:
  1. Кроссплатформенность.

    Java работает везде благодаря JVM —виртуальной машине Java. Один из главных плюсов этого языка — кроссплатформенность: не нужно думать о том, Howую библиотеку подключить, Howова архитектура у конкретного процессора. «Написано однажды —работает всегда».

  2. Документация.

    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 =)

  3. 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.

    Pagpili ng isang programming language - 4
  4. 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.

  5. 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
Kahit na ang kamakailang sikat na Python ay hindi maaaring mauna sa Java. Ngunit ito ay pansariling data: isang partikular na lungsod, isang partikular na araw. May mga opisyal na mapagkukunan, buksan natin sila. Mula noong Oktubre 2018, ayon sa TIOBE, ang Java ay nangunguna sa ranggo. Sa pagraranggo ng PYPL , pumangalawa ang Java, nangunguna sa JS at nakikipagkumpitensya sa "fashionable" na Python.

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.
Siyempre, may mga pitfalls sa lahat ng dako, ngunit ang taong naglalakad ay makakabisado sa kalsada: ikaw lang ang makakapagpasya kung aling programming language ang pipiliin . Good luck sa iyong pag-aaral!
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION