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

Julia

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

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

Однак найважливішим чинником є спільнота — це мова з відкритим вихідним кодом, що розповсюджується за ліберальною ліцензією MIT. Julia працює практично на всіх типах апаратного забезпечення, зокрема IBM, Intel, NVIDIA та ARM.

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

Цю мову вже використовують найбільші компанії світу. У 2016 році IBM і Juliacomputing проаналізували зображення очного дна та розробили рішення для глибокого навчання, які забезпечують якіснішу діагностику й догляд за очима тисячам сільських жителів Індії.

Haskell

Haskell — мова програмування зі строгою статичною типізацією та нестрогими обчисленнями, розроблена у 1990 році. Оскільки розробників Haskell небагато, приватні компанії не хочуть випробовувати Haskell.

Одна з речей, у яких Haskell просто чудовий, — це абстракція (абстрактна математика, а не ООП у Java). Це дає змогу створювати виразні й ефективні бібліотеки для опису алгоритмів ШІ. Наприклад, HLearn використовує добре відому алгебраїчну структуру (модулі, моноїди тощо), щоб описувати прості алгоритми машинного навчання та підвищувати їхню швидкість.

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

Haskell підтримує вбудовані предметно-орієнтовані мови — відому галузь досліджень мов програмування, застосовну до багатьох сфер, зокрема штучного інтелекту. Зокрема, це хороша хост-мова для ймовірнісного програмування, яке допомагає розробникам виявляти помилки під час компіляції. Якщо вам цікаво, можете ознайомитися з Hakura — дослідницьким проєктом зі створення вбудованого ймовірнісного програмування.

Мова має прив’язку до CUDA і компілюється в байт-код. Оскільки вона функціональна й не має стану, код можна легко виконувати на різних процесорах у хмарі. Що ж до впровадження в галузі, Facebook використовує Haskell для боротьби зі спамом.

jаvascript

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

У jаvascript не обов’язково вивчати модель діалогу. Вивчайте дані на сервері, а потім викликайте навчений алгоритм за допомогою Ajax для прогнозування. Існує безліч бібліотек для розробки вашого ощадливого виробництва.

Перелічимо три з них:

  • ConventJS: бібліотека для реалізації глибокого навчання — навчання згорткової нейронної мережі в браузері. Вона підтримує повнозв’язні шари, а також нелінійні модулі нейронних мереж, функції класифікації та регресії.
  • Synaptic: бібліотека нейронних мереж для node.js. Її узагальнений алгоритм не залежить від архітектури, що дає змогу розробляти й навчати майже всі типи архітектур нейронних мереж першого та другого порядку.
  • Mind: вона використовує матричну реалізацію для обробки навчальних даних. Ви можете повністю налаштувати топологію мережі та завантажити чи вивантажити вже навчені моделі.

Коротше кажучи, вам не потрібно винаходити велосипед — просто визначте, який тип «навчання» виконуватиме ШІ.

Prolog

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

Це декларативна мова з формальною логікою. Розробники ШІ цінують її за вбудований механізм пошуку, недетермінованість, механізм повернення, рекурсивний характер, високорівневу абстракцію та зіставлення зі зразком.

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

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

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

Java

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

Які переваги має програмування ШІ на Java? Добра підтримка великомасштабних проєктів, краща взаємодія з користувачем, простота налагодження, спрощена візуалізація та підтримка Swing і Standard Widget Toolkit.

Головна перевага — універсальність: якщо ви новачок, в Інтернеті є тисячі корисних посібників (безкоштовно), які зроблять навчання простішим і ефективнішим.

Деякі відомі застосунки, розроблені на Java:
 

  1. Пакет машинного навчання WEKA, призначений для машинного навчання та інтелектуального аналізу даних.
  2. Нейронний рушій JOONE для проєктування, навчання й тестування нейронних мереж
  3. ALICE (скорочення від Artificial Linguistic Internet Computer Entity), чатботи, що обробляють природну мову.
  4. Robocode — гра з відкритим вихідним кодом для вивчення принципів програмування на Java.

Lisp

Lisp — одна з найстаріших (розроблена у 1958 році) та найвизначніших мов, створена доктором Джоном Маккарті, який увів термін «штучний інтелект». Хоча сьогодні її використовують нечасто, ця мова водночас гнучка й розширювана.

Спочатку її розробили для обчислень у лямбда-численні, і з часу створення вона сильно змінилася. Мова принесла в інформатику багато ідей, як-от рекурсія, динамічна типізація, функції вищого порядку, автоматичне керування пам’яттю, компілятор, написаний самою мовою, і деревоподібна структура даних.

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

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

На Lisp розроблено тисячі застосунків ШІ; ось деякі з них:

  • Помічник авторизації American Express, який перевіряє транзакції (кредитних карток)
  • METAL, система перекладу природною мовою
  • Macsyma, перша велика система комп’ютерної алгебри
  • ACL2, засіб доведення теорем, який використовує AMD

С++

C++ швидший за інші мови — його здатність взаємодіяти на апаратному рівні дає змогу скоротити час виконання коду. Це надзвичайно корисно для проєктів штучного інтелекту, чутливих до часу. Його можна використовувати для статистичного підходу до штучного інтелекту, подібного до того, що застосовують у нейронних мережах.

Завдяки швидшому виконанню та принципам ООП C++ — гідний кандидат для програм ШІ. Фактично, більшість бібліотек машинного та глибокого навчання написано на C/C++; для них пропонуються API й обгортки для інших мов програмування.

Якщо ви хочете контролювати час виконання та продуктивність, C++, безперечно, — хороший вибір. Шаблони безпечніші у використанні (з погляду типів) і дають змогу краще узагальнювати API. Хоча шаблони — це потужний інструмент, який може спростити більшість речей, щоб вирішити, коли їх доречно використовувати, потрібні додатковий час і досвід.

Мова долає складнощі 3D-ігор, оптимізуючи керування ресурсами та полегшуючи мережеву багатокористувацьку гру. Реальний приклад — науково-фантастична гра Doom 3, у якій використовуються C++ та Unreal Engine, набір інструментів для розробки ігор (написаних на C++). Microsoft Windows, Mac OS, Adobe Photoshop, Maya 3D, CAD і Mozilla Firefox — ось кілька відомих застосунків, у яких використовують C++.

Python

Python орієнтований на DRY (не повторюйся) і RAD (швидка розробка застосунків). Розроблений на початку 1990-х, Python став однією з мов програмування, що розвиваються найшвидше, завдяки масштабованості, адаптивності та простоті вивчення.
У Python є сотні бібліотек, які дають змогу реалізувати будь-який тип проєкту: мобільний застосунок, вебзастосунок, науку про дані чи штучний інтелект. Наприклад, «Numpy» для наукових обчислень, «Pybrain» для машинного навчання, «Scipy» для складних обчислень і «AIMA» для штучного інтелекту.

Цілісний дизайн мови Python, баланс між низькорівневим і високорівневим програмуванням, модульне програмування та середовища тестування вирізняють її з-поміж інших мов. Ще одна перевага — швидке прототипування. На ШІ припадає близько 80% досліджень. У Python майже всі ідеї можна швидко перевірити за допомогою 30-40 рядків коду.