
Александр
27.09.2018
23:20:04
а это уже совсем другой метод получится

Roman
27.09.2018
23:20:28

anatolii
27.09.2018
23:20:55
именно

Александр
27.09.2018
23:21:06
где тут проблема то?

Google

anatolii
27.09.2018
23:21:07
другая сигнатура и ошибка компилятора

Александр
27.09.2018
23:21:59
какой то программиста-маразматик, сменил сигнатуру везде (включая вызовы) и потом ЗАБЫЛ
да с таким же успехом я могу переменные просто путать в теле

anatolii
27.09.2018
23:22:11
любое изменение данных отражается в результате

Roman
27.09.2018
23:22:14

anatolii
27.09.2018
23:22:51
согласен, не просто, хорошо что го хоть пинает о неиспользуемых переменных, иначе вообще плохо все было

Александр
27.09.2018
23:23:09
кусок вырезаешь чисто позырить

Roman
27.09.2018
23:23:17
вот если бы ещё так-же за мутации пинал было бы здорово ?

Александр
27.09.2018
23:23:27
"блэт переменную а не используешь"

anatolii
27.09.2018
23:23:28
писали бы что угодно, в результат кидали бы неизвестнве переменные и все бы работало плохо
ну если честно, сказать что "я пишу в структуру куда не надо и хочу чтоб меня за это бил компилятор" это немножечко странно, не плохо а странно

Google

Roman
27.09.2018
23:27:29
потому-что мне спокойнее спится когда днём меня побил компилятор но я уверен что в коде "нет" ошибок. Нежели когда компилятор сказал "всё окей", а сервер ночью упал

anatolii
27.09.2018
23:28:39

Roman
27.09.2018
23:29:18

anatolii
27.09.2018
23:30:32
не скажу что прям супер крупные, прокеты обычно на <6 человек. Если больше просто делим на независимые модули и каждый варится у себя, по сути разделяя проетк на части
а насчет долго это правильный вопрос, но там явно было дело не в имутабельности

Roman
27.09.2018
23:33:47
я работал над софтиной в несколько лямов кода, которая содержалась на протяжении 5 лет к тому моменту (было это тут https://www.adition.com/) и команда была > 50 человек. Всё это дело писали на C++. Если бы тогда Rust был уже достаточно популярным и я про него знал - я бы либо уволился либо переписал всё на Rust))) Потому-что баги там были феерические

anatolii
27.09.2018
23:35:05
гарантирую, под растом у вас тоже были бы проблемы, может чуть меньше но тем не менее. Обычно логические ошибки переносятся из проекта в проект

Roman
27.09.2018
23:35:56
а data race это вообще страшная вещь
её можно даже и не заметить
всё будет похоже на то что всё окей, а на самом деле данные корримпированные

anatolii
27.09.2018
23:36:55
ну да, язык дает свои "бенефиты" тут ничего не поделаешь. Но иногда на жс сложней писать чем на плюсах с его безопасностью )

Roman
27.09.2018
23:37:41
ладно, не будем оффтопить

anatolii
27.09.2018
23:38:44
ну, подведя итог, я за имутабле в реале. Подходишь и бьешь по рукам разраба :) а данные не по ссылке передавать где опасное место

Александр
27.09.2018
23:39:41
у меня был конечно кейс
с конфигом
но я решил через сеттеры

anatolii
27.09.2018
23:40:20
ну конфиг да, это кстати прекрасный пример

Roman
27.09.2018
23:42:21

Google

Александр
27.09.2018
23:42:34
это и понятно
оно юзает рефлект

anatolii
27.09.2018
23:43:38
ну то была первая ссылка, я просто показал что есть библиотеки в принципе

Александр
27.09.2018
23:43:50
couchdb.NewConnection(config.GetString("DB.Host"), config.GetInt("DB.Port"), timeout)
у меня конфиг так юзается
может это конечно и не правильно, пути протягивать через string

Roman
27.09.2018
23:44:32

anatolii
27.09.2018
23:46:09
ну тогда пока что копипаст :)

Roman
27.09.2018
23:49:29

anatolii
27.09.2018
23:50:43
я подумаю
а де он собственно?
ато много наговорили

Roman
27.09.2018
23:52:21
а де он собственно?
https://github.com/romshark/Go-2-Proposal---Immutability
может даже пару строк почитаете ?

anatolii
28.09.2018
00:06:36
В дарте такое есть
Вообше хорошо к делу подошли, полно описали

Roman
28.09.2018
00:13:25

