
Ievgenii
19.06.2018
08:51:58
Ну хоть что-то там хорошо)))

Valeriy
19.06.2018
08:56:02

Ievgenii
19.06.2018
08:57:05
Так и в Ди тоже не нужно разыменовывать

Виталий
19.06.2018
09:04:57
Кстати ещё одна проблема го - это очень много повторяющегося кода. Нет тернарных операций

Google

Denis
19.06.2018
09:50:36
Го это не для дачников, а для колхозников

Денис
19.06.2018
10:01:38
Если я засну на сто лет, а потом проснусь и меня спросят, что происходит на дланг, я скажу: хейтят го, обсуждают треды/файберы/евентлупы и пишут на беттерси
Го - это си с гц, горутинами, объектами и интерфейсами. Чего еще желать можно? Охуенно же.

Dmitry
19.06.2018
10:05:39
Беттерси говно, нужно использовать нормальную дишечку.

Виталий
19.06.2018
10:08:17

Stanislav
19.06.2018
10:12:21

Денис
19.06.2018
10:27:09

Maxim
19.06.2018
10:28:01
а в Go разработчик не знает, где находится переменная?

Денис
19.06.2018
10:28:25

Stanislav
19.06.2018
10:28:37

Maxim
19.06.2018
10:28:37
ну что значит, лучше?

Stanislav
19.06.2018
10:28:39
почему лучше

Maxim
19.06.2018
10:29:06
типа, где хочет, там и зарезервирует память?

Google

Stanislav
19.06.2018
10:29:33
не, мне го в принципе нравится ) но там очень странные идеи на мой взгляд. типа дженериков нет, но есть range\map


Денис
19.06.2018
10:29:39
типа, где хочет, там и зарезервирует память?
How do I know whether a variable is allocated on the heap or the stack?
From a correctness standpoint, you don't need to know. Each variable in Go exists as long as there are references to it. The storage location chosen by the implementation is irrelevant to the semantics of the language.
The storage location does have an effect on writing efficient programs. When possible, the Go compilers will allocate variables that are local to a function in that function's stack frame. However, if the compiler cannot prove that the variable is not referenced after the function returns, then the compiler must allocate the variable on the garbage-collected heap to avoid dangling pointer errors. Also, if a local variable is very large, it might make more sense to store it on the heap rather than the stack.
In the current compilers, if a variable has its address taken, that variable is a candidate for allocation on the heap. However, a basic escape analysis recognizes some cases when such variables will not live past the return from the function and can reside on the stack.


Stanislav
19.06.2018
10:29:42
есть кодогенерация
ну и допустим ничего не мешало хотя бы перегрузку функций сделать

Денис
19.06.2018
10:30:13
Я был на гоконфе - Фицпатрик
говорил, что вся команда го - оче хочет дженерики

Maxim
19.06.2018
10:30:55


Денис
19.06.2018
10:31:12
Просто уже 8 разных реализаций сделала и все им не понравились. В Go2 завезут я думаю.
Дескать когда видишь функцию - однозначно знаешь какая и с чем она вызвана

Maxim
19.06.2018
10:32:57
как будто язык для овощей делали)

Денис
19.06.2018
10:33:11

Stanislav
19.06.2018
10:33:15
нет ексепшнов, но есть panic \ recover

Maxim
19.06.2018
10:33:41
на этом фоне даже похапе столпом программирования выглядит)

Stanislav
19.06.2018
10:34:16

Денис
19.06.2018
10:34:52
нет ексепшнов, но есть panic \ recover
Паники считай и нет. Нынче экспешены считают хуетой и ошибки через них не обрабатывают. В расте такой же подход. Если паникует - то это нечто из ряда вон и надо не ловить панику (хотя это можно, мало ли у тебя какое-нибудь сверхнадежное приложение), а разбираться почему так вышло.

Denis
19.06.2018
10:35:20
только называют их по-другому
и пишут руками

Google

