Uploaded avatar of ErikSchierboom

Настав Appy August!

@ErikSchierboom
Близько 3 років тому
Відео

Вступ

Привіт. Вітаю. Сподіваюся, у всіх усе гаразд. Сподіваюся, усім було цікаво погратися й дослідити деякі старі та впливові мови під час Jurasic July. А тепер переходимо до 8-го місяця 2023 року та нашого 7-го тематичного місяця - Appy August.

Що ми маємо на увазі під застосунками?

Ну, це може означати чимало речей:

  • Вебзастосунки, хліб насущний багатьох із нас сьогодні
  • Нативні застосунки, як ті, що працюють на телефоні чи планшеті
  • Настільні застосунки, які працюють безпосередньо у Windows, Mac чи Linux
  • Вузькоспеціалізовані застосунки
  • Бізнесзастосунки
  • І не тільки!

То які ж це мови?

Ми розглядаємо цілих 14 мов: ABAP, CoffeeScript, Dart, Delphi, Elm, Java, JavaScript, Kotlin, Objective-C, PHP, PureScript, ReasonML, Swift і TypeScript.

Бейджі

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

  • Анаграма: маючи слово й перелік можливих анаграм, знайти його анаграми
  • Номер телефону: очистити номер телефону
  • Трикутник: класифікувати трикутник
  • Транскрипція РНК: перетворити послідовність ДНК на її РНК-комплемент
  • Рахунок за Scrabble: маючи слово, визначити його рахунок у Scrabble

Огляди

ABAP

  • Розроблений компанією SAP SE у 1980-х, і мета його дизайну стає зрозумілою, коли ми подивимося, що означала абревіатура: Allgemeiner Berichts-Aufbereitungs-Prozessor, що німецькою означає «процесор для підготовки загальних звітів». Згодом ABAP став загальнішим, і абревіатуру оновили до Advanced Business Application Programming, щоб це відобразити
  • Строго та статично типізована мова
  • Мультипарадигмова: підтримує імперативне й обʼєктно-орієнтоване програмування
  • Компілюється в байткод. Цікаво, що вихідний код зберігається всередині бази даних
  • Увесь код виконується в контексті системи SAP, яка складається з реляційної бази даних і одного чи кількох серверів застосунків
  • Пропрієтарна технологія із закритим кодом, хоча один із наших супровідників створив чудову відкриту реалізацію
  • Використовується в бізнесзастосунках, як-от фінанси, управління матеріалами, бухгалтерія та менеджмент. Має клієнтів по всьому світу, серед яких багато гучних імен, як-от Apple, Amazon і Walmart

Чому це чудово

  • Постійно розвивається, регулярно додаються нові можливості
  • Надійний: стабільна функціональність, за якою стоять десятиліття досвіду
  • Велика стандартна бібліотека

Особливості, що вирізняють

  • Безшовна інтеграція із системою SAP і базою даних, а також із багатьма іншими системами
  • Словник ABAP містить усі метадані про дані в системі SAP, зокрема таблиці, подання та структури. Типи із цього словника можна використовувати для статичної типізації змінних, навіть коли тип - це таблиця
  • ABAP Workbench є частиною системи ABAP і містить набір інструментів для редагування програм. Зокрема, для проєктування екранів

CoffeeScript

  • Мова отримала свої перші коміти ще 2009 року від Джеремі Ашкенаса; перше повідомлення коміту мало заголовок «початковий коміт загадкової мови».
  • Динамічно типізована й мультипарадигмова (обʼєктно-орієнтована, імперативна, функціональна, прототипна)
  • Компілюється в JavaScript (це називають транспіляцією). Золоте правило CoffeeScript: «Це просто JavaScript». Одна з перших успішних мов, що «транспілюються в JS»
  • Стала популярною, бо в CoffeeScript не було деяких проблем, з якими тоді боролися ті, хто писав на JS (наприклад, привʼязка «this» працювала інакше, або класи не підтримувалися). Була включена в Ruby on Rails, починаючи з версії 3.1.
  • 2017 року мова отримала версію 2.0, яка мала привести її на рівень найновішого стандарту JavaScript. Мова оновлюється приблизно раз на рік.
  • Компілятор мови спочатку був написаний на Ruby, але 2010 року його замінив самодостатній компілятор, написаний на самій CoffeeScript (він не залежить від NodeJS і може працювати безпосередньо в браузері)
  • CoffeeScript мала вплив: вона надихнула JavaScript перейняти деякі можливості (стрілковий синтаксис лямбд, класи)
  • Раніше використовувалася в Dropbox і в Rails

