Pull to refresh
-14
darkit@darkitread⁠-⁠only

User

Send message
О простоте реализации.
Например? Потому я действительно не понимаю.

Но их мы не увидим, потому что "это сильно усложнит парсер". Скорее всего скобки будут квадратными

Да, это просто жесть. Не смочь сделать <> потому что как мы будем понимать что это выражение x < z, y > w а не генерик :)))) Это кстати тоже показатель, что развивать язык тяжело будет дальше.

Тут кому как. Знаю нескольких людей, не самых глупых, которые Go не осилили.

в каком смысле не осилили? Не смогли на нем писать ничего или не захотели писать на нем?


Возможно. Наверное, от человека зависит, от учебников что он читал.

Учебники хороши, когда их можно применять и есть куда применять. А если прочитать и не пользоваться, то все вылетит с головы.


И это ожидаемо, таков дизайн.
Да это так и есть и Джава будет медленней прожорливей. Но вот нишу для Раста и нишу для Джавы я понимаю. Ниша Го для меня загадка. Когда есть вокруг Джава, Раст, Питон или ЖС/Тайпскрипт я не понимаю когда надо выбирать Го.

Да такое может быть. Но в рамках своего проекта можно следить за этим. Те да вы правы это будет криво косо, но такое в Го повсеместно :))))

Можно будет сделать интерфейс Optional, две структуры Some и None которы реализуют Optional и можно уже работать.

Ну по поводу ошибок я полностью согласен — она уровня аля детский сад. Посмотрите комментарии выше насчет ошибок или насчет простоты Го.


Почему Раст — на нем интересно писать и он делает вас лучшим программистом. В Го новичку для развития делать вообще нечего — бери здесь, кидай сюда. Новичок после Го будет думать что это абсолютно нормальный подход сделать кодогенерацию итератора вместо понимания абстракций.


Так же он эффективней Го. Я когда изучал его то баловался с задачами с leetcode.
Вот попробуйте реализовать на Го например эту задачу
У меня на Расте получилось 4 мс по ЦПУ и 778Кб по памяти.

Но нужен ли он им?
Ну Го продвигается как язык для написание микросервисов те он вполне должен годиться для написания бизнес логики а не только лоу-левел для кубернетиса.

Я думаю писать в лоб как на Го можно на любом языке. Но если Джаву все козлят, что она многословна, то в Го кол-во строк для одного и того же решения получается больше. И всем это вдруг нравится.
Или почему генерики есть для map/list которые из коробки, но для остальных продвигается мантра — генерики это зло.
Еще вариант, у нас все имеет дефолтные значения, кроме ссылки, она может быть нуль, но ссылка когда interface{} там опять уже всегда не нул а надо копать в глубину чтобы понять какое значение.


И поэтому я не понимаю о какой простоте можно говорить в Го.

Почему огромная часть Go сообщества воспринимает любое не хвалебное высказывание в сторону Go как личное оскорбление?

в чем проблема сделать это частью ошибки? иначе если вы пробросите просто одну ошибку вверх то для какой части она была потеряется

Тогда мы пропустили очередной этап перфокарт :(((

Да, ладно бы старики так писали, но Го это же хипстерское молодое и там все горой за такую обработку. И про генерики крутят носами что мол зачем оно нам. У нас есть кодогенерация и мы на ней все легко и просто делаем.

Я говорю про ситуацию когда у вас фун-ия вернула (Optional.empty, SomeError) и вы забыли обработать ошибку и у вас по прежнему есть доступ к результату который пустой и дальше по коду вы будете что то с этим результатом делать.


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

Да точно, но обычно с этой информации при ошибке особо нет толку. Ну и по крайней мере можно будет сделать Either в своем коде и работать правильно.


Имплементации io.Reader и io.Writer как правило возвращают количество считанных или записанных байт даже если вернулась какая-то ошибка.
Просто функция будет иметь сигнатуру вида:
func MyFunc[type T](s string) (Optional[T], error)

Это не решит проблему тк Optional это уже результат какой-то. Как пример фун-ия getUserById которая вполне может вернуть юзера или пустой опшинал если юзера нет. А так можно будет получить ошибку Connection Error забить на нее и думать что юзера нет и давайте мы его создадим.


Either может не вписаться в текущую концепцию, потому что есть случаи, когда функция хоть и возвращает ошибку, но при этом возвращает какое-то значение

Это как по мне так вообще криво. Я даже не могу представить ситуацию когда такое может понадобиться.

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


Так же в Го мне очень не нравится подход с дефолтными значениями и ошибка это просто такое значение. Тем самым Го позволяет вам забить/забыть на обработку ошибок и программа что то будет дальше выполнять.
Как пример вашей функции у которой мы первую ошибку забыли обработать и у нас в любом случае есть значение в contents и мы что то будем передавать в WriteFile.


func (config *Config) Save() error {
    contents, err := json.MarshalIndent(config, "", "    ")
    err = ioutil.WriteFile(config.path, contents, 0o644)
    ...
    return nil
}

Но почему то в Го сообществе это считают нормальным. Я как то сказал, что жду генерики, чтобы можно было сделать нормальные Optional и Either и меня все заминусовали :)))

Ничего не понял, но одобряю :))))

Разница иметь 4 своих админов по базам или иметь ноль очень большая. Особенно если надо платить зарплату калифорнийским работникам :)

А где я кому то хамил?

Не только фраза но и фильм классный.


Расскажи о своих проблемах вот этому парню


никак не меняет мой генотип с фенотипом.

Ой да ну ладно. There is no fate but what we make for ourselves.

Information

Rating
Does not participate
Registered
Activity