Size: a a a

Compiler Development

2021 February 08

DB

Danil Braindead in Compiler Development
GC с алгоритмом подсчета ссылок не справляется с циклическими ссылками, поэтому с таким подходом вы вряд ли захотите его использовать в приложениях, где есть UI компоненты в виде объектов в памяти(те же винформы)
источник

M

MrSmith in Compiler Development
Тут главное что можно будет писать мвп на том же языке что и основную прогу. Типа как жс и тс
источник

M

MrSmith in Compiler Development
Danil Braindead
GC с алгоритмом подсчета ссылок не справляется с циклическими ссылками, поэтому с таким подходом вы вряд ли захотите его использовать в приложениях, где есть UI компоненты в виде объектов в памяти(те же винформы)
Да фиг с ним
источник

M

MrSmith in Compiler Development
Придумаем чего
источник

M

MrSmith in Compiler Development
Главное же скорость
источник

M

MrSmith in Compiler Development
Плюнул в потолок поставил "подруби гц" встал с утра на свежу голову проанатировал лайфтаймами
источник

DB

Danil Braindead in Compiler Development
Victor Shamparov
Там всем становится очень грустно...
Не совсем, например, в дотнете(та и в jvm), это было решено через алгоритм reference handling, правда я не найду ссылки, где о нем можно почитать более подробно, надо искать по локальным реализациям
источник

M

MrSmith in Compiler Development
Мысль такая два объекта с перекрёстным ссылками на самом деле можно рассматривать как один объект с несколькими ссылками из кода
источник

AT

Alexander Tchitchigi... in Compiler Development
Danil Braindead
Не совсем, например, в дотнете(та и в jvm), это было решено через алгоритм reference handling, правда я не найду ссылки, где о нем можно почитать более подробно, надо искать по локальным реализациям
Так там не то что арифметики на указателях, но и ссылок "внутрь" объектов нет. Примерно по этим самым причинам. 🤷‍♀️
источник

AK

Andrei Kurosh in Compiler Development
Alexander Tchitchigin
Так там не то что арифметики на указателях, но и ссылок "внутрь" объектов нет. Примерно по этим самым причинам. 🤷‍♀️
в C# есть арифметика над указателями
источник

AT

Alexander Tchitchigi... in Compiler Development
Andrei Kurosh
в C# есть арифметика над указателями
unsafe? 😉
источник

AK

Andrei Kurosh in Compiler Development
хотя и в довольно ограниченном виде - внутри блока unsafe и fixed
источник

DB

Danil Braindead in Compiler Development
Andrei Kurosh
хотя и в довольно ограниченном виде - внутри блока unsafe и fixed
Все что не хватает есть в System.Runtime.InteropServices
источник

DB

Danil Braindead in Compiler Development
Alexander Tchitchigin
Так там не то что арифметики на указателях, но и ссылок "внутрь" объектов нет. Примерно по этим самым причинам. 🤷‍♀️
Если честно, я не очень понимаю, что есть ссылка "внутрь" обьекта
источник

AT

Alexander Tchitchigi... in Compiler Development
Danil Braindead
Если честно, я не очень понимаю, что есть ссылка "внутрь" обьекта
Типа
typedef struct {
  int field1;
  int field2;
} foo;

foo f;
int *p = (int *)((void *)&f + sizeof(int)); // p points to f.field2

Плюс-минус синтаксис и приоритеты.
источник

VS

Victor Shamparov in Compiler Development
Alexander Tchitchigin
Типа
typedef struct {
  int field1;
  int field2;
} foo;

foo f;
int *p = (int *)((void *)&f + sizeof(int)); // p points to f.field2

Плюс-минус синтаксис и приоритеты.
Или ещё проще:
typedef struct {
  int field1;
  int field2;
} foo;

foo f;
int *p = &(f.field2);
источник

AT

Alexander Tchitchigi... in Compiler Development
Victor Shamparov
Или ещё проще:
typedef struct {
  int field1;
  int field2;
} foo;

foo f;
int *p = &(f.field2);
Я ж говорю: не помню синтаксис. 🤷‍♀️😁
источник

M

MrSmith in Compiler Development
Не помню в чем проблема такого синтаксиса, но вроде так лучше не писать
источник

M

MrSmith in Compiler Development
Потом толи явно не укажешь толи конфликт какой-то
источник

DB

Danil Braindead in Compiler Development
В дотнете, да и в jvm, у обьектов в заголовке есть указатель на обьект-тип, то есть условный malloc(sizeof(foo)), если бы не было сторогой типизации, то как и в примере выше в приципе любой обьект можно было бы реинтепретир кастить к нужному типу(теряется смысл типизации)
источник