LINUX.ORG.RU

Ответ на: комментарий от anonymous

Хотя более точный аналог твоего кода будет такой:

import std.stdio;

struct point {
  double x, y;
}

void main() {
  auto p = point(123, 1234);     // создаем экземпляр структуры
  stderr.writeln(p.tupleof[0]);  // обращаемся на чтение к члену структуры по ее порядковому номеру - 0 это point.x, 1 это point.y
  p.tupleof[0] = 321;            // обращаемся на запись к члену структуры по ее порядковому номеру, а не по имени
  // обращаемся ко всем полям структуры по их номеру
  // в компайл тайме
  static foreach(i; 0..p.tupleof.length)
    stderr.writeln(p.tupleof[i]);
  
  // с помощью трейта получаем значение идентификатора
  // поля структуры по его номеру
  stderr.writeln(__traits(identifier, p.tupleof[0]));
  stderr.writeln(__traits(identifier, p.tupleof[1]));
}

https://godbolt.org/z/iFbX45

и это самый минимум что позволяет D

anonymous ()
Ответ на: комментарий от anonymous

Тупая обезьяна, ты опять же обгадилась и ничего не показала.

p.tupleof[0]

Обезьяна - где компилтайм индекс?

Обезьяна, обращение не должно никаким образом зависеть от инстанса объекта, потому что его нет.

Обращение к полям(и мета-ифнормации) должно так же быть независимым от объекта и от прочего дерьма.

// с помощью трейта получаем значение идентификатора

Обезьяна, где доступ по по строке? К тому же - это бездарный мусор птушный.

и это самый минимум что позволяет D

Это бездарная херня. Абсолютно неважно то, что там позволяет бездарная скриптуха. Ты, отребье, даже на бездарном жабаскрипте не осилило повторить то, что тебе показали.

anonymous ()
Ответ на: комментарий от anonymous

Да ты просто клоун, который постоянно сливается. И когда сливаешься в очередной раз, ты то просто несешь бессмысленную хрень и ничего по существу не пишешь, пытаясь грязью забрызгать другого, чтобы не видели в какой куче дерьма ты сидишь. Ты думаешь я это для тебя тут писал этот код? Да ты мне даром не сдался бездарь тупой. Это для людей, которые читают тред, чтобы они могли сделать вывод.

З.Ы. в коде есть и компайл-там индекс, и доступ к мета-информации, не знаю правда что за доступ «по по строке», волнуешься чтоль и два раза предлог написал? так ты не забывай свои таблетки то принимать

anonymous ()
Ответ на: комментарий от anonymous

И что самое интересное, бездарное дерьмо пытается что-то кукарекать мне, показывая нагугленный нелепый огрызок того, что показал я. Вставленный в его бездарную скриптуху. Т.е. это в принципе смысла не имеет и ничего не показывает.

__traits(identifier, p.tupleof[0])

Это бездарный высер как аналог интроспекции в принципе не состоятелен. Причина тому проста - он не переопределяется. А если переопределяется - это бездарность будет делать руками.

К тому же оно выглядит как говно, да и работает как говно.

anonymous ()
Ответ на: комментарий от anonymous

Да ты уже слился в хлам, прими таблетки свои. И все эти фичи в D уже много лет, а ты еще вынужден использовать <experimental/{meta|compiler}> Лучше бы не позорился

anonymous ()
Ответ на: комментарий от anonymous

Отребье, бегом побежал показывать всё то о чём тебе сообщали. С чего ты решила, что ты можешь прибежать, начать блеять херню, выдавая её за аналог, а на все претензии блеять херню уровня «сливаешься», «ты ничего не написал».

З.Ы. в коде есть и компайл-там индекс, и доступ к мета-информации, не знаю правда что за доступ «по по строке», волнуешься чтоль и два раза предлог написал? так ты не забывай свои таблетки то принимать

Нет, тупая обезьяна. Его нет, о чём тебе сообщали. Мета-информация не должна зависеть от инстанса объекта. В этом её смысл, обезьяна.

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

При этом, высер обезьяны бездарной не работает с компилтайм-данными.

anonymous ()
Ответ на: комментарий от anonymous

Ты просто жесткий неадекват, конечно.

__traits(identifier, p.tupleof[0])

Это встроенная в язык конструкция позволяет сделать в одну строчку то, что ты смог уместить в несколько десятков строк используя эксперементальные фичи плюсов. Это ты, сцарь, не состоятелен. От слова - полностью несостоятелен.

anonymous ()
Ответ на: комментарий от anonymous

Да ты уже слился в хлам, прими таблетки свои. И все эти фичи в D уже много лет, а ты еще вынужден использовать <experimental/{meta|compiler}> Лучше бы не позорился