Чому це чудово

  • Чистий, лаконічний синтаксис, натхненний Python, Ruby і Haskell. Менш багатослівний, ніж JavaScript: прибирає багато дужок і фігурних дужок, частково завдяки використанню значущих відступів (пробіли важливі)
  • Спрощена семантика: наприклад, немає плутанини з let, var, const, бо їх немає, а == транспілюється в === (строга рівність), а привʼязки функцій запобігають типовим помилкам із «this»
  • Побудована на виразах: можна присвоїти результат виразу if змінній
  • Багато синтаксичного цукру: наприклад, @ замість this, yes/on можна використовувати замість true, // для цілочисельного ділення, @ замість this і багато іншого

Особливості, що вирізняють

  • Компілюється в чистий, зрозумілий людині JavaScript із взаємно однозначною відповідністю між вихідним і згенерованим кодом.
  • Чудова взаємодія з JavaScript: код, написаний на JS, легко використовувати з CoffeeScript (і навпаки). Можна використовувати будь-яку написану JS-бібліотеку
  • Додає можливості, яких не було або немає в JavaScript: спискові включення, інтерполяцію рядків тексту (англ. string), екзистенційний оператор (?), ланцюгові порівняння
  • Невелика мова: компілятор важить близько 500 КБ (100 КБ у стиснутому вигляді)

Dart

  • Розроблена Ларсом Баком і Каспером Лундом у Google
  • Перший випуск 2011 року
  • Мета - створити швидку, продуктивну мову, особливо добре придатну для побудови інтерфейсів користувача
  • Статично типізована
  • Мультипарадигмова: передусім обʼєктно-орієнтована, але також функціональна та імперативна
  • Може інтерпретуватися й компілюватися «на льоту» (JIT)
  • Передусім використовується для створення застосунків, але також і для бекендів

Чому це чудово

  • Легко вивчати завдяки знайомому синтаксису
  • Сучасна система типів: виведення типів, зіставлення зі зразком, async/await
  • Чудова документація
  • Безпека завдяки коректній системі null-безпеки: більше жодних винятків через нульові вказівники
  • Хороший інструментарій, підтримка в різних IDE. Оптимізовано для короткого циклу зворотного звʼязку, наприклад завдяки швидкому гарячому перезавантаженню
  • Екосистема, що зростає, з багатьма доступними бібліотеками

Особливості, що вирізняють

  • Може компілюватися в JS, нативний код, а також у Swift і Kotlin, що чудово підходить для мобільних застосунків.
  • Бібліотеку Flutter можна використовувати для швидкого створення мобільних, веб-, настільних чи вбудованих застосунків. Написати один раз - запускати на різних платформах
  • Чудова підтримка паралелізму: async/await, ізоляти (легковагі конструкції для паралельного виконання), future-обʼєкти та багато іншого

Delphi

  • Delphi розробила компанія Borland і випустила 1995 року.
  • Це мова програмування Object Pascal, яку розробив Андерс Гейлсберг, один із головних архітекторів C#
  • Строго та статично типізована
  • Компілюється в нативний код
  • Мультипарадигмова: переважно обʼєктно-орієнтована, але також імперативна, декларативна та подієво-орієнтована
  • Використовується в бізнесзастосунках, графічних інтерфейсах і школах (для навчання програмування)

Чому це чудово

  • Легко вивчати. Object Pascal поєднує простоту й ясність Pascal з обʼєктно-орієнтованими можливостями, що полегшує написання й підтримку коду
  • Інтегроване середовище розробки (IDE): середовище Delphi пропонує дружнє до користувача й багатофункціональне оточення, яке оптимізує процес розробки. Воно надає навігацію кодом, інструменти налагодження, автодоповнення коду та інші продуктивні можливості, що роблять розробку ефективнішою.
  • Стабільність: існує з початку 1990-х, має репутацію надійного й стабільного інструменту розробки та мови, зокрема сильною зворотною сумісністю. Код, написаний у ранніх версіях Delphi, досі компілюється й запускається в новіших версіях за мінімальних правок.
  • Кросплатформність: Delphi розширила свої можливості за межі Windows і пропонує підтримку кросплатформної розробки, дозволяючи розробникам працювати під кількома операційними системами, як-от macOS, iOS, Android тощо. Це дає змогу створювати застосунки для ширшої аудиторії й розширює охоплення проєктів.
  • Сильна спільнота й підтримка: у Delphi віддана й активна спільнота розробників, які додають бібліотеки, інструменти й ресурси до екосистеми.

