Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Что хотелось иметь в стандарте C++ 1024 / 25 сообщений из 25, страница 1 из 1
28.05.2016, 21:04
    #39245496
Владимир2012
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что хотелось иметь в стандарте C++ 1024
Почему стандарт имеет номер 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
28.05.2016, 21:11
    #39245497
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что хотелось иметь в стандарте C++ 1024
Владимир2012Object01 = (int *)malloc( sizeof( INT ) );

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

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

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



указатели на методы есть в с++.
...
Рейтинг: 0 / 0
29.05.2016, 12:23
    #39245611
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что хотелось иметь в стандарте C++ 1024
MasterZivуказатели на методы есть в с++.
Способны они указывать на разные методы разных объектов лишь бы их сигнатура совпадала?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
29.05.2016, 13:26
    #39245629
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что хотелось иметь в стандарте C++ 1024
Dimitry SibiryakovСпособны они указывать на разные методы разных объектов лишь бы их сигнатура совпадала?
Да. Называются std::function
...
Рейтинг: 0 / 0
29.05.2016, 13:53
    #39245635
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что хотелось иметь в стандарте C++ 1024
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
29.05.2016, 14:17
    #39245642
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что хотелось иметь в стандарте C++ 1024
Dimitry SibiryakovА делать это без уродливых std::placeholders и std::bind?
Тем кому нужны шашечки - ждут, а тем кому нужно ехать, уже едут ))
...
Рейтинг: 0 / 0
29.05.2016, 14:21
    #39245643
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что хотелось иметь в стандарте C++ 1024
Ну так этот топик вовсе не для тех, кто уже едет. Они и обычными колбэками перебиваются. И
темплейтами для "метеоданных".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
29.05.2016, 20:53
    #39245770
alexy_black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что хотелось иметь в стандарте C++ 1024
Dimitry SibiryakovAnatoly MoskovskyДа. Называются std::function
А делать это без уродливых std::placeholders и std::bind?..


using namespace std::placeholders;

имхо языковая конструкция, которая позволяет сделать нечно подобное описанному излишняя. сейчас решения довольно изящные, если правильно приготовить. язык должен быть настолько простым, насколько это возможно, и не проще.
...
Рейтинг: 0 / 0
29.05.2016, 21:13
    #39245775
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что хотелось иметь в стандарте C++ 1024
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
29.05.2016, 23:24
    #39245805
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что хотелось иметь в стандарте C++ 1024
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
29.05.2016, 23:48
    #39245812
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что хотелось иметь в стандарте C++ 1024
Указатели на функции почему-то обходятся без таких костылей...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
30.05.2016, 00:10
    #39245816
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что хотелось иметь в стандарте C++ 1024
Dimitry Sibiryakov,

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

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

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

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

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

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

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

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


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