LINUX.ORG.RU

Чем плох Go?

 , ,


4

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, который не пофиксит ничего из этого, кроме дженериков.

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



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

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

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

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

Dred ★★★★★
()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

SwiftRocks
() автор топика

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

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

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

SwiftRocks
() автор топика
Ответ на: комментарий от 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
()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

saahriktu ★★★★★
()

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

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

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 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.