JavaRush /Java блогу /Random-KY /Программалоо тилин тандоо
Алексей Дмитревский
Деңгээл
Москва

Программалоо тилин тандоо

Группада жарыяланган
Мен программалоону биринчи жолу мектепте, информатика сабагында көргөм. Булар n-арлык санауу системаларынын принциптерин тажатма түшүндүрмөлөр эле. Сыноо катары мен өзүмдүн веб-сайтымды жазууга туура келди. Ошондо мага дүйнөдө кызыксыз иш жоктой сезилди. Кандай жаңылыштым! Тилекке каршы, мектептик информатика боюнча окуу планы ITтин ишинин толук сүрөттөлүшүн бербейт, программалоо тorн кантип тандоо керектиги так эмес. Программалоо тorн тандоо - 1"Кайсы программалоо тorн үйрөнүү үчүн тандоо керек" деген суроону берүүдөн мурун, башталгыч кайсы тилдер бар жана алардын айырмачылыктары менен таанышышы керек.

Кирүү босогосу: жогорку, төмөн, орто

Программисттер арасында "кирүү босогосу" жөнүндө көп угууга болот - бул жеке "кенже" үчүн өзүнүн биринчи олуттуу программасын жазуу жана жумуш табуу үчүн жетиштүү деңгээлде программалоо тorн өздөштүрүү үчүн талап кылынган күч-аракеттин көлөмүн чагылдырган түшүнүк. "Кирүү босогосу" төмөнкү бorмдерден турат:
  • тилдин синтаксисинин жана нюанстарынын өзгөчөлүктөрү;
  • китепканалар;
  • алгоритмдер жана маалымат структуралары.
Чынында, Excelде иштөөнү да программалоонун бир түрү деп атоого болот. Айтмакчы, бул тааныш кеңсе программасы көрүнгөндөй жөнөкөй эмес. Бири үчүн кирүү босогосу table түзө билүү, экинчиси үчүн татаал формулаларды жана макросторду билүү болот. Кандай болгон күндө да бул босого аз. Андан кийин квази тилдер келет: мисалы, программалоо. Андан кийин - үйрөнүүгө эң оңой тилдер: мисалы, PHP . Андан кийин эстутум менен кол менен өз ара аракеттенүүнү талап кылбаган жергorктүү (көбүнчө англис тorнен алынган) синтаксиси бар тилдер: мисалы, Java , JS . Андан кийин эстутумга, маалымат структураларына жана алгоритмдерге өтө кылдат мамиле кылууну талап кылган тилдер бар: мисалы, C , C++ . Жаш көп парадигмалуу тилдер, балким, кирүү үчүн эң жогорку тоскоолдуктарга ээ, анткени аларды өздөштүрүү үчүн башка программалоо тилдеринде бирден ашык ит жеш керек: мисалы, Scala . Бирок, биринчи кезекте, тилди тандоодо, сиз андан ары эмне кылууну чечишиңиз керек: веб, ишкана, рабочий же мобилдик тиркемелерди иштеп чыгуу.

Веб же веб эмес?

Web

