Го уродлив!!!
От: 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[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[13]: А что за мода на auto?...
От: Ночной Смотрящий Россия  
Дата: 24.03.22 08:07
Оценка: +3 -1
Здравствуйте, Sheridan, Вы писали:

НС>>У тебя часто так бывало, что int стал float?

S>Ни разу.

ЧТД.

S>Потому что строгая типизация.


Которая, внезапно, с применением auto/var никуда не исчезает.

НС>>У тебя вообще часто тип float в программах встречается? Какой процент от общего количества использований типов составляет float?

S>Больше нуля. Этого уже достаточно.

Нет.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re: Го уродлив!!!
От: smeeld  
Дата: 20.03.22 15:22
Оценка: +1 -2
Здравствуйте, vsb, Вы писали:



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


Просто сначала подучи go, и уж потом мнение имей.
Re[2]: Го уродлив!!!
От: T4r4sB Россия  
Дата: 20.03.22 18:17
Оценка: +2
Здравствуйте, ArtDenis, Вы писали:

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


Здесь кажется & нахрен не нужно
Нет такой подлости и мерзости, на которую бы не пошёл 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[8]: А что за мода на auto?...
От: night beast СССР  
Дата: 22.03.22 07:53
Оценка: +2
Здравствуйте, ArtDenis, Вы писали:

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

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

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

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

личное имхо, таки создает.
чтобы понять, какой тип у переменной, ты должен вникнуть в контекст.
имея перед глазами конкретный тип сделать это проще.
Re[17]: А что за мода на auto?...
От: ArtDenis Россия  
Дата: 22.03.22 09:36
Оценка: :))
Здравствуйте, night beast, Вы писали:

NB>главное чтобы коллегам, что с тобой работают, было понятно (да это тоже ИМХО)


Знаешь, если мне коллеги во время ревью скажут, что им тут непонятно, я исправлю не моргнув глазом. Но на мнение диванного эксперта night beast-а мне совершенно наплевать.
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[21]: А что за мода на auto?...
От: ArtDenis Россия  
Дата: 22.03.22 13:27
Оценка: :))
Здравствуйте, Sheridan, Вы писали:

S>Зачем ты тогда сюда пришёл, в КСВ, раз тебе наплевать на наше мнение? Срач устроить? Да ну, неможетбыть...


В точку! Чтобы сначала устроить срач, а затем с высоты полёта надменно сказать, что ваше мнение для меня ничто, и млеть от удовольствия что у кого-то от этого дико пригорает
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[9]: А что за мода на auto?...
От: Ночной Смотрящий Россия  
Дата: 23.03.22 11:02
Оценка: +2
Здравствуйте, Sheridan, Вы писали:

S>Тупить будет каждый кроме автора


Или не будет.
Я, к примеру, когда читаю чужой код (а читаю я его, в силу текущей должности, часто и много), в котором куча типов руками написано — первым же делом запускаю рефакторинг, заменяющий везде где возможно типы на var. Потому что так читать проще — в коде меньше мусора.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[9]: А что за мода на auto?...
От: Ночной Смотрящий Россия  
Дата: 23.03.22 11:02
Оценка: +2
Здравствуйте, night beast, Вы писали:

NB>личное имхо, таки создает.

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

Вопрос только в том, нужно ли для понимания сути кода обязательно понимать какой тип у переменной.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[13]: А что за мода на auto?...
От: Pzz Россия https://github.com/alexpevzner
Дата: 04.05.22 16:52
Оценка: +1 :)
Здравствуйте, night beast, Вы писали:

НС>>А ты попробуй без, может это иллюзия.


NB>в данный момент в основном на питоне работаю, так что есть возможность сравнить.


В питоне даже компилятор не знает тип. А вот если кто-то из вас знает (ты или компилятор), то возможно именно тебе-то знать и не обязательно
Re[11]: А что за мода на auto?...
От: Privalov  
Дата: 01.05.22 05:59
Оценка: 1 (1)
Здравствуйте, ути-пути, Вы писали:

УП>Там разве не по первой букве в переменной тип определяется? С этим подходом тип известен вообще везде.


Да, если вообще никаких объявлений нет, то по первой. implicit эту первую букву переопределяет. Я несколько раз эакое переопределение в реальном коде встречал. Надо сказать, implicit изрядно напрягает привыкшего к первой букве читателя кода.
Ну и есть явное объявление.

Я, когда переносил проект с ЕС на PC, первым делом вставлял везде implicit none. Возможность отменить неявное определение переменных появилась в Фортране 77. И в несколькох местах мне пришлось от implicit none отказаться. Сейчас всех деталей не вспомню, в коде была какая-то путаница в именах переменных (чть-то такое: IO — I0), которую не отловили по распечаткам. А когда он попал ко мне, было уже поздно. Работает — не трогай.
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[12]: А что за мода на auto?...
От: night beast СССР  
Дата: 22.03.22 08:26
Оценка: +1
Здравствуйте, ArtDenis, Вы писали:

NB>>явно не тот случай, что показан в коде

AD>Почему?

мне из кода не ясно, какой тип возвращает get_user_hash.
если разный в зависимости от типа соли, то было бы неплохо завернуть этот тип в тайпдеф и ниже использовать его, а не авто.
Re[9]: А что за мода на auto?...
От: ArtDenis Россия  
Дата: 22.03.22 08:56
Оценка: -1
Здравствуйте, Sheridan, Вы писали:

S>Пишите на жабаскрипте, не проблема. Там всё настолько просто, что даже не знаю...

Зачем, если можно писать на расте, где тебе адепты принципиального указания типа переменной не будут тыкать носом в код и отвлекать на абсолютно незначительную вещь как указание типа переменой
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[10]: А что за мода на auto?...
От: night beast СССР  
Дата: 23.03.22 11:13
Оценка: +1
Здравствуйте, Ночной Смотрящий, Вы писали:

NB>>имея перед глазами конкретный тип сделать это проще.


НС>Вопрос только в том, нужно ли для понимания сути кода обязательно понимать какой тип у переменной.


лично мне, да, знание типа переменной упрощает задачу (например в понимании поведения при переполнении и др. граничных случаях)
Re[3]: Го уродлив!!!
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 23.03.22 11:19
Оценка: :)
Здравствуйте, Ночной Смотрящий, Вы писали:

KP>>Может всё же стоит введение в язык прочитать?

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

О, ты нашёл одно сообщение за сотню последних, где я предлагаю почитать введение в язык и тут же решил что это обвинение в тупости. И ты в правду считаешь "ты тупой" и "тебе стоит введение в язык прочитать" одним и тем же?

Я бы на твоём месте вот до этого сообщения
Автор: kaa.python
Дата: 12.03.22
доколупался бы, тут я человека психом назвал
Re[12]: А что за мода на auto?...
От: night beast СССР  
Дата: 23.03.22 11:24
Оценка: +1
Здравствуйте, Ночной Смотрящий, Вы писали:

NB>>лично мне, да, знание типа переменной упрощает задачу


НС>А ты попробуй без, может это иллюзия.


в данный момент в основном на питоне работаю, так что есть возможность сравнить.

NB>> (например в понимании поведения при переполнении


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


именно читать код, если типы не сложные шаблонные конструкции с typename, то да, лучше воспринимаю чем auto
Re[4]: Го уродлив!!!
От: Ночной Смотрящий Россия  
Дата: 23.03.22 11:44
Оценка: :)
Здравствуйте, kaa.python, Вы писали:

KP>Я бы на твоём месте вот до этого сообщения
Автор: kaa.python
Дата: 12.03.22
доколупался бы, тут я человека психом назвал


Ты правда думаешь что я читаю все твои сообщения?
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[5]: Го уродлив!!!
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 23.03.22 12:49
Оценка: +1
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Ты правда думаешь что я читаю все твои сообщения?


Я вообще ничего не думаю, но если ты утверждаешь что "большая часть твоих сообщений содержит обвинения собеседников в тупости", то как-то же ты эту статистику собрал, раз уж сделал вывод про аж большую часть. Ну а как ты её собрал, я ХЗ
Re[7]: Го уродлив!!!
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 24.03.22 01:05
Оценка: +1
Здравствуйте, Ночной Смотрящий, Вы писали:

KP>>Я вообще ничего не думаю, но если ты утверждаешь что "большая часть твоих сообщений содержит обвинения собеседников в тупости",


НС>Ну ок, большая часть тех сообщений, что я прочел.


