Чому Go перевершує посередність

У квітні 2001 Пол Грем написав статтю «Перевершуючи посередність»(«б'ється серцем the averages» — ориг).

Цей пост про те, чому Go, слідуючи статті, і є те саме секретна зброя, яка має бути у кожного стартапу.

Секретна зброя
Програмне забезпечення — дуже конкурентний бізнес, з хорошим грунтом для появи монополій. Компанія, яка пише свій софт швидше і краще за інших рівних, залишає своїх конкурентів поза бізнесу. У стартапі, якщо ви поставите на невірну технологію, ваші конкуренти зітруть вас з лиця землі.
Процитований параграф описує те, наскільки важлива велика швидкість розробки для стартапу. І це логічно, адже стартапи завжди обмежені в часі та грошах.
І досягнення високої продуктивності це саме те, де Go блищить.

Go це не мова, повний фіч. У ньому немає Генериків (хоча ви можете використовувати кодогенерацию для створення кастомних структур даних), його підхід до спадкоємства сильно різниться з тим, до чого звикло більшість, в ньому є лише часткова оптимізація хвостової рекурсії і т. д. Але це саме те, що робить Go чудовим! Компактна специфікація мови і відмінний інструментарій, дозволяють вам вирішувати завдання з дуже великою швидкістю, і код, який виходить в результаті зазвичай:

1. Простий у написанні

  • Стандартна бібліотека Go дуже багата, легко читається, дуже хорошої якості і швидкості. Ви здивуєтеся, як багато ви можете зробити, не використовуючи сторонні бібліотеки. Ви, наприклад, знали, що database/sql дає вам пулинг сполук з коробки?
  • go get не ідеальний, але він дозволяє вам підключати сторонні бібліотеки без якої-небудь настройки і це неймовірно важливо під час фази розробки.
  • Система типів — це, як на мене, те що потрібно. Вона прибирає цілий клас проблем, мінімально церемонячись.


2. Простий в розумінні

Завдяки go fmt, більша частина Go-коду виглядає однаково. Це дуже важливий аспект, по мірі того, як ваш відділ розробників зростає, новачки можуть підхопити проект дуже швидко.

Але що, якщо новачки не знають Go? Не проблема. Завдяки мінімальній специфікації мови, хороший програміст може вивчити Go протягом 1-3 вихідних, при цьому освоївши всі його особливості.

3. Простий для деплоя

У наші дні, більшість стартапів використовують Rails або Django для швидкої розробки прототипу. Виглядає розумно, але як тільки вам потрібно деплоить код в продакшен, що починається? Ось що зазвичай люди роблять:
  • Піднімають від 5 до 10 medium-инстасов на EC2
  • Пишуть складний pipeline для деплоя в cap або fab.
  • Встановлюють Nginx/HAProxy перед додатком, тому що Unicorn або Gunicorn не готовий приймати прямий трафік з інтернету.
  • Як щодо вебсокетов? Про це буде окремий додаток на Node, з таким же складним pipeline для деплоя.
  • Як щодо фонових завдань? Та ж проблема, окремі програми зі своїм deploy pipeline.
Що, якщо ваш стартап може позбутися від усього цього, і збільшити швидкість ще сильніше:
  • Висока продуктивність і ефективне використання пам'яті програми обертається економією грошей, що в свою чергу означає більшу маневреність на старті.
  • Завдяки тому, що код компілюється в один бінарники, вам навряд чи придеется думати про відмінності між середовищем розробки і продакшену.
  • Один бінарники робить процедуру деплоя в рази простіше. У найпростішому випадку вам потрібно три команди — rsync, symlink і run. Якщо ви версионируете бінарники, то відкат до попередньої версії зводиться банально до підміни символьних посилань.
  • Один бінарники також робить налаштування вашої Vagrant-середовища набагато простіше і це дозволяє робити вам більше крос-OS тестування.
  • Вам більше не потрібно встановлювати Nginx/HAProxy. Вбудований net/http сервер працює з великими навантаженнями просто на ура.
  • Вебсокеты? Завдяки дизайну Go, ви можете спокійно використовувати http-хендлеры і websocket-хендлеры в одному додатку. Просто підключіть github.com/gorilla/websocket.
  • Фонові завдання? Для більшості завдань — просто запустіть горутину, і працюйте з чергою всередині програми з допомогою каналів.


4. Готовий до продакшену

У більшості випадків, продуктивність Go аналогічна Java, і він споживає в рази менше пам'яті.

The blub paradox (відсилання до ориг. статті)
Вся ця частина, про Lisp vs Blubs, наштовхнула мене на думки про Go-співтоваристві.

На брак ось тих гіпотетичних Blub програмістів, які дивляться зверхньо на Go, тому що там немає X фіч, скаржитися не доводиться.

Чи повинна Go-спільнота хвилюватися за них? Не думаю.

Go дуже швидко завойовує співтовариство стартапів. Ось далеко не повний, і постійно зростаючий список компаній, які використовують Go: Bit.ly, Baidu, CloudFlare, CoreOS, DigitalOcean, Disqus, Docker, Dropbox, GitHub, Heroku, New York Times, Parse, Square, Twitch, Tumblr, Twitter, і т. д.

Досить скоро, багато хто з противників перейдуть на Go просто слідуючи трендам ринку.

Повертаючись до оригінальної думки
Враховуючи все вище аргументи, засновники стартапів, ви всі повинні розглянути Go дуже серйозно.

Тут занадто багато плюсів і нуль мінусів. Навіщо чекати? Телефонуйте 1-800-SWITCH-GO і отримаєте всі переваги вже зараз.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.