Веб программисттерди Frontend жана Backend иштеп чыгуучуларына бөлүүгө болот . Бул терминдер эмнени билдирерин түшүнүү керек. "Frontend" иштеп чыгуучулары кардар деп аталган тарап менен иштешет - колдонуучу эмнени көрөт. "Бакэнд" бул кызматтын программалык жана аппараттык бөлүгү - serverде иштеген нерсе. Кайсы программалоо тorн тандоону чечкен Frontend иштеп чыгуучусу үчүн JavaScript жана анын алHowтары болушу керек : Angular JS, React жана башкалар. JS диалектилери ата-энелериндей популярдуу эмес, бирок пайдалуу да болушу мүмкүн: CoffeeScript, TypeScript. Ошондой эле флеш AS бар, буга чейин JScript жана VBScript бар болчу, бирок динозаврлар гана муну эстешет =) Мындан тышкары, сиз HTML жана CSS түшүнүшүңүз керек .
Программалоо тorн тандоо - 2
Көптөгөн башталгычтар JavaScript жана Java дээрлик бир нерсе деп ойлошот; бул тилдерди чаташтырбоо керек. JS мурда "LiveScript" деп аталып, "Java" сөзүнүн популярдуулугунан улам азыркы аталышын алган. PHP, Python, Ruby, Pearl, Java веб-бакантка ылайыктуу . Бул жерде мен PHPге көңүл бургум келет - биз кийинчерээк башка тилдер жөнүндө сүйлөшөбүз - үйрөнүүгө эң оңой тилдердин бири, анын кирүү босогосу төмөн. Руби, тааныш веб-иштеп чыгуучулардын сурамжылоосу боюнча, акырындык менен, бирок сөзсүз түрдө популярдуулукка ээ болууда: ал өзүнүн кыскалыгы жана сулуулугу үчүн жакшы көрүшөт.

Веб эмес (Ишкана, Иш такта, Мобилдик)

Мен атайын ушул программалоо тилдерин ушундай кызыктай ат менен категорияга топтодум. Алардын көбү ишкана, рабочий, жада калса мобилдик тиркемелерди жазуу үчүн колдонулушу мүмкүн. Python , түшүнүүгө оңой OOLP, Machine Learningдин өнүгүшүнө байланыштуу акыркы убакта укмуштуудай популярдуу болуп калды : анын жактоочулары Pythonду кеңири колдонушат. ML - бул IT тармагындагы бир топ жаш аймак жана биринчи жемиштер алынган болсо да, мен программалоо тorн тандоодо бул тармакка сүңгүүгө шашпайм. Биринчиден, сиз математиканы абдан жакшы бorшиңиз керек. Экинчиден, популярдуулуктун толкуну "блокчейн" же "нанотехнологиялар" сыяктуу эле жүрүшү мүмкүн. Мындан тышкары, эсиңизде болгондой, Python веб-иштеп чыгууда колдонулат. C++ : классикалык, баары "плюстердин" негизинде курулган. Бул тил бардык популярдуу OOLPтердин түпкү атасы болгон жана башталгыч ага сөзсүз көңүл бурушу керек. Көптөгөн популярдуу колдонмолор ага негизделген. Бирок "бутуңа ок атуу" ыктымалынын жогору болушу жана түшүнүү кыйын синтаксис программалоонун бул мастодонду үйрөнүү ыктымалдыгын жокко чыгарат. Котлин - хипстерлер үчүн Java - OOP жана функционалдык программалоонун жинди аралашмасы. Javaдан Котлинге өткөн тажрыйбалуу иштеп чыгуучу анын өндүрүмдүүлүгүн бир топ жакшырткандыктан, жакында популярдуу болду. Тажрыйбалуу иштеп чыгуучу бул тилге бат көнүп калат. Айтмакчы, бул Scala үчүн да тиешелүү, бирок Котлин Androidде популярдуу. Java үйрөнчүк үчүн оңой. Анын ичинде, JavaRush үчүн рахмат : дал ушул жерден мен программалоо тorн кантип тандоону түшүндүм =) Java синтаксиси түшүнүктүү, "өзүңүздү бутка атып салуу" мүмкүнчүлүгү бар, бирок критикалык эмес.

OOP же POP?

Процедуралык мамиле

