5 нових програмских језика које треба да знате

За неке људе учење новог програмског језика представља вишак који је најбоље избегавати. Зашто, о, зашто, тврде они, треба нам још један језик?

Зар већ немамо довољно?

Зар постојећи алати не обављају посао?

А ту су и они неуморни трагачи који скачу на прилику да испробају нове ствари и налете на драгуље. Учење је само по себи циљ, и не треба им много убеђивања да би спалили викенде изградњом карташке игре на конзоли на том опскурном, новом језику.

Без обзира којем кампу припадате, постоји нешто ван расправе: сви желимо да потрошимо време на нешто што ће имати светлу будућност.

За људе у табору наслеђа, њихов омиљени постојећи језик већ има много замаха и наставиће да има светлу будућност. За њих, морам да их подсетим да је њихов сада већ зрели преферирани ланац алата за развој некада био „коол-аид“ који су многи одбијали да пију. И данас је тако; нове технологије се додају да би се решили нови проблеми или да би се ублажио бол развоја.

Ако нешто уради ово довољно радикално, велике су шансе да ће наставити да граби умове и достићи врх. Када се то догоди, не желите да будете остављени. 🙂

А за оне који воле да трче са сјајним стварима, упозорење: забава је неопходна као програмер, али морамо пазити да не трошимо своју енергију бесциљно.

наравно, Браинфуцк је невероватно уврнут, забаван мали језик налик на слагалицу, али мало је вероватно да ћете имати користи ако се њиме бавите озбиљно. Желите нешто што је ново, разумно и има чврсту основу.

Како су ови језици бирани

Одабир језика је застрашујући посао, посебно када се размишља о новим језицима за будуће користи у запошљавању и задовољству. Сваки аутор језика је чврсто уверен да је изградио савршен могући језик и решио све проблеме на које треба да одговори. Како онда сечете?

За овај пост, фокусирао сам се на неколико параметара како бих одржао претрагу у разумним границама.

Датум изласка

Посебно сам избегавао језике који су веома, веома нови.

Нови, мислим на језике млађе од 5-6 година од писања, а посебно на оне који нису достигли стабилност (тј. издање 1.0). Ово, нажалост, искључује неке праве драгуље попут Кристал, Али надам се да ћу се једног дана вратити на ово и писати о његовом успеху. 🙂

Исјечак кода у Цристал-у („Брзо као Ц, глатко као Руби“)

За мене је 5-12 година најслађи тренутак, када се језик стабилизује, а ради се на још префињености. Сада, наравно, постоје изузеци од овог правила и они ће се узети у обзир тамо где је то примењиво.

Овај је једноставан, али се често игнорише када смо узбуђени због нечег новог. Сада, за многе људе, подршка велике компаније је довољан преседан за успех, али то није увек тачно.

Да, Аппле-ов Објецтиве-Ц и сада Свифт су напредовали јер су то биле једине опције у високо контролисаном екосистему, али Фацебоок-ов Д и Хацк (по мом мишљењу ружно схватање ионако ружног језика) остају мало више од експеримената.

Идеална комбинација би био језик који подржава велика, стабилна компанија и који експлодира у популарности (као што је Реацт).

Али срж ствари је и даље заједница. Ако језик не ствара зујање и нема довољно програмера за образовање и популаризацију, он се неће попети из свог ГитХуб гроба.

За мене, ово искључује зреле, фасцинантне језике попут Рекет и Ерлангпошто су остали равни на кривој раста.

Фокусиран, добро дефинисан УСП

Трећа ствар коју тражим је јасан циљ за језик. На пример, боља верзија ПХП-а која решава проблеме са именовањем и компајлира у изворни ПХП не ради за мене.

Предности су једноставно премале да би оправдале пукотине ако сви покушају да пређу на то. По овом мерилу, не могу а да не одбацим покушаје попут ЦоффееСцрипти многи други слични језици за компајлирање у ЈаваСцрипт.

Искрено, обавезан сам да одмах одбацим побољшања само синтаксе. Историја је показала да корисност надмашује пријатељство када су језици у питању, тако да ако се сви нови језици фокусирају на пријатније искуство, бојим се да неће доћи на ову листу.

Јасна, доследна синтакса

Да, знам. Управо сам рекао да синтакса није битна. Па, да будем прецизан, рекао сам да „побољшања само синтаксе” нису битна. Али с тим у вези, синтакса остаје један од значајних фактора у продуктивности програмера и могућности одржавања, тако да је то нешто што ће се обавезно наћи у мојим прорачунима овде.

  Поправи Кека код грешке 2 на мацОС-у

Заједно са синтаксом долази и идеја доследности. Именовање функција, структурирање модула, итд., су кључне ствари које језик не може приуштити да погреши. 2018. је, забога, и још један дизајн језика сличан ПХП-у била би срамота за све нас. Дакле, без даљег одлагања, почнимо са наших пет најбољих препорука.

