Pull to refresh

Comments 31

Про сам Go только 1 вопрос, остальное про бабки. ~когда же IT очиститься?~

Generics в Go долго выпрашивали, долго ждали. Подвезли. И вот я не заметил масштабного применения в серьезных code base. Единственный попавшийся мне пример элегантного и вразумительного использования -- клиент API OpenAI https://github.com/openai/openai-go
Интересно в avito есть практика применения generics? Приветствуется ли генерализация кода корпоративными стандартами?

Попробуйте сравнить бенчи клаcсического sort и slices на дженениках.

Дженерики в библиотеках нужны. Вот в новых библиотеках их и используют.

Недавно шарился по вакансиям в DS/ML и у многих в стеке висит Golang, хотя раньше был Java

Почему Go такой странный

Ожидание: нехватка юнион-типов, недостаточно гибкие дженерики, нужен ли тернарный оператор или его функциональный аналог

Реальность: как вкатиться?? как назвать папки??? зочем софты????

А Го тут каким боком вообще?

Ожидание: нехватка юнион-типов, недостаточно гибкие дженерики, нужен ли тернарный оператор или его функциональный аналог

У гошников таких вопросов не возникает - видимо, такая предметная область у них. Продолжатели дела PHP? Вопросы есть только у тех кто смотрит на Го извне, из своих ЯП.

UFO landed and left these words here

Почему я плохо отношусь к PHP?

Проект у меня такой, ужжассс

Есть еще на шарпе, поинтересней будет

Хотя, я больше по алгоритмам и архитектуре, слава Богу

Так может быть стоит относиться плохо к проекту, а не к инструменту? Говно наклепать можно на чём угодно :)

PHP провоцирует плохой код

Без разделения на слои (разделение даёт меньше пользы чем на c#, ну никто и не делает)

Без типизации (можно, значит не будут), одни словари без описания

Простые crud я не против PHP, но не в ответственных системах с развитой бизнес логикой на 200.000 строк

Без разделения на слои (разделение даёт меньше пользы чем на c#

А в чем тут языковая разница?

PHP провоцирует на это

В Шарп это просто в голову не придёт

Без типизации (можно, значит не будут)

А можно не надо? Странная у вас логика. Если можно сделать хрень, значит её надо делать... Лампочку тоже можно в рот засунуть, но вы же этого не делаете?
Простые CRUDы можно клепать на чём угодно, хоть на PHP, хоть на Go, хоть на C++. Так же и большие, сложные системы можно делать на чём угодно, в т.ч. и на PHP. Если у вас не хватает компетенций использовать все возможности, которые предоставляет ЯП и инструменты, будь то строгая типизация, гибкий PHPDoc для описания различных структур "в массивах/хэштаблицах", статический анализ, и т.д., то точно ли дело в языке?

Ну а ещё, развитая бизнес-логика развитой бизнес-логике рознь. Где-то можно простую вещь сделать просто, а где-то надо нагородить абстракций над абстракциями, обмазать всё десятком интерфейсов, и внезапно 10 строк реальной бизнес-логики превращается в 1000... Это я к тому, что оценивать сложность/серьёзность проекта по LoC -- это какое-то писькомерство. У кого больше.

Go — это не случайный эксперимент, а результат многолетних исследований и практических наработок в области системного программирования.

Ну да, ну да. Для примера, рассмотрим Хелловорд (https://gobyexample.com/hello-world).

package main

import "fmt"

func main() {
    fmt.Println("hello world")
}
  • Вопрос: как в Go пишутся имена пакетов?

  • Ответ: в Go имена пакетов пишутся и как строки и как идентификаторы, поочёрдно.

  • Вопрос: начиная с?

  • Ответ: начиная с идентификатора, чтобы часто необходимый main был двусмысленным.

  • Вопрос: а это зачем?

  • Ответ: чтобы было хоть какое-то основание утверждать

Освоение Go вызывает схожие трудности у разработчиков с разным бэкграундом

не добавляя во фразу "за вечер понедельника".

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

UFO landed and left these words here

Такое же было ощущение на PHP проекте когда чтобы понять что происходит в полном инциденте понадобилось прочитать 4000 строк кода. Бизнес логика и состояние были размазаны по совершенно неожиданным частям приложения и IDE мне никак не помогал. А типов не было совсем.

Правда, ужасные проекты на c# я тоже видел

UFO landed and left these words here

Хоть убей, не могу хейта голанга понять. Не нравится - не используйте, но нет, каждый второй своим долгом считает грязью облить. Пишу на го (с версии 1.6) всю свою карьеру в разработке, слезы радости вытираю. И деньги хорошие, да

Хейтерам - вы, надеюсь, не используете в работе ни Docker, ни Kubernetes, ни Nats, ни Grafana, ни Terraform, да? Они ведь на богомерзком Golang написаны, тьфу-тьфу

Не нравится - не используйте

Индустрия методом проб и ошибок рождает решения, совершенствуется. Очень часто случается, что сценарий использования не совпадает с идеями, на которыми инструмент создавался. На каждом углу трубят, что для каждой задачи - свой инструмент, так как же понять границы применимости и сильные/слабые стороны, если все время не шатать их обсуждением опыта с коллегами? Каждый такой наброс - это приглашение к дискуссии, проверка гипотезы.

Но тут интересно другое:

грязью облить

почему хейт инструмента скорбляет вас лично? Или вы глубоко в душе сами боитесь найти несокрушимый аргумент, разочароваться и пожалеть о том, сколько сил и времени вложили?😉

Golang без малого 16 лет существует, все никак не разберетесь? Меня в такие дискуссии не приглашайте, есть сомнения в профессиональных компетенциях участников.

UFO landed and left these words here

Пайк ошибся только в том, что посчитал работников Гугла глупее, чем они были на самом деле. Дженерики бы они сразу приняли бы на ура. Но его подход, что нужен ЯП для масс, на тот момент (когда все начали сходить с ума от ФП) можно считать прорывным.

Почему статья выглядит как "GPT вот тебе темы, сделай суммаризацию"

Одна из главных фишек го это утиная типизация.

Плюсы: можно не писать в ООП

Минусы: это не четкий контракт

В duck typing нет формально объявленного контракта, а подразумевается набор требуемых методов. Например, если функция вызывает метод quack(), она ожидает, что переданный объект поддерживает quack(), но нигде это явно не записано. При изменениях в коде или смене команды трудно отслеживать, что именно должен реализовывать объект – компилятор об этом не скажет, ошибки обнаружатся только при выполнении. Это и есть неявный контракт.

конкурентность через горутины - скрыто синхронно или асинхроннонно будет выполнено, что даёт источник ошибок при синхронизации

А общем, для микросервисов да, для большого монолита нет.

Не привычно, что в го нет явного указания, какой интерфейс реализует класс (если реализует конечно). Ну как в плюсах нельзя тыкнуть на базовый класс и узнать. Надо чето исследовать(((

Sign up to leave a comment.

Information

Website
avito.tech
Registered
Founded
2007
Employees
5,001–10,000 employees
Location
Россия
Representative
vvroschin