5 нових мов програмування, які вам варто знати

Для багатьох людей вивчення нової мови програмування – це заняття, якого вони намагаються уникати. Вони запитують, навіщо нам ще одна мова, чи достатньо тих, що вже є, і чи не виконують наявні інструменти свою роботу?

З іншого боку, є невгамовні дослідники, які використовують кожну нагоду, щоб випробувати щось нове і знайти справжні перлини. Для них навчання – це ціль сама по собі, і їм не потрібно багато вмовляти, щоб провести вихідні, створюючи консольну карткову гру на якійсь незнайомій новій мові.

Неважливо, до якого табору ви належите, є одна річ, з якою всі погоджуються: ми хочемо витрачати свій час на те, що має перспективне майбутнє.

Люди, які віддані старим мовам, вважають, що їхня улюблена мова вже має значну підтримку і продовжуватиме процвітати. Але я повинен нагадати їм, що їхні зрілі інструменти розробки колись вважалися новинкою, від якої багато хто відмовлявся. Ситуація повторюється й сьогодні – нові технології з’являються для вирішення нових завдань або для полегшення процесу розробки.

Якщо технологія є справді революційною, то є велика ймовірність, що вона приверне увагу і стане популярною. Коли це станеться, ви не захочете залишитися позаду. 🙂

А тим, хто любить експериментувати з новими ідеями, варто пам’ятати: хоча для програміста важливо отримувати задоволення, потрібно бути обережним і не витрачати свою енергію даремно.

Звичайно, Brainfuck – це надзвичайно заплутана і цікава мова, але навряд чи ви отримаєте користь, якщо будете серйозно нею займатися. Вам потрібне щось нове, розумне і з міцною основою.

Як обирали ці мови

Вибір мови – це складне завдання, особливо коли розглядаються нові мови з точки зору майбутніх кар’єрних можливостей і задоволення від роботи. Кожен автор мови переконаний, що його творіння – ідеальне і вирішує всі існуючі проблеми. То як же зробити правильний вибір?

У цьому огляді я зосередився на кількох критеріях, щоб звузити пошук.

Дата випуску

Я уникав мов, які є надто новими.

Під “новими” я маю на увазі мови, яким на момент написання статті менше 5-6 років, особливо ті, які ще не досягли стабільності (тобто, не мають версії 1.0). На жаль, це виключає деякі справжні діаманти, як, наприклад, Crystal, але я сподіваюся повернутися до цього і написати про його успіх пізніше. 🙂

Для мене період від 5 до 12 років – це оптимальний час, коли мова стабілізується і отримує додаткові удосконалення. Звичайно, є винятки з цього правила, і вони будуть розглянуті, коли це буде доречно.

Цей фактор є простим, але часто ігнорується, коли ми захоплюємося чимось новим. Для багатьох людей підтримка великої компанії є достатнім свідченням успіху, але це не завжди так.

Так, Objective-C від Apple, а тепер і Swift процвітали, оскільки вони були єдиними варіантами в екосистемі з високим ступенем контролю, але Facebook D і Hack (негарна ідея, як на мене) залишаються лише експериментами.

Ідеальною комбінацією була б мова, яка підтримується великою стабільною компанією і користується величезною популярністю (як React).

Але головне – це спільнота. Якщо мова не викликає інтересу і немає достатньої кількості розробників для навчання і популяризації, вона не вийде за межі репозиторію GitHub.

Для мене це виключає такі зрілі і цікаві мови, як Racket і Erlang, оскільки їхній розвиток залишається на одному рівні.

Цілеспрямованість, чітко визначена унікальна пропозиція

Третє, що я шукаю, – це чітка мета для мови. Наприклад, покращена версія PHP, яка виправляє проблеми з іменуванням і компілюється до рідного PHP, для мене не підходить.

Переваги надто малі, щоб виправдати перехід усіх на нову мову. З цієї причини я не можу не відкинути такі спроби, як CoffeeScript і багато інших схожих мов, які компілюються в JavaScript.

Чесно кажучи, я змушений одразу відкинути покращення, які стосуються лише синтаксису. Історія показала, що корисність переважає над дружністю, коли мова йде про мови, тому якщо всі нові мови будуть орієнтовані на більш приємний досвід, то, боюся, вони не потраплять до цього списку.

Чіткий і послідовний синтаксис

Так, я знаю, що тільки що сказав, що синтаксис не має значення. Ну, якщо бути точним, я сказав, що “покращення лише синтаксису” не мають значення. Але все ж таки синтаксис залишається одним з важливих факторів продуктивності програміста і зручності підтримки, тому це те, що обов’язково буде враховано в моїх розрахунках.