1. Јулиа

За људе на МИТ-у, језици доступни за науку о подацима били су у најбољем случају компромис. Пајтону, упркос својој јасноћи и популарности, недостајале су изворне конструкције за рад са објектима података. Такође, као интерпретирани језик, Питхон је био спор за њих (не библиотеке, имајте на уму, јер су углавном написане у Ц).

Али можда је највећи недостатак био незграпни модел истовремености и недостатак модела паралелног рачунарства, од којих је овај други основни елемент у супер-рачунарству.

Као резултат, Јулиа рођен.

Јулиа је стигла до свог стабилног издања 29. септембра 2018, једва неколико дана пре него што је овај чланак написан (разговарајте о времену!). Ево шта званични сајт има да каже о својим могућностима:

Јулиа се истиче у нумеричком рачунарству. Његова синтакса је одлична за математику, подржани су многи нумерички типови података, а паралелизам је доступан из кутије. Јулијино вишеструко отпремање је природно погодно за дефинисање типова података сличних бројевима и низу.

У синтаксном смислу, Јулиа се може посматрати као комбинација Питхон-а и Ц-а. Да, вероватно је то први пут да је језик циљао на оба ова квалитета и успео.

Да би ствари биле једноставне, Јулиа је брза и не примењује строго куцање. Ево неких мерила:

Званични Јулиа бенцхмаркс

Као што видите, Јулиа је нешто лошија од Ц, али избацује Јава и Питхон из воде. А какву врсту слаткиша за очи Јулија нуди?

Па, ево имплементације функције за израчунавање хипотенузе правоуглог троугла:

Коначно, док је већина Јулија екосистема је у великој мери нагнут према математичком раду, верујем да има светлу будућност опште намене.

То је први језик, колико ја знам, који има првокласну подршку за паралелно рачунарство, тако да неће бити изненађење видети да постаје све популарнији у доменима Веба и Интернета ствари.

2. Руст

Ако сте испробали нова издања претраживача Фирефок, знате да коначно, након година рада, изгледа да би могли да одузму део тржишта Цхроме-у.

Ако је претраживач лаган и брз и брзо се приказује, све је то захваљујући језику који је Мозилла посебно развила: Руст.

Рећи да Руст има светлу будућност биће лаж; језик је већ постигао огроман успех, а ако још нисте чули за њега, то је зато што је његова област примене специјализована, а циљ му је застрашујући: замена Ц++! Да, коначно имамо језик који не само да је у стању да то уради, већ то већ чини.

За људе који су фрустрирани због Ц++-овог преоптерећеног дизајна и изазова управљања меморијом, Руст долази као дашак свежег ваздуха.

Ево како изгледа Руст програм:

Концизно и елегантно, по мом мишљењу. Руст прати приступ функционалног програмирања, који ваш код чини компонљивијим и не постоје објектно оријентисане хијерархије са којима се треба борити.

Дакле, шта даје Русту храброст да крене за Ц++? То је нови модел меморије. Уместо да се ослања на стари плес нев()/делете(), Руст уводи идеју власништва.

Уместо да директно додељују и приступају меморији, Руст варијабле „позајмљују“ једна од друге, уз строга ограничења која поставља компајлер. Општи концепт је превише компликован да би се објаснио у неколико речи, па слободно погледајте званични документи да сазнате више.

Поента је да ово резултира 100% сигурношћу меморије без потребе за сакупљачем смећа, што је велика ствар.

Руст је заузео свет системског програмирања. Већ је подржан на неким платформама, покреће претраживаче и машине за рендеровање који брзо замењују Ц/Ц++ код на производним системима и користи се за писање оперативних система.

Наравно, није свачија шалица чаја за креирање другог претраживача или драјвера уређаја, али Руст се већ шири на друге домене. Већ имамо неколико потпуно функционалних, смешно брзих веб оквира у Русту, а развија се све више библиотека апликација.

Искрено, ако сте заинтересовани за узбудљиву будућност, Руст је савршен језик, а сада је савршено време. Руст је авион који је полетео, али још увек има времена да се укрцамо док иде ка звездама!

Научите Руст од Дмитрија Нестерука.

3. Еликсир

Међу језицима који се фокусирају на срећу програмера, прво место је трајно резервисано за Руби. То је језик који се чита као поезија и има довољно пречица да смањи ментално трење по реду величине.

  Како пронаћи лозинку за Зоом састанак

Није ни чудо, дакле, да Раилс фрамеворк наставља да доминира развојем пуног стека за озбиљне програмере и стартапове. Али нису сви били задовољни Раилсом, посебно један од његових главних програмера – Јосе Валим. Мислим да сам творац најбоље објашњава генезу овог језика у ан интервју:

