Оберон-клуб «ВЄДАsoft»

Твердыня модульных языков
Текущее время: 23 фев 2020, 03:29

Часовой пояс: UTC + 2 часа




Начать новую тему Ответить на тему  [ Сообщений: 31 ]  На страницу 1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения: Слабые указатели
СообщениеДобавлено: 23 янв 2018, 18:23 
Не в сети

Сообщения: 338
Если у кого-то есть вопросы о применениях слабых указателей, то вот обсуждение в группе разработки Golang.
https://groups.google.com/forum/#!topic ... YWxjT2v6ps


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Слабые указатели
СообщениеДобавлено: 23 янв 2018, 19:07 
Не в сети
Администратор
Аватара пользователя

Сообщения: 86
Почему бы не воспользоваться википедией?))
Идея слабой ссылки мне не нравится. Много проблем было из-за этого у питона со связкой Gtk. Pidgin периодически падал с диким грохотом несколько лет. С другого конца мне это чем-то напоминает поведение Си: его не просили, а он сам молча приводит типы.
Если опираться на приводимый механизм -- то подсчёт, имхо, проще в реализации и дешевле стоит. Чем сборщик будет лазить по софтине в попытках выяснить на предмет использования -- куда как проще посмотреть на число с обозначением количества ссылок на текущий объект.
Ну, и использование слабых ссылок в коллекциях мне совсем непонятно. Если объект есть -- то он есть. Если его нет -- то его просто нет в коллекции. Постоянно мониторить члены коллекции на NULL можно, но зачем, если штаны выглядят одинаково?

_________________
Действия профессионала предсказуемы. Но в мире полно любителей!


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Слабые указатели
СообщениеДобавлено: 23 янв 2018, 20:15 
Не в сети

Сообщения: 338
один вариант использования - здесь:

https://groups.google.com/d/msg/golang- ... 1NNFlHQ1oJ
Цитата:
I wrote a Java tool+package that keeps track of every object created while the program runs and asserts some preconditions whenever an object is accessed. Of course, memory would be extremely wasted if I kept them all in a map with strong references for the keys, so I instead used a WeakHashMap, allowing the garbage collector to clean things up in a typical fashion. Using explicit reference counting would've been painful for that.


То, что там у Питона что-то не работало - это не обязательно проблемы самих слабых ссылок - это могут быть проблемы самого Питона. Вообще, нет ничего удивительного в нестабильной работе связки между С и языком с автоматическим управлением памятью, и для этого слабых ссылок не нужно - оно просто рождено, чтобы плохо работать :)

В Java, C# и лиспах слабые ссылки работают. Про Golang - видимо, решили не включать. Проблемы (производительности, а не надёжности) обсуждаются в той же теме.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Слабые указатели
СообщениеДобавлено: 24 янв 2018, 05:06 
Не в сети

Сообщения: 108
prospero78su писал(а):
Почему бы не воспользоваться википедией?))
Идея слабой ссылки мне не нравится.


Это не вопрос личных предпочтений, это вопрос эффективности решений :) Пример с коллекцией в википедии действительно дурацкий и не имеющий особого смысла без контекста. Вот тебе другой, напишу на обероне, может понятнее будет:
Код: "OBERON"
  1.  
  2. VAR window: WEAK POINTER TO Window;
  3.  
  4. PROCEDURE OpenWindow();
  5. BEGIN
  6. IF window = NIL THEN
  7. window := MakeNewWindow();
  8. END;
  9. window.Activate();
  10. END OpenWindow;
  11.  


Можно придумать кучу решений этой задачи без слабых ссылок, все они будут сложнее, чем приведенное решение.

prospero78su писал(а):
Много проблем было из-за этого у питона со связкой Gtk. Pidgin периодически падал с диким грохотом несколько лет.


Это не проблема слабых ссылок как идеи...

prospero78su писал(а):
С другого конца мне это чем-то напоминает поведение Си: его не просили, а он сам молча приводит типы.


Тебе везде Си мерещится ;) Каким боком он здесь?

prospero78su писал(а):
Если опираться на приводимый механизм -- то подсчёт, имхо, проще в реализации и дешевле стоит.


Известные мне реализации слабых ссылкок дополняют реализацию подсчета ссылок, каких-то особых дополнительных накладных расходов там не требуется, они даже включены в стандартную библиотеку С++11.
Как поддержка слабых ссылок сказывается на ЯП с GC не скажу, не разбирался.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Слабые указатели
СообщениеДобавлено: 24 янв 2018, 08:15 
Не в сети
Администратор
Аватара пользователя

Сообщения: 86
Цитата:
Можно придумать кучу решений этой задачи без слабых ссылок, все они будут сложнее, чем приведенное решение.

Да ладно. Проверка на NIL -- это эффективней?))
Если ты проверяешь на NIL -- значит ты не знаешь в каком состоянии находится система. Значит ты не можешь ею управлять, значит прощай надёжность))

Си тут как раз при том, что при неявном приведении ты уже не знаешь, не представляешь какого типа у тебя переменная. Неявное приведение не так страшно, как висячая ссылка, но тоже приятного мало.