Процедура-багытталган ыкма көйгөйлөрдүн белгилүү бир чөйрөсүн натыйжалуу чечүү үчүн бир бүтүнгө чогултула турган ырааттуу билдирүүлөрдөн турган программаны жазууну камтыйт. Бул тилдерге төмөнкүлөр кирет: C , PureBasic жана Pascal . Жогорку жана кенже класстын окуучуларынын көңүлүн чөктүрөт. Салыштырмалуу жаш GO да бар . Бирок, proceduresалык тилдер менен таанышуу потенциалдуу иштеп чыгуучу үчүн абдан пайдалуу. Мен үчүн proceduresалык тилдерге чөмүлүү Mathematica системасы (Wolfram) жана университеттин изилдөө иштери менен байланыштуу. Туура алгоритмдик ыкмалардын жана жөнөкөй proceduresалардын аркасында программанын башынан аягына чейин сызыктуу жылып, мен заманбап теориялык физикага тиешелүү маанилерди эсептей алдым. Дал ушул "ырааттуу" тилдердин аркасында сиз кээде өз алдынча эсептөөгө караганда code жазуу оңой экенин түшүнө баштайсыз. МЖӨ изилдөө жакшы алгоритмдик тренингди камсыз кылат, аны жумуш берүүчү жумушка алууда дээрлик дайыма талапкерден көргүсү келет. IT чөйрөсүндөгү бардык нерсенин жана ар бир адамдын негиздери proceduresалык тилдерге негизделген, ошондуктан аларды баалабаңыз. Айтмакчы, үйрөнүү үчүн кайсы программалоо тorн тандоону чечкен башталгычтар көбүнчө multithreading OOPтун эксклюзивдүү прерогативи деп ойлошот. Бул андай эмес. Процедуралык программалоо тилдери ошондой эле параллелдүү эсептөөлөрдү жүргүзүүгө мүмкүндүк берет.
Программалоо тorн тандоо - 3

Объектке багытталган мамиле

Процедуралык тилдер менен баштагандар көбүнчө математиканы, алгоритмдерди жана маалымат структураларын жакшы бorшет (бул техникалык университеттерде бorмдин бул тармактарына басым жасалгандыктан). Бирок, заманбап реалдуулукта ийгorктүү программисттер көбүнчө программалоонун дагы бир ыкмасын - an objectиге багытталгандарды жакшы өздөштүргөндөр болуп саналат. OOP идеологиясы чыныгы глобалдык системаларды курууга мүмкүндүк берет. Бул ыкманын өзгөчөлүгү анын реалдуу дүйнөгө окшоштугунда:
  • ар кандай an objectилер бири-бири менен өз ара аракеттенет жана бири-биринен көз карандысыз бар.
  • an objectтер иерархияга ээ жана алардын ата-бабаларынын жүрүм-турумун кабыл алууга же өзгөртүүгө жөндөмдүү.
  • Сиз абстрактуу түшүнүктөр менен иштей аласыз, бирок чындап эле бар an objectтер гана өз ара аракеттене алат.

Мисал

Процедуралык багыттагы тилдер конкреттүү маселелерди чечүү үчүн курал болуп саналат. Жана эгер сиздин тапшырмаңыз кичине болсо да өзгөрүүгө дуушар болсо, сиз бардык алгоритмдерди кайра жазууга убакыт жана күч-аракет жумшашыңыз керек болот.