То је дуга прича, али покушаћу да буде кратка и слатка. Још 2010. сам радио на побољшању перформанси Раилс-а када сам радио са системима са више језгара, пошто наше машине и производни системи испоручују све више и више језгара. Међутим, цело искуство је било прилично фрустрирајуће јер Руби не пружа одговарајући алат за решавање проблема истовремености. Тада сам почео да гледам друге технологије и на крају сам се заљубио у Ерланг виртуелну машину.

Почео сам да користим Ерланг све више и више и, са искуством, приметио сам да ми недостају неке конструкције доступне на многим другим језицима, укључујући функционалне. Тада сам одлучио да направим Еликир, као покушај да доведем различите конструкције и одличне алате на врх Ерланг ВМ-а.

и гле, Еликсир рођен!

Баш као што Сцала унапређује језик Јава, али циља исту виртуелну машину испод (ЈВМ), Еликир користи предности деценијама старе Ерланг виртуелне машине доказане у борби.

Сада, дискусија о Ерлангу је ван оквира овог чланка, али минимум који треба да знате је да је то најбоље чувана тајна телеком индустрије: ако су наше телефонске мреже много поузданије од наших система заснованих на вебу, то је све захваљујући Ерланг.

Још једноставније речено, оно што значи је ово. Ако градите систем у реалном времену попут ћаскања, Еликир је много мање гладан и стабилан за РАМ од Руби-а (или ПХП-а, Питхон-а и Јаве, по том питању).

Машина која покреће Руби и има максимум од 10.000 истовремених веза може лако да поднесе 200.000 када користи Еликир и још увек има довољно РАМ-а за покретање 2Д игара!

Исечак кода еликсира

У погледу синтаксе, Еликир бесрамно копира Руби, а његов доминантни веб оквир, Пхоеник, бесрамно копира Раилс. Рекао бих да је и то добра ствар, јер заједно са Ларавел, Граилс, Масоните, итд., достижемо тачку у којој сви језици имају оквире сличне Раилс-у који могу олакшати транзицију. Неки би се могли подсмевати „недостатку оригиналности“, али ја се барем не жалим.

коначно, Еликсир је једна од оних технологија које су освежавајуће, пријатне и проклето практичне. Неколико Руби (па чак и не-Руби) продавница прелази на Еликир, а велике компаније попут Пинтереста га користе у производњи са изузетно задовољавајућим резултатима.

Многи људи мисле да је Ноде.јс био импровизовани покушај истовремености и да ће га ускоро заменити Еликир. Морам да кажем да се слажем са њима. 🙂

4. Котлин

У И/О 2017., Гоогле је пустио бомбу на масу која ништа не сумња. Компанија је званично објавила Котлин као примарни језик за развој Андроида, који шаље ударне таласе кроз индустрију.

Сада, то што Гоогле активно тражи да замени Јаву не представља изненађење након што га је угризла тужба Орацле-а; међутим, усвајање Котлина је било донекле неочекивано, и још увек постоје добре шансе да ће Гоогле ускоро изаћи са својом виртуелном машином. За сада, међутим, Котлин ужива у порасту.

Котлин је развио ЈетБраинс, компанија познатија по свом скупу лудо добрих уређивача кода. Један од њих, ИнтеллиЈ ИДЕА, чини основу Андроид студија. Циљеви дизајна Котлина су безбедност, сажетост и 100% интероперабилност са Јавом.

Више од било чега другог, Котлин компајлер ради веома напорно да елиминише све изузетке нул-показивача који су тако чести у свету Јава. То такође прилично смањује пословичну Јава вербозност, што ће многима бити олакшање.

Ево дивног поређења кода између Јаве и Котлина:

Кредит за слику: хипе.цодес

Котлин код је знатно краћи и има много мање когнитивног преоптерећења.

Али да разјаснимо једну ствар: мало је вероватно да ће Котлин заменити Јаву, иако брзо постаје фаворит. Верујем да десет година касније, мали и средњи тимови неће тражити даље од Котлина, док ће велике групе наставити да користе Јаву искључиво из разлога наслеђа.

Уз то, Котлин има изузетно светлу будућност јер ради све што ради Јава, може се спојити са Јава кодом а да то нико не примети и много је пријатнији!

5. ТипеСцрипт

Бог зна да сам морао да се уздржим за ово место! Све у мени је вриштало „Брест! Елм!”, али без обзира на то колико су његове идеје револуционарне или колико је божанска синтакса, Елм тек треба да се посматра као главна алтернатива за фронт-енд рад. 🙁 У сваком случају, пређимо на оно што је маинстреам: ТипеСцрипт.

  Како покренути некога ван мреже на ПС4