Ты совсем тупая? То, что ты высрал и meta - это совершенно разные вещи.

anonymous ()
Ответ на: комментарий от anonymous

Написал кучу говно кода, так как нормальный код писать не умеешь и теперь думаешь, что твой слив никто не увидит потому что всем будет лень проверять твой говнокод? Поверь мне, люди видят твои сливы. И в каком говне ты находишься. И видят, что ты сам по себе - говно. Не важно о каком языке речь идет - о плюсах, D или Rust. Ясно точно одно, сцарь - говно несостоятельное.

anonymous ()
Ответ на: комментарий от paramon

Точно не скажу, но во всяком случае это совсем другой уровень. На плюсах можно сделать больше.

Забавно конечно звучит - «точно не скажу, но на плюсах можно сделать больше». А как ты определяешь что больше/меньше, если точно не представляешь?

anonymous ()
Ответ на: комментарий от anonymous

Ты совсем тупая, обезьяна? То, что ты высрал - это meta::name_of(%{member}) - в том коде.

Да, действительно, десятки строк. В этом всё это бездарное дерьмо. Оно ничего не понимает, ничего не знает - она даже не может распарсить то, что ему показывают. И начинает блеять просто рандомную херню. Сравнивать свои нелепые потуги с тем, что ему показали. Причём его потуги не реализует и 1% того, что написано «там». Но он игнорирует всё и просто орёт.

Это, кстати, показательный пример.

anonymous ()
Ответ на: комментарий от anonymous

После Forth точно все поймешь. У D есть оператор, а в плюсах есть доступ к компилятору, и оттуда можно брать значения, или добавлять что то свое, модифицировать код, итд.

paramon ()
Ответ на: комментарий от paramon

После Forth точно все поймешь.

Я знаю людей, которые после Форта сидят на D и прекрасно себя чувствуют.

У D есть оператор, а в плюсах есть доступ к компилятору, и оттуда можно брать значения, или добавлять что то свое, модифицировать код, итд.

В D есть много чего для интроспекции и модификации кода и т.д., это я привел простейший пример. Который наглядно показывает насколько D опережает плюсы в этом плане.

anonymous ()
Ответ на: комментарий от anonymous

В D есть много чего для интроспекции и модификации кода и т.д., это я привел простейший пример. Который наглядно показывает насколько D опережает плюсы в этом плане.

Ты обгадился - ты ничего не показал, начал врать, обделался и убежал.

anonymous ()
Ответ на: комментарий от paramon

Кому лень читать - то, что балаболила д-обезьяна - там делается так: https://godbolt.org/z/Ey8L5c

reflexpr там по большей части используется как костыль, потому как в С++(и ни в одном языке ином) нету нормальных функций. Т.е. мы не можем в функции ничего передавать, кроме значений(причём компилтайм, в крестах).

Мы не можем передавать типы, произвольные выражения и прочее. Поэтому и существует reflexpr, который переводит всё это в значения.

И самое интересное, в этом недоязычке используется ворованные из C++ костыли, которые там были ещё со времён gnuc. Т.е. встроенные функции с иной семантикой.

И на самом деле то, что обезьяна бездарная родила - это то самое древнее дерьмо, которое есть в крестах тысячи лет. И проблема его очевидна - их не существует на уровне языка, на уровне языка невозможно написать подобную функцию. Не возможно её изменить. Не возможно ею управлять.

Поэтому в С++ по этому потуги не пошли и не идут. А реализовать такую херню - дело 10 минут. Только это никому не нужно.

anonymous ()
Ответ на: комментарий от paramon

Эта молчаливая ссылка к чему? О чем это должно сказать? Если подразумевалось, что это должно меня впечатлить, то сообщаю, что по метапрограммированию плюсы в лучшем случае когда-нибудь догонят D и то не факт. Не стоит уподобляться бездарному сцарю и писать о вещах, которых не знаешь. Я наглядно показал, насколько дишный код выразительнее говнокода сцаря.

Ну и в добавок главное, сцарь-то пытался на Раст наехать, что serde там типа компилятор вызывает - а сам-то на метаклассы съехал. Написал кучу говнокода вместо:

#[derive(Serialize, Deserialize)]
struct Person {
    name: String,
    age: u8,
    phones: Vec<String>,
}

Обгадился в очередной раз. Ну что проще использовать - портянку говнокода от сцаря на плюсах или добавить одну строчку на расте? А в Ди и вообще ничего не надо будет добавлять в таких простых случаях.

anonymous ()
Ответ на: комментарий от fsb4000

