LINUX.ORG.RU

История изменений

Исправление 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