Особливості, що вирізняють

  • Високопродуктивні виконувані файли: застосунки Delphi відомі своєю швидкістю й продуктивністю. Компілятор Delphi створює високооптимізовані нативні виконувані файли, що може бути критично для деяких типів застосунків, наприклад тих, які потребують обробки в реальному часі чи важких обчислень.
  • Середовище швидкої розробки застосунків (RAD): візуальні інструменти проєктування перетягуванням дають змогу розробникам створювати інтерфейси користувача й повʼязувати їх із функціональністю за мінімальних зусиль, прискорюючи процес розробки.
  • Компонентна архітектура: спирається на компонентну архітектуру, де багаторазові компоненти будуються для створення застосунків. Полегшує повторне використання коду й скорочує час розробки.
  • Обробка подій: Delphi використовує вбудовану модель подій, що дозволяє розробникам легко реагувати на дії користувача та інші події. Обробка подій спрощує процес перехоплення введення користувача чи системних подій і належної реакції на них.
  • Підключення до баз даних: Delphi надає нативні компоненти доступу до баз даних, що забезпечують безшовну інтеграцію з різними системами баз даних. Ця вбудована підтримка спрощує розробку застосунків, керованих базою даних.

Elm

  • Мову створив Еван Чепліцкі для своєї дипломної роботи й випустив 2012 року
  • Спочатку вона торкалася теми функціонально-реактивного програмування (FRP) для графічних інтерфейсів (FRP із сигналами), але 2017 року від FRP відмовилися на користь TEA (The Elm Architecture)
  • Статично й строго типізована функціональна мова
  • Синтаксис, натхненний Haskell
  • Мова з відкритим кодом, але дуже догматична, і стиль розробки передбачає тривалі періоди глибокої роботи Евана, перш ніж щось стає публічним. Тож PR можуть дуже довго не зливати, а проєкт може мати вигляд занедбаного, але це просто стиль роботи Евана.
  • Використовується на вебсайтах, наприклад NoRedInk, Vendr, Rakuten, Brilliant

Чому це чудово

  • Це дуже невелика мова, одна з найлегших для вивчення серед статично типізованих функціональних мов сімейства ML. Це робить її майже ідеальною для навчання функціонального програмування.
  • Повідомлення компілятора - найприємніші й найкорисніші з усіх, які можна знайти.
  • Стабільна мова: останній випуск - 2019 року
  • Пакетів в екосистемі небагато, але вони якісні.
  • Потужна екосистема лінтерів з elm-review (на ній працює аналізатор треку Elm на Exercism).

Особливості, що вирізняють

  • Архітектура Elm (TEA) лежить в основі всіх застосунків Elm, тож незнайомі застосунки Elm дуже легко розбирати.
  • Жодних винятків під час виконання! Хіба що кілька дрібниць.
  • Нічого не ламається під час оновлення залежностей: семантичне версіювання контролює компілятор.
  • Коли воно компілюється, воно працює (крім логічних помилок). А коли ми до цього звикаємо, повертатися до інших мов дуже важко.
    • «elm-ui» від Метью Ґріффіта забезпечує «коли компілюється, то працює» для стилю й розмітки, CSS не потрібен.
  • Повностекові вебзастосунки: Lamdera - це відгалуження, що використовує Elm для повностекових вебзастосунків без жодного клею між фронтендом і бекендом.

Java

  • Розроблена Джеймсом Ґослінґом у Sun Microsystems і випущена 1995 року.
  • Пʼять початкових цілей:
    • Проста, обʼєктно-орієнтована й звична.
    • Надійна й безпечна.
    • Архітектурно нейтральна й портативна.
    • Висока продуктивність.
    • Інтерпретована, багатопотокова й динамічна.
  • Строго та статично типізована
  • Компілюється в байткод (над нативним кодом працюють)
  • Мультипарадигмова: імперативна, обʼєктно-орієнтована та функціональна
  • Мова й віртуальна машина мають офіційні специфікації, а отже, і кілька реалізацій (наприклад, OpenJDK JVM і Hotspot VM від Oracle)
  • Використовується в безлічі програм, від вебсайтів до вбудованих систем і від застосунків до баз даних