С людьми, которые оценивают языки программирования в целом на уровне круче/не круче мне сложно вести разговор. Что касается шарпа и джавы - ну очевидно, что сериализация на С#/Java лучше развита чем на плюсах b это прямо сильно заметно, а вот разница с Растом поменьше конечно. Одна строка это не портянка на 80 строк от сцаря.

anonymous ()
Ответ на: комментарий от fsb4000

Проблема не в этом. Тупая обезьяна уже была обосанна выше. Эта строчка - ворованная из С++ херня. Это было в С++ в том же odb.

Смысл в том, что для С++ не нужно добавлять никакую строчку, и не нужно добавлять никаких новых генераторов для нового поведения.

https://godbolt.org/z/SwFtEU - я добавил 0 строк, добавив классов. Обезьяна будет везде и всюду добавлять строки.

Точно так же этого достаточно для реализации произвольной логики. Без всяких внешних генераторов и прочего дерьма.

anonymous ()
Ответ на: комментарий от anonymous

лучшем случае когда-нибудь догонят D и то не факт

Никому эта бездарная скриптуха не интересна и догонять там нечего. Поэтому ты, дерьмо, валяешься в дерьме, вместе со своей скриптухой.

Ну и в добавок главное, сцарь-то пытался на Раст наехать, что serde там типа компилятор вызывает - а сам-то на метаклассы съехал. Написал кучу говнокода вместо:

Обезьяна, тупая. Я написал ровно 0 строк кода. Если ты хочешь сравнивать строки - показывай строки говнерде - чего ты их спрятал и спастил только кусок.

Обгадился в очередной раз. Ну что проще использовать - портянку говнокода от сцаря на плюсах или добавить одну строчку на расте?

Идиот, там ноль строк.

А в Ди и вообще ничего не надо будет добавлять в таких простых случаях.

Ты обгадился. Тебя послали показывать - ты убежал и не показал. Побежала, собака, показывать.

anonymous ()
Ответ на: комментарий от anonymous

Я правильно понял, что ты, падаль, уверяешь, что вот здесь - ноль строк кода?

Ты настолько обгадился, либо настолько тупой и считать в принципе не обучен. Оправдываться, собака, бегом.

anonymous ()
Ответ на: комментарий от anonymous

Не откажу себе обоссать тебя, сцарь, еще раз. Твой кусок говнокода ничего не делает. Ты посмотри на выхлоп компилятора https://godbolt.org/z/SwFtEU

        xorl    %eax, %eax
        retq

В потугах сохранить лицо, которого у тебя нет, ты начинаешь еще дальше погружаться в свое дерьмо. Что ты сказать то хотел своим кодом, который даже компилятор выкидывает нахрен, так как это говно?

anonymous ()
Ответ на: комментарий от anonymous

Не откажу себе обоссать тебя, сцарь, еще раз. Твой кусок говнокода ничего не делает.

Обезьяна тупая, он и не должен ничего в выхлопе компилятора давать. Его задача - сгенерировать мета-информацию для генератора сериализторов и прочего. Которые, в свою очередь, уже должны генерировать рантайм-код.

С какого хрена, дерьмо, компилтайм-логика должна появляться в выхлопе компилятора? Ты совсем поехавшая?

anonymous ()
Ответ на: комментарий от anonymous

Прошу прощения у лора за то, что не могу себе отказать в том, чтобы обоссать сцаря, это так смешно)))

Сцарь, ты полный дебил, каких свет не видывал, пытаясь посчитать количество строк в serde. Неужели ты настолько тупой, что не можешь понять, что тогда ты должен посчитать и количество строк в <experimental/meta> и <experimental/compiler>. Ты реально такой тупой?

anonymous ()
Ответ на: комментарий от anonymous

Что ты показал? Вот альтернатива твоему коду - https://godbolt.org/z/Ey8L5c. Выглядит намного лучше чем то что ты дал.

А растовые макросы заменяются python + libclang, выйдет так же примитивно и убого, подобные вещи уже существуют.

paramon ()
Ответ на: комментарий от anonymous

Неужели ты настолько тупой, что не можешь понять, что тогда ты должен посчитать и количество строк в <experimental/meta> и <experimental/compiler>. Ты реально такой тупой?

Тупая бездарная обезьяна - ты даже тут обгадилась. Я не должен их считать, потому как я не считаю логику, которая обеспечивает работу чего-либо. Я считаю логику, которую мне нужно добавить для структуры, что-бы мочь её сериализовать.

Да вот, у меня этой логике 0 строк. У тебя одна строка дерьма, причём строка, а не код. Никаких проверок, никакого ассиста - ничего для этого дерьма не поддерживается.