Разом із синтаксисом виникає ідея послідовності. Іменування функцій, структурування модулів – це ключові речі, в яких мова не може помилитися. Зараз 2024 рік, і інший дизайн мови, схожий на PHP, був би ганьбою для всіх нас. Тож, без зайвих слів, давайте перейдемо до п’ятірки моїх рекомендацій.

1. Julia

Для вчених з Массачусетського технологічного інституту мови для обробки даних були компромісом. Python, попри його зрозумілість і популярність, не мав вбудованих конструкцій для роботи з об’єктами даних. Крім того, будучи інтерпретованою мовою, Python був для них повільним (не бібліотеки, оскільки вони здебільшого написані на C).

Але, мабуть, найбільшою перешкодою була незграбна модель паралелізму і відсутність моделі паралельних обчислень, остання з яких є ключовою для суперкомп’ютерів.

В результаті на світ з’явилася Julia.

Julia досягла стабільного випуску 29 вересня 2018 року, лише за кілька днів до написання цієї статті (своєчасний випадок!). Ось що каже офіційний сайт про її можливості:

Julia чудово підходить для обчислень. Її синтаксис відмінно підходить для математики, вона підтримує багато типів числових даних, а паралелізм доступний “з коробки”. Множинна диспетчеризація Julia – це природний підхід до визначення типів даних, таких як числа та масиви.

З точки зору синтаксису, Julia можна розглядати як поєднання Python і C. Це, мабуть, перший випадок, коли мова націлена на обидві ці якості і досягає успіху.

Простіше кажучи, Julia надзвичайно швидка і не вимагає жорсткої типізації. Ось деякі результати тестування:

Як бачите, Julia трохи поступається C, але перевершує Java і Python. А що ж такого пропонує Julia?

Ось реалізація функції для обчислення гіпотенузи прямокутного трикутника:

Хоча більшість екосистеми Julia орієнтована на математику, я вважаю, що вона має світле майбутнє у багатьох сферах.

Наскільки мені відомо, це перша мова, яка має першокласну підтримку паралельних обчислень, тому не дивно буде побачити, як вона набирає популярності в Інтернеті та в Інтернеті речей.

2. Rust

Якщо ви користувалися новими версіями браузера Firefox, то знаєте, що, нарешті, після багатьох років роботи вони можуть відвоювати частину ринку у Chrome.

Легкість, швидкість і швидке відтворення браузера – це все завдяки мові, спеціально розробленій Mozilla: Rust.

Сказати, що у Rust світле майбутнє, було б неправдою. Ця мова вже має величезний успіх, і якщо ви про неї ще не чули, то це тому, що її сфера застосування є спеціалізованою, а її мета страшна: замінити C++! Так, нарешті у нас є мова, яка не тільки здатна це робити, але й вже робить це.

Для людей, розчарованих надто складним дизайном C++ і проблемами управління пам’яттю, Rust стане ковтком свіжого повітря.

Ось як виглядає програма на Rust:

Коротко і елегантно, як на мене. Rust дотримується підходу функціонального програмування, що робить ваш код більш зручним для компонування, і немає об’єктно-орієнтованих ієрархій, з якими треба боротися.

То що ж дає Rust сміливість конкурувати з C++? Це нова модель управління пам’яттю. Замість того, щоб покладатися на старий метод new()/delete(), Rust пропонує ідею власності.

Замість того, щоб виділяти пам’ять і отримувати до неї доступ напряму, змінні Rust “позичають” одна в одної, зі строгими обмеженнями, встановленими компілятором. Загальна концепція занадто складна, щоб пояснити її в кількох словах, тому, будь ласка, перегляньте офіційну документацію, щоб дізнатися більше.

Справа в тому, що це забезпечує 100% безпеку пам’яті без потреби у збиранні сміття, що є великою проблемою.

Rust стрімко захоплює світ системного програмування. Він вже підтримується на багатьох платформах, в браузерах і механізмах візуалізації, швидко замінює код C/C++ у робочих системах і використовується для написання операційних систем.

Звичайно, створення нового браузера або драйвера пристрою не для кожного, але Rust вже поширюється на інші сфери. У нас вже є кілька повноцінних, надзвичайно швидких веб-фреймворків на Rust, і розробляється все більше бібліотек програм.

Чесно кажучи, якщо вас цікавить захопливе майбутнє, Rust – ідеальна мова, і зараз саме час почати її вивчати. Rust – це літак, який вже злетів, але ще є час, щоб сісти на борт, поки він прямує до зірок!

Вивчайте Rust від Дмитра Нестерука.

3. Elixir

Серед мов, які орієнтовані на задоволення розробників, перше місце назавжди зарезервоване за Ruby. Це мова, яка читається як поезія, і має достатньо скорочень, щоб значно зменшити ментальні зусилля.

