Вступ
Привіт. Вітаю. Сподіваюся, у всіх усе гаразд. Сподіваюся, усім було цікаво погратися й дослідити деякі старі та впливові мови під час 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: величезна кількість пакетів, багато інструментів, велика спільнота тощо.
Що ж спробувати?
- Якщо ми хочемо створювати нативні застосунки, Dart, Delphi, Java, Kotlin і Swift - чудовий вибір. Водночас будь-яку з інших мов, що компілюються в JS, теж можна використати для нативних застосунків. Варто зазначити, що офіційна мова для застосунків iOS/macOS - Swift, а для застосунків Android - Kotlin
- Якщо ми хочемо створювати вебзастосунки, чудово підійдуть CoffeeScript, Dart, Elm, Java, JavaScript, Kotlin, PHP, PureScript, ReasonML і TypeScript
- Якщо нам цікаве функціональне програмування, Elm, PureScript і ReasonML - природний вибір, а CoffeeScript, Dart, Java, JavaScript, Kotlin, Swift і TypeScript також підтримують функціональне програмування
- Для обʼєктно-орієнтованого програмування логічними кандидатами є ABAP, Dart, Delphi, Java, Kotlin, Objective-C, PHP і Swift, а CoffeeScript, JavaScript і TypeScript також підтримують цю парадигму
- Якщо нам цікаво писати бізнесзастосунки, для цього ідеально підходять ABAP і Delphi
Translation missing: uk.number.nth.ordinalized Aug 2023
·
Виявилося корисним?
Опубліковано
Erik Schierboom