powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Что хотелось иметь в стандарте C++ 1024
25 сообщений из 25, страница 1 из 1
Что хотелось иметь в стандарте C++ 1024
    #39245496
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему стандарт имеет номер 1024?
Потому, что не верю, что преложенное ниже когда либо появится в C++.

Экспромтом.

Предлагаю добавить в C++ возможность сохранения мета данных об переменных и объектах.

Что бы это дало?

Возможность создания обобщенных алгоритмов для run-time работы программы.

Как это могло бы выглядеть в коде?

void *Object01;

Object01 = (int *)malloc( sizeof( INT ) );

Заметим, что компилятор "все знает" об мета данных переменной Object01, а следовательно
вполне мог бы каким-то образом сохранить мета данные об Object01.
Это позволило бы при run-time работы программы получать мета данные об объектах.

Например пишем некую функцию, которая как-то там работает с Object01
void Test( void *Object01 )

Так вот программист при создании кода для функции Test мог бы получить мета данные об переменной Object01 и ... /радоваться/.

Синтаксис функций для получения мета данных не привожу /для обсуждения это не существенно/.

PS: Повторю ранее высказанное суждение.
Появится возможность создания обобщенных алгоритмов для run-time работы программ.

Собственно интерпретаторы в какой-то мере так и поступают и предоставляют возможность
программисту получить мета данные об объекте.

Так вот приведенный выше подход позволит создавать некоторый класс а-ля скриптовых программ.
Но в отличии от последних производительность бы run-time кода не уменьшалась в отличии от скриптовых языков.
...
Рейтинг: 0 / 0
Что хотелось иметь в стандарте C++ 1024
    #39245497
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир2012Object01 = (int *)malloc( sizeof( INT ) );

что характерно - от ++ даже запаха нет
...
Рейтинг: 0 / 0
Что хотелось иметь в стандарте C++ 1024
    #39245498
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дельфийские указатели на методы иногда сильно пригодились бы...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Что хотелось иметь в стандарте C++ 1024
    #39245505
void33
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владимир2012,
авторвполне мог бы каким-то образом сохранить мета данные об Object01.
таблица метеоданных в довесок к памяти
автор производительность бы run-time кода не уменьшалась
сомнительно, на примере обращения к таблице витальных функций
гы, хотя почему бы нет.
+ отмена аллокаций на стеке
+ не обязательное освобождение памяти ( пускай уборщик мусора за нами подтирает)
впрочем я где то об этом слышал от А. Хейлсберга
...
Рейтинг: 0 / 0
Что хотелось иметь в стандарте C++ 1024
    #39245507
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир2012Предлагаю добавить в C++ возможность сохранения мета данных об переменных и объектах.
Это называется Reflection.
Владимир2012Потому, что не верю, что преложенное ниже когда либо появится в C++.
Уже давно внесено на рассмотрение комитета.
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3996.pdf
Оно пока не принято, но шансы вполне реальны.
Особенно если вы, как страстно желающий эту фичу, сделаете патч к одному из мейнстримных компиляторов, добавляющий такую возможность.
Сlang/gcc - опенсорсные, так что флаг в руки, начинайте. Нечего по форумам плакаться ))
...
Рейтинг: 0 / 0
Что хотелось иметь в стандарте C++ 1024
    #39245508
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собственно компилятору нет ни какой необходимости сохранять мета данные для всех переменных ...
Как вариант они нужны для параметром функций имеющих тип void.
В .Net Reflection то поддержано.
Скорее всего с какими-либо ограничениями этот функционал можно было бы поддержать и для C++.
...
Рейтинг: 0 / 0
Что хотелось иметь в стандарте C++ 1024
    #39245509
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyСlang/gcc - опенсорсные, так что флаг в руки, начинайте. Нечего по форумам плакаться ))Ну кое что в этом направлению ваяю, но не в виде доработки компилятора
/путей к поддержке Reflection много .../
...
Рейтинг: 0 / 0
Что хотелось иметь в стандарте C++ 1024
    #39245525
alexy_black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фибры, и блоки для них. например std::future<int,thread> - обычный будущий int, который при попытке получения блокирует поток. std::future<int,fiber> - будущий int, который при попытке получения блокирует фибру.
...
Рейтинг: 0 / 0
Что хотелось иметь в стандарте C++ 1024
    #39245588
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просьба поделиться url C++ библиотек поддерживающих мета данные.
В основном меня интересуют библиотеки обеспечивающие работу с мета данными не на этапе компиляции
/а-ля boost/, а run-time режима работы программ.

PS: Библиотек то для поддержки мета программирования валом.
Но какие вам понравились?

"По большому счету" нужно смотреть в сторону .Net и скриптовых языков, но вот хотелось бы иметь reflection в С++.
...
Рейтинг: 0 / 0
Что хотелось иметь в стандарте C++ 1024
    #39245609
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovДельфийские указатели на методы иногда сильно пригодились бы...



