Автор Тема: Safe Objective Language  (Прочитано 14932 раз)

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Safe Objective Language
« Ответ #45 : Декабрь 04, 2012, 04:15:08 pm »
Да, если хочется падение (или исключение какое) ну воткни ты assert(obj!=NONE) и все.

И чем это будет отличаться от "null reference exception"? Кроме того, что но  является дополнительной сущностью, требующей поддержки со стороны компилятора, рантайма и программиста ;)

Равно как и искоренить ub у null'а в сях. Это ж не дело, когда оно долгое время с нулями как-то пашет, а потом внезапно на том же обращении к нулю падает.

Эффективность здорово просядет. Собственно даже в управляемых языках "null reference exception" возникает как результат трансляции аппартного исключения, а не софтварной проверки на NULL. А понятия "просто разименования" (*pointer) без доступа по такому указателю - там просто нет.

Berserker

  • Sr. Member
  • ****
  • Сообщений: 254
    • Просмотр профиля
Re: Safe Objective Language
« Ответ #46 : Декабрь 04, 2012, 05:59:55 pm »
Цитировать
Спасибо. Может еще кофе не дошло, но я все равно не понял как:
- разруливаются циклические ссылки
- удается избежать доступа к счетчику при копировании ссылок (в том числе доступа на запись) в многопоточной/процессной среде.
Давно это тему изучал. Сейчас начал поднимать работы и не нашёл что-то отложившегося в памяти преимущества. Циклические ссылки разруливаются через добавления в очередь адреса памяти при уничтожении любого указателя на него. Когда-нибудь он будет проверен на цикличность.

Цитировать
Собственно даже в управляемых языках "null reference exception" возникает как результат трансляции аппартного исключения, а не софтварной проверки на NULL
Это уже не обращение к нулевому адресу в таком случае. Для записей будет умеренное по размеру смещение от 0, для динамических массивов смещение может вывести итоговый адрес в зону, не похожую ну null. Так что кошерно всё же TEST EAX, EAX => JZ Exception.