5 нови езика за програмиране, които трябва да знаете

За някои хора изучаването на нов език за програмиране е излишък, който най-добре се избягва. Защо, о, защо, спорят те, имаме нужда от още един език?

Нямаме ли вече достатъчно?

Съществуващите инструменти не вършат ли работата?

И тогава има онези неуморни търсачи, които се възползват от възможността да опитат нови неща и да се натъкнат на скъпоценни камъни. Ученето е самоцел и те не се нуждаят от много убеждаване, за да изгорят уикендите си, създавайки базирана на конзола игра на карти на този неясен, нов език.

Без значение към кой лагер принадлежите, има нещо извън спора: всички искаме да отделим време за нещо, което ще има светло бъдеще.

За хората в наследствения лагер техният любим съществуващ език вече има много инерция и ще продължи да има светло бъдеще. На тях трябва да им напомня, че тяхната вече зряла предпочитана верига от инструменти за разработка някога беше „cool-aid“, която мнозина отказаха да пият. И днес е така; добавят се нови технологии за решаване на нови проблеми или за облекчаване на болката от развитието.

Ако нещо направи това достатъчно радикално, шансовете са, че ще продължи да грабва дяла на ума и да достигне върха. Когато това се случи, не искате да бъдете изоставени. 🙂

А за тези, които обичат да тичат с лъскавите неща, предупреждение: забавлението е от съществено значение като програмист, но трябва да внимаваме да не пилеем енергията си безцелно.

Сигурен, Майната на мозъка е невероятно изкривен, подобен на пъзел, забавен малък език, но е малко вероятно да се възползвате от него, ако го преследвате сериозно. Искате нещо ново, разумно и със солидна основа.

Как са избрани тези езици

Изборът на език е плашеща работа, особено когато се обмислят нови езици за бъдещи ползи в работата и удовлетворението. Всеки автор на език е твърдо убеден, че е създал перфектния възможен език и е решил всички проблеми, на които трябва да се отговори. Как тогава режете?

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

Дата на излизане

Специално избягвах езици, които са много, много нови.

Нови, имам предвид езици, които са на по-малко от 5-6 години от написването им, и особено тези, които не са достигнали стабилност (версия 1.0, т.е.). Това, за съжаление, изключва някои истински скъпоценни камъни като Кристал, Но се надявам да се върна към това и да пиша за успеха му някой ден. 🙂

Кодов фрагмент в Crystal („Бърз като C, гладък като Ruby“)

За мен 5-12 години е най-добрата точка, когато един език се е стабилизирал и се разработват повече уточнения. Сега, разбира се, има изключения от това правило и те ще бъдат разгледани, когато е приложимо.

Това е безсмислено, но често се пренебрегва, когато се вълнуваме от нещо ново. Сега за много хора подкрепата на голяма компания е достатъчен прецедент за успех, но не винаги е вярно.

Да, Objective-C на Apple и сега Swift процъфтяваха, защото това бяха единствените опции в силно контролирана екосистема, но на Facebook д и хакване (грозно разбиране на вече грозен език, според мен) остават малко повече от експерименти.

Идеалната комбинация би била език, подкрепен от голяма, стабилна компания и нарастващ популярност (като React).

Но същината на въпроса все още е общността. Ако един език не създава шум и няма достатъчно разработчици, които да образоват и популяризират, той няма да излезе от гроба си в GitHub.

За мен това изключва зрели, завладяващи езици като ракета и Ерлангтъй като те са останали плоски на кривата на растеж.

Фокусиран, добре дефиниран USP

Третото нещо, което търся, е ясна цел за езика. Например, по-добра версия на PHP, която поправя проблеми с именуването и компилира към родния PHP, не работи за мен.

Ползите са твърде малки, за да оправдаят пукнатините, ако всеки се опита да премине към него. По този критерий не мога да не отхвърля опити като CoffeeScriptи много други подобни езици за компилиране към JavaScript.

Честно казано, незабавно ще отхвърля подобренията само в синтаксиса. Историята показва, че полезността надделява над дружелюбието, когато става дума за езици, така че ако всички нови езици се фокусират върху по-приятното изживяване, страхувам се, че няма да влезе в този списък.

Ясен, последователен синтаксис

Да, знам. Току-що казах, че синтаксисът няма значение. Е, за да бъда точен, казах, че „подобренията само в синтаксиса“ нямат значение. Но като се има предвид това, синтаксисът остава един от значимите фактори за производителността и поддържаемостта на програмиста, така че това е нещо, което трябва да присъства в моите изчисления тук.

  Pine е красив мениджър на отметки, разположен изцяло във вашия браузър [Chrome]

