Го уродлив!!!
От: vsb Казахстан  
Дата: 20.03.22 15:11
Оценка: 1 (1) +6 -1 :)
Вот насколько мне нравится Rust, по крайней мере когда начинаешь на нём писать, там прям каждая мелочь продуманной кажется. Настолько мне кажется уродливым го. Прям всё раздражает в нём. Аргх.

fmt.Errorf не добавляет стектрейса. Есть всякие старые пакеты, которые добавляют, но они типа unmaintainable. В общем гоферам стектрейсы не нужны. Что им мешает сделать какой-нибудь GO_FMT_ERRORF_ADD_STACKTRACE_PRETTY_PLEASE=IUNDERSTANDPERFORMANCEIMPLICATIONS я не понимаю.

:= абсолютно упоротая конструкция. Зачем она нужна в текущем виде — я вообще не понимаю.

Вот только что столкнулся. Угадайте, чем отличается log.Print от log.Println. На стековерфлу не подглядывать, только в godoc-и:

func Print(v ...any)

Print calls Output to print to the standard logger. Arguments are handled in the manner of fmt.Print.

func Println(v ...any)

Println calls Output to print to the standard logger. Arguments are handled in the manner of fmt.Println.

  ответ
Нет, не тем, что Println ставит перевод строки. Они оба ставят перевод строки. Print ставит пробелы между аргументами, если только один из аргументов не является строкой. Println всегда ставит пробелы между аргументами.


Меня так раздражает только жаваскрипт. Но там — ладно, его делали левой ногой перед дедлайном как сайд-проект, который не должен был взлететь, понять можно.
Re: Го уродлив!!!
От: smeeld  
Дата: 20.03.22 15:22
Оценка: +1 -2
Здравствуйте, vsb, Вы писали:



vsb>fmt.Errorf не добавляет стектрейса.


Просто сначала подучи go, и уж потом мнение имей.
Re[2]: Го уродлив!!!
От: Sharowarsheg  
Дата: 20.03.22 15:33
Оценка: 2 (1) +3 -1 :)
Здравствуйте, smeeld, Вы писали:

vsb>>fmt.Errorf не добавляет стектрейса.


S>Просто сначала подучи go, и уж потом мнение имей.


It is generally true that if you can fool developers into thinking they are "mastering" something hard (as opposed to learning tolerance for something badly designed), you can build a fiercely loyal priesthood.


https://twitter.com/avdi/status/1101515595294621701
Re[2]: Го уродлив!!!
От: vsb Казахстан  
Дата: 20.03.22 17:03
Оценка:
Здравствуйте, smeeld, Вы писали:

vsb>>fmt.Errorf не добавляет стектрейса.


S>Просто сначала подучи go, и уж потом мнение имей.


Если у тебя есть совет по теме, я тебе буду благодарен. А "подучи" это как-то не очень понятно.
Re: Го уродлив!!!
От: ArtDenis Россия  
Дата: 20.03.22 17:08
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Вот насколько мне нравится Rust,


Раст тоже местами уродлив. Из недавнего написанного кода:
  Нам надо больше &
let x = self.get_user_hash(salt);
let gx = self.g.modpow(&x, &self.n);
let kgx = (&self.k * &gx) % &self.n;
let bkgx =
    if server_public_key > &kgx {
        server_public_key - kgx
    } else {
        &self.n + server_public_key - kgx
    };

let diff = bkgx % &self.n;
let ux = (u * x) % &self.n;
let aux = (&self.client_private_key + &ux) % &self.n;
let secret = diff.modpow(&aux, &self.n);

От количества & рябит в глазах. В плюсах такой лажи не было
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[2]: Го уродлив!!!
От: T4r4sB Россия  
Дата: 20.03.22 18:17
Оценка: +2
Здравствуйте, ArtDenis, Вы писали:

AD>let aux = (&self.client_private_key + &ux) % &self.n;