Maxim
19.06.2018
10:35:35

Denis
19.06.2018
10:35:41
все эти кортежи компилируются ровно в тот же код что эксепшены

Maxim
19.06.2018
10:35:54
а в итоге теперь приходится программистам это всё расхлебывать
глядишь, лет через 15 появится новая профессия: легаси программист на го за сто миллионо денег

Денис
19.06.2018
10:38:38
все эти кортежи компилируются ровно в тот же код что эксепшены
Ничерта. Я писал плюсовый ABI для работы с исключениями - это пиздец. К каждой функции дописать таблицу с метаинформацией, 2 раза побегать по стеку в случае исключения и анализировать эти таблицы. Просто жесть.
Тут больше на сишные ретерн-коды похоже и это правильно и быстро. В расте примерно также, но там аналоги хаскельных Maybe (Result на расте или Optional на плюсах).
Я не понимаю, почему вы хейтите язык за простоту. Это же наоборот круто, когда можно делать хорошие программы просто, а не сложно.

Stanislav
19.06.2018
10:41:07
мне наоборот нравится что всякий http, json, go routines есть всё из коробки

Денис
19.06.2018
10:42:09

Виталий
19.06.2018
10:42:27
Го это по сути компилируемый питон специализированный на серверный продакшн. Не скажу почему хейчу, но причину переход на D уже говорил выше

Denis
19.06.2018
10:42:32

Stanislav
19.06.2018
10:45:29
статическая типизация
кароч ни разу не питон )

Денис
19.06.2018
10:48:07

Denis
19.06.2018
10:49:02
правда, от него везде отказались

Виталий
19.06.2018
10:50:04
Только многопоточность внеконкуренции

Денис
19.06.2018
10:50:43

Google

Denis
19.06.2018
10:51:01
ну поебутся как яваёбы поебались - увидят
если бы всё было так просто оно бы уже давно везде было

Виталий
19.06.2018
10:53:37
В питоне сахару побольше) что никакая статика рядом не стояла) одной строчкой можно написать то что на го в 50 строк например

Денис
19.06.2018
10:57:41

Denis
19.06.2018
10:57:56
а там по названию эксепшена типа поиск?

Денис
19.06.2018
10:58:50

Denis
19.06.2018
10:59:39
ну ты говоришь паттерн матчинг
кого оно там матчит?

Admin
ERROR: S client not available

Денис
19.06.2018
11:02:11
кого оно там матчит?
Возвращаем enum Result, который может быть или Err или Ok c объеками, самое главное еще можно во внутренностях Err или Ok покопаться сразу при получении и разные действия предпринять, при этом гаранируется, что копаясь во внутренностях мы все варианты предусмотрим

qwerty
19.06.2018
11:04:38
Pattern Matching в Rust - это swith + tryVisit для Algebraic
не, просто visit кажется
поэтому и удобно

Pavel
19.06.2018
11:19:13
Есть же известное изречение что легко сделать сложно, а вот сделать просто - сложно. И какая там разница что при исключениях нужно бегать по стеку и анализировать метаинформацию, если потом всем этим агрегатом очень удобно пользоваться и отделять концепции.

Dark
19.06.2018
11:20:58

Pavel
19.06.2018
11:21:45
Во-первых не лагает, во-вторых не все, в третьих не как в javasript. Сразу 3 ложных утверждения ))
го сам лагает по сравнению с си

Stanislav
19.06.2018
11:23:05
си летает, но там такая боль например юзать обычные хэшмапы

Maxim
19.06.2018
11:23:06
ну и потом, если исключения правильно готовить, а не ветвить ими логику, скорость их работы значения иметь практически не будет)

Google

Pavel
19.06.2018
11:24:22
Все правильно, исключения для исключительных ситуаций. Если у вас возникло исключение то вам уже наплевать что все лагает, ведь решение проблемы и так будет лагать.

Dark
19.06.2018
11:25:16

