Доступний перший альфа-реліз мови програмування Gauntlet

Доступний перший альфа-реліз мови програмування Gauntlet: надбудова над Go з розширеними можливостями

Оголошено про перший альфа-випуск мови програмування Gauntlet, яка є надбудовою над мовою Go та вирішує деякі архітектурні проблеми базової мови, додаючи розширену функціональність. Програми, написані мовою Gauntlet, підтримують усі можливості Go, транслюються в представлення на Go та повністю інтегруються з існуючою екосистемою без необхідності використання додаткових обгорток (binding).

Інструментарій проєкту розроблений мовою F# та розповсюджується під ліцензією GPLv3. Для зручної роботи з кодом розробники пропонують спеціальне доповнення для редактора VSCode.

Які проблеми вирішує мова програмування Gauntlet

Розглянемо основні проблеми Go, які вирішує Gauntlet:

Покращена обробка помилок та спрощений синтаксис

  • Автоматична обробка невикористаних змінних – Gauntlet додає для всіх невикористаних змінних заглушки вигляду “_ = a”
  • Спрощена обробка помилок – замість громіздких умовних блоків “if err != nil” використовуються короткі вирази “try-with”
  • Більш гнучкий імпорт та експорт (у Go експортовані імена мають починатися з великої літери)
  • Наявність тернарного оператора – можна використовувати вирази виду ‘let properWord = @String len(lines) > 1 ? “lines” : “line”‘

Розширені можливості синтаксису та циклів

  • Покращений синтаксис switch-case
  • Спрощені цикли “for” – можна писати “for let _, c in “Hello” {” замість “for _, c := range “Hello” {“
  • Уніфікований оператор присвоєння (в Go використовуються два різних оператори: “:=” та “=”)
  • Можливість виклику функцій ланцюжком – наприклад, ‘let trimmedLines = fileContentStrVersion => strings.trimSpace(_) => strings.split(_, “\n”)’

Додаткові функціональні можливості Gauntlet

Окрім вирішення проблем базової мови, Gauntlet пропонує розширені можливості:

  • Синтаксис “when-is”, що нагадує switch-case, але працює з виразами
  • Підтримка pipe-каналів для послідовного пропускання значення через кілька виразів або функцій, наприклад: “10 => add(_, 10) => add(_, 30) => divide(_, 2)”
  • Вирази “try .. with” та “force .. with” для елегантної обробки помилок
  • Вираз “wrapper” для створення псевдонімів типів (наприклад, “wrapper Int Dollars”)

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

Додаткову інформацію про можливості мови та приклади коду можна знайти в офіційній документації проєкту.