История изменений
Исправление kaldeon, (текущая версия) :
но чем [отсутствие синкронайзед блоков и методов] лучше в сравнении с prior art в лице банальной джавы, сишарпа?
Тем, что reentrant locks не нужны.
https://groups.google.com/g/golang-nuts/c/XqW1qcuZgKg/m/Ui3nQkeLV80J
почему в языке якобы хорошо приспособленном для конкурентного программирования, лок отпускается вручную?
Автоматический механизм отпускания лока присутствует (аналог try-finally), на усмотрение программиста.
Согласен с тем, что обсуждаемый код может породить потенциальную ошибку. Проблема решается использованием линтеров.
кто отпустит блокировку если вызов appendIfNotExists привет к панике … ?
finally
наверное этот голанг как-то [гарантирует панику из appendIfNotExists() как невозможную в принципе]
Нет
но я бы не сказал, что это «читабельный и понятный» язык.
Паника - исключительный случай, гражданин второго сорта, поэтому обычный код освобождён от бюрократии, связанной с ней. То есть эта вещь наоборот способствует «читабельности».
блокировку автор отпустил сразу же после вызова … потому, что
Чтобы правильно, учитывая риск возникновения паники, отпустить блокировку, нужно делать так:
func() {
ln.mu.Lock()
defer ln.mu.Unlock()
ln.channels = appendIfNotExists(ln.channels, channels...)
}()
Довольно коряво, к сожалению. Поэтому он и написал так, как получилось.
Я лично был бы не против оставить как есть, учитывая то, что используется маленькая и простая функция как appendIfNotExists, где паниковать почти нечему.
нужны SA
sync.Mutex, sync.RWMutex
у голанга вместо модели памяти документ, суть которого сводиться к «ничему»… . пусть будет всё через гонку
Вот этот документ: https://go.dev/ref/mem
Мне сравнить не с чем, джавовскую модель памяти не читал, но мне интересно из чего в этом документе можно вывести «пусть будет всё через гонку».
авторы которого сделали говно и предпочитают не признавать ошибки
Если бы знали процессы, через которые проходит разработка языка, то данное утверждение было бы сложнее сделать. Почти все пользователи языка буквально признают, что все принятые в языке решения имеют свой набор компромиссов. То, что сам язык не догматичен, транслируется самими разработками языка. Небольшой пример: https://research.swtch.com/dogma.
Подробнее про процессы внесения изменений в язык: https://research.swtch.com/proposals
Исправление kaldeon, :
но чем [отсутствие синкронайзед блоков и методов] лучше в сравнении с prior art в лице банальной джавы, сишарпа?
Тем, что reentrant locks не нужны.
https://groups.google.com/g/golang-nuts/c/XqW1qcuZgKg/m/Ui3nQkeLV80J
почему в языке якобы хорошо приспособленном для конкурентного программирования, лок отпускается вручную?
Автоматический механизм отпускания лока присутствует (аналог try-finally), на усмотрение программиста.
Согласен с тем, что обсуждаемый код может породить потенциальную ошибку. Проблема решается использованием линтеров.
кто отпустит блокировку если вызов appendIfNotExists привет к панике … ?
finally
наверное этот голанг как-то [гарантирует панику из appendIfNotExists() как невозможную в принципе]
Нет
но я бы не сказал, что это «читабельный и понятный» язык.
Паника - исключительный случай, гражданин второго сорта, поэтому обычный код освобождён от бюрократии, связанной с ней. То есть эта вещь наоборот способствует «читабельности».
блокировку автор отпустил сразу же после вызова … потому, что
Чтобы правильно, учитывая риск возникновения паники, отпустить блокировку, нужно делать так:
func() {
ln.mu.Lock()
defer ln.mu.Unlock()
ln.channels = appendIfNotExists(ln.channels, channels...)
}()
Довольно коряво, к сожалению. Поэтому он и написал так, как получилось.
нужны SA
sync.Mutex, sync.RWMutex
у голанга вместо модели памяти документ, суть которого сводиться к «ничему»… . пусть будет всё через гонку
Вот этот документ: https://go.dev/ref/mem
Мне сравнить не с чем, джавовскую модель памяти не читал, но мне интересно из чего в этом документе можно вывести «пусть будет всё через гонку».
авторы которого сделали говно и предпочитают не признавать ошибки
Если бы знали процессы, через которые проходит разработка языка, то данное утверждение было бы сложнее сделать. Почти все пользователи языка буквально признают, что все принятые в языке решения имеют свой набор компромиссов. То, что сам язык не догматичен, транслируется самими разработками языка. Небольшой пример: https://research.swtch.com/dogma.
Подробнее про процессы внесения изменений в язык: https://research.swtch.com/proposals
Исправление kaldeon, :
но чем [отсутствие синкронайзед блоков и методов] лучше в сравнении с prior art в лице банальной джавы, сишарпа?
Тем, что reentrant locks не нужны.
https://groups.google.com/g/golang-nuts/c/XqW1qcuZgKg/m/Ui3nQkeLV80J
почему в языке якобы хорошо приспособленном для конкурентного программирования, лок отпускается вручную?
Автоматический механизм отпускания лока присутствует (аналог try-finally), на усмотрение программиста.
Согласен с тем, что обсуждаемый код может породить потенциальную ошибку. Проблема решается использованием линтеров.
кто отпустит блокировку если вызов appendIfNotExists привет к панике … ?
finally
наверное этот голанг как-то [гарантирует панику из appendIfNotExists() как невозможную в принципе]
Нет
но я бы не сказал, что это «читабельный и понятный» язык.
Паника - исключительный случай, гражданин второго сорта, поэтому обычный код освобождён от бюрократии, связанной с ней. То есть эта вещь наоборот способствует «читабельности».
блокировку автор отпустил сразу же после вызова … потому, что
Чтобы правильно, учитывая риск возникновения паники, отпустить блокировку, нужно делать так:
func() {
ln.mu.Lock()
defer ln.mu.Unlock()
ln.channels = appendIfNotExists(ln.channels, channels...)
}()
Довольно коряво, к сожалению. Поэтому он и написал так, как получилось.
нужны SA
sync.Mutex, sync.RWMutex
у голанга вместо модели памяти документ, суть которого сводиться к «ничему»… . пусть будет всё через гонку
Вот этот документ: https://go.dev/ref/mem
Мне сравнить не с чем, джавовскую модель памяти не читал, но мне интересно из чего в этом документе можно вывести «пусть будет всё через гонку».
авторы которого сделали говно и предпочитают не признавать ошибки
Если бы вы знали через какие процессы проходит разработка языка, то данное утверждение было бы сложнее сделать. Почти все пользователи языка буквально признают, что все принятые в языке решения имеют свой набор компромиссов. То, что сам язык не догматичен, транслируется самими разработками языка. Небольшой пример: https://research.swtch.com/dogma.
Подробнее про процессы внесения изменений в язык: https://research.swtch.com/proposals
Исходная версия kaldeon, :
но чем [отсутствие синкронайзед блоков и методов] лучше в сравнении с prior art в лице банальной джавы, сишарпа?
Тем, что reentrant locks не нужны.
https://groups.google.com/g/golang-nuts/c/XqW1qcuZgKg/m/Ui3nQkeLV80J
почему в языке якобы хорошо приспособленном для конкурентного программирования, лок отпускается вручную?
Автоматический механизм отпускания лока присутствует (аналог try-finally), на усмотрение программиста.
Согласен с тем, что обсуждаемый код может породить потенциальную ошибку. Проблема решается использованием линтеров.
кто отпустит блокировку если вызов appendIfNotExists привет к панике … ?
finally
наверное этот голанг как-то [гарантирует панику из appendIfNotExists() как невозможную в принципе]
Нет
но я бы не сказал, что это «читабельный и понятный» язык.
Паника - исключительный случай, гражданин второго сорта, поэтому обычный код освобождён от бюрократии, связанной с ней. То есть эта вещь наоборот способствует «читабельности».
блокировку автор отпустил сразу же после вызова … потому, что
Чтобы правильно, учитывая риск возникновения паники, отпустить блокировку, нужно делать так:
defer func() {
ln.mu.Lock()
defer ln.mu.Unlock()
ln.channels = appendIfNotExists(ln.channels, channels...)
}()
Довольно коряво, к сожалению. Поэтому он и написал так, как получилось.
нужны SA
sync.Mutex, sync.RWMutex
у голанга вместо модели памяти документ, суть которого сводиться к «ничему»… . пусть будет всё через гонку
Вот этот документ: https://go.dev/ref/mem
Мне сравнить не с чем, джавовскую модель памяти не читал, но мне интересно из чего в этом документе можно вывести «пусть будет всё через гонку».
авторы которого сделали говно и предпочитают не признавать ошибки
Если бы вы знали через какие процессы проходит разработка языка, то данное утверждение было бы сложнее сделать. Почти все пользователи языка буквально признают, что все принятые в языке решения имеют свой набор компромиссов. То, что сам язык не догматичен, транслируется самими разработками языка. Небольшой пример: https://research.swtch.com/dogma.
Подробнее про процессы внесения изменений в язык: https://research.swtch.com/proposals