LINUX.ORG.RU

Чем плох Go?

 , ,


5

14

Отчего многие его так не любят, что с ним не так? Ну кроме того, что:

  1. Нет дженериков, укуренные решения вроде sync.Map interface{} в stdlib как следствие;
  2. Базилион способов объявить переменную;
  3. Магические функции new() и make(), которые работают только с некоторыми типами;
  4. Выбивающиеся из общего стиля ЯП iota вместо enum, <- и ->;
  5. Сильно ограниченные константы, пригодные только для базовых типов данных;
  6. Кастрированные кортежи;
  7. Бесполезность поддержки unicode в коде ввиду того, что экспортированы могут быть только элементы, начинающиеся на символ из ограниченного подмножества;
  8. Unicode code point'ы можно складывать как числа;
  9. Впиндюренные в сам ЯП, а не в библиотеку «горутины»;
  10. Невозможность форка проекта с сабпакетами (он не скомпилируется с помощью go get/go install, официальная рекоммендация - использовать sed);
  11. Сообщество, которое в каждом объективном дефекте видит глубокий смысл и большой плюс;
  12. Go 2, который не пофиксит ничего из этого, кроме дженериков.

Вроде, не критично всё это, жить можно же?

Когда ты уже поймешь, что на мелкие и даже средние недостатки языка никто не обращает внимание. Важны возможности платформы и библиотеки. Ты пытаешься копаться в куче трусов, выискивая те что с коричневым.

I-Love-Microsoft ★★★★★ ()

ну очень толсто

Dred ★★★★★ ()

Всё, что ты перечислил - это достоинства, а не недостатки (кроме проблемы с форками)

Crocodoom ★★ ()

А то, что синтаксис наркоманский — ничего?

anonymous ()
Ответ на: комментарий от I-Love-Microsoft

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

А отсутствие дженериков - это малый или средний?

tailgunner ★★★★★ ()
Ответ на: комментарий от I-Love-Microsoft

пытаешься копаться в куче трусов, выискивая те что с коричневым

как ты его отделал! посмотрим, что он на это сможет сказать.

Bruce_Lee ★★ ()

->;

Ты тут сливаешься, как человек, вплотную не работавший с Go. Приятного аппетита.

SuoiCat ()
Ответ на: комментарий от I-Love-Microsoft

Ты пытаешься копаться в куче трусов, выискивая те что с коричневым.

Оно всё коричневое, это даже в названии отражено.

SwiftRocks ()
Ответ на: комментарий от I-Love-Microsoft

Ты пытаешься копаться в куче трусов, выискивая те что с коричневым.

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

hateyoufeel ★★★★★ ()
Ответ на: комментарий от SuoiCat

Видишь какое укуренное решение, если даже имея 4 года опыта и своё имя в AUTHORS за ряд багфиксов, после 1 года перерыва детали не вспоминаются.

SwiftRocks ()

go отталкивающий. этим для меня и плох. а не конкретикой с занудными пунктами.

system-root ★★★ ()
Ответ на: комментарий от I-Love-Microsoft

Если по существу, что это за возможности платформы и библиотеки, не имеющие аналогов?

SwiftRocks ()
Ответ на: комментарий от SwiftRocks

