CTO First officer в Sandsiv
  • Будущее и перспективы golang

    По поводу *sql/mongodb
    У меня нет конечно опыта с колоночными базами данных, такими как Cassandra, но зачем говорить что монга отстой, потому что умеет работать с референсами других коллекций. Это скорее дополнительная плюшка нежели недостаток (хотя я ее никогда не использовал, потому как для реляционных баз хватает, где это сделано гораздо лучше чем в монге). С другой стороны монга умеет то что *sql не снилось, а именно при помощи пайнплейнов в памяти проводить последовательные операции с набором данных, и это прямо на сервере. В этом ее главная фича, за это ее стоит использовать. Монга отлично масштабируется из коробки. Ну да ладно qps.ru/iQpoy <- для каждой цели своя база, и говорить что монга отстой, потому что реляционная, как по мне не совсем корректно.
    Golang хорош для TDD и DevOps — да в том числе но как по мне не только для них.
    На данный момент частенько небольшие демоны на go заменяют высоконагруженные участки приложения, которые затыкивают среди питоновского и пыхового и другого говнокода который мало того что работает не так быстро как хотелось бы, но еще и написан «джунами которых продали как мидлов», и поддерживать это все — адский ад. Все это потому как переписать большое легаси энтерпрайз приложение не так просто как хотелось бы, да и врядли кто-то за это заплатит.
    И тут рождается другой вопрос, которых мучает всех, кто хочет перейти на go как на полноценный язык, забыв про python, ruby, php, java, nodejs итд. А можно ли вообще написать полноценное энтерпрайз приложение в котором будут участвовать много команд и которое будет гибкое и расширяемое только на go в качестве бекенда. Чтобы написать гибкое приложение, нужно ООП, с пачкой паттернов от Фаулера и gof и вроде как будет щастье. В golang вроде как нет ООП. Но есть пакеты, структуры, интерфейсы и если погуглить, можно найти реализацию любого паттерна на go. Но тут нужно курить мануалы с примерами по go далеко не 5 минут, как писали ранее. Нужно перестоится на новую парадигму, к которой нада привыкнуть, но если у тебя за плечами большой опыт в других языках, есть понимание хоть какой-то архитектуры приложения, что куда и зачем, то это не так сложно, но новичку, тем более джуну, тем более в Украине ...
    Да в Украине пока все печально с Go, хотя вакансии есть, но чаще всего go там как дополнительный язык. Гарантии что ты пойдешь в ту или другую контору и научишься там кодить на go не используя какие-то базовые вещи с мануала, а использовать модульную архитектуру с применением паттернов нет никакой.
    Но вот за бугром ситуация другая, там есть конторы которые полноценно юзают go в качестве основного языка, и довольно успешно, и спрос на программистов go только растет.
    Подведем итоги. Если ты пранируешь оставаться в Украине, учи питон.
    И вот почему. Джава потихоньку отходит, а и хибстерский руби приутихает как ажиотаж на крипту )). PHP (который на данный момент самый популярный) c 7й версией работает быстрее, приблизился к питону, получил опциональную строгую типизацию и ООП все круто, но все еще нет поддержки многопоточности, а костыли в виде ребита и бекграундных процессов работают не так быстро как хотелось бы и жрут много ресурсов.
    Теперь про питон. Последнее время, из-за роста спроса на machine learning (а у питона либ для него вагон и тележка, чего не скажешь про другие языки), спрос на питон в Украине все больше, да и не только в Украине. Более того средние ценники на питонистов в последние 2 года выросли. Питон, это по настоящему хороший язык, с приятным и интуитивно понятным синтаксисом. С версией 3.5 появился asyncio из коробки, что позволяет легко реализовать паралельные задачи, значительно ускорив работу приложения. Огромное комьюнити, огромное количество либ на все случаи жизни (чего пока не скажешь про go).
    Знания по Go полюбому не будут лишними. Все знают что go намного производительнее питона, в определенных задачах, и никто не мешает его использовать там где реальный хайлоад.