Отлично! Теперь, когда ты знаешь что "большая часть" и "большая часть тех сообщений, что я прочел" это разные вещи (не забудь записать этот пост в обвинение в тупости, т.к. сейчас именно оно), мы можем пойти дальше. В данной ветке ты прочёл как минимум 5 моих сообщений. Одно тебе показалось обвинением в тупости (это не так, но для простоты примем что ты прав), второе реально обвинение в тупости (его ты сейчас читаешь). Итого, из 5 сообщений которые ты прочёл только 2 являются обвинением в тупости. 2/5 не могут считаться большинством, ни абсолютным, ни простым, ни квалифицированным. Но мы теперь точно знаем что ты предвзятый балабол не знающий даже что слово "большинство" значит.
Отредактировано 24.03.2022 1:05 kaa.python . Предыдущая версия .
Re[15]: А что за мода на auto?...
От: Ночной Смотрящий Россия  
Дата: 24.03.22 08:07
Оценка: -1
Здравствуйте, Sheridan, Вы писали:

S>>>Да, проще. Не надо угадывать тип переменной, можно просто прочитать его.

НС>>А зачем его угадывать или читать?
S>Возможно ты читаешь код просто так...

Нет.

S> Ну тебе может и ок. А я в основном дописываю/рефакторю/фикшу баги.


И? Как из этого следует обязательная необходимость всегда знать любой тип переменной?
Типы придуманы прежде всего не для того чтобы человек их читал, а для того чтобы компилятор их проверял. Большое количество аннотаций типов удобно компилятору и неудобно человеку.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[15]: А что за мода на auto?...
От: Ночной Смотрящий Россия  
Дата: 24.03.22 16:54
Оценка: -1
Здравствуйте, Sheridan, Вы писали:

S>Для "почитать посидеть" — действительно пофиг.

S>А для "разобраться что тут происходит" — нет.

Почему?

S>Вон, выше живой пример с кучей автотипов, с которого всё началось.


И что там?

S> Тебя действительно понятно что происходит?


Да, с поправкой на С++ с его кучей прочего мусора, конечно.

S> Не возникает желания заглянуть что за тип вернут методы?


Нет. Для понимания кода это не нужно.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[14]: А что за мода на auto?...
От: Sheridan Россия  
Дата: 04.05.22 15:46
Оценка: +1
Здравствуйте, vaa, Вы писали:

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

vaa>так абстрагирование и помогает уменьшить сложность. разве нет?
Нет. Вспомни как тут не любят плюсовые шаблоны. А уж про define так вообще лучше не напоминать — вонь будет обеспечена.

vaa>Читабельность точно не хуже, иначе бы динамические ЯП типа js, python, clojure, common lisp уже давно бы вымерли.

ВНЕЗАПНО, в них есть типы.

vaa>Если код функции умещается на экран, то вы видите всю картину целиком и ориентируетесь не только на типы но и на содержание функции.

Ну не всем везёт писать скрипты. Многие тут пишут довольно объёмный софт.
Matrix has you...
Re[5]: Го уродлив!!!
От: Pzz Россия https://github.com/alexpevzner
Дата: 04.05.22 17:17
Оценка: :)
Здравствуйте, vsb, Вы писали:

vsb>Errorf возвращает объект, в котором есть строка с описанием ошибки и ссылка на предыдущую ошибку. Вот в этот объект надо добавить еще поле со стектрейсом, полным или хотя бы caller. И распечатывать это при форматировании.


Если ты имеешь ввиду удобства, добавленные пакетом errors, то этот пакет появился сильно позже, чем fmt.Errorf.

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

vsb>var x = value это валидный го-код. И var x1, x2 = value1, value2. Одно из отличий в том, что с := можно объявить одну переменную, когда вторая уже объявлена, ну ок, это может быть удобно. Но удобно это было бы, если бы := в принципе работала, как универсальная конструкция, позволяющая либо объявлять, либо присваивать значение. Но она так не работает. И порой приходится проходить по коду и заменять := на = из-за того, что сверху объявили переменную с таким именем. В общем единственное отличие и то наполовину бесполезное.


Ну да, бывает иногда. Раздражает немного, но не так уж, чтобы ужас-ужас-ужас.

Наверное, еще пятью языками позже Пайк придумает, как и эту проблему обойти
Re[16]: А что за мода на auto?...
От: vsb Казахстан  
Дата: 04.05.22 20:34
Оценка: +1
Здравствуйте, Privalov, Вы писали:

S>>Точно так же придётся по коду гулять чтобы выяснить тип как ты гулял с именами.


P>Зачем? Нормальный редактор сам подскажет, какой тип у переменной. Вот когда видишь странные имена, становится не до типов.


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

Моё правило использования var — если тип очевиден из имени переменной или из инициализирующего значения, то его можно использовать. Если не очевиден, то надо прописывать явный тип. То бишь var x = 1; var s = "hello"; var sb = new StringBuilder(); var appointment = ... (где у appointment тип Appointment). При этом получается примерно 50 на 50 и мне такой результат нравится. По сути цель var в моем коде — убирать дублирование. Нет смысла писать StringBuilder sb = new StringBuilder(), никакой информации это не несёт для читателя. А если несёт, то var не нужен.
Re[18]: А что за мода на auto?...
От: vsb Казахстан  
Дата: 05.05.22 10:32
Оценка: +1
Здравствуйте, Ночной Смотрящий, Вы писали:

vsb>>Моё правило использования var — если тип очевиден из имени переменной или из инициализирующего значения, то его можно использовать. Если не очевиден, то надо прописывать явный тип. То бишь var x = 1; var s = "hello"; var sb = new StringBuilder(); var appointment = ... (где у appointment тип Appointment). При этом получается примерно 50 на 50 и мне такой результат нравится.


НС>А где примеры неочевидностей, когда явный тип улучшает читаемость?


        Set<String> sentReferrerIins =
                employeeRepository.queryByIins(organization, referrerIins).stream()
                        .filter(employee -> employee.getStatus() == SENT_TO_API)
                        .map(Employee::getIin)
                        .collect(toSet());


из идентификатора не очевиден тип. Очевидно только то, что это коллекция, но опять же какая коллекция — не понятно, обычно под коллекцией подразумевают List. Что такое iin — может быть это класс такой, без хорошего знания проекта не понять. Если вдумчиво прочитать инициализатор, можно увидеть, что вызывается toSet но это грубо говоря 10 секунд парсинга кода. При этом если тебе конкретно этот код не интересен, а интересен код ниже и тут тебе хочется только увидеть тип этой переменной, то ты эти 10 секунд потратишь отвлекаясь и вытесняя из краткосрочной памяти другие моменты. А с явным типом ты просто игнорируешь инициализирующее значение и сразу видишь тип.
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[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[7]: А что за мода на auto?...
От: Слава  
Дата: 22.03.22 08:02
Оценка:
Здравствуйте, Sheridan, Вы писали:

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


Чтобы любители vim и emacs страдали. Как и прочие там в vscode.
Re[9]: А что за мода на auto?...
От: ArtDenis Россия  
Дата: 22.03.22 08:02
Оценка:
Здравствуйте, night beast, Вы писали:

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


NB>личное имхо, таки создает.

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

Выделил в своей цитате основную мысль
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[10]: А что за мода на auto?...
От: night beast СССР  
Дата: 22.03.22 08:06
Оценка:
Здравствуйте, ArtDenis, Вы писали:

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


явно не тот случай, что показан в коде

AD>Выделил в своей цитате основную мысль


то есть очень редко
Re[11]: А что за мода на auto?...
От: ArtDenis Россия  
Дата: 22.03.22 08:20
Оценка:
Здравствуйте, night beast, Вы писали:

NB>явно не тот случай, что показан в коде

Почему?

AD>>Выделил в своей цитате основную мысль

NB>то есть очень редко
Я и не утверждал, что auto надо применять очень часто и вообще везде
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[8]: А что за мода на auto?...
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 22.03.22 08:23
Оценка:
Здравствуйте, Слава, Вы писали:

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

С>Чтобы любители vim и emacs страдали. Как и прочие там в vscode.

Любитель Vim-а смотрит на тебя с недоумением...
Re[13]: А что за мода на auto?...
От: ArtDenis Россия  
Дата: 22.03.22 08:40
Оценка:
Здравствуйте, night beast, Вы писали:

NB>мне из кода не ясно, какой тип возвращает get_user_hash.


Ты просто не видишь всего кода. get_user_hash идёт следующей сразу после get_client_session_key (код которой я привёл). Так что читающий сразу видит типы, т.к. обе функции влезают на экран с большим запасом. Ну и в крайнем случае IDE подскажет какой там тип, если уж лень всё смотреть.
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[2]: Го уродлив!!!
От: vsb Казахстан  
Дата: 22.03.22 08:45
Оценка:
Здравствуйте, kaa.python, Вы писали:

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


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


fmt.Errorf создаёт новый error, при чём тут вообще логгирование? Стек на каждой ошибке нужен, чтобы потом понять, на какой строчке эта ошибка появилась.

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


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


Нет, := это вместо var, который в Go тоже есть. Никакого объекта := не создаёт.

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


KP>Может всё же стоит введение в язык прочитать?


При всём уважении введение в язык стоит почитать не мне, я введение уже почитал.
Отредактировано 22.03.2022 8:45 vsb . Предыдущая версия .
Re[14]: А что за мода на auto?...
От: night beast СССР  
Дата: 22.03.22 08:46
Оценка:
Здравствуйте, ArtDenis, Вы писали:

NB>>мне из кода не ясно, какой тип возвращает get_user_hash.


AD>Ты просто не видишь всего кода. get_user_hash идёт следующей сразу после get_client_session_key (код которой я привёл). Так что читающий сразу видит типы, т.к. обе функции влезают на экран с большим запасом.


версия с тайпдефом для типа хеша кажется более читаемой.

AD>Ну и в крайнем случае IDE подскажет какой там тип, если уж лень всё смотреть.


код должен быть понятен без всяких ИДЕ
ты когда код ревью делаешь, ИДЕ используешь?
Re[8]: А что за мода на auto?...
От: Sheridan Россия  
Дата: 22.03.22 08:51
Оценка:
Здравствуйте, ArtDenis, Вы писали:

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

AD>Не мода, а необходимость ради упрощение кода
Пишите на жабаскрипте, не проблема. Там всё настолько просто, что даже не знаю...


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

AD>Ого как задело См выше + auto ставится там, где сразу понятно какой тип у переменной и auto не создаёт когнитивной нагрузки.
Ну извини, если задело. Я привык правду в лицо сразу а не за спиной.
Авто как раз таки создаёт нагрузку на программиста-не-автора, который будет потом с этим автоговном разбираться.

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

AD>Ну да, начал за здравие, а кончил за упокой. Macro MUST DIE!!!
Смузи не расплескал? Аккуратнее...


S>>Почему auto?

AD>Потому что это означает автовывод значение переменной. Ваш КО.
шта?...
Я всегда считал что это автотип переменной, но ты видимо гуру, прислушаюсь...


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

AD>Если кто-то тупит перед авто, значит либо 1) плюсы не для него, 2) он красноглазит и не ставит себе нормальную IDE и вообще ССЗБ
Тупить будет каждый кроме автора да и то, пока этот кусок кода в голове.
Matrix has you...
Re[8]: А что за мода на auto?...
От: Sheridan Россия  
Дата: 22.03.22 08:51
Оценка:
Здравствуйте, Слава, Вы писали:

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