Чому це чудово

  • Працює (майже) всюди (про що нам радо нагадає оновлювач Java ;))
  • Загального призначення: підходить майже для будь-якого навантаження, зокрема застосунків, вебсайтів і вбудованих систем
  • Взаємодія з іншими мовами JVM, як-от Kotlin, Groovy, Scala і Clojure
  • Чудовий інструментарій як для IDE, так і для інших інструментів, як-от системи збірки

Особливості, що вирізняють

  • JVM - це зріла, стабільна й високопродуктивна віртуальна машина, яку постійно вдосконалюють
  • Величезна екосистема з безліччю доступних бібліотек. Ці бібліотеки, як і Java, зрілі, стабільні та багатофункціональні
  • Розвиток: мова й середовище виконання досі розвиваються, з регулярними оновленнями мови, щоб зробити її сучаснішою й відповісти на скарги людей (наприклад, зменшення шаблонного коду й багатослівності). Для середовища виконання регулярно запускають нові проєкти, щоб розвивати його далі (наприклад, проєкт Loom для легковагих конструкцій паралелізму та нативна компіляція через GraalVM)

JavaScript

  • Брендана Айка найняла Netscape 1995 року, щоб дати мову для динамічних вебсторінок. Перший прототип, як відомо, створили за 10 днів
  • Стандартизована як ECMAScript 1997 року
  • Динамічно й слабко типізована
  • Раніше була лише інтерпретованою, а сьогодні часто компілюється «на льоту»
  • Мультипарадигмова: прототипна (досить рідкісна), але також обʼєктно-орієнтована, імперативна та функціональна
  • Надзвичайно вплинула на те, щоб веб став таким успішним, як сьогодні. Наприклад, AJAX дуже допоміг додати інтерактивність. Де-факто стандарт веброзробки, адже це єдина мова програмування з підтримкою, вбудованою в браузер
  • Мабуть, найуживаніша мова сьогодні
  • Використовується для бекенду, фронтенду, скриптів і командного рядка

Чому це чудово

  • Загального призначення: підходить для багатьох задач: бекенд, фронтенд, скрипти, інструменти командного рядка. Багато інструментів для вебу написані на JavaScript (і працюють на nodejs)
  • Середовища виконання (як-от V8) сильно оптимізовані й можуть бути дуже продуктивними, хоча мова надзвичайно динамічна
  • Відносно невелика мова, що робить її відносно легкою для вивчення. Можливість запускати її в браузері робить її особливо чудовою, бо під час навчання ми отримуємо візуальний зворотний звʼязок
  • Специфікацію часто оновлюють, додаючи нові можливості, як-от async/await, інтерполяція рядків тексту. Також багато інновацій в інструментарії: розробляють новіші інструменти, як-от deno, esbuild і bun.js, щоб допомогти працювати з кодовими базами JavaScript
  • JSON підтримується на найвищому рівні, що підтверджує сама назва JSON - JavaScript Object Notation
  • Спроєктована, щоб добре працювати з подієво-орієнтованим, неблокуючим кодом

Особливості, що вирізняють

  • Величезна екосистема. Доступна неймовірна кількість бібліотек (2,1 мільйона пакетів у вересні 2022 року), а також багато інших мов, що компілюються в JavaScript
  • Працює на більшості платформ і апаратного забезпечення, від Windows до Apple, від Raspberry Pi до телефонів, від вебсерверів до безсерверних платформ. Веббраузери мають вбудовану нативну підтримку, тож встановлювати середовище виконання не потрібно.
  • Ідеальна для веброзробки: багато фреймворків на вибір (React, Vue, Angular), а також безліч інструментів для створення вебзастосунків (наприклад, eslint, parcel)
  • Можна використовувати ізоморфно, тобто ту саму мову (і кодову базу) для бекенду й фронтенду. Це полегшує підтримку й дозволяє повторно використовувати код між фронтендом і бекендом
  • Величезна популярність означає багато ресурсів для навчання (відео, блоги, курси) і величезну спільноту для спілкування

