Re[14]: понимание ООП Алана Кея
От: vdimas Россия  
Дата: 24.03.23 12:50
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

V>>Фиговость проистекает из очевидного — CLI-машинка разрабатывалась не как привязанная конкретно к языку C#.

НС>Что это меняет в контексте разговора?

Ничего.
Твоё замечание о конкретике было верным, но мой пример как более общий тоже неплохо работает.


V>>Если бы привязанность была,

НС>Если бы у бабушки ...

Конкретика, конкретика...
Я отсылал коллегу к хорошо ему знакомому.
Мне этот пример не требовался.


V>>Это был просто пример, который показывает суть — не всегда требуется хранить граф AST в явном виде.

НС>Пример чего? Тебе вроде бы сказали простую вещь — либо в платформе код как данные это first class citizen, либо нет.

Expression<T> и его наследники не являются first class citizen.
С т.з. языка это "пользовательские типы данных".
В общем, требование first class citizen надуманное.
Рассуждать можно лишь о наличии такой реализации или нет.
Или о наличии нескольких реализаций.
Тебе никто не запретит расписать свою независимую иерархию-аналог, вклинившись через Рослин в компиляцию.

Вдогонку, first class citizen имеют неизвестную с т.з. языка структуру.
В том же Лиспе можно получить тело ф-ии в виде списка, но нельзя понять, как эта ф-ия на самом деле устроена унутре на уровне машинки.
А там не только тело, это специальная системная запись-символ.
Структура символа неизвестна.

Как пример — строки или делегаты в дотнете.
Имеют неизвестную с т.з. языка внутреннюю структуру.


НС>Бла-бла-бла не по теме скипнуто.


Смотря какая тема.
Если тема конкретно байт-кода дотнета — то в контексте обсуждения не принципиально.
При завязке только на C#, байт-код дотнета мог бы состоять только из помещения значений и литералов на стек и вызовов ф-ий (методов).
Это было бы точное сериализованное представление AST, взаимно однозначное с его представлением в виде графа.

Зацепились-то за "явное представление" AST.
Пахнуло дотнетом, угу. ))

А на деле, например, при компиляции функциональных языков граф вычислений никогда не живёт в памяти целиком, просто потому что этого не требуется.
Я не раз уже обращал внимание твоё, Влада2 и Вольфхаунда, что в промышленных решениях чаще используют оперативную обработку графов, вместо сливания в бутылочное горлышко и разливание затем обратно. Даже в случае ленивых языков, цепочка бета-редукции работает именно над стековой машинкой и её итерирование происходит как показал картинкой последовательность обхода графа — т.е. в сериализованном виде. При оперативной обработке граф живёт только в голове разработчика, никогда не занимая память на все свои развесистые связи целиком, где стоимость хранения связей порой выше стоимости хранения целевых данных. ))
Отредактировано 24.03.2023 13:02 vdimas . Предыдущая версия . Еще …
Отредактировано 24.03.2023 12:58 vdimas . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.