И что самое важное. Для каждой новой структуры - нужно писать дерьмо. Причём на каждую операцию. Захочешь добавить говнерде, какую-нибудь ормку - будешь писать новое дерьмо.

А я не буду, ничего писать. Ни в какой случае.

anonymous ()
Ответ на: комментарий от anonymous

С какого хрена, дерьмо, компилтайм-логика должна появляться в выхлопе компилятора?

Потому что, позорный клоун, любая программа должна давать какой-то выхлоп, чтобы народ, который читает этот тред, мог сравнить результаты запуска разных версий программы. А твоя программа ничего не возвращает, потому что ты боишься слиться снова. Ты просто балабол, который не отвечает за свои слова. И теперь ты кричишь что твоя программа там где-то генерирует мета-информацию, да только ее никто не может проверить. Т.е. мы тебе, клоуну, должны верить на слово? Я устал уже, сцарь, у меня мочевой пузырь уже пустой, я тебя обоссал уже всего с ног до головы. Ты просто больной какой-то. Дело даже не в плюсах или расте, дело в том, что неадекватный дебил, у которого иногда какие-то проблески разума появляются, но в целом - хочется плакать о том, что земля российская рожает таких ущербных. Ступай с богом.

anonymous ()
Ответ на: комментарий от anonymous

И кто тут сектант и адепт? Возможно макросы в расте сделаны не самым лучшим способом, вероятно некоторые вещи лучше выражаются в других языках. Но почему сразу раст от этого должен становиться недоязычком, а C++ всегда классный и решает все задачи максимально правильно? Если с твоим подходом к разработке ПО раст не подходит, это не значит что раст говно, просто он не для тебя, возми свой С++, если он хорошо решает твои задачи, и используй его на здоровье.

Int64 ★★★ ()
Ответ на: комментарий от Int64

И кто тут сектант и адепт?

Потому что понимания 0, а ретрансляции пропаганды - всё.

Но почему сразу раст от этого должен становиться недоязычком

По определению. Если что-то использует самый нелепые и убогие решения, если что-то использовать невозможно. И исправить это так же не возможно, но при этом данная поделка называется не лабой, а чем-то состоятельным - это недоязычок.

Если с твоим подходом к разработке ПО раст не подходит

Он не подходит ни для какого подхода. В этом и смысл. Он подходит только для сектантов, которые готовы просто верить в то, что он подходит.

это не значит что раст говно

Значит.

возми свой С++, если он хорошо решает твои задачи, и используй его на здоровье.

Не. Ты не забывай, что именно раст-сектант приходит ко мне и рассказывает, что его недоязычок подходит(и причём лучше) для задач, которые решает С++. Ты не можешь начать мазаться и рассказывать, что раст для каких-то там других задач, подходов.

Ты его таким назвал, ты его таким определил. Если ты с этим не согласен - то иди борись с пропагандой, которая это делает.

mamos3 ()
Ответ на: комментарий от fsb4000

На C# (наверное и в Java) нужно 0 строчек добавлять для сериализации/десериализации. C# круче Rust’a?

Там же разные совершенно вещи, в C++ раст и D все в compile time в ява и шарпе это рантайм рефлекция.

anonymous ()
Ответ на: комментарий от mamos3

По определению. Если что-то использует самый нелепые и убогие решения, если что-то использовать невозможно. И исправить это так же не возможно, но при этом данная поделка называется не лабой, а чем-то состоятельным - это недоязычок.

Он не подходит ни для какого подхода. В этом и смысл. Он подходит только для сектантов, которые готовы просто верить в то, что он подходит.

Ты так решил? Если ты не осилил или не понял что-то, это не проблемы языка. Мои задачи раст решает, пока что я доволен.

Не. Ты не забывай, что именно раст-сектант приходит ко мне и рассказывает, что его недоязычок подходит(и причём лучше) для задач, которые решает С++. Ты не можешь начать мазаться и рассказывать, что раст для каких-то там других задач, подходов.

Не спорю, есть много неадекватных везде, но раст вполне состоявшийся язык, которым можно и приятно использовать.

Int64 ★★★ ()
Последнее исправление: Int64 (всего исправлений: 1)
Ответ на: комментарий от Int64

Ты так решил?

Да.

Если ты не осилил или не понял что-то, это не проблемы языка.

Понимаешь в чём проблема - твои представления, твои умения, твои возможности, твои способности - даже не пол процента от моих. И как думаешь - кто из нас не осилил? И как думаешь почему ты там, а я здесь?

Мои задачи раст решает, пока что я доволен.

Задач у тебя нет, а то, что ты понимаешь под задачами - это примитивная нелепая херня, которой хватит и пхп.