Kotlin

  • Розроблена JetBrains 2010 року, відомою своїми IDE (наприклад, IntelliJ, CLion, GoLand і Rider)
  • Більшість продуктів JetBrains були написані на Java, але компанія хотіла мову для JVM, яка зменшила б шаблонний код, прискорила розробку й підтримала деякі можливості, яких їй бракувало. У Scala ці можливості були, але вона виявилася надто повільною для компіляції. Так почався проєкт Kotlin.
  • Строго та статично типізована
  • Мультипарадигмова: імперативна, обʼєктно-орієнтована, функціональна, декларативна
  • Типово компілюється в байткод JVM, але також може компілюватися в JS і нативний код (корисно для платформ, де віртуальні машини неможливі чи небажані, як-от пристрої iOS)
  • 2019 року Google позначила її як бажану мову для написання застосунків Android
  • Використовується для створення вебсайтів, застосунків (переважно Android) і навіть цілих IDE (тих самих IDE)

Чому це чудово

  • Загального призначення: підходить майже для будь-якого навантаження, зокрема застосунків і вебсайтів. 2019 року Google визнала Kotlin бажаною мовою для розробки застосунків Android
  • Працюючи на JVM, вона отримує всі її переваги: зрілу, високопродуктивну віртуальну машину й величезну кількість доступних бібліотек
  • Позбавляє багатьох проблем, які люди можуть мати з Java, як-от перевірювані винятки, null-безпека й багатослівність
  • Сучасна мова: розвинене виведення типів, побудова на виразах, незмінність, зіставлення зі зразком, корутини, канали
  • Чудовий інструментарій (цього й слід очікувати, коли сама IDE написана цією мовою :)

Особливості, що вирізняють

  • Продуктивна: Kotlin переймає найкращі частини інших мов, поєднуючи їх в одну послідовну, продуктивну мову, а в деяких випадках навіть удосконалює оригінал (наприклад, локальними методами-розширеннями)
  • Корутини: тоді як у багато інших мов async/await вбудовано в мову, у Kotlin це реалізовано як бібліотека, що використовує можливість корутин. Корутини - це спосіб працювати із suspend-функціями, які дають безпечнішу й менш схильну до помилок абстракцію для асинхронних операцій, ніж future-обʼєкти та promise-обʼєкти.
  • Чудовий паралелізм: async/await, канали, незмінність - усе це допомагає досягти відмінного паралелізму
  • Compose Multiplatform дозволяє створювати спільні інтерфейси з однієї кодової бази за допомогою декларативного синтаксису

Objective-C

  • Спочатку розроблена Бредом Коксом і Томом Лавом на початку 1980-х, її обрала NeXT для своєї операційної системи NeXTSTEP. Оскільки macOS від Apple походить безпосередньо від NeXTSTEP, вона стала мовою вибору для програмного забезпечення Apple
  • Створена, щоб поєднати обʼєктно-орієнтовані ідеї SmallTalk із C, використовуючи передачу повідомлень як основну обʼєктно-орієнтовану конструкцію
  • Надмножина C, тож будь-який код C - це коректний код Objective-C, і обидві мови можна поєднувати в одній кодовій базі
  • Статична й динамічна типізація
  • Компільована
  • Стандартна мова для написання застосунків macOS і iOS до появи Swift 2014 року
  • Використовується для застосунків macOS та iOS

Чому це чудово

  • Поєднання C з обʼєктно-орієнтованими можливостями може бути справді потужним
  • Легке середовище виконання, що робить її ощадливою до ресурсів
  • Легкий синтаксис класів
  • Швидкий перебір дозволяє легше писати цикли for, ніж у C
  • Сильна зворотна сумісність

Особливості, що вирізняють

  • Підтримує автоматичний підрахунок посилань (ARC), який автоматично звільняє памʼять, коли обʼєкт більше не використовується, полегшуючи керування памʼяттю
  • Динамічне середовище виконання дозволяє підміну методів (method swizzling) (динамічно змінювати поведінку селектора (як-от monkey patching)), рефлексію й пересилання повідомлень (чудово для патерна спостерігача чи проксі)
  • Протоколи й інтерфейси приносять у C можливості інтерфейсів, а категорії навіть дозволяють розширювати наявні типи

PHP

  • Розроблена й реалізована Расмусом Лердорфом 1993 року, уперше випущена 1995 року
  • Назва - рекурсивна абревіатура PHP: Hypertext Preprocessor
  • Динамічно й слабко типізована, з можливістю поступово додавати строгі перевірки типів під час виконання
  • Мультипарадигмова: імперативна, функціональна, обʼєктно-орієнтована, процедурна, рефлексивна
  • Інтерпретована або компільована «на льоту»
  • Оригінальна платформа серверного рендерингу
  • Використовується для вебсайтів (Facebook, Wikipedia та багатьох інших), а також для багатьох систем керування вмістом (Wordpress, JOOMLA).

