Size: a a a

Compiler Development

2021 February 08

s

suhr in Compiler Development
Ладно, я понял, о чём он. Он изначально полагает, что union всегда определён для Map, причём единственным способом.
источник

ΑZ

Αλεχ Zhukovsky in Compiler Development
Alexander Tchitchigin
Две ссылки на один и тот же объект. В Java же вообще "внутри" объекта нет (или не было до недавних пор) — только ссылки на другие объекты. Ссылки на поля как таковые брать просто нельзя.
а как на уровне языка увидеть это "нельзя"?
источник

ΑZ

Αλεχ Zhukovsky in Compiler Development
suhr
Ладно, я понял, о чём он. Он изначально полагает, что union всегда определён для Map, причём единственным способом.
ну это-то понятно из слова "моноид", вопрос почему видно что юнион на Map нельзя получить такой же как v -> Map
источник

ΑZ

Αλεχ Zhukovsky in Compiler Development
Alexander Tchitchigin
Две ссылки на один и тот же объект. В Java же вообще "внутри" объекта нет (или не было до недавних пор) — только ссылки на другие объекты. Ссылки на поля как таковые брать просто нельзя.
Ну просто наприер в дотнете можно сделать Monitor.Lock(object.SomeField) и это будет норм работать. А судя по том что ты говоришь про джаву так нельзя
источник

AT

Alexander Tchitchigi... in Compiler Development
Αλεχ Zhukovsky
а как на уровне языка увидеть это "нельзя"?
Нет ни синтаксиса, ни семантики для такой операции. 🤷‍♀️
источник

s

suhr in Compiler Development
Αλεχ Zhukovsky
ну это-то понятно из слова "моноид", вопрос почему видно что юнион на Map нельзя получить такой же как v -> Map
Вообще, можно же.
источник

AT

Alexander Tchitchigi... in Compiler Development
Αλεχ Zhukovsky
Ну просто наприер в дотнете можно сделать Monitor.Lock(object.SomeField) и это будет норм работать. А судя по том что ты говоришь про джаву так нельзя
В смысле? Если SomeField — это reference type, то это один фиг ссылка на какой-то левый объект целиком.
источник

P

Pavel in Compiler Development
Αλεχ Zhukovsky
Ну просто наприер в дотнете можно сделать Monitor.Lock(object.SomeField) и это будет норм работать. А судя по том что ты говоришь про джаву так нельзя
это будет работать если в SomeField ссылка на другой объект, и собственно на этом другом объекте лок и случится
источник

AT

Alexander Tchitchigi... in Compiler Development
Value types в Java нет (или не было до недавних пор).
источник

ΑZ

Αλεχ Zhukovsky in Compiler Development
Alexander Tchitchigin
Нет ни синтаксиса, ни семантики для такой операции. 🤷‍♀️
ну почему нет? Ну вот как лок например - он пишет инфу по локу в obj header
источник

ΑZ

Αλεχ Zhukovsky in Compiler Development
соответственно в дотнете вот такая операция:

using(Monitor.Lock(object.SomeField))
using(Monitor.Lock(object.OtherField)) { ... }

Вполне валидна. А в жабе по твоему описанию произойдет дедлок во второй строке
источник

ΑZ

Αλεχ Zhukovsky in Compiler Development
валютипы тут не при чем пока
источник

AT

Alexander Tchitchigi... in Compiler Development
Αλεχ Zhukovsky
ну почему нет? Ну вот как лок например - он пишет инфу по локу в obj header
> пишет инфу по локу в obj header
Это НЕ семантика лока в языке — это детали реализации.
источник

AT

Alexander Tchitchigi... in Compiler Development
Ну и, собственно, семантика локов к ссылкам "внутрь" имеет отношение лишь постольку поскольку — мне непонятно, почему Вы её приводите в пример. 🤷‍♀️
источник

ΑZ

Αλεχ Zhukovsky in Compiler Development
Alexander Tchitchigin
Ну и, собственно, семантика локов к ссылкам "внутрь" имеет отношение лишь постольку поскольку — мне непонятно, почему Вы её приводите в пример. 🤷‍♀️
как пример функцинала с помощью которого можно непосредственно наблюдать работу "ссылок внутрь"
источник

AT

Alexander Tchitchigi... in Compiler Development
Αλεχ Zhukovsky
как пример функцинала с помощью которого можно непосредственно наблюдать работу "ссылок внутрь"
Я не вижу как её можно "наблюдать" на уровне семантики языка программирования (а не деталей реализации). 🤷‍♀️
источник

AT

Alexander Tchitchigi... in Compiler Development
Если можно, то это "протечка абстракции" и её следует зарепортить в Microsoft, IMHO.
источник

ΑZ

Αλεχ Zhukovsky in Compiler Development
весь жвм это деталь реализации с точки зрения языка, значит ли это что её нельзя обсуждать?
источник

ΑZ

Αλεχ Zhukovsky in Compiler Development
или что она не имеет отношения к джаве?
источник

AT

Alexander Tchitchigi... in Compiler Development
Вопрос же в каком контексте мы обсуждаем. Если мы обсуждаем наличие/отсутствие ссылок "внутрь" объектов в ЯП, то детали реализации иррелевантны.
источник