Стендап Сьогодні 📢 Канал в Telegram @stendap_sogodni

🤖🚫 AI-free content. This post is 100% written by a human, as is everything on my blog. Enjoy!

28.01.2024

Як я обрав Go, а не Rust

Go та Rust - багато в чому мови-конкуренти. Я жартую, що існує закон всесвіту, що для кожної програми на Go існує еквівалент на Rust. Наприклад, бачив заміни для ElasticSearch: Zinc та Sonic. Або, як вже писав, Wails та Tauri як альтернативи Electron.

Чисто абстрактно, я мав би бути фанатом Rust: чітка система типів, відсутність GC, дженерики з самого початку. Але ні — я вже восьмий рік працюю з Go, дедалі більше, а до Rust так і не дійшов. На то є історія.

В далекому 2016 році в мене був прототип рішення на Ruby, який ганяв багато даних через Redis та вже використовував вбудовану в Redis мову Lua, щоб робити частину обчислень прямо в базі. Для прототипу це було круто, проте для кінцевого продукту надто ускладнено. Вирішив зробити свою in-memory БД, яка і масиви даних тримає, і обчислення вміє робити.

На той час з системних мов програмування я знав тільки C/C++, та й те без досвіду розробки продуктів. На слуху були… Go та Rust. В цьому плані з 8 років нічого не змінилось (та й добре.) Головною задачею в мене було відтворити логіку, та зробити це за лічені дні, бо строки вже тиснули. Для перевірки обрав реалізацію невеличкого модуля, центрального для бізнес-логіки.

Спочатку я спробував Rust (бо, я ж кажу, він мені більше подобається.) Та швидко зрозумів, що на опанування системи позик (borrow) в Rust піде багато часу. Причому без неї навіть простої програми не побудуєш; займи не можна відкласти на майбутнє, як частини перевірок TypeScript. Це логічно, бо без позик Rust просто не знає, коли звільняти памʼять.

Тому перейшов до Go. В Go є найкращий інтерактивний підручник, який минулого року навіть переклали українською. З підручником я за годину зрозумів достатньо мови, щоб зробити свій тестовий модуль… та переконатись, що я зможу рухатись далі. Безперечно, Go не надає таких гарантій, як Rust, та потребує GC… але швидкість навчання була гідним відшкодуванням за це.

Так, за півдня я обрав Go, а не Rust. Проєкт був успішним. Та, річ у тім. що коли вже програмуєш на Go, то Rust виглядає як крок убік… крок, який досі в мене немає ніяких підстав робити.