Заедно със синтаксиса идва идеята за последователност. Наименуването на функции, структурирането на модули и т.н. са ключови неща, които езикът не може да си позволи да сбърка. 2018 г. е, за бога, и друг езиков дизайн, подобен на PHP, би бил срам за всички нас. И така, без повече шум, нека започнем с нашите пет най-добри препоръки.

1. Юлия

За хората от Масачузетския технологичен институт достъпните езици за наука за данни бяха в най-добрия случай компромис. Python, въпреки цялата си яснота и популярност, нямаше собствени конструкции за работа с обекти от данни. Освен това, като интерпретиран език, Python беше бавен за тях (не библиотеките, имайте предвид, тъй като те са написани предимно на C).

Но може би най-голямото отклонение беше тромавият модел на едновременност и липсата на модел на паралелни изчисления, последният от които е основен елемент в суперкомпютрите.

Като резултат, Джулия е роден.

Julia достигна своето стабилно издание на 29 септември 2018 г., едва няколко дни преди да бъде написана тази статия (говорим за времето!). Ето какво казва официалният уебсайт за неговите възможности:

Джулия се справя отлично с числените изчисления. Синтаксисът му е страхотен за математика, поддържат се много числови типове данни и паралелизмът е наличен веднага. Множественото изпращане на Julia е естествено подходящо за дефиниране на числови и подобни на масиви типове данни.

От гледна точка на синтаксиса Julia може да се разглежда като комбинация от Python и C. Да, вероятно е първият път, когато един език се е насочил към тези качества и е успял.

За да опростим нещата, Джулия е светкавично бърза и не налага стриктно въвеждане. Ето някои показатели:

Официалните бенчмаркове на Julia

Както можете да видите, Julia е малко по-лоша от C, но издухва Java и Python от водата. И какъв вид бонбон предлага Джулия?

Е, ето реализацията на функция за изчисляване на хипотенузата на правоъгълен триъгълник:

И накрая, докато повечето от Джулия екосистема е силно наклонен към математическа работа, вярвам, че има светло бъдеще за общо предназначение.

Доколкото ми е известно, това е първият език, който има първокласна поддръжка за паралелни изчисления, така че няма да е изненада да го видим да набира все по-голяма популярност в уеб и IoT домейните.

2. Ръжда

Ако сте изпробвали новите версии на браузъра Firefox, знаете, че най-накрая, след години работа, изглежда, че може да успеят да отнемат известен пазарен дял от Chrome.

Ако браузърът изглежда лек и бърз и се изобразява бързо, всичко това е благодарение на специално разработения от Mozilla език: Ръжда.

Да се ​​каже, че Rust има светло бъдеще, ще бъде лъжа; езикът вече има огромен успех и ако все още не сте чували за него, то е защото областта му на приложение е специализирана, а целта му плашеща: замяна на C++! Да, най-накрая имаме език, който не само е способен да прави това, но вече го прави.

За хората, разочаровани от претоварения дизайн и предизвикателствата на C++ за управление на паметта, Rust идва като глътка свеж въздух.

Ето как изглежда една програма Rust:

Лаконично и елегантно според мен. Rust следва подхода на функционалното програмиране, което прави вашия код по-съставим и няма обектно-ориентирани йерархии, с които да се борите.

И така, какво дава на Rust смелостта да тръгне след C++? Това е новият модел памет. Вместо да разчита на стария танц new()/delete(), Rust въвежда идеята за собственост.

Вместо да разпределят и осъществяват достъп до памет директно, променливите на Rust „заемат“ една от друга със строги ограничения, поставени от компилатора. Цялостната концепция е твърде сложна, за да се обясни с няколко думи, така че не се колебайте да проверите официални документи да научиш повече.

Въпросът е, че това води до 100% безопасност на паметта без необходимост от събирач на отпадъци, което е голяма работа.

Rust превзе света на системното програмиране като буря. Той вече се поддържа на някои платформи, задвижва браузърите и двигателите за изобразяване бързо заместват C/C++ кода на производствените системи и се използва за писане на операционни системи.

Разбира се, не всеки може да създаде друг браузър или драйвер за устройство, но Rust вече се разпространява в други домейни. Вече имаме няколко напълно функционални, абсурдно бързи уеб рамки в Rust и все повече библиотеки с приложения се разработват.

Честно казано, ако се интересувате от вълнуващо бъдеще, Rust е идеалният език и сега е идеалният момент. Rust е самолет, който е излетял, но все още има време да се качите на борда, докато се отправя към звездите!

Уча Ръжда от Дмитрий Нестерук.

3. Еликсир

Сред езиците, които се фокусират върху щастието на разработчиците, първото място е постоянно запазено за Ruby. Това е език, който се чете като поезия и има достатъчно преки пътища, за да намали умственото триене до порядък.

  Как да броим цветни клетки в Excel