С>Чтобы любители vim и emacs страдали. Как и прочие там в vscode.
А редакторы то тут при чом?
Matrix has you...
Re[15]: А что за мода на auto?...
От: ArtDenis Россия  
Дата: 22.03.22 08:57
Оценка:
Здравствуйте, night beast, Вы писали:

NB>версия с тайпдефом для типа хеша кажется более читаемой.

Ты забыл добавить IMHO

NB>код должен быть понятен без всяких ИДЕ

Если тебе не понятно, это не мои проблемы.
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[3]: Го уродлив!!!
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 22.03.22 08:59
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>fmt.Errorf создаёт новый error, при чём тут вообще логгирование? Стек на каждой ошибке нужен, чтобы потом понять, на какой строчке эта ошибка появилась.


А, да, погнал, что-то я не то прочитал

Но тогда ты прав, за пределами паники мне стектрейс не нужен, и не только в Го, но и в C++, и в Python.

vsb>Нет, := это вместо var, который в Go тоже есть. Никакого объекта := не создаёт.


https://go.dev/ref/spec#Short_variable_declarations

Тебе хочется писать var каждый раз? Зачем? В Rust которым ты восстаргаешься вон `?` в конце вызова функции хреначат (или уже нет?), тоже экономят нажатия клавиш.

vsb>При всём уважении введение в язык стоит почитать не мне, я введение уже почитал.


Ты таки почитай
Re[16]: А что за мода на auto?...
От: night beast СССР  
Дата: 22.03.22 09:12
Оценка:
Здравствуйте, ArtDenis, Вы писали:

NB>>версия с тайпдефом для типа хеша кажется более читаемой.

AD>Ты забыл добавить IMHO

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

NB>>код должен быть понятен без всяких ИДЕ

AD>Если тебе не понятно, это не мои проблемы.

главное чтобы коллегам, что с тобой работают, было понятно (да это тоже ИМХО)
Отредактировано 22.03.2022 9:21 night beast . Предыдущая версия .
Re[4]: Го уродлив!!!
От: vsb Казахстан  
Дата: 22.03.22 09:13
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>А, да, погнал, что-то я не то прочитал


KP>Но тогда ты прав, за пределами паники мне стектрейс не нужен, и не только в Го, но и в C++, и в Python.


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

vsb>>Нет, := это вместо var, который в Go тоже есть. Никакого объекта := не создаёт.


KP>https://go.dev/ref/spec#Short_variable_declarations


KP>Тебе хочется писать var каждый раз? Зачем? В Rust которым ты восстаргаешься вон `?` в конце вызова функции хреначат (или уже нет?), тоже экономят нажатия клавиш.


Для меня нет разницы между var x, y = 1, 2 и x, y := 1, 2. Вот искренне не понимаю разницы. С ? — понимаю, а тут — не понимаю. Т.е. я понимаю, что я не могу использовать var в выражениях, но почему не могу — не понимаю.

Я бы понял, если бы := работал как присваивание, если все переменные объявлены. А так — получается, что я написал функцию в "идиоматичном" стиле, потом мне где-то сверху пришлось объявить err и надо переписывать все нижние блоки, заменять := на =, ибо оно перестало компилироваться.
Re[18]: А что за мода на auto?...
От: Sheridan Россия  
Дата: 22.03.22 10:29
Оценка:
Здравствуйте, ArtDenis, Вы писали:

AD>Знаешь, если мне коллеги во время ревью скажут, что им тут непонятно, я исправлю не моргнув глазом. Но на мнение диванного эксперта night beast-а мне совершенно наплевать.

От "наплевать на мнение постороннего человека" до "наплевать на мнение коллег" расстояние совсем небольшое...
Matrix has you...
Re[19]: А что за мода на auto?...
От: ArtDenis Россия  
Дата: 22.03.22 12:19
Оценка:
Здравствуйте, Sheridan, Вы писали:

AD>>Знаешь, если мне коллеги во время ревью скажут, что им тут непонятно, я исправлю не моргнув глазом. Но на мнение диванного эксперта night beast-а мне совершенно наплевать.

S>От "наплевать на мнение постороннего человека" до "наплевать на мнение коллег" расстояние совсем небольшое...

Мало того, я добавлю, что мне наплевать на мнение любителей устраивать срачи на пустом месте
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[20]: А что за мода на auto?...
От: Sheridan Россия  
Дата: 22.03.22 13:11
Оценка:
Здравствуйте, ArtDenis, Вы писали:

AD>Мало того, я добавлю, что мне наплевать на мнение любителей устраивать срачи на пустом месте

Зачем ты тогда сюда пришёл, в КСВ, раз тебе наплевать на наше мнение? Срач устроить? Да ну, неможетбыть...
Matrix has you...
Re[9]: А что за мода на auto?...
От: Privalov  
Дата: 22.03.22 15:16
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Пишите на жабаскрипте, не проблема. Там всё настолько просто, что даже не знаю...



Спасибо, не надо. Мы как-нибудь по старинке, на чем-нибудь нормальном.
Зайдешь на какой-нибудь сайт и чешешь репу: где разработчиков искали? По объявлению набрали?

S>Авто как раз таки создаёт нагрузку на программиста-не-автора, который будет потом с этим автоговном разбираться.


Это если программист-автор пишет методы по 5000 строк с кучей auto. Я с фортрановским кодом такого типа разбирался. Но там не было auto, всего лишь implicit.

Меня сегодня беспорядочное использование dynfvic-ов в Шарпе больше напрягает. Повбывав бы.

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

S>Смузи не расплескал? Аккуратнее...

В том виде, в каком они присутствуют в Сях — не нужны.

S>Я всегда считал что это автотип переменной, но ты видимо гуру, прислушаюсь...


auto, ну или var в том же Шарпе — тип переменной выводится на основании типа результата вычисленного выражения. Точно формулировку не помню. Вот тебе примерчик:
static void Main(string[] args)  
{  
   var aInt = new int[] { 1, 2, 3, 4, 5, 6 };  
   foreach (var item in aInt)  
   {  
       Console.Write(item.ToString());  
   }  
   Console.Read();  
}


S>Тупить будет каждый кроме автора да и то, пока этот кусок кода в голове.


