@ProCxx

Страница 2023 из 2477
Viktor
02.05.2018
23:12:25
Хотя насчет дешего я погоречился.... Вызовы функций через рефлексию обычно супер дорогие, их же искать еще надо

Sergey
02.05.2018
23:12:27
> ты можешь вызывать извне функции или переменные по строчному литералу. не обязательно же, много чего можно делать с помощью интроспекции не задумывался насчёт вызова функции по строке, если честно (== не считаю это самым очевидным кейсом)

Viktor
02.05.2018
23:13:47
Ну в той сфере в которой я тусую ревлексия обычно используется для вызова чего то по имени извне

Sergey
02.05.2018
23:13:53
А так она достаточно дешего прикручивается к С++. Можешь посмотреть как это сделано в UE4
[ue4 doc] > You need to annotate any types or properties that you want to be visible to the reflection system, and Unreal Header Tool (UHT) will harvest that information when you compile your project.

Google
Sergey
02.05.2018
23:14:02
звучит супер здорово (нет)

короче, я о чём

эта вся рефлексия, это дополнительный рантайм

Viktor
02.05.2018
23:14:22
Ну да

Sergey
02.05.2018
23:14:26
который так не любят (и будут не любить) в c++

[ue4 doc] > You need to annotate any types or properties that you want to be visible to the reflection system, and Unreal Header Tool (UHT) will harvest that information when you compile your project.
когда у тебя нету виртуалки, твои возможности интроспекции сильно ограничены (о чём и намекает дока ue4) прекомпилированными частями

короче, считаю что нинужно

энтерпрайз не будет переходить на c++23 из-за этого

Viktor
02.05.2018
23:18:30
ну как ты думаешь почему в java integer весит не 4 байта а 16?

рефлексия всегда дорого

Sergey
02.05.2018
23:18:53
энтерпрайз не будет переходить на c++23 из-за этого
а если очень хочется в компилируемое метапрограммирование, то гланьте на Растовые macros и procedural macros

не знал, если честно

Google
Sergey
02.05.2018
23:19:39
думал он 8 (от - 2^32 до +2^32 -1)

Viktor
02.05.2018
23:20:17
в 32 битных системах 4, в 64 8 ?

Sergey
02.05.2018
23:20:29
??

Viktor
02.05.2018
23:21:05
в 32 битных системах 4, в 64 8 ?
А нет, фигню несу. на int это не влияет. на float и double вроде только

мне кажется это не из-за рефлексии
Ну там как минимум для каждого ЧЕГО ТО хранится хеш код уникальный

Sergey
02.05.2018
23:21:31
звучит очень сомнительно

рефлексия в джаве достигается за счёт JVM, а не самой джавы

Viktor
02.05.2018
23:21:59
Sergey
02.05.2018
23:22:19
8 байт это 2^64
а я что не так сказал?

Viktor
02.05.2018
23:22:37
а я что не так сказал?
Пора спать кажется

Sergey
02.05.2018
23:22:39
так во всех виртуалках делается (насколько я знаю)

(по крайней мере в лисповой и питоновской точно)

Viktor
02.05.2018
23:23:43
про питон знаю только что это С ?

надо погуглить

Sergey
02.05.2018
23:23:53
Viktor
02.05.2018
23:24:15
Ну в принципе код питона вызывает код на С

Sergey
02.05.2018
23:24:24
виртуалка на С
(+ там есть разные реализации)

Google
Viktor
02.05.2018
23:25:17
э, ну так то да

в наше время почти все в какой то степени на Си можно сказать

Я скорее говорил про это https://habr.com/post/44520/ ну и да, виртуалка

Sergey
02.05.2018
23:29:19
ну т.е. для того, чтобы была нормальная интроспекция, нужно сделать виртуалку, которая будет исполнять Си и/или С++?)

Viktor
02.05.2018
23:30:54
Что ты считаешь нормальной? Дотстаточно дешевая? или что бы не нужно было ручками тыкать все?

Sergey
02.05.2018
23:31:08
конеш чтобы можно было всё тыкать ручками

Viktor
02.05.2018
23:31:08
Или все?)

Alexander
02.05.2018
23:31:19
Sergey
02.05.2018
23:31:26
так так так

Alexander
02.05.2018
23:31:35
потому что в плюсах будет compile-time рефлексия

Sergey
02.05.2018
23:31:48
так воооот

Viktor
02.05.2018
23:32:02
О, кажется умный человек наконец то пришел

Sergey
02.05.2018
23:32:24
потому что в плюсах будет compile-time рефлексия
мы тут уже обсудили, что она будет лимитирована определённым пулом выбранных полей/пропертей

согласен?

Viktor
02.05.2018
23:32:50
потому что в плюсах будет compile-time рефлексия
Такая кстати есть в D (потомок С++ так сказать)