Чому це чудово

  • Вона всюдисуща: PHP використовується на 77,4% усіх вебсайтів^1, незалежно від конкретних платформ
  • Простий синтаксис, схожий на інші усталені мови програмування, як-от Java, JavaScript, C, що робить її легкою для вивчення
  • Загального призначення. Підходить для багатьох задач: від створення невеликих вебскриптів до великих серверних застосунків, які використовують підприємства.
  • Дуже усталена й широко вживана. Існує багато навчальних ресурсів, фреймворків і бібліотек.
  • Потужна підтримка баз даних
  • Досі активно розвивається, випускаючи сучасні можливості
  • Кросплатформна. Працює всюди: Windows, Mac, Linux, Unix
  • Відкритий код і безкоштовність

Особливості, що вирізняють

  • Просто запускати й розгортати. Жодного ланцюжка збірки. Жодних компіляторів.
  • Поступова система типів. Типи додають там, де вони потрібні, а динамічну типізацію використовують, щоб спростити частини розробки.
  • Швидке прототипування. Створюємо вебсторінку, щоб перевірити свою ідею, і запускаємо її на власній машині.

PureScript

  • Розроблена Філом Фріменом, перша версія випущена 2013 року
  • Він почав працювати над PureScript, бо його не задовольняли інші спроби транспілювати Haskell у JavaScript
  • Строго та статично типізована
  • Компілюється в JS
  • Чисто функціональна мова
  • Синтаксис і можливості, натхненні Haskell
  • Використовується для створення вебзастосунків, але також підходить для серверних чи настільних застосунків через Electron

Чому це чудово

  • Поділяє багато того, що робить Haskell чудовим:
    • Строга й потужна система типів: алгебраїчні типи даних, класи типів, типи вищого роду
    • Виразність: зіставлення зі зразком, виведення типів
    • Безпека: жодних null, незмінні типи
    • Чиста функціональність: побічні ефекти закодовані в системі типів
  • Легке, типобезпечне декодування й кодування JSON у типи
  • Компілюється в зрозумілий людині JavaScript
  • Хороший інструментарій

Особливості, що вирізняють

  • Функціональне ядро ідеально підходить для типобезпечних вебзастосунків без помилок під час виконання
  • Чудова взаємодія з JS
  • Компілюється в ефективний JS

ReasonML

  • Створена Джорданом Волком у Facebook, перша версія випущена 2016 року
  • Заснована на OCaml, але з прибраними особливостями й спроєктована для взаємодії з JS
  • Статично типізована функціональна мова
  • Компільована
  • Використовується для створення вебсайтів (наприклад, у Facebook)

Чому це чудово

  • Усі переваги OCaml, але у вебсередовищі:
    • Потужна система типів: усі значення типізовані простішими типами (як-от записи, варіанти й опції), яким надають перевагу над складними типами. Більше жодних помилок undefined, що підвищує надійність
    • Виразність: зіставлення зі зразком, виведення типів, деструктуризація
    • Безпека: жодних null, незмінність типово
  • Компілюється в зрозумілий людині JavaScript
  • Може компілюватися в OCaml (і навпаки), тобто може використовувати всю екосистему OCaml (наприклад, для компіляції в нативний бінарник)

Особливості, що вирізняють

  • Час компіляції ReasonML надзвичайно швидкий, що означає швидкі цикли ітерації.
  • Чудова взаємодія з JS як для використання JS із коду ReasonML, так і для експорту ReasonML у JS. Вона навіть може генерувати типи TS. Також може взаємодіяти з C. Навіть підтримує синтаксис, схожий на JSX

Swift

  • Розробку Swift розпочав Кріс Латтнер 2010 року, а світові її оголосили на події WWDC 2014 року.
  • Мета - замінити стару мову програмування Apple Objective-C, яка не зазнавала серйозних змін із початку 80-х, новою, сучасною мовою. Спроєктована для взаємодії зі значною частиною Objective-C.
  • Строго та статично типізована
  • Компільована, з LLVM для компіляції в машинний код (як-от у Rust)
  • Мультипарадигмова: функціональна, обʼєктно-орієнтована, імперативна, декларативна
  • Спочатку пропрієтарна, але 2015 року відкрили код
  • Використовується переважно для мобільних і настільних застосунків, але також для бекендів і в безсерверних сценаріях