указатели на методы есть в с++.
...
Рейтинг: 0 / 0
Что хотелось иметь в стандарте C++ 1024
    #39245611
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivуказатели на методы есть в с++.
Способны они указывать на разные методы разных объектов лишь бы их сигнатура совпадала?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Что хотелось иметь в стандарте C++ 1024
    #39245629
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovСпособны они указывать на разные методы разных объектов лишь бы их сигнатура совпадала?
Да. Называются std::function
...
Рейтинг: 0 / 0
Что хотелось иметь в стандарте C++ 1024
    #39245635
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyДа. Называются std::function
А делать это без уродливых std::placeholders и std::bind?.. В том-то и смысл стандарта
языка чтобы ввести в сам язык конструкцию типа
Код: sql
1.
2.
3.
4.
5.
class Foo { void b(int); };

Foo foo;
std::member_function<void(int)> a = foo.b;
a(2);


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Что хотелось иметь в стандарте C++ 1024
    #39245642
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovА делать это без уродливых std::placeholders и std::bind?
Тем кому нужны шашечки - ждут, а тем кому нужно ехать, уже едут ))
...
Рейтинг: 0 / 0
Что хотелось иметь в стандарте C++ 1024
    #39245643
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так этот топик вовсе не для тех, кто уже едет. Они и обычными колбэками перебиваются. И
темплейтами для "метеоданных".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Что хотелось иметь в стандарте C++ 1024
    #39245770
alexy_black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovAnatoly MoskovskyДа. Называются std::function
А делать это без уродливых std::placeholders и std::bind?..


using namespace std::placeholders;

имхо языковая конструкция, которая позволяет сделать нечно подобное описанному излишняя. сейчас решения довольно изящные, если правильно приготовить. язык должен быть настолько простым, насколько это возможно, и не проще.
...
Рейтинг: 0 / 0
Что хотелось иметь в стандарте C++ 1024
    #39245775
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexy_blackсейчас решения довольно изящные, если правильно приготовить.

У нас чертовски разные понятия об изящности. Хоть убей, не могу считать изящной такую вот
хрень:
Код: sql
1.
2.
3.
    // store a call to a member function and object
     using std::placeholders::_1;
     std::function<void(int)> f_add_display2= std::bind( &Foo::print_add, foo, _1 );


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Что хотелось иметь в стандарте C++ 1024
    #39245805
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

А так?
Код: plaintext
1.
2.
3.
4.
5.
#define MEM_FUN0 ...
#define MEM_FUN1 ...
#define MEM_FUN2 ...

auto f_add_display2 = MEM_FUN1(foo, Foo::print_add);
...
Рейтинг: 0 / 0
Что хотелось иметь в стандарте C++ 1024
    #39245812
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Указатели на функции почему-то обходятся без таких костылей...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Что хотелось иметь в стандарте C++ 1024
    #39245816
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

К счастью, эта проблема полностью надуманная ))
...
Рейтинг: 0 / 0
Что хотелось иметь в стандарте C++ 1024
    #39245841
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир2012Предлагаю добавить в C++ возможность сохранения мета данных об переменных и объектах.

Что бы это дало?

Возможность создания обобщенных алгоритмов для run-time работы программы.
21+Сейчас работаю на фреймворке, в котором такие метаданные можно навешивать даже динамически на объект. Они сериализуются. По сути это шаблоны на классах(для метаданных) пользователя. Возможность создания обобщённых алгоритмов присутствует. Сами объекты пусты, но могут образовывать различные иерархии между собой.
Рад как слон. Но в стандарт я бы это добавлять не стал. Зачем? Иногда мне оно не надо, а оно будет сидеть в рантайме или генериться компилятором или ещё как мешаться в исходном/конечном коде.

Иной способ этого достичь: интерфейсы. Все объекты наследуешь от интерфейса с методом GetMetaData(), в функции Test зовёшь этот метод.

Не надо в стандарт добавлять то, что может быть просто реализовано на этом стандарте. Это избыточность.
...
Рейтинг: 0 / 0
Что хотелось иметь в стандарте C++ 1024
    #39245917
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbСейчас работаю на фреймворке,Как насчет "воды попить" ...?

CEMbИной способ этого достичь: интерфейсы. Все объекты наследуешь от интерфейса с методом GetMetaData(), в функции Test зовёшь этот метод.Как вариант.

Но гораздо бы проще было получать метаданные по типу sizeof( ... ) ... ... ...
Пофантазируем.
Можно было бы в компиляторе придумать директивы принуждающие компилятор создавать мета данные для class, переменных, ...
...
Рейтинг: 0 / 0
Что хотелось иметь в стандарте C++ 1024
    #39246121
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир2012Но гораздо бы проще было получать метаданные по типу sizeof( ... )

typeid?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Что хотелось иметь в стандарте C++ 1024
    #39246213
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovypeid?..
Для начала меня бы устроил доступ к данным переданным мне через void указатель просто как
Object->Value без указания перед Object типа структуры.
Т.е. при позднем связывании мне нужно средство для проверки наличия в Object свойства Value и в случае
его наличия доступа к нему.
...
Рейтинг: 0 / 0
Что хотелось иметь в стандарте C++ 1024
    #39246641
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир2012Для начала меня бы устроил доступ к данным переданным мне через void указатель просто как
Object->Value без указания перед Object типа структуры.
Т.е. при позднем связывании мне нужно средство для проверки наличия в Object свойства Value и в случае
его наличия доступа к нему.Выглядит немного абстрактно. А можно попробовать написать какой-нибудь конкретный пример. Идея в целом понятна.
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Что хотелось иметь в стандарте C++ 1024
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]