Pavel
19.06.2018
11:26:07
Только надо больше мозга иметь и разобраться.

Dark
19.06.2018
11:27:28

Pavel
19.06.2018
11:27:31
Я кстати щас пишу на TS под ангуляр, с удовольствием говнокожу ) Не использую хешмапы, обхожу массивы квадратичной сложностью для сортировки, копирую данные по 100 раз. Пользователь будет страдать ?

Dark
19.06.2018
11:28:39

Pavel
19.06.2018
11:29:31
Потому что там надо выбрать максимальные элементы в группах.
Квадрата хватает
Можно было бы сделать быстро если бы была структура ключ-значение, но зачем? Тогда этот хешмап нельзя будет засунуть в DataProvider, он принимает только массивы.
Все равно все считается у клиента, зачем что то оптимизировать. Пусть его процессор будет загружен по самые помидоры.

Stanislav
19.06.2018
11:32:00
и так бравзеры ползают


Денис
19.06.2018
11:34:24
Так это не та простота которая нам нужна. Это простота реализации, а нам нужна простота пользования. Исключения позволяют отделить логику кода от уровней обработки ошибок. return коды - нет. Параметры по умолчанию позволяют не менять параметр в 100500 местах если он изменился. Дженерики позволяют абстрагироваться от реализации хранилища. И так во всем.
Ну дык в некоторых приложениях (которые по сети ходят или по файловой системе) - ошибки это ничерта не исключение, а норма, поэтому должна обрабатываться не каким-то тяжелым и сложным механизмом, а реакция на ошибку должна быть непосредственно вплетена в логику. Рефлексия, кодогенерация и интерфейсы позволяют абстрагироваться (да и завезут в го дженерики).
Мне просто не нравится этот подход. Есть механизм исключений - у него много плюсов и много минусов. В язык не стали добавлять именно этот механизм из-за того, что показалось, что в стандартном юзкейсе минусы будут перевешивать. Внедрили другой механизм, который опять же имеет плюсы, минусы, но для стандартного юзкейса плюсы наоборот будут перевешивать. И все кричат ФУ ПОЧЕМУ НЕТ МЕХАНИЗМА A? ВЕДЬ МЕХАНИЗМ Б - ПРИМИТИВ!


Maxim
19.06.2018
11:35:27
это, например, какие ошибки — норма?


Pavel
19.06.2018
11:35:47
Ну дык в некоторых приложениях (которые по сети ходят или по файловой системе) - ошибки это ничерта не исключение, а норма, поэтому должна обрабатываться не каким-то тяжелым и сложным механизмом, а реакция на ошибку должна быть непосредственно вплетена в логику. Рефлексия, кодогенерация и интерфейсы позволяют абстрагироваться (да и завезут в го дженерики).
Мне просто не нравится этот подход. Есть механизм исключений - у него много плюсов и много минусов. В язык не стали добавлять именно этот механизм из-за того, что показалось, что в стандартном юзкейсе минусы будут перевешивать. Внедрили другой механизм, который опять же имеет плюсы, минусы, но для стандартного юзкейса плюсы наоборот будут перевешивать. И все кричат ФУ ПОЧЕМУ НЕТ МЕХАНИЗМА A? ВЕДЬ МЕХАНИЗМ Б - ПРИМИТИВ!
Потому что наверно пытаются писать бизнес логику на нем, а в ней исключения очень сильно нужны. А непосредственная обработка ошибок хорошо подходит только в байтомолотилках, где и уровней абстракции то особо нет.


Денис
19.06.2018
11:36:27

Pavel
19.06.2018
11:36:40
Впринципе да, если писать работу с сетью, то там все сущности проникают друг в друга, особо ниче не инкапсулируешь.

Maxim
19.06.2018
11:37:29
логика исключений проста — их нужно бросать, когда не знаешь что еще делать
например, идешь в базу читать объект по ключу, а таких нету, возвращаешь null-object