Да ладно тебе. Все от обстоятельств зависит. Я на прошлой неделе разбирался с одной багой. Времени ушло порядочно, одняко я не особо тупил. Программа где-то с 2013 года работает, не моя. Я ее унаследовал. Тормоза у меня включились как раз из-за dynamic-ов, а не из-за var. Собственно, я потому и на JS не хочу писать.
Re: Го уродлив!!!
От: vaa  
Дата: 23.03.22 07:30
Оценка:
Здравствуйте, vsb, Вы писали:

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


наследие оберона. один из авторов гоу учился в цюрихе у Вирта.
Вообще где-то читал что гоу это оберон с сишным синтаксисом.
процедурный полиморфизм один в один.
ЯП это инструмент он хорош там где ему есть применение.
Тот же js сам по себе не плох, но вот писать на нем в связке с другим яп типа C# вот тут да начинается трэш.
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[2]: Го уродлив!!!
От: Ночной Смотрящий Россия  
Дата: 23.03.22 11:04
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Может всё же стоит введение в язык прочитать?


А потом будешь обижаться, когда я тебе указываю на то что большая часть твоих сообщений содержит обвинения собеседников в тупости.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[11]: А что за мода на auto?...
От: Ночной Смотрящий Россия  
Дата: 23.03.22 11:17
Оценка:
Здравствуйте, night beast, Вы писали:

НС>>Вопрос только в том, нужно ли для понимания сути кода обязательно понимать какой тип у переменной.

NB>лично мне, да, знание типа переменной упрощает задачу

А ты попробуй без, может это иллюзия.

NB> (например в понимании поведения при переполнении


Это самый частый сабжект при чтении кода у тебя? Если нет — что насчет того, что ты в коде чаще всего получить хочешь? Там точно с типами, размазанными по всему коду будет проще понять, чем без них?
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[13]: А что за мода на auto?...
От: Ночной Смотрящий Россия  
Дата: 23.03.22 11:44
Оценка:
Здравствуйте, night beast, Вы писали:

НС>>А ты попробуй без, может это иллюзия.

NB>в данный момент в основном на питоне работаю, так что есть возможность сравнить.

Не, так ты не сравнишь. Сравнивать нужно в рамках одного языка.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[6]: Го уродлив!!!
От: so5team https://stiffstream.com
Дата: 23.03.22 11:48
Оценка:
Здравствуйте, ArtDenis, Вы писали:

AD>Проверил. Больше нигде & не убрать. На плюсах вообще конфетка получается:

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);


По хорошему, здесь бы еще и const надо бы добавить перед всеми auto. Будет уже не так лаконично.AD>
Re[10]: А что за мода на auto?...
От: Sheridan Россия  
Дата: 23.03.22 14:05
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Или не будет.

НС>Я, к примеру, когда читаю чужой код (а читаю я его, в силу текущей должности, часто и много), в котором куча типов руками написано — первым же делом запускаю рефакторинг, заменяющий везде где возможно типы на var. Потому что так читать проще — в коде меньше мусора.
Угу, а потом 1.9999883785467 землекопа в отчётах появляются из-за того что int стал float
Matrix has you...
Re[12]: А что за мода на auto?...
От: Sheridan Россия  
Дата: 23.03.22 14:06
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

NB>> (например в понимании поведения при переполнении

НС>Это самый частый сабжект при чтении кода у тебя? Если нет — что насчет того, что ты в коде чаще всего получить хочешь? Там точно с типами, размазанными по всему коду будет проще понять, чем без них?
Да, проще. Не надо угадывать тип переменной, можно просто прочитать его.
Matrix has you...
Re[6]: Го уродлив!!!
От: Ночной Смотрящий Россия  
Дата: 23.03.22 14:32
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Я вообще ничего не думаю, но если ты утверждаешь что "большая часть твоих сообщений содержит обвинения собеседников в тупости",


Ну ок, большая часть тех сообщений, что я прочел.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[13]: А что за мода на auto?...
От: Ночной Смотрящий Россия  
Дата: 23.03.22 14:33
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Да, проще. Не надо угадывать тип переменной, можно просто прочитать его.


А зачем его угадывать или читать?
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[11]: А что за мода на auto?...
От: Ночной Смотрящий Россия  
Дата: 23.03.22 14:35
Оценка:
Здравствуйте, Sheridan, Вы писали:

НС>>Я, к примеру, когда читаю чужой код (а читаю я его, в силу текущей должности, часто и много), в котором куча типов руками написано — первым же делом запускаю рефакторинг, заменяющий везде где возможно типы на var. Потому что так читать проще — в коде меньше мусора.

S>Угу, а потом 1.9999883785467 землекопа в отчётах появляются из-за того что int стал float

У тебя часто так бывало, что int стал float? У тебя вообще часто тип float в программах встречается? Какой процент от общего количества использований типов составляет float?
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[5]: Го уродлив!!!
От: CreatorCray  
Дата: 23.03.22 17:57
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>я тебе указываю на то что большая часть твоих сообщений

НС>Ты правда думаешь что я читаю все твои сообщения?

Похоже что да, раз подобные заявления делаешь
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[7]: Го уродлив!!!
От: ArtDenis Россия  
Дата: 23.03.22 19:19
Оценка:
Здравствуйте, so5team, Вы писали:

S>По хорошему, здесь бы еще и const надо бы добавить перед всеми auto.

Да. Но я не любитель const для обычных переменных на любой чих, не смотря на то, польза от них есть

S>Будет уже не так лаконично.AD>

Вот именно )
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[12]: А что за мода на auto?...
От: Sheridan Россия  
Дата: 23.03.22 22:01
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>>>Я, к примеру, когда читаю чужой код (а читаю я его, в силу текущей должности, часто и много), в котором куча типов руками написано — первым же делом запускаю рефакторинг, заменяющий везде где возможно типы на var. Потому что так читать проще — в коде меньше мусора.

S>>Угу, а потом 1.9999883785467 землекопа в отчётах появляются из-за того что int стал float

НС>У тебя часто так бывало, что int стал float?

Ни разу. Потому что строгая типизация. Либо явное приведение.

НС>У тебя вообще часто тип float в программах встречается? Какой процент от общего количества использований типов составляет float?

Больше нуля. Этого уже достаточно.
Matrix has you...
Re[22]: А что за мода на auto?...
От: Sheridan Россия  
Дата: 23.03.22 22:03
Оценка:
Здравствуйте, ArtDenis, Вы писали:

S>>Зачем ты тогда сюда пришёл, в КСВ, раз тебе наплевать на наше мнение? Срач устроить? Да ну, неможетбыть...

AD>В точку! Чтобы сначала устроить срач, а затем с высоты полёта надменно сказать, что ваше мнение для меня ничто, и млеть от удовольствия что у кого-то от этого дико пригорает
Бельё чаще тогда меняй
Matrix has you...
Re[14]: А что за мода на auto?...
От: Sheridan Россия  
Дата: 23.03.22 22:05
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

S>>Да, проще. Не надо угадывать тип переменной, можно просто прочитать его.

НС>А зачем его угадывать или читать?
Возможно ты читаешь код просто так... Ну тебе может и ок. А я в основном дописываю/рефакторю/фикшу баги.
Matrix has you...
Re[11]: А что за мода на auto?...
От: Privalov  
Дата: 24.03.22 08:41
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Угу, а потом 1.9999883785467 землекопа в отчётах появляются из-за того что int стал float


Сдается мне, ты var (или auto C++) от dynamic не отличаешь. Но в C++ вроде бы не было dynamic.
Если у тебя в коде есть строки:
int a = 5;
var b = a + 3;

то b получит тип int и никогда не станет float. Это ж не Питон, который в печку.
Re[12]: А что за мода на auto?...
От: Sheridan Россия  
Дата: 24.03.22 12:59
Оценка:
Здравствуйте, Privalov, Вы писали:

P>Сдается мне, ты var (или auto C++) от dynamic не отличаешь. Но в C++ вроде бы не было dynamic.

P>Если у тебя в коде есть строки:
P>
P>int a = 5;
P>var b = a + 3;
P>

P>то b получит тип int и никогда не станет float. Это ж не Питон, который в печку.
Да кто ж спорит вокруг очевидного?
Ты пойди пойми какой тип когда все они определены через var/auto все и инициализируются в "момент присваивания" (да, да в момент компиляции, но глазами видно именно так). Предлагаешь ковырять код вверх по вызовам до места где будет понятно какой тип будет у переменной? Вместо того чтобы посмотреть в начало этой же строки — копать? Спасибо, можно без соли. Всё равно несъедобно.
Matrix has you...
Re[13]: А что за мода на auto?...
От: Privalov  
Дата: 24.03.22 13:45
Оценка:
Здравствуйте, Sheridan, Вы писали:


S>Ты пойди пойми какой тип когда все они определены через var/auto все и инициализируются в "момент присваивания" (да, да в момент компиляции, но глазами видно именно так). Предлагаешь ковырять код вверх по вызовам до места где будет понятно какой тип будет у переменной? Вместо того чтобы посмотреть в начало этой же строки — копать? Спасибо, можно без соли. Всё равно несъедобно.