anatolii
28.09.2018
00:17:09
В дарте к этому даже подошли с особым пониманием, там есть специальные конструкторы классов константные. Удобно, согласен ?


Yo
28.09.2018
05:21:48
ну, подведя итог, я за имутабле в реале. Подходишь и бьешь по рукам разраба :) а данные не по ссылке передавать где опасное место
Блин... Я это все прочитал. Целый день некогда было залезть в чат, а тут 500> сообщений.
Роман совершенно прав, dangling pointers, pointer aliasing — это беда языка, если её не решить хоть каким способом. Скала, раст решили эту детскую проблему.
Проблема очевидна только тем, кто её понимает.
Начать понимать её можно только на больших командах (точнее разными командами на одном проекте), с очень разношерстной публикой от новичков до опытных.
На проекте, где как обычно некогда разбираться, что делает чужой код/либа, но вдруг!! оказывается что она меняет твои данные (состояние), которые ты не ожидал для изменения!
И не ты их сам сознательно поменял, а произошёл "side effect" и цепочка выполнения, которая к этому привела, оказалась "очень вычурной и витеиватой".
Кто с этим сам не сталкивался, писал только "домашние" проекты, тот к сожалению мало понимает суть проблемы, увы....
Эта проблема отсутствует в скала, потому что заложена в языке, тк сделать мутацию как сайд-эффект можно только сознательно и тогда коллеги это внимательно изучат, насколько это оправдано.
Раст решил это на уровне компилятора.
Это же решение ОЧЕНЬ НЕОБХОДИМО в компиляторе Go.
Но есть сомнения, как вообще создатели го относятся к этой идее? Какие были или нет контакты, комменты от них, Роман? Может имеет смысл бомбить их на почту, в гугл группе, в слак каналах? Какие кто знает "наиболее прямые точки доступа" к создателям языка и компилятора? Поставить star + watch в гитхабе — это почти ни о чем...
Нужно больше усилий и я понимаю Романа и его постоянные попытки форсить и рекламировать свой proposal на канале. Но нужны другие, более "прямые и точные каналы", чтобы обращаться к "главным го разработчикам". Роман, думаю ещё стоило бы сделать более наглядные (то ли простые, то ли наоборот quiz, не очевидные примеры) с примером такого поведения, которое disaster.
Да, иногда вы можете увидеть и дать кому то" по рукам" в своей команде, но лучше, чтобы за вас это делал компилятор!


Alexander
28.09.2018
05:35:56
Блин... Я это все прочитал. Целый день некогда было залезть в чат, а тут 500> сообщений.
Роман совершенно прав, dangling pointers, pointer aliasing — это беда языка, если её не решить хоть каким способом. Скала, раст решили эту детскую проблему.
Проблема очевидна только тем, кто её понимает.
Начать понимать её можно только на больших командах (точнее разными командами на одном проекте), с очень разношерстной публикой от новичков до опытных.
На проекте, где как обычно некогда разбираться, что делает чужой код/либа, но вдруг!! оказывается что она меняет твои данные (состояние), которые ты не ожидал для изменения!
И не ты их сам сознательно поменял, а произошёл "side effect" и цепочка выполнения, которая к этому привела, оказалась "очень вычурной и витеиватой".
Кто с этим сам не сталкивался, писал только "домашние" проекты, тот к сожалению мало понимает суть проблемы, увы....
Эта проблема отсутствует в скала, потому что заложена в языке, тк сделать мутацию как сайд-эффект можно только сознательно и тогда коллеги это внимательно изучат, насколько это оправдано.
Раст решил это на уровне компилятора.
Это же решение ОЧЕНЬ НЕОБХОДИМО в компиляторе Go.
Но есть сомнения, как вообще создатели го относятся к этой идее? Какие были или нет контакты, комменты от них, Роман? Может имеет смысл бомбить их на почту, в гугл группе, в слак каналах? Какие кто знает "наиболее прямые точки доступа" к создателям языка и компилятора? Поставить star + watch в гитхабе — это почти ни о чем...
Нужно больше усилий и я понимаю Романа и его постоянные попытки форсить и рекламировать свой proposal на канале. Но нужны другие, более "прямые и точные каналы", чтобы обращаться к "главным го разработчикам". Роман, думаю ещё стоило бы сделать более наглядные (то ли простые, то ли наоборот quiz, не очевидные примеры) с примером такого поведения, которое disaster.
Да, иногда вы можете увидеть и дать кому то" по рукам" в своей команде, но лучше, чтобы за вас это делал компилятор!
По моему создатели го сделали го типизированным лишь затем, чтобы он работал быстрее. Что уж говорить о каких-то нетривиальных компайл-тайм проверках.