Здесь кажется & нахрен не нужно
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
Re[3]: Го уродлив!!!
От: ArtDenis Россия  
Дата: 20.03.22 18:23
Оценка:
Здравствуйте, T4r4sB, Вы писали:

TB>Здесь кажется & нахрен не нужно


Точно! Спасибо за ревью Убрал & с ux и выше с gx. Но всё равно сильно меньше & не стало
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Отредактировано 20.03.2022 18:25 ArtDenis . Предыдущая версия .
Re[2]: Го уродлив!!!
От: vsb Казахстан  
Дата: 20.03.22 18:30
Оценка:
А &self.n вынести в переменную не даст borrow checker?
Re[3]: Го уродлив!!!
От: ArtDenis Россия  
Дата: 20.03.22 18:39
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>А &self.n вынести в переменную не даст borrow checker?


Я думал об этом когда писал этот участок. С borrow checker для &self.n там нету проблем. Но в итоге поленился написать let n = &self.n; )) Я лишь хочу донести мысль, что использование перегруженных операторов в расте в коде выглядит коряво из-за необходимости периодически писать &, чтобы переменная не мувнулась
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Отредактировано 20.03.2022 18:41 ArtDenis . Предыдущая версия .
Re[4]: Го уродлив!!!
От: T4r4sB Россия  
Дата: 20.03.22 19:13
Оценка:
Здравствуйте, ArtDenis, Вы писали:

AD>Здравствуйте, T4r4sB, Вы писали:


TB>>Здесь кажется & нахрен не нужно


AD>Точно! Спасибо за ревью Убрал & с ux и выше с gx. Но всё равно сильно меньше & не стало


По моим прикидкам, можно оставить только 4 амперсанда, где передаются в self.modpow
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
Re[5]: Го уродлив!!!
От: ArtDenis Россия  
Дата: 20.03.22 19:25
Оценка:
Здравствуйте, T4r4sB, Вы писали:

TB>По моим прикидкам, можно оставить только 4 амперсанда, где передаются в self.modpow


Проверил. Больше нигде & не убрать. На плюсах вообще конфетка получается:
  конфетка без &
auto x = get_user_hash(salt);
auto gx = g.modpow(x, n);
auto kgx = (k * gx) % n;
auto bkgx = 
   server_public_key > kgx 
   ? server_public_key - kgx 
   : n + server_public_key - kgx;
auto diff = bkgx % n;
auto ux = (u * x) % n;
auto aux = (client_private_key + ux) % n;
auto secret = diff.modpow(aux, n);


Никакие & не засоряют код. Я не сказал бы, что в расте это прямо вымораживает, но после плюсов кажется корявым
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[6]: Го уродлив!!!
От: T4r4sB Россия  
Дата: 20.03.22 19:37
Оценка:
Здравствуйте, ArtDenis, Вы писали:

AD>Здравствуйте, T4r4sB, Вы писали:


TB>>По моим прикидкам, можно оставить только 4 амперсанда, где передаются в self.modpow


AD>Проверил. Больше нигде & не убрать.