_________________
Действия профессионала предсказуемы. Но в мире полно любителей!


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Слабые указатели
СообщениеДобавлено: 24 янв 2018, 08:56 
Не в сети

Сообщения: 108
prospero78su писал(а):
Цитата:
Можно придумать кучу решений этой задачи без слабых ссылок, все они будут сложнее, чем приведенное решение.

Да ладно. Проверка на NIL -- это эффективней?))


Покажи твой код. Под "эффективным решением" я конечно имел ввиду сумму факторов: читабельность + такты CPU + архитектура.

prospero78su писал(а):
Если ты проверяешь на NIL -- значит ты не знаешь в каком состоянии находится система. Значит ты не можешь ею управлять, значит прощай надёжность))


Это утверждение ошибочно настолько же, насколько расплывчато.

prospero78su писал(а):
Си тут как раз при том, что при неявном приведении ты уже не знаешь, не представляешь какого типа у тебя переменная. Неявное приведение не так страшно, как висячая ссылка, но тоже приятного мало.


Какие приведения? Какие висячие ссылки? Мы вообще говорим про слабые указатели, которых в Си нет в принципе. Ближайший к Си язык со слабыми указателями это С++, в котором с типами все предельно строго.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Слабые указатели
СообщениеДобавлено: 24 янв 2018, 12:16 
Не в сети
Администратор
Аватара пользователя

Сообщения: 86
Цитата:
Покажи твой код. Под "эффективным решением" я конечно имел ввиду сумму факторов: читабельность + такты CPU + архитектура.

Ты забыл самый главный фактор -- человека.

Код я тебе не покажу, по причине того, что у меня не возникало необходимости в слабых ссылках, да и зачем они мне нужны, если есть строго типизированные?)) По крайней мере, многочисленные грабли ассерты отлавливают в период разработки и опытной эксплуатации 99,99% багов при использовании подсчёта ссылок даже в высокодинамичной системе. Зачем мне отказываться от инструмента, который работает?)

Цитата:
Какие приведения? Какие висячие ссылки? Мы вообще говорим про слабые указатели, которых в Си нет в принципе. Ближайший к Си язык со слабыми указателями это С++, в котором с типами все предельно строго.

Т.е. сборщиков мусора для Си нет, я правильно понимаю?))

61 млн. результатов, на минуточку

_________________
Действия профессионала предсказуемы. Но в мире полно любителей!


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Слабые указатели
СообщениеДобавлено: 24 янв 2018, 21:00 
Не в сети

Сообщения: 108
prospero78su писал(а):
Код я тебе не покажу, по причине того, что у меня не возникало необходимости в слабых ссылках, да и зачем они мне нужны, если есть строго типизированные?))


Код я тебе уже привел. Даже специально на обероне (но с выдуманным WEAK POINTER TO). Логика тебе понятна из этого кода или надо еще по-русски расписать? Напиши свою реализацию такой же логики без использования WEAK POINTER TO и мы обсудим эффективность твоего решения.

prospero78su писал(а):
По крайней мере, многочисленные грабли ассерты отлавливают в период разработки и опытной эксплуатации 99,99% багов при использовании подсчёта ссылок даже в высокодинамичной системе. Зачем мне отказываться от инструмента, который работает?)


Ох. Причем здесь ассерты? Утечки памяти (которые помогают разрулить слабые указатели) тебе ассерты помогут поймать? Или кто-то призывал отказаться от ассертов?

prospero78su писал(а):
Цитата:
Какие приведения? Какие висячие ссылки? Мы вообще говорим про слабые указатели, которых в Си нет в принципе. Ближайший к Си язык со слабыми указателями это С++, в котором с типами все предельно строго.

Т.е. сборщиков мусора для Си нет, я правильно понимаю?))


Неправильно. Причем здесь GC? Слабые указатели, как концепция, ортогональны наличию GC. Они работают как с GC (в джаве и т.п.) так и с подсчетом ссылок (в стандартной библиотеке С++).


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Слабые указатели
СообщениеДобавлено: 25 янв 2018, 22:34 
Не в сети

Сообщения: 338
Самый ржач состоит в том, что я полез смотреть, что есть в сборщике мусора ББ и нашёл там финалайзеры (просто ищите слово Finalizer в модуле Kernel). Они нужны для COM. Обычно финалайзеры и слабые ссылки в пачке идут, хотя я не уверен, что одно выражается через другое.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Слабые указатели
СообщениеДобавлено: 25 янв 2018, 23:26 
Не в сети

Сообщения: 108
budden писал(а):
Самый ржач состоит в том, что я полез смотреть, что есть в сборщике мусора ББ и нашёл там финалайзеры (просто ищите слово Finalizer в модуле Kernel). Они нужны для COM. Обычно финалайзеры и слабые ссылки в пачке идут, хотя я не уверен, что одно выражается через другое.


Финалайзеры идут в комплекте с GC. Не очень понял, что тебя так удивило.


Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 31 ]  На страницу 1, 2, 3, 4  След.

Часовой пояс: UTC + 2 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
© VEDAsoft Oberon Club