Jack
28.09.2018
05:36:54
привет.кто работал с https://github.com/Dimonchik0036/vk-api ,как в update.Message получить название беседы?

Google


snip
28.09.2018
05:38:05
Блин... Я это все прочитал. Целый день некогда было залезть в чат, а тут 500> сообщений.
Роман совершенно прав, dangling pointers, pointer aliasing — это беда языка, если её не решить хоть каким способом. Скала, раст решили эту детскую проблему.
Проблема очевидна только тем, кто её понимает.
Начать понимать её можно только на больших командах (точнее разными командами на одном проекте), с очень разношерстной публикой от новичков до опытных.
На проекте, где как обычно некогда разбираться, что делает чужой код/либа, но вдруг!! оказывается что она меняет твои данные (состояние), которые ты не ожидал для изменения!
И не ты их сам сознательно поменял, а произошёл "side effect" и цепочка выполнения, которая к этому привела, оказалась "очень вычурной и витеиватой".
Кто с этим сам не сталкивался, писал только "домашние" проекты, тот к сожалению мало понимает суть проблемы, увы....
Эта проблема отсутствует в скала, потому что заложена в языке, тк сделать мутацию как сайд-эффект можно только сознательно и тогда коллеги это внимательно изучат, насколько это оправдано.
Раст решил это на уровне компилятора.
Это же решение ОЧЕНЬ НЕОБХОДИМО в компиляторе Go.
Но есть сомнения, как вообще создатели го относятся к этой идее? Какие были или нет контакты, комменты от них, Роман? Может имеет смысл бомбить их на почту, в гугл группе, в слак каналах? Какие кто знает "наиболее прямые точки доступа" к создателям языка и компилятора? Поставить star + watch в гитхабе — это почти ни о чем...
Нужно больше усилий и я понимаю Романа и его постоянные попытки форсить и рекламировать свой proposal на канале. Но нужны другие, более "прямые и точные каналы", чтобы обращаться к "главным го разработчикам". Роман, думаю ещё стоило бы сделать более наглядные (то ли простые, то ли наоборот quiz, не очевидные примеры) с примером такого поведения, которое disaster.
Да, иногда вы можете увидеть и дать кому то" по рукам" в своей команде, но лучше, чтобы за вас это делал компилятор!
Есть вполне нормальный и прямой способ предлагать свои идеи, а спамить коретим это не нормальный способ


Savely
28.09.2018
05:38:27

Yo
28.09.2018
05:40:20

Subbotin
28.09.2018
05:46:09
Стоит оценивать совокупную стоимость владения-разработки софта

Admin
ERROR: S client not available

Alexander
28.09.2018
05:54:02


Yo
28.09.2018
05:55:06
Не факт, что скорость работы программера будет выше на расте/скале чем на го, если взять рандомного прогера и потратить одинаковое время на изучение языка
Под "скоростью" я подразумевал немного другое, извините, не совсем точно выразился. Речь не про скорость кодинга или проектирования.
Цена ошибки и цена её исправления, которая займёт время и нервы (а произойдёт она как правило на продакшн, и как бывает после свежего деплоя).
Цену этого сложно вычислить "легко и точно". Но лучше и правильнее это сделать в языке и компилятором, даже за счёт "сложных проверок" или "увеличения времени компиляции", чем потраченными человеко-часами. Кто этого не понимает, увы, его убедить, что это важно сложно. Это только с опытом приходит, что лучше этого гемороя НЕ иметь и столкнуться "иногда", чем иметь заложеннвй в языке, для "супер скоростной компиляции".


Alexander
28.09.2018
05:55:24
скорость компиляции это конечно хорошо, но не так хорошо, если после компиляции всегда нужно запускать тесты

Yo
28.09.2018
05:56:13

Alexander
28.09.2018
05:56:53
А за деньги пишу на го.
Вот такая вот грустная история.

V
28.09.2018
05:58:27
Ошибки создаёт не язык, а программист.