По каким-таким вызовам? В какой-такой верх?
var/auto могут быть только локальные переменные, причем инициализироваться они должны сразу. Допустим ты вызываешь для этого какой-то метод. Ты что, не знаешь, какой тип он возвращает? Что нужно копать? Ведь когда ты локальную переменную определяешь, то знаешь, зачем она нужна, правда? В чужом коде var меня не напрягали совсем. Вот за беспорядочние использование dynamic-ов — повбывав бы.
Re[13]: А что за мода на auto?...
От: Ночной Смотрящий Россия  
Дата: 24.03.22 14:01
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Ты пойди пойми какой тип когда все они определены через var/auto


Все, очевидно, не могут быть определены через var, хотя бы в одном месте должен быть указан тип. А вот вся остальная цепочка, если ее можно вывести формально — забота компилятора. Зачем ты непременно за компилятор поработать хочешь — непонятно.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[14]: А что за мода на auto?...
От: Sheridan Россия  
Дата: 24.03.22 16:00
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

S>>Ты пойди пойми какой тип когда все они определены через var/auto

НС>Все, очевидно, не могут быть определены через var, хотя бы в одном месте должен быть указан тип. А вот вся остальная цепочка, если ее можно вывести формально — забота компилятора. Зачем ты непременно за компилятор поработать хочешь — непонятно.
Для "почитать посидеть" — действительно пофиг.
А для "разобраться что тут происходит" — нет.
Вон, выше живой пример с кучей автотипов, с которого всё началось. Тебя действительно понятно что происходит? Не возникает желания заглянуть что за тип вернут методы?
Matrix has you...
Re[2]: Го уродлив!!!
От: Артём Австралия жж
Дата: 30.04.22 04:54
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Зачем тебе на каждой ошибке стек?


Бывают ситуации, когда нужно отследить цепочку событий, откуда пришло. А встать по брейкпойнту- сломает цепочку. Не из-за ошибки, а специально при отладке.
Re[10]: А что за мода на auto?...
От: ути-пути Россия  
Дата: 30.04.22 19:49
Оценка:
Здравствуйте, Privalov, Вы писали:

P>Я с фортрановским кодом такого типа разбирался. Но там не было auto, всего лишь implicit.


Там разве не по первой букве в переменной тип определяется? С этим подходом тип известен вообще везде.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[12]: А что за мода на auto?...
От: ути-пути Россия  
Дата: 30.04.22 19:52
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>У тебя часто так бывало, что int стал float? У тебя вообще часто тип float в программах встречается? Какой процент от общего количества использований типов составляет float?


Кто-то точку в конце литерала написал, и не заметил. Наверное редко, но потенциально возможно, и компилятор никак не поможет, особенно когда от этой переменной по цепочке выводятся новые.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[9]: А что за мода на auto?...
От: Философ Ад http://vk.com/id10256428
Дата: 02.05.22 21:03
Оценка:
Здравствуйте, Sheridan, Вы писали:

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

С>>Чтобы любители vim и emacs страдали. Как и прочие там в vscode.
S>А редакторы то тут при чом?

При наведении на переменную курсора мыши в нормальном редакторе тебе покажут что это такое и каков его тип.
Всё сказанное выше — личное мнение, если не указано обратное.
Re[10]: А что за мода на auto?...
От: Sheridan Россия  
Дата: 03.05.22 09:58
Оценка:
Здравствуйте, Философ, Вы писали:

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

С>>>Чтобы любители vim и emacs страдали. Как и прочие там в vscode.
S>>А редакторы то тут при чом?
Ф>При наведении на переменную курсора мыши в нормальном редакторе тебе покажут что это такое и каков его тип.
А сразу, без наведений этих вот уже законами запрещено чтоли? Нет, я понимаю какой нибудь итератор списка словарей — тут и правда понятнее будет auto использовать. Но, блин, на ровном месте то зачем?
Matrix has you...
Re[11]: А что за мода на auto?...
От: vaa  
Дата: 03.05.22 12:03
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Здравствуйте, Философ, Вы писали:


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

С>>>>Чтобы любители vim и emacs страдали. Как и прочие там в vscode.
S>>>А редакторы то тут при чом?
Ф>>При наведении на переменную курсора мыши в нормальном редакторе тебе покажут что это такое и каков его тип.
S>А сразу, без наведений этих вот уже законами запрещено чтоли? Нет, я понимаю какой нибудь итератор списка словарей — тут и правда понятнее будет auto использовать. Но, блин, на ровном месте то зачем?
А разве автовывод типов запрещает явное указание?
на самом деле это же высший абстракции. подразумевает что код может работать с различными подходящими типами.
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[11]: А что за мода на auto?...
От: Философ Ад http://vk.com/id10256428
Дата: 03.05.22 15:07
Оценка:
Здравствуйте, Sheridan, Вы писали:

Ф>>При наведении на переменную курсора мыши в нормальном редакторе тебе покажут что это такое и каков его тип.

S>А сразу, без наведений этих вот уже законами запрещено чтоли? Нет, я понимаю какой нибудь итератор списка словарей — тут и правда понятнее будет auto использовать. Но, блин, на ровном месте то зачем?