И ты четыре года терпел?! Они тебя принуждали, пытали, шантажировали?! :(

SuoiCat ()
Ответ на: комментарий от SuoiCat

После PHP оно было очень даже ничего. После нормальных ЯП - Х.З. что нужно сделать, чтобы принять такое.

SwiftRocks ()
Ответ на: комментарий от tailgunner

Если не вопрос вкуса, и не просто ощущается как недостаток, а прям мешает решать задачу... Используя разные ЯП, вижу какие в них недостатки, но они не мешают более менее эффективно решать задачу. Как-то так. Могу примеры привести, но едва ли это необходимо.

У go есть биндинг Qt5 например, для кого то это будет важнее, чем " Сильно ограниченные константы, пригодные только для базовых типов данных" или «Кастрированные кортежи». А сборщик мусора важнее чем «Впиндюренные в сам ЯП, а не в библиотеку «горутины»

I-Love-Microsoft ★★★★★ ()
Последнее исправление: I-Love-Microsoft (всего исправлений: 1)

Лично мне Go не нравится в первую очередь тем, что его официальный компилятор статично линкует бинарники, ещё и прикручивая то, что явно прикручивать его не просили.

Для больших самих по себе бинарников это, может быть, ещё и не так критично. Но, вот что касается небольших программ...

В итоге, на Си можно делать бинарники на десятки килобайт, а на Go, если компилировать официальным компилятором, - нет.

saahriktu ★★★★★ ()
Ответ на: комментарий от I-Love-Microsoft

У go есть биндинг Qt5 например

При этом, cgo даёт гигантский overhead. А его использование карается тем, что сообщество будет плохо о тебе думать (unconventional это). Если почитаешь рассылку, решение вопроса в глазах разработчиков - не писать GUI на Go (выбирать ЯП согласно проблеме типа). При этом, биндинги к Qt, уверен, есть для многих ЯП. А для тех, для которых нет - не rocket science, при необходимости делаются.

SwiftRocks ()

что за Go 2? можно подробней? какие у них вообще планы по разработке? по мне так дебильно что ';' можно ставить или нет, совсем для лентяев это и с json дебильная библиотека

quester ()
Ответ на: комментарий от quester

https://blog.golang.org/toward-go2

В /dev/null принимаются Experience Reports, где ты можешь высказать всё что тебя гложет. 3-4 элемента, которые левой пятке ноги покажутся наиболее убедительными и обратно совместимыми, будут впиливаться в Go 1 в течение нескольких последующих лет. Потом они возьмут ещё 3-4 изменения, для которых сделают Go 2 и напишут утилу, конвертирующую первое во второе. Масштабно ничего не меняют. Дженерики они уже активно пытаются придумать, зачем нужны. Но с ";" точно ничего не изменится, «json» библиотекой они тоже гордятся (тут кстати, Optionals очень полезны были бы, чтобы различать отсутствие значения от пустого значения, предложение имеется с 14го года, если не ошибаюсь, но заинтересованности в этом не много).

SwiftRocks ()

Го неоднозначный. Судя по докам не самое днище, не хуже си по крайней мере, но начинаешь читать код - и через пару минут тянет в блёв. Ну и как с ним работать? Я понимаю, опытные похапе-ассенизаторы и не такое выдюжат, но другим зачем страдать? Есть хоть пара веских причин кго где-либо использовать вместо си или жавы?

anonymous ()
Ответ на: комментарий от anonymous

Просто интересно, когда Сишка или Джава стали более читаемы чем Голенг?

kachan ★★ ()
Последнее исправление: kachan (всего исправлений: 1)

никакой язык не может быть ни плох, ни хорош
эти категории неприменимы к языкам программирования
возьмите топор - он может быть тупым, может быть острым
но он не может быть плохим
или хорошим

kto_tama ★★★★★ ()
Ответ на: комментарий от kachan

Дело не в читаемости, а в культуре кодинга что ли. То что гошланги карябают - это песец какой-то. Ну конечно, индусокод на жабе даст и гошлангам прикурить, но там можно писать пристойно, а на гошланге похоже нет.

anonymous ()
Ответ на: комментарий от anonymous

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

kachan ★★ ()
Ответ на: комментарий от kto_tama

возьмите топор - он может быть тупым, может быть острым но он не может быть плохим или хорошим

Философ штоле? А может спросим у дровосеков?

anonymous ()
Ответ на: комментарий от kto_tama

возьмите топор - он может быть тупым, может быть острым
но он не может быть плохим или хорошим

Вообще-то очень даже может.

SwiftRocks ()
Ответ на: комментарий от kachan

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

Ну так, портянки лапши, полное игнорирование паттернов и лучших практик. Кому и кобыла невеста конечно, но мне такой студентокод читать тошно.

anonymous ()
Ответ на: комментарий от Ivan_qrt

Но, тем, кто хочет всё контролировать, они нужны. Попробуй разберись что делает монстр со всякими сборщиками мусора, который весит много мегабайт.

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

saahriktu ★★★★★ ()
Ответ на: комментарий от hateyoufeel

hateyoufeel, где можно достать твою аватарку в хайрезе? Схороню себе для троллинга Golang хейтеров. :3

resurtm ★★★ ()

Нет дженериков

Все ноют что нет дженериков, но никто из нытиков не может толком объяснить зачем эти дженерики им нужны

Siado ★★★★★ ()

ощущается бомбёжь автора, которому нехватает gc в c/c++

anonymous ()
Ответ на: комментарий от I-Love-Microsoft

Там такие биндинги, что проще на плюсах ваять.

RazrFalcon ★★★★★ ()
Ответ на: комментарий от kachan

как на языке в котором почти ничего нет можно писать непристойно или сложно?

ПХПшники сэр. Они на любом ЯП сделают говно.

Siado ★★★★★ ()
Ответ на: комментарий от Siado

но никто из нытиков не может толком объяснить зачем эти дженерики им нужны

Ну как-то хотелось бы не писать реализацию списка для каждого типа отдельно, и при этом оставить контроль типов во время компиляции, а не через type assert в рантайме (ибо нафиг тогда вообще прикручивали статические типы?)

no-such-file ★★★★★ ()

Отсутствие иммутабельности забыл.

quantum-troll ★★★★★ ()
Ответ на: комментарий от no-such-file

И как часто тебе нужны обобщенные структуры данных? Я не спорю, это весьма заметный пробел, но столкнуться с ним можно только в весьма ограниченном количестве предметных областей. Ну, приходится в таких случаях использовать кодогенерацию, благо для этого все инструменты есть. Плюсом это не аффектит время компиляции.

feofan ★★★★★ ()
Ответ на: комментарий от no-such-file

Ну как-то хотелось бы не писать реализацию списка для каждого типа отдельно

Тогда уж добро пожаловать на динамических ЯП. Не помню когда мне последний раз такое нужно было. А если и нужно - то для двух типов максимум. Фанатиков почитай, так что не код - то без дженериков никак, надо тыщи типов обрабатывать.

Siado ★★★★★ ()
Ответ на: комментарий от Siado

Зачем динамика там, где и без нее хорошо?

anonymous ()

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

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

Чуть более подробный анализ: http://nomad.so/2015/03/why-gos-design-is-a-disservice-to-intelligent-program... и каждый второй тред в https://www.reddit.com/r/programmingcirclejerk/ .

nonimous ()

Бесполезность поддержки unicode в коде

в идентификаторах чтоле? она бесполезна во всех языках, где есть

MyTrooName ★★★★★ ()
Ограничение на отправку комментариев: только для зарегистрированных пользователей