Subbotin
28.09.2018
05:58:45
Под "скоростью" я подразумевал немного другое, извините, не совсем точно выразился. Речь не про скорость кодинга или проектирования.
Цена ошибки и цена её исправления, которая займёт время и нервы (а произойдёт она как правило на продакшн, и как бывает после свежего деплоя).
Цену этого сложно вычислить "легко и точно". Но лучше и правильнее это сделать в языке и компилятором, даже за счёт "сложных проверок" или "увеличения времени компиляции", чем потраченными человеко-часами. Кто этого не понимает, увы, его убедить, что это важно сложно. Это только с опытом приходит, что лучше этого гемороя НЕ иметь и столкнуться "иногда", чем иметь заложеннвй в языке, для "супер скоростной компиляции".
А вот это вопрос. Софт бывает разный. Баги есть везде. И делая софт мы всегда ищем компромисс между богами и скоростью/ценой. Если у тебя баланс и так смещен в сторону скорости и есть много других багов кроме сайд-эффектов владения, то внезапно го выгоднее


Pavel
28.09.2018
05:59:31
Под "скоростью" я подразумевал немного другое, извините, не совсем точно выразился. Речь не про скорость кодинга или проектирования.
Цена ошибки и цена её исправления, которая займёт время и нервы (а произойдёт она как правило на продакшн, и как бывает после свежего деплоя).
Цену этого сложно вычислить "легко и точно". Но лучше и правильнее это сделать в языке и компилятором, даже за счёт "сложных проверок" или "увеличения времени компиляции", чем потраченными человеко-часами. Кто этого не понимает, увы, его убедить, что это важно сложно. Это только с опытом приходит, что лучше этого гемороя НЕ иметь и столкнуться "иногда", чем иметь заложеннвй в языке, для "супер скоростной компиляции".
И потом словить ошибку off by one потому что ты человек.

V
28.09.2018
05:59:38
Легаси и говнокод на любом языке, чего бурчать-то

Alexander
28.09.2018
05:59:56

V
28.09.2018
06:00:08
Что вы просто флудите (:

Yo
28.09.2018
06:01:52
Ошибки создаёт не язык, а программист.
Никто не спорит. Другое дело если язык позволяет сделать очень неприятную и трудно отлавливаемую ошибку, или язык защищён от того, чтобы сделать такую ошибку случайно.
Специально воспользоваться возможностями языка и нести ответственность — пожалуйста.
Но также иметь возможность "специально защититься" от такой ошибки, именно этого сейчас нет, и именно это предлагает proposal.

Google

V
28.09.2018
06:05:23
С другой стороны чем больше инструментов, тем сильнее можно наговнокодить и сложнее потом в этом разобраться

Alexander
28.09.2018
06:05:45
Ошибки создаёт не язык, а программист.
В любой инженерной области дабы повысить надёжность и производительность стараются убрать из производственной цепочки человека. А если из цепочки человека убрать невозможно, то стараются сделать всякие штуки, чтобы проверять, что человек не делает херню.
К сожалению программирование — это по большей части не инженерная область.
А детсад.

Artem
28.09.2018
06:08:47

V
28.09.2018
06:08:51
Вот поэтому независимо от языка есть две лучшие практики: тесты и код ревью

Диёр
28.09.2018
06:11:53
Кодревью это человеческий фактор, тесты тоже

Alexander
28.09.2018
06:12:27

V
28.09.2018
06:12:53
Это называется мутацтонное тестирование, рекомендую

Alexander
28.09.2018
06:13:37
если бы у нас так мосты строили, то их срок годности считался бы месяцами

Диёр
28.09.2018
06:16:29

Pavel
28.09.2018
06:18:20

Yo
28.09.2018
06:21:11
Детские проблемы преследуют годами, хотя рабочие решения уже есть.
Не говорите мне про говно-легаси, я знаю.
https://tproger.ru/news/dangling-pointers-detection/

Alexander
28.09.2018
06:24:49

Yo
28.09.2018
06:28:44
NLL в кубе, хром будет неделю компилироваться
Ну например, неделю компилировать и не иметь утечек, которые иногда есть, иногда нет, а иногда есть, но не у всех, и проявляются не всегда... Те потратить месяцы на поиск утечки, ещё раз неделю компилировать.
Или компилировать неделю, не релизить ещё неделю, исправляя баги, компилить неделю.

Alexander
28.09.2018
06:29:52
Ну например, неделю компилировать и не иметь утечек, которые иногда есть, иногда нет, а иногда есть, но не у всех, и проявляются не всегда... Те потратить месяцы на поиск утечки, ещё раз неделю компилировать.
Или компилировать неделю, не релизить ещё неделю, исправляя баги, компилить неделю.
Ну так а зачем вся вот эта чёрная магия со сложными проверками, когда есть Rust с явным указанием лайфтаймов?
И с разделением на овнера и поинтер из коробки.