Чому це чудово

  • Сучасна мова: виведення типів, зіставлення зі зразком, алгебраїчні типи даних, рядки тексту Unicode
  • Продуктивна: Swift переймає найкращі частини інших мов (як-от Rust, Python, C# і Ruby), поєднуючи їх в одну послідовну, продуктивну мову
  • Безпечна: вказівники не доступні, опціональний тип, що запобігає виняткам через нульові вказівники, явна обробка помилок і автоматичне керування памʼяттю через ARC (Automatic Reference Counting)
  • Регулярно оновлюється. Спочатку Apple не боялася вносити зворотно несумісні зміни для того, що виявилося незручним. Це не дає накопичуватися «багажу». Зазвичай доступний інструмент, який допомагає мігрувати код. Від Swift 5 бінарний інтерфейс застосунку (ABI) стабільний
  • На відміну від Objective-C, Swift працює на всіх основних платформах: macOS, Windows і Linux

Особливості, що вирізняють

  • Швидка. Компілюється в ефективний машинний код, тому працює швидко
  • Безшовна взаємодія з Objective-C, а також добра взаємодія з C і C++
  • Велика спільнота з безліччю чудових доступних ресурсів

TypeScript

  • Створена в Microsoft у відповідь на розчарування розробкою великомасштабних застосунків на JS. Одним із дизайнерів був Андерс Гейлсберг, головний архітектор C# і творець Delphi та Turbo Pascal
  • Перша версія випущена 2012 року
  • Мультипарадигмова: функціональна, прототипна, імперативна, обʼєктно-орієнтована та узагальнена
  • Використовує поступову й качину типізацію
  • Компільована (в JS)
  • Використовується для вебсайтів, і фронтенду, і бекенду, скриптів і командного рядка

Чому це чудово

  • Потужна й гнучка система типів: обʼєднані типи, літеральні типи, кортежі. Фактично будь-який прийом, який можна використати в коді JS, можна описати типобезпечно в TS. Система типів настільки потужна, що вона навіть повна за Тюрінгом
  • Будучи надмножиною JS, дозволяє поступово впроваджувати її в кодовій базі JS
  • Поєднує найкраще з обох світів: динамічну й статичну типізацію
  • Стрімко набуває популярності: багато інструментів або надають типи TypeScript, або самі переписані на TypeScript. Доступно багато ресурсів
  • Мова регулярно оновлюється, рано впроваджуючи майбутні можливості ECMAScript

Особливості, що вирізняють

  • Покращена безпека й коректність: статична типізація може усунути багато класів помилок, які зазвичай роблять із JS
  • Безшовна взаємодія з JS. Можна додавати власні визначення типів, щоб працювати з кодом JS типобезпечно. Власні визначення типів доступні для великої кількості
  • Чудовий інструментарій і підтримка в IDE. Анотації типів, автодоповнення коду й навіть безпечний великомасштабний рефакторинг доступні в багатьох IDE
  • Отримуємо всі переваги роботи в екосистемі JS: величезна кількість пакетів, багато інструментів, велика спільнота тощо.

Що ж спробувати?

  1. Якщо ми хочемо створювати нативні застосунки, Dart, Delphi, Java, Kotlin і Swift - чудовий вибір. Водночас будь-яку з інших мов, що компілюються в JS, теж можна використати для нативних застосунків. Варто зазначити, що офіційна мова для застосунків iOS/macOS - Swift, а для застосунків Android - Kotlin
  2. Якщо ми хочемо створювати вебзастосунки, чудово підійдуть CoffeeScript, Dart, Elm, Java, JavaScript, Kotlin, PHP, PureScript, ReasonML і TypeScript
  3. Якщо нам цікаве функціональне програмування, Elm, PureScript і ReasonML - природний вибір, а CoffeeScript, Dart, Java, JavaScript, Kotlin, Swift і TypeScript також підтримують функціональне програмування
  4. Для обʼєктно-орієнтованого програмування логічними кандидатами є ABAP, Dart, Delphi, Java, Kotlin, Objective-C, PHP і Swift, а CoffeeScript, JavaScript і TypeScript також підтримують цю парадигму
  5. Якщо нам цікаво писати бізнесзастосунки, для цього ідеально підходять ABAP і Delphi
Translation missing: uk.number.nth.ordinalized Aug 2023 · Виявилося корисним?