if server_public_key > &kgx {


?
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
Re[7]: Го уродлив!!!
От: ArtDenis Россия  
Дата: 20.03.22 20:21
Оценка:
Здравствуйте, T4r4sB, Вы писали:

TB>
TB>if server_public_key > &kgx {
TB>

TB>?

server_public_key — это &BigUint (т.е. ссылка). При сравнении с другим BigUint приходится ещё раз писать ссылку &
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[8]: Го уродлив!!!
От: T4r4sB Россия  
Дата: 20.03.22 20:23
Оценка:
Здравствуйте, ArtDenis, Вы писали:

AD>Здравствуйте, T4r4sB, Вы писали:


TB>>
TB>>if server_public_key > &kgx {
TB>>

TB>>?

AD>server_public_key — это &BigUint (т.е. ссылка). При сравнении с другим BigUint приходится ещё раз писать ссылку &


Может логичнее по смыслу
if *server_public_key > kgx

?
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
Re[9]: Го уродлив!!!
От: ArtDenis Россия  
Дата: 20.03.22 20:26
Оценка:
Здравствуйте, T4r4sB, Вы писали:

TB>Может логичнее по смыслу

TB>
TB>if *server_public_key > kgx
TB>

TB>?

Ну да. "Нам нужно больше *"
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[10]: Го уродлив!!!
От: T4r4sB Россия  
Дата: 20.03.22 20:39
Оценка:
Здравствуйте, ArtDenis, Вы писали:

AD>Ну да. "Нам нужно больше *"


Ну так-то да, символов меньше не становится, я чисто по смыслу имею в виду, что раз там подразумеваются объекты а не ссылки, то лучше передавать в оператор именно объекты.
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
Re: Го уродлив!!!
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 21.03.22 03:52
Оценка: +1 :)
Здравствуйте, vsb, Вы писали:

vsb>fmt.Errorf не добавляет стектрейса. Есть всякие старые пакеты, которые добавляют, но они типа unmaintainable. В общем гоферам стектрейсы не нужны. Что им мешает сделать какой-нибудь GO_FMT_ERRORF_ADD_STACKTRACE_PRETTY_PLEASE=IUNDERSTANDPERFORMANCEIMPLICATIONS я не понимаю.


fmt.Errorf является нормальным уровнем логирования, почему он должен добавлять трассировку стека? log.Panic выбросит панику и у тебя будет стек вызовов. Зачем тебе на каждой ошибке стек?

vsb>:= абсолютно упоротая конструкция. Зачем она нужна в текущем виде — я вообще не понимаю.


:= конструкция создания объекта, эквивалентом будет new, let, var в других языках.

vsb>Меня так раздражает только жаваскрипт. Но там — ладно, его делали левой ногой перед дедлайном как сайд-проект, который не должен был взлететь, понять можно.


Может всё же стоит введение в язык прочитать?
Re[6]: А что за мода на auto?...
От: Sheridan Россия  
Дата: 22.03.22 06:02
Оценка: -1 :)
Здравствуйте, ArtDenis, Вы писали:

auto x = ...
auto gx = ...
auto kgx = ...
auto bkgx = ...
auto diff = ...
auto ux = ...
auto aux = ...
auto secret = ...

А что за мода везде auto пихать? Всё настолько плохо что нет понимания какой тип будет у переменной?
Нет, я понимаю что тот же тип итератора может полторы строки занимать, но есть же typedef или даже #define в конце концов.
Почему auto? Почему код запутываете специально?
Matrix has you...
Re[7]: А что за мода на auto?...
От: ArtDenis Россия  
Дата: 22.03.22 07:42
Оценка: +1
Здравствуйте, Sheridan, Вы писали:

S>А что за мода везде auto пихать?

Не мода, а необходимость ради упрощение кода

S>Всё настолько плохо что нет понимания какой тип будет у переменной?

Ого как задело См выше + auto ставится там, где сразу понятно какой тип у переменной и auto не создаёт когнитивной нагрузки.

S>или даже #define в конце концов.

Ну да, начал за здравие, а кончил за упокой. Macro MUST DIE!!!

S>Почему auto?

Потому что это означает автовывод значение переменной. Ваш КО.

S>Почему код запутываете специально?

Если кто-то тупит перед авто, значит либо 1) плюсы не для него, 2) он красноглазит и не ставит себе нормальную IDE и вообще ССЗБ
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[8]: А что за мода на auto?...
От: night beast СССР  
Дата: 22.03.22 07:53
Оценка: +2
Здравствуйте, ArtDenis, Вы писали:

S>>А что за мода везде auto пихать?

AD>Не мода, а необходимость ради упрощение кода

S>>Всё настолько плохо что нет понимания какой тип будет у переменной?

AD>Ого как задело См выше + auto ставится там, где сразу понятно какой тип у переменной и auto не создаёт когнитивной нагрузки.

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