Поэтому в мире и не существует примеров, где бы раст не обделался.

Не спорю, есть много неадекватных везде,

Дело не в много - это оф-позиция - это базовое свойство недоязычка - он фейковый.

но раст вполне состоявшийся язык, которым можно и приятно пользоваться.

Вот мы опять видим то, о чём я говорил. Сектант никогда не сможет предъявить доказательств, даже того, что говнораст является языком(а им он не является). Не говоря уже о какой-то состоятельности.

Т.е. где-то услышал, ничего не знает и бежит повторяет. Почему вы все, сектанты, вместо того, что-бы пилить серво - бегаете по форумам и что-то балаболите?

Ничего не написано. Вообще ничего. О какой состоятельности можно говорить, если даже компилятор ворованный.

mamos3 ()
Ответ на: комментарий от anonymous

Чем именно ты пользоваться хочешь? Я показывал выше.

Во-первых это не правильный пример - я не до конца перепастил. Возьми следующий.

Во-вторых читай то, что написано:

: invalid operands to binary expression (‘std::__1::ostream’ (aka ‘basic_ostream’) and ‘mem_ptr<double point::*>’)

Зачем ты собрался печатать mem_ptr? Почитай что он делает. Ты можешь у него спросить .name - это имя поля. Можешь спросить тип поля, тип объекта. Можешь вызвать (obj) и получить ссылку на поле, которую можешь читать/писать.

mamos3 ()
Ответ на: комментарий от mamos3

Понимаешь в чём проблема - твои представления, твои умения, твои возможности, твои способности - даже не пол процента от моих. И как думаешь - кто из нас не осилил? И как думаешь почему ты там, а я здесь?

Где там и где здесь? И как ты оценил мои способности?

Задач у тебя нет, а то, что ты понимаешь под задачами - это примитивная нелепая херня, которой хватит и пхп.

Тебе наверное виднее.

Вот мы опять видим то, о чём я говорил. Сектант никогда не сможет предъявить доказательств, даже того, что говнораст является языком(а им он не является). Не говоря уже о какой-то состоятельности.

Почему я должен предъявлять кому-то доказательства, у меня нет цели кого-то убеждать в обратном и пытаться убедить отказываться от привычных инструментов. Я лишь высказал свое мнение не более.

Т.е. где-то услышал, ничего не знает и бежит повторяет. Почему вы все, сектанты, вместо того, что-бы пилить серво - бегаете по форумам и что-то балаболите?

Я не сектант. Я пилю свой pet проект на расте (не серво конечно), мне норм.

Int64 ★★★ ()
Последнее исправление: Int64 (всего исправлений: 1)
Ответ на: комментарий от Int64

Где там и где здесь?

В раст-помойке.

И как ты оценил мои способности?

Очень просто. Они обуславливают всё исходящие от тебя, в том потуги в комментах на лоре.

Тебе наверное виднее.

Ты далее это докажешь, сам.

Почему я должен предъявлять кому-то доказательства

Ты балабол - ты должен. По определению.

у меня нет цели кого-то убеждать

Доказательства не для этого нужны. Это нелепой оправдание из дефолтной методички, не более.

в обратном и пытаться убедить отказываться от привычных инструментов. Я лишь высказал свое мнение не больше.

Нет, ты декларировал своё мнение не за бред сектанта, а за что-то состоятельное, как и за это же раст. Съехать не получится.

Я не сектант.

Любой сектант сообщит тоже самое.

Я пилю свой pet проект на расте (не серво конечно), мне норм.

Ну вот, а рассказывал, что мне не видно. Рассказывал, что не пхп-дристня, а теперь оказалось она. Оказалось, что ничего для чего используется С++ и ничего из того, для чего декларируется состоятельность раста.

И ещё одна проблема - серво никто не пилит. Как и ничего более. Каждый сектант пишет свою лабу на пхп, но при этом каждый кукарекает о том, что его примитивная скриптуха что-то может.

mamos3 ()

Давно хотел спросить

Запилил на js свой йоба-RPC поверх koa. Там, в общем, создается класс с методами, которые и есть те самые процедуры

class DogRpc {
  getFrog(id: number): Promise<Frog | RpcError> {...}
  lickFrog(id: number): Promise<boolean | RpcError> {...}
}

ну вы поняли. По HTTP прилетает JSON-чик с именем метода и массивом аргументов. Вызываю на сервере

await dogRpc['method_name'](...args);

и отправляю результат http-ответом.

Правильно я понимаю, что аналог

dogRpc['method_name'](...args);

не сделать ни в расте ни в плюсах?

anonymous ()