Нищо чудно тогава, че рамката на Rails продължава да доминира в развитието на пълен стек за сериозни разработчици и стартиращи компании. Но не всички бяха доволни от Rails, особено един от основните му разработчици – Хосе Валим. Мисля, че самият създател най-добре обяснява генезиса на този език в an интервю:

Историята е дълга, но ще се опитам да я направя кратка и сладка. Още през 2010 г. работих върху подобряването на производителността на Rails при работа с многоядрени системи, тъй като нашите машини и производствени системи се доставят с все повече и повече ядра. Цялото изживяване обаче беше доста разочароващо, тъй като Ruby не предоставя подходящия инструмент за решаване на проблеми с паралелността. Тогава започнах да разглеждам други технологии и в крайна сметка се влюбих във виртуалната машина Erlang.

Започнах да използвам Erlang все повече и повече и с придобития опит забелязах, че ми липсват някои конструкции, налични на много други езици, включително функционални. Тогава реших да създам Elixir, като опит да внеса различни конструкции и отлични инструменти върху Erlang VM.

и ето, еликсир е роден!

Точно както Scala подобрява езика Java, но е насочена към същата виртуална машина отдолу (JVM), Elixir се възползва от старата от десетилетия, доказана в битки виртуална машина Erlang.

Сега дискусията за Erlang е извън обхвата на тази статия, но минимумът, който трябва да знаете е, че това е най-добре пазената тайна на телекомуникационната индустрия: ако нашите телефонни мрежи са много по-надеждни от нашите уеб базирани системи, всичко това е благодарение на Ерланг.

С още по-прости думи това означава това. Ако изграждате система в реално време като чат, Elixir е много по-малко гладен и стабилен за RAM от Ruby (или PHP, Python и Java, за този въпрос).

Машина, която работи с Ruby и достига до 10 000 едновременни връзки, може лесно да се справи с 200 000, когато използва Elixir и все още има достатъчно RAM за стартиране на 2D игри!

Кодов фрагмент на Elixir

По отношение на синтаксиса, Elixir безсрамно копира Ruby, а неговата доминираща уеб рамка, Phoenix, безсрамно копира Rails. Бих казал, че това също е нещо добро, защото заедно с Laravel, Grails, Masonite и т.н., достигаме точка, в която всички езици имат рамки, подобни на Rails, което може да улесни прехода. Някои може да се присмиват на „липса на оригиналност“, но поне аз не се оплаквам.

накрая еликсир е една от онези технологии, които са освежаващи, приятни и дяволски практични. Няколко Ruby (и дори не-Ruby) магазина преминават към Elixir, а големи компании като Pinterest го използват в производството с изключително задоволителни резултати.

Много хора смятат, че Node.js е импровизиран опит за едновременност и скоро ще бъде заменен от Elixir. Трябва да кажа, че съм съгласен с тях. 🙂

4. Котлин

През 2017 г. I/O Google отприщи бомба срещу нищо неподозиращата тълпа. Компанията официално обяви Котлин като основен език за разработване на Android, изпращайки шокови вълни в индустрията.

Сега, че Google активно търси да замени Java, не е изненада, след като беше ухапан от съдебно дело на Oracle; приемането на Kotlin обаче беше донякъде неочаквано и все още има голям шанс Google скоро да излезе със своята виртуална машина. За момента обаче Kotlin се радва на скок.

Kotlin е разработен от JetBrains, компания, по-известна със своя пакет от безумно добри редактори на код. Един от тях, IntelliJ IDEA, формира основата на Android Studio. Целите на дизайна на Kotlin са безопасност, сбитост и 100% оперативна съвместимост с Java.

Повече от всичко друго, компилаторът Kotlin работи много усилено, за да елиминира всякакви изключения от нулев указател, които са толкова често срещани в света на Java. Освен това доста намалява пословичното многословие на Java, което ще дойде като облекчение за мнозина.

Ето едно прекрасно сравнение на код между Java и Kotlin:

Кредит за изображение: hype.codes

Кодът на Kotlin е значително по-кратък и има много по-малко когнитивно претоварване, което трябва да се преработи.

Но нека изясним едно нещо: Kotlin е изключително малко вероятно да замени Java, въпреки че бързо се превръща в любимец. Вярвам, че след десет години малките до средни екипи няма да търсят повече от Kotlin, докато големите групи ще продължат да използват Java само поради причини за наследство.

Въпреки това, Kotlin има изключително светло бъдеще, тъй като прави всичко, което Java прави, може да се слее с Java код, без никой да забележи, и е много по-приятен!

5. TypeScript

Господ знае, че трябваше да се въздържа за това място! Всичко в мен крещеше „Бряст! Elm!”, но без значение колко революционни са идеите му или колко божествен е синтаксисът, Elm тепърва ще се разглежда като масова алтернатива за предна работа. 🙁 Както и да е, нека преминем към това, което е масово: TypeScript.

  Как да деактивирате цвета на заглавната лента във Firefox