Тому не дивно, що фреймворк Rails продовжує домінувати у розробці повного стеку для серйозних розробників і стартапів. Але не всі були задоволені Rails, зокрема, один з його основних розробників – Хосе Валім. Я вважаю, що сам творець найкраще пояснює походження цієї мови в одному інтерв’ю:

Це довга історія, але я спробую зробити її короткою і приємною. У 2010 році я працював над покращенням продуктивності Rails при роботі з багатоядерними системами, оскільки наші машини та виробничі системи мають все більше ядер. Однак весь цей досвід був дуже неприємним, оскільки Ruby не надає належного інструменту для вирішення проблем паралелізму. Саме тоді я почав дивитися на інші технології і, зрештою, закохався у віртуальну машину Erlang.

Я почав використовувати Erlang все більше і більше, і з досвідом я помітив, що мені бракує деяких конструкцій, доступних у багатьох інших мовах, включаючи функціональні. Саме тоді я вирішив створити Elixir як спробу додати різні конструкції та чудовий інструментарій до Erlang VM.

І ось, Elixir з’явився на світ!

Подібно до того, як Scala покращує мову Java, але орієнтована на ту саму віртуальну машину (JVM), Elixir використовує переваги перевіреної десятиліттями віртуальної машини Erlang.

Дискусія про Erlang виходить за рамки цієї статті, але мінімум, який ви повинні знати, це те, що це найкраща таємниця телекомунікаційної галузі: якщо наші телефонні мережі набагато надійніші, ніж наші веб-системи, то це все завдяки Erlang.

Простіше кажучи, це означає ось що. Якщо ви створюєте систему реального часу, наприклад чат, Elixir потребує значно менше оперативної пам’яті і є стабільнішим, ніж Ruby (або PHP, Python і Java, якщо вже на те пішло).

Машина, яка працює під управлінням Ruby і може мати максимум 10 000 одночасних з’єднань, може легко впоратися з 200 000 при використанні Elixir, і при цьому у неї буде достатньо оперативної пам’яті для запуску 2D ігор!

Щодо синтаксису, Elixir безсоромно копіює Ruby, а його домінуючий веб-фреймворк, Phoenix, безсоромно копіює Rails. Я б сказав, що це також добре, тому що разом із Laravel, Grails, Masonite тощо ми досягаємо точки, коли всі мови мають Rails-подібні фреймворки, які можуть полегшити перехід. Хтось може висміювати “відсутність оригінальності”, але я, принаймні, не скаржуся.

Нарешті, Elixir – це одна з тих технологій, яка є свіжою, приємною і дуже практичною. Кілька магазинів Ruby (і навіть не Ruby) переходять на Elixir, і великі компанії, такі як Pinterest, використовують його у виробництві з дуже задовільними результатами.

Багато хто вважає, що Node.js був тимчасовим експериментом з паралелізмом і скоро буде замінений Elixir. Маю сказати, що я з ними згоден. 🙂

4. Kotlin

У 2017 році на конференції I/O Google вибухнула бомба для нічого не підозрюючої аудиторії. Компанія офіційно оголосила Kotlin основною мовою для розробки Android, що викликало шок у галузі.

Після судового позову Oracle, той факт, що Google активно намагався замінити Java, не дивує, однак прийняття Kotlin стало дещо несподіваним, і все ще є великий шанс, що Google незабаром випустить свою власну віртуальну машину. Але наразі Kotlin переживає сплеск популярності.

Kotlin був розроблений JetBrains, компанією, відомою своїми редакторами коду. Один з них, IntelliJ IDEA, є основою для Android Studio. Цілями розробки Kotlin є безпека, лаконічність і 100% взаємодія з Java.

Компілятор Kotlin докладає додаткових зусиль, щоб усунути всі винятки нульового вказівника, які так часто зустрічаються у світі Java. Це також зменшує багатослівність Java, що буде полегшенням для багатьох.

Ось чудове порівняння коду Java і Kotlin:

Код Kotlin значно коротший і має менше когнітивного навантаження.

Але давайте внесемо ясність: малоймовірно, що Kotlin замінить Java, хоча він швидко стає фаворитом. Я вважаю, що через десять років малі та середні команди будуть використовувати Kotlin, тоді як великі групи продовжать використовувати Java здебільшого через спадковість.

Проте Kotlin має надзвичайно світле майбутнє, оскільки він робить все те, що робить Java, може без проблем працювати з кодом Java, і він набагато приємніший у використанні!

5. TypeScript

Бог знає, що я стримувався заради цього місця! Всередині мене кричало: “F#! Elm!”, але незалежно від того, наскільки революційними є їхні ідеї, або наскільки божественним є їхній синтаксис, Elm ще не розглядається як основна альтернатива для роботи. 🙁 У будь-якому випадку, давайте перейдемо до головного: TypeScript.