Во-первых, бо ́льшую часть времени оно вообще не нужно: инетесно имя переменной и её значение в текущем месте. Ну вот, например:
на кой ляд тебе нужен в этом коде тип переменной i?
        for(auto i=1; i < pMem->dwOSDArrSize; i++)
        {
            //calc offset of entry
            auto pEntry = (RTSS_SHARED_MEMORY::LPRTSS_SHARED_MEMORY_OSD_ENTRY)( (LPBYTE)pMem + pMem->dwOSDArrOffset + (i * pMem->dwOSDEntrySize) );


Во-вторых, явное указание типов затрудняет рефакторинг: если тебе понадобиться заменить тип возвращаемого значения, то в случае auto/var тебе достаточно сохранить интерфейс, чтобы не поломать код, который использует твою функцию или метод. А в случае явного указания типов, тебе может понадобиться поменять трилиард файлов.
Всё сказанное выше — личное мнение, если не указано обратное.
Re[12]: А что за мода на auto?...
От: Sheridan Россия  
Дата: 03.05.22 15:20
Оценка:
Здравствуйте, vaa, Вы писали:

Ф>>>При наведении на переменную курсора мыши в нормальном редакторе тебе покажут что это такое и каков его тип.

S>>А сразу, без наведений этих вот уже законами запрещено чтоли? Нет, я понимаю какой нибудь итератор списка словарей — тут и правда понятнее будет auto использовать. Но, блин, на ровном месте то зачем?
vaa>А разве автовывод типов запрещает явное указание?
vaa>на самом деле это же высший абстракции. подразумевает что код может работать с различными подходящими типами.
При чом тут автовывод и абстраакции? Разговор про читабельность кода.
Matrix has you...
Re[12]: А что за мода на auto?...
От: Sheridan Россия  
Дата: 03.05.22 15:48
Оценка:
Здравствуйте, Философ, Вы писали:

Ф>>>При наведении на переменную курсора мыши в нормальном редакторе тебе покажут что это такое и каков его тип.

S>>А сразу, без наведений этих вот уже законами запрещено чтоли? Нет, я понимаю какой нибудь итератор списка словарей — тут и правда понятнее будет auto использовать. Но, блин, на ровном месте то зачем?

Ф>Во-первых, бо ́льшую часть времени оно вообще не нужно: инетесно имя переменной и её значение в текущем месте. Ну вот, например:

И как всегда мыслью по древу растекаемся, ага. А вот если бы, а вот рефакторинг, а вот представь...
Речь про читабельность и понятность кода. В строготипизированном языке типы — важны. ( ТипыТожэВажны, ага ). Скрывать типы в строготипизированном языке под автотип в ущерб читабельности и понятности, для того чтобы гиту было проще дифф выводить.... Ну, такое себе.

Ну а если уж к примеру...
        for(auto i=1; i < pMem->dwOSDArrSize; i++)
        {
            //calc offset of entry
            auto pEntry = (RTSS_SHARED_MEMORY::LPRTSS_SHARED_MEMORY_OSD_ENTRY)( (LPBYTE)pMem + pMem->dwOSDArrOffset + (i * pMem->dwOSDEntrySize) );

Давай посмотрим на оригинал (я хз оригинал ли, но явно с этого списано)
    for (DWORD dwEntry=1; dwEntry<pMem->dwOSDArrSize; dwEntry++)
    //allow primary OSD clients (i.e. EVGA Precision / MSI Afterburner) to use the first slot exclusively, so third party
    //applications start scanning the slots from the second one
    {
        RTSS_SHARED_MEMORY::LPRTSS_SHARED_MEMORY_OSD_ENTRY pEntry = (RTSS_SHARED_MEMORY::LPRTSS_SHARED_MEMORY_OSD_ENTRY)((LPBYTE)pMem + pMem->dwOSDArrOffset + dwEntry * pMem->dwOSDEntrySize);

1. Тебе пришлось дополнительно скобками оборачивать чтобы считало правильно. Вангую signed/unsigned ворнинги на этом месте.
2. Второй auto вообще только для укорачивания кода. Всё равно приводится к явному типу выражение.
3. Это работа с памятью, арифметика. DWORD тут будет всегда и всегда применяется при арифметике подобной. Менять на auto тут глупо. Ни к чему не приведет, а только ухудшит читаемость.

Я бы по другому этот файлик переделал — там много одинаковых циклов но с разными действиями внутри цикла. В эту бы сторону копнул.
Matrix has you...
Re[13]: А что за мода на auto?...
От: vaa  
Дата: 04.05.22 01:57
Оценка:
Здравствуйте, Sheridan, Вы писали:

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


Ф>>>>При наведении на переменную курсора мыши в нормальном редакторе тебе покажут что это такое и каков его тип.

S>>>А сразу, без наведений этих вот уже законами запрещено чтоли? Нет, я понимаю какой нибудь итератор списка словарей — тут и правда понятнее будет auto использовать. Но, блин, на ровном месте то зачем?
vaa>>А разве автовывод типов запрещает явное указание?
vaa>>на самом деле это же высший абстракции. подразумевает что код может работать с различными подходящими типами.
S>При чом тут автовывод и абстраакции? Разговор про читабельность кода.
так абстрагирование и помогает уменьшить сложность. разве нет?
Читабельность точно не хуже, иначе бы динамические ЯП типа js, python, clojure, common lisp уже давно бы вымерли.
Если код функции умещается на экран, то вы видите всю картину целиком и ориентируетесь не только на типы но и на содержание функции.
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[13]: А что за мода на auto?...
От: Privalov  
Дата: 04.05.22 06:33
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Речь про читабельность и понятность кода. В строготипизированном языке типы — важны.


Важны. И важно, что переменные получают тип при компиляции. А что автоматом — так это даже хорошо. И на читабельность кода auto (в моем случае var) не влияет никак. Вот имя переменной влияет. Я это еще после лазания по километровой распечатке программы с грузинмкими именами усвоил.

S>Скрывать типы в строготипизированном языке под автотип в ущерб читабельности и понятности, для того чтобы гиту было проще дифф выводить.... Ну, такое себе.


Причем тут версионник?

S>Давай посмотрим на оригинал (я хз оригинал ли, но явно с этого списано)


Я думал, ты Генту чинишь, а ты снова подтвердил, что являешься профессиональным виндовозом. Причем код довольно древний, еще с венгерской нотацией. Я не знаю, применяют ли ее сегодня. Но венгерская нотация и auto не очень совместимы.

S>3. Это работа с памятью, арифметика. DWORD тут будет всегда и всегда применяется при арифметике подобной. Менять на auto тут глупо. Ни к чему не приведет, а только ухудшит читаемость.


Принцип разумной достаточности никто не отменял. auto (или var) ставим, где нам удобно. Мне var при доработке програм немало времени экономила.

Ты точно не путаешь var с dynamic? Или что там в плюсах, голый void-указатель?
Re[14]: А что за мода на auto?...
От: Sheridan Россия  
Дата: 04.05.22 15:43
Оценка:
Здравствуйте, Privalov, Вы писали:

S>>Речь про читабельность и понятность кода. В строготипизированном языке типы — важны.

P>Важны. И важно, что переменные получают тип при компиляции. А что автоматом — так это даже хорошо. И на читабельность кода auto (в моем случае var) не влияет никак. Вот имя переменной влияет. Я это еще после лазания по километровой распечатке программы с грузинмкими именами усвоил.
Тип тоже влияет на читабельность. Точно так же придётся по коду гулять чтобы выяснить тип как ты гулял с именами.

S>>Скрывать типы в строготипизированном языке под автотип в ущерб читабельности и понятности, для того чтобы гиту было проще дифф выводить.... Ну, такое себе.

P>Причем тут версионник?
При том
Автор: Философ
Дата: 03.05.22
— последняя фраза. Так как для рефакторинга есть инструменты, то остаётся только предположить что "некрасивые длинные диффы".


S>>Давай посмотрим на оригинал (я хз оригинал ли, но явно с этого списано)

P>Я думал, ты Генту чинишь, а ты снова подтвердил, что являешься профессиональным виндовозом. Причем код довольно древний, еще с венгерской нотацией. Я не знаю, применяют ли ее сегодня. Но венгерская нотация и auto не очень совместимы.
auto вообще с здравым смыслом несовместимо.

S>>3. Это работа с памятью, арифметика. DWORD тут будет всегда и всегда применяется при арифметике подобной. Менять на auto тут глупо. Ни к чему не приведет, а только ухудшит читаемость.

P>Принцип разумной достаточности никто не отменял. auto (или var) ставим, где нам удобно. Мне var при доработке програм немало времени экономила.
Где удобно, я так и писал. Но не везде подряд.

P>Ты точно не путаешь var с dynamic? Или что там в плюсах, голый void-указатель?

Точно.
Matrix has you...
Re: Го уродлив!!!
От: Pzz Россия https://github.com/alexpevzner
Дата: 04.05.22 15:44
Оценка:
Здравствуйте, vsb, Вы писали:

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


А куда он должен его добавлять?

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


Для автовывода типа переменной.

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


log — какой-то бессмысленный пакет. Плохо продуманный.

Хорошо, конечно, иметь какой-то мултиплатформенный инструмент логирования, да прям в стандартной библиотеке. Но не слишком возможно, похоже.
Re[7]: А что за мода на auto?...
От: Pzz Россия https://github.com/alexpevzner
Дата: 04.05.22 15:53
Оценка:
Здравствуйте, Sheridan, Вы писали:

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


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

S>Нет, я понимаю что тот же тип итератора может полторы строки занимать, но есть же typedef или даже #define в конце концов.

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

А то, что в C++ иные типы на экране в ширину не помещаются, добавляет дополнительного смысла.

Я бы, правда, убил авторов C++ за то, что переменная типа auto не становится в точности того типа, какой ей присваивают при инициализации, а вместо этого компилятор умничает — если тип выражения int&, то переменная будет int.
Re[8]: А что за мода на auto?...
От: Sheridan Россия  
Дата: 04.05.22 16:15
Оценка:
Здравствуйте, Pzz, Вы писали:

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

Pzz>Потому, что чем меньше у тебя в тексте копий одного и того же знания (в данном случае, знания о типе выражения, которое ты пытаешься засунуть в переменную), тем проще потом этот код будет менять.
Код менять проще когда он понятный и читабельный. Автотипы наоборот, делают код менее понятным. Иногда более читабельным, но далеко не всегда.


S>>Нет, я понимаю что тот же тип итератора может полторы строки занимать, но есть же typedef или даже #define в конце концов.

S>>Почему auto? Почему код запутываете специально?
Pzz>А то, что в C++ иные типы на экране в ширину не помещаются, добавляет дополнительного смысла.
Вот сюда можно и auto, хотя лично я предпочитаю typedef или define. Но не везде же подряд.


Pzz>Я бы, правда, убил авторов C++ за то, что переменная типа auto не становится в точности того типа, какой ей присваивают при инициализации, а вместо этого компилятор умничает — если тип выражения int&, то переменная будет int.

Ещо один аргумент против автотипов.
Matrix has you...
Re[2]: Го уродлив!!!
От: vsb Казахстан  
Дата: 04.05.22 16:22
Оценка:
Здравствуйте, Pzz, Вы писали:

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


Pzz>А куда он должен его добавлять?


В создаваемую ошибку.

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


Pzz>Для автовывода типа переменной.


Для этого есть var.
Re[3]: Го уродлив!!!
От: Pzz Россия https://github.com/alexpevzner
Дата: 04.05.22 16:49
Оценка:
Здравствуйте, vsb, Вы писали:

Pzz>>А куда он должен его добавлять?


vsb>В создаваемую ошибку.


Ты имеешь ввиду в строку, или куда?

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


Pzz>>Для автовывода типа переменной.


vsb>Для этого есть var.


На практике, слово var встречается довольно редко. Когда переменную продекларивовать надо, а проинициализировать нечем.
Re[9]: А что за мода на auto?...
От: Pzz Россия https://github.com/alexpevzner
Дата: 04.05.22 16:51
Оценка:
Здравствуйте, Sheridan, Вы писали:

Pzz>>Потому, что чем меньше у тебя в тексте копий одного и того же знания (в данном случае, знания о типе выражения, которое ты пытаешься засунуть в переменную), тем проще потом этот код будет менять.

S>Код менять проще когда он понятный и читабельный. Автотипы наоборот, делают код менее понятным. Иногда более читабельным, но далеко не всегда.

Ну так всюду и не надо. Предполагается, что человек — разумное существо.

Pzz>>Я бы, правда, убил авторов C++ за то, что переменная типа auto не становится в точности того типа, какой ей присваивают при инициализации, а вместо этого компилятор умничает — если тип выражения int&, то переменная будет int.

S>Ещо один аргумент против автотипов.

Против C++, он весь такой
Re[12]: А что за мода на auto?...
От: Pzz Россия https://github.com/alexpevzner
Дата: 04.05.22 17:07
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>У тебя часто так бывало, что int стал float? У тебя вообще часто тип float в программах встречается? Какой процент от общего количества использований типов составляет float?


В JS такое бывает. Там все числа — float.
Re[13]: А что за мода на auto?...
От: Pzz Россия https://github.com/alexpevzner
Дата: 04.05.22 17:11
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Ты пойди пойми какой тип когда все они определены через var/auto все и инициализируются в "момент присваивания" (да, да в момент компиляции, но глазами видно именно так). Предлагаешь ковырять код вверх по вызовам до места где будет понятно какой тип будет у переменной? Вместо того чтобы посмотреть в начало этой же строки — копать? Спасибо, можно без соли. Всё равно несъедобно.


В Go автовывод типов работает очень хорошо и совершенно не мешает. Возможно потому, что в нем нет автоматического преобразования типов, и уж если тип подошел для дальнейших действий с ним, то про то, какой конкретный тип там оказался, можно особо не заморачиваться. И кроме того, нет перегрузки операторов, поэтому если написано '+', то это точно уж какое-нибудь число складывается с числом или строка со строкой, а не черти что из перегруженного в дебрях многостраничного темплейта метода.
Re[4]: Го уродлив!!!
От: vsb Казахстан  
Дата: 04.05.22 17:13
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>>>А куда он должен его добавлять?


vsb>>В создаваемую ошибку.


Pzz>Ты имеешь ввиду в строку, или куда?


Errorf возвращает объект, в котором есть строка с описанием ошибки и ссылка на предыдущую ошибку. Вот в этот объект надо добавить еще поле со стектрейсом, полным или хотя бы caller. И распечатывать это при форматировании.

https://pkg.go.dev/golang.org/x/xerrors вот этот пакет был прототипом этого функционала в стандартной библиотеке го, можно посмотреть, как там сделано. На предложение использовать этот или подобный пакет сразу отвечу, что я не люблю писать не-идиоматический код, а в го — особенно.

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


Pzz>>>Для автовывода типа переменной.


vsb>>Для этого есть var.


Pzz>На практике, слово var встречается довольно редко. Когда переменную продекларивовать надо, а проинициализировать нечем.


var x = value это валидный го-код. И var x1, x2 = value1, value2. Одно из отличий в том, что с := можно объявить одну переменную, когда вторая уже объявлена, ну ок, это может быть удобно. Но удобно это было бы, если бы := в принципе работала, как универсальная конструкция, позволяющая либо объявлять, либо присваивать значение. Но она так не работает. И порой приходится проходить по коду и заменять := на = из-за того, что сверху объявили переменную с таким именем. В общем единственное отличие и то наполовину бесполезное.
Отредактировано 04.05.2022 17:14 vsb . Предыдущая версия .
Re[14]: А что за мода на auto?...
От: Pzz Россия https://github.com/alexpevzner
Дата: 04.05.22 17:13
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Все, очевидно, не могут быть определены через var, хотя бы в одном месте должен быть указан тип. А вот вся остальная цепочка, если ее можно вывести формально — забота компилятора. Зачем ты непременно за компилятор поработать хочешь — непонятно.


Тип может быть выведен из констант. Или из типа той функции, которая принесла изначальное значение переменной. Посмотри на какой-нибудь Хаскель, там очень редко встречается явное указание типа.
Re[14]: А что за мода на auto?...
От: night beast СССР  
Дата: 04.05.22 17:56
Оценка:
Здравствуйте, Pzz, Вы писали:

НС>>>А ты попробуй без, может это иллюзия.

NB>>в данный момент в основном на питоне работаю, так что есть возможность сравнить.
Pzz>В питоне даже компилятор не знает тип.

в питоне есть аннотации. ну и в дебагере тоже может показывать.

Pzz>А вот если кто-то из вас знает (ты или компилятор), то возможно именно тебе-то знать и не обязательно


или нет
Re[10]: А что за мода на auto?...
От: Sheridan Россия  
Дата: 04.05.22 18:10
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Ну так всюду и не надо. Предполагается, что человек — разумное существо.

Ну так а теперь отлистай назад и посмотри с чего началось.

S>>Ещо один аргумент против автотипов.

Pzz>Против C++, он весь такой
Сочувствую.
Matrix has you...
Re[15]: А что за мода на auto?...
От: Ночной Смотрящий Россия  
Дата: 04.05.22 19:01
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Тип может быть выведен из констант.


Константа в строго типизированном языке однозначно указывает тип.

Pzz> Или из типа той функции, которая принесла изначальное значение переменной.


Но в самой функции тип то будет.

Pzz>Посмотри на какой-нибудь Хаскель, там очень редко встречается явное указание типа.


Хаскел — экспериментальный язык, поэтому приводить в пример его надо очень аккуратно.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[13]: А что за мода на auto?...
От: Ночной Смотрящий Россия  
Дата: 04.05.22 19:01
Оценка:
Здравствуйте, Pzz, Вы писали:

НС>>У тебя часто так бывало, что int стал float? У тебя вообще часто тип float в программах встречается? Какой процент от общего количества использований типов составляет float?

Pzz>В JS такое бывает. Там все числа — float.

Мы тут говорили про статическую типизацию.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[15]: А что за мода на auto?...
От: Privalov  
Дата: 04.05.22 20:11
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Тип тоже влияет на читабельность.


Каким образом?

S>Точно так же придётся по коду гулять чтобы выяснить тип как ты гулял с именами.


Зачем? Нормальный редактор сам подскажет, какой тип у переменной. Вот когда видишь странные имена, становится не до типов.

S>При том
Автор: Философ
Дата: 03.05.22
— последняя фраза. Так как для рефакторинга есть инструменты, то остаётся только предположить что "некрасивые длинные диффы".


По ссылке с последней фразой все в порядке. Приходилось мне тип возвращаемого значения менять. И еще кое-что делать. Без var я бы запарился код чинить.

S>auto вообще с здравым смыслом несовместимо.


Обоснуй. Либо речь идет о каком-то особенном здравом смысле. Я в шарпе var использую постоянно. И никаких проблем не испытываю. Правда, поддержка шарпа со стороны студии получше, чем плюсов.

S>Где удобно, я так и писал. Но не везде подряд.


Локальным переменным удобнее выволить тип автоматически в подавляющем большинстве случаев. Особенно если тип длинный, с шаблонами (в моем случае с generic-ами). Кстати, вдруг в процессе тестирования выяснится, что в данном месте лучше применить список вместо вектора, c использованием var такой переход пройдет намного менее напряжно, чем с ручной заменой вектора на список по всем местам. Да еще всегда есть шанс что-то упустить. Компилятор, конечно, пропуск обнаружит, но все равно время уйдет.

P>>Ты точно не путаешь var с dynamic? Или что там в плюсах, голый void-указатель?

S>Точно.

Судя по твоим сообщениям, таки путаешь.
Re[17]: А что за мода на auto?...
От: Ночной Смотрящий Россия  
Дата: 05.05.22 07:53
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Моё правило использования var — если тип очевиден из имени переменной или из инициализирующего значения, то его можно использовать. Если не очевиден, то надо прописывать явный тип. То бишь var x = 1; var s = "hello"; var sb = new StringBuilder(); var appointment = ... (где у appointment тип Appointment). При этом получается примерно 50 на 50 и мне такой результат нравится.


А где примеры неочевидностей, когда явный тип улучшает читаемость?
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[19]: А что за мода на auto?...
От: Ночной Смотрящий Россия  
Дата: 05.05.22 12:31
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>При этом если тебе конкретно этот код не интересен, а интересен код ниже и тут тебе хочется только увидеть тип этой переменной


А зачем тебе для кода ниже знать конкретный тип коллекции? Вот чем конкретно это знание тебе поможет при чтении?
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[20]: А что за мода на auto?...
От: vsb Казахстан  
Дата: 05.05.22 13:18
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

vsb>>При этом если тебе конкретно этот код не интересен, а интересен код ниже и тут тебе хочется только увидеть тип этой переменной


НС>А зачем тебе для кода ниже знать конкретный тип коллекции? Вот чем конкретно это знание тебе поможет при чтении?


У Set contains работает за O(1) или O(logN), у List за O(N), то бишь если я увижу строчкой ниже contains в цикле я смогу понять, это потенциальный косяк с O(N^2) или всё хорошо. Также Set убирает дубликаты, List — нет, это тоже может иметь значение для какого-то кода.
Отредактировано 05.05.2022 13:18 vsb . Предыдущая версия .
Re[21]: А что за мода на auto?...
От: Ночной Смотрящий Россия  
Дата: 05.05.22 13:44
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>У Set contains работает за O(1) или O(logN), у List за O(N)


В этом случае проблема будет именно в том самом коде, который ты читать не хочешь.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[22]: А что за мода на auto?...
От: vsb Казахстан  
Дата: 05.05.22 13:51
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

vsb>>У Set contains работает за O(1) или O(logN), у List за O(N)


НС>В этом случае проблема будет именно в том самом коде, который ты читать не хочешь.


Проблема будет в коде ниже. К примеру человек что-то снизу дописал и я читаю это изменение в виде diff-а. Для её исправления может понадобиться поменять код выше, согласен, но для того, чтобы в принципе понять, что эта проблема существует, достаточно знать тип, а не код выше.
Re[23]: А что за мода на auto?...
От: Ночной Смотрящий Россия  
Дата: 05.05.22 14:10
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Проблема будет в коде ниже.


Не, проблема именно в том коде, который не позвал нужный toSet. И в названии переменной, которая не содержит в себе важное семантическое указание.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re: Го уродлив!!!
От: L.K. Марс  
Дата: 05.05.22 18:32
Оценка:
vsb>:= абсолютно упоротая конструкция. Зачем она нужна в текущем виде — я вообще не понимаю.

Украли из паскаля/дельфи. В известном смысле, ":=" и "=" более явно различаются между собой, нежели "=" и "==". Особенно при быстром просмотре кода и при отсутствующей/неправильной подсветке.
Re: Тема Rust'а не раскрыта
От: Reset  
Дата: 06.05.22 02:06
Оценка:
Таки, у меня есть неприличный вопрос для ТС, поркуе ты не используешь Rust?

IMHO, если ты пишешь в команде программистов, которые ничего чуть более сложного, чем Pыthon изучить не хотят — тогда их выбор GoLang. Ну, а если же разработчикам не лень повышать свою квалификацию, то в той же нише больше подходит именно Rust.


Таки, шо ты в этот Go полез. Заставили?
Re[2]: Тема Rust'а не раскрыта
От: vsb Казахстан  
Дата: 06.05.22 06:48
Оценка:
Здравствуйте, Reset, Вы писали:

R>Таки, у меня есть неприличный вопрос для ТС, поркуе ты не используешь Rust?


R>IMHO, если ты пишешь в команде программистов, которые ничего чуть более сложного, чем Pыthon изучить не хотят — тогда их выбор GoLang. Ну, а если же разработчикам не лень повышать свою квалификацию, то в той же нише больше подходит именно Rust.


Ну примерно так, да.

R>

R>Таки, шо ты в этот Go полез. Заставили?


Пока что мы используем жаву и ноду. В го я полез, т.к. жавой и нодой не совсем довольны. Жава жрёт неприлично много памяти, нода мне не нравится в принципе. Питон мне тоже не нравится, не люблю я динамику, и там и там однопоточность. Ну и есть желание попробовать на го посадить писать грубо говоря вчерашних выпускников, а может и завтрашних, ибо денег на нормальных синьоров нет, а софт писать хочется, как-то так. О расте тут речь не идёт, он запредельно сложный в наших реалиях. Но скорей всего останемся на жаве.
Отредактировано 06.05.2022 6:49 vsb . Предыдущая версия .
Re[2]: Го уродлив!!!
От: vsb Казахстан  
Дата: 06.05.22 06:49
Оценка:
Здравствуйте, L.K., Вы писали:

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


LK>Украли из паскаля/дельфи. В известном смысле, ":=" и "=" более явно различаются между собой, нежели "=" и "==". Особенно при быстром просмотре кода и при отсутствующей/неправильной подсветке.


Дык там и := есть, и = и ==
Re[17]: А что за мода на auto?...
От: _NN_ www.nemerleweb.com
Дата: 06.05.22 18:17
Оценка:
Здравствуйте, vsb, Вы писали:

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


S>>>Точно так же придётся по коду гулять чтобы выяснить тип как ты гулял с именами.


P>>Зачем? Нормальный редактор сам подскажет, какой тип у переменной. Вот когда видишь странные имена, становится не до типов.


vsb>А как у вас устроено код ревью? Я вот в основном в браузере его провожу, читая диффы. И там нормального редактора нет. Поэтому важно, чтобы код читался как есть, в виде текста, в лучшем случае слегка раскрашенного.


vsb>Моё правило использования var — если тип очевиден из имени переменной или из инициализирующего значения, то его можно использовать. Если не очевиден, то надо прописывать явный тип. То бишь var x = 1; var s = "hello"; var sb = new StringBuilder(); var appointment = ... (где у appointment тип Appointment). При этом получается примерно 50 на 50 и мне такой результат нравится. По сути цель var в моем коде — убирать дублирование. Нет смысла писать StringBuilder sb = new StringBuilder(), никакой информации это не несёт для читателя. А если несёт, то var не нужен.


Теперь можно так:
StringBuilder sb = new();


https://riptutorial.com/csharp-9/learn/100003/target-typed-new-expressions

Для более однотипного кода.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[13]: А что за мода на auto?...
От: Философ Ад http://vk.com/id10256428
Дата: 07.05.22 15:17
Оценка:
Здравствуйте, Sheridan, Вы писали:

Ф>>Во-первых, бо ́льшую часть времени оно вообще не нужно: инетесно имя переменной и её значение в текущем месте. Ну вот, например:

S>И как всегда мыслью по древу растекаемся, ага. А вот если бы, а вот рефакторинг, а вот представь...

Бо ́льшая часть разработки ПО — а вот если бы, а вот рефакторинг, а если это... Потому что функционал — %20, а остальное обработка ошибок и нештатных ситуаций.

S>Речь про читабельность и понятность кода.... Скрывать типы в строготипизированном языке под автотип в ущерб читабельности и понятности...


Наоборот: читабельность от этого улучшается, потому что ты не перегружаешь читателя лишней информацией.


S>Давай посмотрим на оригинал (я хз оригинал ли, но явно с этого списано)


Это не оригинал. Оригинал поставляется вместе с RTSS. Если ты его ставил, то находится он здесь:
C:\Program Files (x86)\RivaTuner Statistics Server\SDK\Samples\SharedMemory\RTSSSharedMemorySample\RTSSSharedMemorySampleDlg.cpp
Всё сказанное выше — личное мнение, если не указано обратное.
Re[15]: А что за мода на auto?...
От: Leporidae  
Дата: 10.05.22 12:33
Оценка:
S>>>Да, проще. Не надо угадывать тип переменной, можно просто прочитать его.
НС>>А зачем его угадывать или читать?
S>Возможно ты читаешь код просто так... Ну тебе может и ок. А я в основном дописываю/рефакторю/фикшу баги.

`auto` на возможность это делать влияет примерно никак. На возможность «дописывания» тоже влияет примерно никак.
Re[13]: А что за мода на auto?...
От: Leporidae  
Дата: 10.05.22 12:35
Оценка:
S>>>Угу, а потом 1.9999883785467 землекопа в отчётах появляются из-за того что int стал float
НС>>У тебя часто так бывало, что int стал float?
S>Ни разу. Потому что строгая типизация. Либо явное приведение.

Итак. Каким образом в отчетах станет «1.9999883785467 землекопа» из-за auto?

Ну и то, что ты путаешь статическую и строгую типизацию, тоже хорошо показывает твое «понимание».
Re[16]: А что за мода на auto?...
От: Sheridan Россия  
Дата: 10.05.22 17:19
Оценка:
Здравствуйте, Leporidae, Вы писали:

S>>Возможно ты читаешь код просто так... Ну тебе может и ок. А я в основном дописываю/рефакторю/фикшу баги.

L>`auto` на возможность это делать влияет примерно никак. На возможность «дописывания» тоже влияет примерно никак.
Кроме того факта, что приходится по коду ползать заметно больше в поисках типа переменной когда он нужен.
Matrix has you...
Re[14]: А что за мода на auto?...
От: Sheridan Россия  
Дата: 10.05.22 17:21
Оценка:
Здравствуйте, Leporidae, Вы писали:

L>Итак. Каким образом в отчетах станет «1.9999883785467 землекопа» из-за auto?

Когда в результате вычислений оно станет float. Например, при делении. А вывод неформатированный.
Не за что.
Matrix has you...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.