JavaScript е като горски плодове: грозен и неприятен, но трябва да го преглътнете, ако искате да оцелеете в джунглата на front-end разработката. Бяха направени много опити за замяната му (и най-вероятно новият стандарт WebAssembly ще успее), но това, което наистина привлече вниманието на всички, беше суперсетът, разработен от Microsoft.

Има отлични шансове, за които сте чували TypeScript: Angular беше първата рамка, която го прегърна от версия 2 нататък и хората бързо го забелязаха. Това е така, защото TypeScript добавя някои така необходими и фантастични суперсили към най-известния език за програмиране в света.

Да, най-после е възможно да се пише естествен код на JavaScript, без да страдате и да проклинате раждането си!

Ето подобренията, които TypeScript внася в масата:

✓ Силно въвеждане: И накрая, низът не е число и числото не е обект, което не е празен масив!

✓ Проверка на типа по време на компилиране: Ако вашият код се компилира правилно, е повече или по-малко гарантирано, че е свободен от брадавиците на времето за изпълнение на JavaScript.

✓ Класове и модули: Да, класовете са стандартни в ES6, но те са включени и в TypeScript, освен чиста модулна система.

✓ Извеждане на типа: За сложни типове, типът може да бъде разкрит лесно от компилатора, което ви спестява малко главоболие.

✓ Async/await: Ключовите думи и шаблони async/await са основни, така че няма повече да се забърквате с Promises и Callbacks!

Пространства от имена, генерици, кортежи. . . Мога да продължа безкрайно, но би трябвало да е достатъчно да кажа, че TypeScript преобразува едно от най-лошите изживявания при разработка в едно от най-добрите.

Кодов фрагмент на TypeScript

Въздействието на TypeScript не може да се отрече. Той изтласка подобни опити като Dart на Google от полето (въпреки че се опитва да се завърне чрез Flutter, рамка за мобилна разработка) и отвори очите на разработчиците на JS за предимствата на по-силните типове.

В резултат на това значими библиотеки като React, D3, Vue (дори jQuery!) вече имат версия на TypeScript, а в най-добрите софтуерни магазини по света целият JavaScript код се пише като TypeScript код. Заглавките на TypeScript вече са достъпни и за Node.js (честно казано, ако даден възел може да подобри своята история на едновременност и да закърпи лошото си управление на паметта, това ще продължи вечно).

Може да се изненадате да разберете, че създателят на Node.js, след като публично съжалявам неговото творение, работи върху a ново време за изпълнение (в момента няма официален уебсайт; само GitHub repo), който има TypeScript като основен език.

Най-добрата новина? TypeScript е малък език за учене със значителни ползи в бъдеще. Ако сте средно напреднал JavaScript разработчик, ще вземете достатъчно TypeScript в рамките на два дни, за да пренесете целия си съществуващ код!

Заключение и отказ от отговорност

Конкретни езици набират толкова голяма популярност, колкото тези в тази статия, но не са включени в списъка по различни причини. Ето един бърз поглед:

  • Голанг: Вече установен като масов, ако не много популярен език. Вярвам, че в този момент Golang има няколко конкуренти, които ще запазят пазарния си дял нисък.
  • R: R вече е горещ сред специалистите по данни и е малко вероятно да привлече много разработчиците на приложения. Освен това не трябва да забравяме, че библиотеките за машинно обучение бавно си проправят път във всички основни езици (за бога, дори PHP вече ги има!), така че всичко, което трябва да направите, е да изчакате известно време. 🙂
  • Swift: Apple има желязна хватка върху своята екосистема и Swift е единственият достъпен език там. По-рано Objective C беше на мода, както сега е Swift. Считам го за измама и затова отказвам да го включа тук. 😀

Бъдещето винаги е несигурно и един от начините да продължите кариерата си е да се придържате към това, което вече работи и да откажете да се „разсейвате“. Ако направите това, Java, PHP, Python, Ruby и т.н. са отлични езици, към които да се придържате. За някои от нас обаче нормата не е достатъчна. Те искат да излязат и да изследват и да залагат много на бъдещето. Ако попадате в последния лагер, един от тези пет езика трябва да е начело в списъка ви със задачи.

И накрая, когато се опитвате да оцените даден език, не позволявайте на усилието да ви надвие, защото не е толкова много. Ако вече знаете няколко езика за програмиране, можете да научите някой от тях в рамките на максимум два месеца, отделяйки 5-6 часа седмично. Докато щастието и паричните печалби, които могат да бъдат генерирани в бъдеще, ще бъдат няколко пъти повече.

Пропуснах ли критичен език тук? Или може би съм сбъркал нещо относно изброените тук езици? Ако е така, моля, оставете коментар и ми помогнете да се подобря. 🙂