JavaScript схожий на лісові ягоди: негарний і несмачний, але вам доведеться його терпіти, якщо ви хочете вижити в джунглях інтерфейсної розробки. Було багато спроб замінити його (і, швидше за все, новий стандарт WebAssembly досягне успіху), але справжню увагу привернув надмножина, розроблена Microsoft.

Є велика ймовірність, що ви чули про TypeScript: Angular був першим фреймворком, який почав використовувати його з версії 2 і далі, і люди швидко звернули на це увагу. Це тому, що TypeScript додає кілька вкрай необхідних і фантастичних надздібностей до найвідомішої мови програмування у світі.

Так, нарешті можна писати нативний код JavaScript без страждань і прокльонів свого народження!

Ось удосконалення, які TypeScript пропонує:

✓ Строга типізація: нарешті, рядок не є числом, а число не є об’єктом, який не є порожнім масивом!

✓ Перевірка типів під час компіляції: якщо ваш код компілюється правильно, то він більш-менш гарантовано не матиме помилок, характерних для середовища виконання JavaScript.

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

✓ Виведення типу: для складних типів тип може бути легко визначений компілятором, позбавляючи вас головного болю.

✓ Async/await: ключові слова і шаблони async/await є фундаментальними, тому більше не потрібно возитися з Promises і Callback!

Простори імен, узагальнення, кортежі… Я можу продовжувати, але достатньо сказати, що TypeScript перетворює один з найгірших досвідів розробки в один з найкращих.

Не можна заперечувати вплив TypeScript. Він витіснив такі спроби, як Dart від Google (хоча він намагається повернутися через Flutter, фреймворк мобільної розробки) і відкрив очі розробникам JS на переваги сильнішої типізації.

Як результат, такі важливі бібліотеки, як React, D3, Vue (навіть jQuery!) тепер мають версію TypeScript, а в найкращих магазинах програмного забезпечення по всьому світу весь код JavaScript пишеться як код TypeScript. Заголовки TypeScript тепер також доступні для Node.js (чесно кажучи, якщо вузол зможе покращити свою історію з паралелізмом і виправити погане управління пам’яттю, то він проіснує дуже довго).

Можливо, вас здивує той факт, що творець Node.js після того, як публічно пошкодував про його створення, працює над новою платформою (наразі немає офіційного сайту; лише репозиторій GitHub), де основною мовою є TypeScript.

Найкраща новина? TypeScript – це нескладна мова для вивчення зі значними перевагами в майбутньому. Якщо ви розробник JavaScript середнього рівня, то за два дні ви навчитеся достатньо TypeScript, щоб переписати весь свій існуючий код!

Висновок і застереження

Деякі мови набирають популярність, як і ті, що описані в цій статті, але з різних причин вони не були включені до списку. Ось короткий огляд:

  • Golang: Вже визнана як основна, хоч і не дуже популярна мова. Я вважаю, що наразі у Golang є кілька конкурентів, які стримують його частку ринку на низькому рівні.
  • R: R вже популярний серед вчених з обробки даних, але навряд чи він приверне увагу розробників додатків. Крім того, не слід забувати, що бібліотеки машинного навчання поступово з’являються у всіх основних мовах (навіть у PHP!), тому вам потрібно просто трохи почекати. 🙂
  • Swift: Apple має повний контроль над своєю екосистемою, і Swift є єдиною доступною мовою. Раніше Objective-C був популярний, як зараз Swift. Я вважаю це обманом і тому відмовляюся включати її сюди. 😀

Майбутнє завжди невизначене, і один зі способів забезпечити собі кар’єру – це дотримуватися того, що вже працює, і не відволікатися. Якщо ви так зробите, то Java, PHP, Python, Ruby тощо стануть чудовими мовами, які варто використовувати. Однак для деяких з нас норми недостатньо. Вони хочуть рухатися вперед, досліджувати і робити великі ставки на майбутнє. Якщо ви належите до останнього табору, то одна з цих п’яти мов має бути на першому місці у вашому списку.

Нарешті, намагаючись оцінити мову, не дозволяйте зусиллям пересилити вас, оскільки це не так вже й багато. Якщо ви вже знаєте кілька мов програмування, то ви можете вивчити будь-яку з них за максимум два місяці, витрачаючи 5-6 годин на тиждень. А задоволення і грошові вигоди, які ви можете отримати в майбутньому, будуть набагато більшими.

Чи пропустив я щось важливе? Чи, можливо, я чогось не розумію про перелічені тут мови? Якщо так, будь ласка, залиште коментар і допоможіть мені стати краще. 🙂