Alexander
02.05.2018
23:33:09
мы тут уже обсудили, что она будет лимитирована определённым пулом выбранных полей/пропертей
нет. Можно будет в компайлтайме издеваться над всеми полями\методами

Sergey
02.05.2018
23:33:17
подожди

а какой смысл в компайл тайме это делать?

это как раз метапрограммирование, а не рефлексия

Alexander
02.05.2018
23:33:51
а какой смысл в компайл тайме это делать?
написание сериализатора в JSON

Google
Sergey
02.05.2018
23:34:08
но это же не рефлексия

а чистое метапрограммирование

рефлексия это про то, что можно тыкать всё в рантайме

Alexander
02.05.2018
23:35:05
в рантайме никакого гогна не будет

Sergey
02.05.2018
23:36:47
забавно (в моей практике это всегда называли макросами)

Admin
ERROR: S client not available

Sergey
02.05.2018
23:37:57
ну раз так, то получается я действительно не прав и на этом можно закончить спор

PRoSToC0der
02.05.2018
23:38:04
интересно, есть ли что-нибудь по поводу runtime рефлексии, типа кодогенерации

Alexander
02.05.2018
23:38:52
забавно (в моей практике это всегда называли макросами)
но макросы это про другое ? мы сможем делать все эти вещи без макросов ?

сейчас бы кодогенерацией заниматься без VM

PRoSToC0der
02.05.2018
23:39:30
нет, очевидно же
значит пока что придётся юзать всякие jitasm и libgccjit

Alexander
02.05.2018
23:39:34
кусок шланга к программе подтягиваем

значит пока что придётся юзать всякие jitasm и libgccjit
боюсь представить, зачем такое надо

Sergey
02.05.2018
23:39:45
но макросы это про другое ? мы сможем делать все эти вещи без макросов ?
(да, я в основном про растовые и лисповые макросы, которые позволяют в compile time изменять AST) (не про #define)

PRoSToC0der
02.05.2018
23:40:17
боюсь представить, зачем такое надо
вообще пока что единственный кейс у меня это оптимизация

Alexander
02.05.2018
23:40:23
(да, я в основном про растовые и лисповые макросы, которые позволяют в compile time изменять AST) (не про #define)
ааа, ну вот, у нас тоже такое будет. только доступа прям к самому AST мы не получим... что-то не до АSTшное

так как AST стандартизировать очень сложно из-за всяких мудне-компиляторов (привет msvc)

Google
Alexander
02.05.2018
23:41:27
к сожалению с крестовым кодом нет, насколько я знаю, нормального JIT. Хотя вот Graal VM вроде умеет в кресты

но я не пробовал, так что не могу ничего сказать. Кстати... мб сейчас попробую

PRoSToC0der
02.05.2018
23:42:00
для этого придумали PGO
проблема когда бинарь надо выдать одинаковый всем, а конфиг у всех разный

Alexander
02.05.2018
23:42:21
Graal же вроде просто поверх LLVM стоит
не знаком досконально с устройством, но вроде бы да

PRoSToC0der
02.05.2018
23:42:42
ну так не выдавай бинарь одинаковый, лол
ну вот тут только остаётся компилить код на стороне клиента

Sergey
02.05.2018
23:43:15
не знаком досконально с устройством, но вроде бы да
да я тоже поверхностно, лишь основные концепты /ушёл

Alexander
02.05.2018
23:43:25
ну вот тут только остаётся компилить код на стороне клиента
1) Есть кросскомпиляция 2) Есть -march 3) Есть -mtune 4) Держат свои билд-машины с нужными конфигурациями

если нужна оптимизация аки JIT, то тут раним на наиболее типпичных кейсах, собираем стату и PGO

PRoSToC0der
02.05.2018
23:44:24
1) Есть кросскомпиляция 2) Есть -march 3) Есть -mtune 4) Держат свои билд-машины с нужными конфигурациями
вообще я несколько про другие конфиги, но сбилдить код под самые частые вариации конфигов тоже вариант

Alexander
02.05.2018
23:44:26
вон в GCC 8.1 улучшили

так в идеале, конечно, пользователю на машину накатить компилятор, сбилдить у него с маршем и PGO и отдать бинарь ?

OTR ?
03.05.2018
05:23:50
У кого нибудь есть книга в эл виде https://books.google.ru/books?id=taJSDwAAQBAJ&printsec=frontcover&dq=С%2B%2B17+STL.+Стандартная+библиотека+шаблонов&hl=ru&sa=X&ved=0ahUKEwjXiPaq5ujaAhUD1SwKHcxyA4IQ6AEIJzAA#v=onepage&q=С%2B%2B17%20STL.%20Стандартная%20библиотека%20шаблонов&f=false

Страница 2023 из 2477