ЈаваСцрипт је као дивље бобице: ружан и неукусан, али морате га пробавити ако желите да преживите џунглу фронт-енд развоја. Учињено је много покушаја да се он замени (и највероватније ће нови ВебАссембли стандард успети), али оно што је заиста привукло свачију пажњу је суперсет који је развио Мицрософт.

Постоје одличне шансе за које сте чули ТипеСцрипт: Ангулар је био први оквир који га је прихватио од верзије 2 па надаље, и људи су брзо приметили. То је зато што ТипеСцрипт додаје неке преко потребне и фантастичне супермоћи најпознатијем програмском језику на свету.

Да, коначно је могуће написати изворни ЈаваСцрипт код без патње и проклињања нечијег рођења!

Ево побољшања која ТипеСцрипт доноси на сто:

✓ Снажно куцање: Коначно, стринг није број, а број није објекат, што није празан низ!

✓ Провера типа у време компајлирања: Ако се ваш код компајлира исправно, мање-више је загарантовано да нема брадавица ЈаваСцрипт рунтиме-а.

✓ Класе и модули: Да, класе су стандардне у ЕС6, али су укључене и у ТипеСцрипт, поред уредног система модула.

✓ Закључивање типа: За сложене типове, компајлер може лако да открије тип, штедећи вам главобољу.

✓ Асинц/аваит: Кључне речи и обрасци асинц/аваит су фундаментални, тако да нема више петљања са обећањима и повратним позивима!

Именски простори, генерици, тупле . . . Могао бих да набрајам, али требало би да буде довољно рећи да ТипеСцрипт претвара једно од најгорих развојних искустава у једно од најбољих.

ТипеСцрипт исечак кода

Утицај ТипеСцрипт-а се не може порећи. Он је избацио сличне покушаје као што је Гугл Дарт са терена (иако покушава да се врати преко Флуттер-а, оквира за мобилни развој), и отворио очи ЈС програмерима за предности јачих типова.

Као резултат тога, значајне библиотеке као што су Реацт, Д3, Вуе (чак и јКуери!) сада имају ТипеСцрипт верзију, а у најбољим продавницама софтвера широм света, сав ЈаваСцрипт код се пише као ТипеСцрипт код. ТипеСцрипт заглавља су сада доступна и за Ноде.јс (искрено, ако чвор може да побољша своју причу о конкурентности и закрпи своје лоше управљање меморијом, то ће трајати заувек).

Можда ћете бити изненађени када сазнате да је креатор Ноде.јс након јавно жаљење његово стварање, ради на а ново време извођења (тренутно не постоји званична веб локација; само ГитХуб репо) који има ТипеСцрипт као примарни језик.

Најбоља вест? ТипеСцрипт је мали језик за учење са значајним користима у будућности. Ако сте средњи ЈаваСцрипт програмер, покупићете довољно ТипеСцрипт-а у року од два дана да пренесете сав постојећи код!

Закључак и одрицање од одговорности

Одређени језици добијају исто толико популарности као и они у овом чланку, али нису укључени на листу из различитих разлога. Ево кратког погледа:

  • Голанг: Већ успостављен као мејнстрим, ако не и веома популаран језик. Верујем да у овом тренутку Голанг има неколико конкурената који ће задржати његов тржишни удео на ниском нивоу.
  • Р: Р је већ популаран међу научницима за податке и мало је вероватно да ће много привући програмере апликација. Осим тога, не смемо заборавити да библиотеке за машинско учење полако улазе у све главне језике (побогу, чак их и ПХП сада има!), тако да све што треба да урадите је да сачекате неко време. 🙂
  • Свифт: Аппле има жељезни стисак у свом екосистему, а Свифт је једини језик који је тамо доступан. Раније је циљ Ц био бес, као што је Свифт сада. Сматрам да је то варање и зато одбијам да то укључим овде. 😀

Будућност је увек неизвесна, а један од начина да се бавите својом каријером је да се држите онога што већ функционише и одбијете да будете „ометани“. Ако то урадите, Јава, ПХП, Питхон, Руби, итд., су одлични језици којих се треба држати. Међутим, за неке од нас норма није довољна. Желе да изађу и истраже и да се кладе на будућност. Ако спадате у други табор, један од ових пет језика би требало да буде на врху ваше листе обавеза.

Коначно, када покушавате да процените језик, не дозволите да вас напор обузме јер то није толико. Ако већ знате неколико програмских језика, било који од њих можете научити у року од највише два месеца, трошећи 5-6 сати недељно. Док ће срећа и новчани приходи који се могу генерисати у будућности бити неколико пута већи.

Да ли сам пропустио неки критички језик овде? Или сам можда нешто погрешио у вези са језицима који су овде наведени? Ако јесте, оставите коментар и помозите ми да побољшам. 🙂