Представим программу, описывающую автосалон, который продает легковые и грузовые автомоб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. Документация.

    Эң кеңири documentация базасы: расмий Oracle documentтери, окутуу порталдары, тынымсыз өнүгүп келе жаткан коомчулук. Өнүктүрүү учурунда келип чыккан көпчүлүк суроолорго жоопторду бир нече мүнөттөн кийин тапса болот, эң негизгиси издөө системасына эмнени териш керектигин түшүнүү =)

  3. Популярдуулук.

    Java - дүйнөдөгү эң популярдуу программалоо тor: жогоруда айтылган Android жана веб-иштеп чыгуучулардан тышкары, дээрлик ар бир биринчи жолу ишкана иштеп чыгуучу Java тorнде жазат. Ишкана - бул ири корпорациялардын муктаждыктары үчүн зарыл болгон ички өнүгүү.

    Жыл сайын жек көрүүчүлөр "Яванын өлүмүн" алдын ала айтышат, алар: " Oracle аны колдоону токтотот, жалпысынан сиз куру сөз кылып жатасыз " дешет. Бул андай эмес! Javaнын жаңы versionлары алты ай сайын чыгарылат деп убадаланган. Эң маанилүү инновацияларды жана акыркы versionнын өзгөчөлүктөрүн бул жерден окусаңыз болот .

    Мен үчүн Java 8деги ламбдалар жаңы versionларды айтпаганда да, революция жана ачылыш болду! Азыр мен "ретрограддык" долбоордун үстүндө иштеп жатам, ошондуктан мен инновацияларга кирбейм, бирок Java жашап жаткандыгы - бул чындык.

    Программалоо тorн тандоо - 4
  4. Android.

    Android акыркы 4 жылдын ичинде уюлдук телефон рыногунун 80% дан ашыгын ишенимдүү ээлеп келет ; телевизорлор, медиа ойноткучтар жана атүгүл унаалардагы медиа тутумдар ушул операциялык системада иштейт. Ал эми бул OS үчүн иштеп чыгуу негизинен Java жүзөгө ашырылат. Кандай перспективалар ачылып жатканын элестетиңиз. Мен Android иштеп чыгуучусу болуп жумушка орношкондо кызыктым: мен иштеп жаткан продукт канча турат? Жылына баасы болжол менен 5 доллар экени белгилүү болду. Акылга сыярлык суроо пайда болду: бул кеңсеге, айлыкка, печеньеге, теннис столуна, роботторго жана башка "жакшы нерселерге" каражат кайдан келди? Бул сандын маселеси: биздин тиркемеде 20 миллион колдонуучу бар.

  5. Эмгек акылар.

    Ал эми десерт үчүн: Java иштеп чыгуучунун эмгек акысы тармактагы эң жогоркулардын бири. Сиз белгилүү бир максат үчүн программалоону үйрөнөсүз: жакшы жумушка орношуу.

Программалоо тorнин популярдуулугу

Программалоо тorн тандоодо сиз үйрөнүүнүн түпкү максаты – биринчи жумушуңузду алуу жөнүндө ойлонушуңуз керек. Ар кандай тилдердин популярдуулугун баалоо үчүн мен популярдуу рекрутинг порталына кирип , Москвага ар кандай суроо-талаптар боюнча бош орундардын санын карай баштадым. Төмөндө жыйынтыктарды көрө аласыз.
Java: 277
питон: 227
php: 188
c#: 147
c++: 131
рубин: 40
скала: 24
Котлин: 20
Жада калса жакында популярдуу болгон Python да Javaдан алдыга чыга алган жок. Бирок бул субъективдүү маалыматтар: белгилүү бир шаар, белгилүү бир күн. Расмий булактар ​​бар, аларга кайрылалы. 2018-жылдын октябрына карата, TIOBE маалыматы боюнча, Java биринчи орунда турат. PYPL рейтингинде Java экинчи орунду ээлейт, JSден алда канча алдыда жана "модалуу" Python менен атаандашат.

НАТЫЙЖАЛАРЫ

Жаңы баштаган адам программалоо тorн тандоодо эмнелерге көңүл бурушу керек:
  • Популярдуулук (Java дайыма алдыңкы орунду ээлейт);
  • Кирүү босогосу (Java үчүн – орточо: иш берүүчү талап кылган компетенциялардын диапазону кыйла кеңири);
  • Жеткorктүү материалдар (Орус тorнде JavaRush окшош порталдар жок, ошондуктан, пальма ким экенин болжолдойт =));
  • Колдонуу чөйрөсү: программалоо тor колдонула турган тармактар ​​канчалык көп болсо, рынокто ошончолук көп адистер талап кылынат. Мен буга чейин кросс-платформа жөнүндө айттым, бирок аны кайталоодон тажабайм.
Албетте, бардык жерде тузактар ​​бар, бирок басып жүргөн адам жолду өздөштүрүп алат: кайсы программалоо тorн тандоону сиз гана чече аласыз . Окууңарга ийгorк!
Комментарийлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION