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

Для деяких людей вивчення нової мови програмування — це надмірність, якої краще уникати. Навіщо, о навіщо, сперечаються вони, нам потрібна ще інша мова?

Хіба нам уже мало?

Хіба наявні інструменти не виконують роботу?

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

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

Для людей у ​​спадковому таборі їхня улюблена існуюча мова вже має величезний імпульс і надалі матиме світле майбутнє. Я мушу нагадати їм, що їхній тепер зрілий ланцюжок інструментів розробки колись був «cool-aid», який багато хто відмовився пити. І так воно є сьогодні; нові технології додаються для вирішення нових проблем або для полегшення болю розвитку.

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

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

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

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

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

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

Дата випуску

Я особливо уникав мов, які є дуже, дуже новими.

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

Фрагмент коду в Crystal («Fast as C, Slick as Ruby»)

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

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

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

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

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

Для мене це виключає такі зрілі, захоплюючі мови, як Ракетка і Ерлангоскільки вони залишалися рівними на кривій зростання.

Цілеспрямований, чітко визначений USP

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

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

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

Чіткий, узгоджений синтаксис

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

  Перевірте свій слух за допомогою iPhone та тихої кімнати

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

1. Юлія

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

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

Як результат, Юлія народився.

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

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

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

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

Офіційні тести Юлії

Як бачите, Джулія трохи гірша за С, але перевершує Java і Python. А яку ласунку пропонує Юля?

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

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

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

2. Іржа

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

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

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

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

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

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

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

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

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

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

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

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

вчитися Іржа від Дмитра Нестерука.

3. Еліксир

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

  Наскільки безпечний ваш домашній Wi-Fi?

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

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

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

І ось, Еліксир народився!

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

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

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

Машина, яка працює під керуванням Ruby і має максимум 10 000 одночасних з’єднань, може легко впоратися з 200 000 під час використання Elixir і при цьому матиме достатньо оперативної пам’яті для запуску 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.

  Як керувати та передавати дані на Nintendo Switch

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

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

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

Ось удосконалення, які TypeScript вносить у таблицю:

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

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

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

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

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

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

Фрагмент коду TypeScript

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

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

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

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

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

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

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

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

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

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