|
|
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
Печенкин, не вполне понятно, зачем когогенерировать, например, паскаль. и языков с макросами хвалят немерле. А еще можно посмотреть Осло ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2009, 16:12:01 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
Печонкин, насколько я понимаю, то сама идея хорошая - сделать что-то универсальное с определённым стандартом. Но именно в данном случае возникает вопрос для чего? Ну например, если бы у меня был выбор какой код юзать, написанный на делфях или на С++, то я бы выбрал второй, и думаю так бы поступил любой (так как если оба кода дают одинаковую функциональность, то лучше брать тот, который более компактный и при компиляции даёт меньшие обьёмы). И ещё один минус данной идеи. Даже при том, что я не очень хорошо умею программировать, я бы отдал предпочтение написать код на чистых делфях, чем писать код на непонятном мне языке (который сначала надо бы выучить и понять), а потом ещё и надеяться, что этот код будет преобразован именно в то, что я имел ввиду при написании. И третье... Мне интересно, каким образом будут формироваться шаблоны для того же делфи (паскаля). Язык с довольно жёсткой структурой и обьявление чего-либо где-попало не подойдёт. Ну взять например импорт некой функции из какой-либо длл (написаной самим программистом) с последующим использованием её в программе. Если я правильно понял работу данного метаязыка, то мне эта задача кажется очень трудоёмкой, и потому достаточно бесполезной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2009, 16:13:18 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
SQL_LamerПеченкин, У меня чисто ламерский вопрос возник к гениальному автору. Положим, я в с++ ни бум - бум. Зато я получил в распоряжение этот твой чудный метаязык. Могу я на плюсах забацать, ну скажем, банальный блокнот? В идеале метаязык абстрагирован от конкретного языка. Но сам ты написать не сможешь (ибо не бум-бум принципиально), потому как конструкции метаязыка тебе нужно будет сначала описать в виде конечных шаблонов на C++ (в шаблон подставляются лишь конкретные имена переменных, фукнций и прочего, к примеру IF(A, B) буде преобразована в сишную if (a == b)). Ясен пончик, что для любого программера средней руки это простая задача, но ламер это даже не кодер, не то что не программер. Хотя если кто-то за тебя шаблоны нагенерит, то да, ты сможешь написать. Наверное. SQL_LamerИ второй, еще более ламерский вопрос: Положим, я кул хакер с++, для чего мне писать на метасуперпуперязыке, чтобы в результате получить те же исходники на плюсах? Потому что для JVM нет приличной реализации C++. Кроме того, ты, к примеру, решил написать некую библиотеку, скажем так, libjpeg22. Но хочешь, чтобы ей пользоваелись и программисты на Delphi, и на Java и на C++, притом ты не хочешь навязывать Delphi-стам obj модули, а яверов заставлять пользоваться всякую чушь (для них) вроде JNI. Каждой группе разработчиков ты будешь поставлять версию библиотеки на том языке, на котором они работают, сгенерированную из метаязыка. Написал один раз - получил версии на всех языках, для которых есть шаблоны трансляции. SQL_Lamerзы. Поменьше экспрессии, пжалста ;) Ты имеешь в виду поменьше торможения? Так это не ко мне. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2009, 16:13:21 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
beluginПеченкин, не вполне понятно, зачем когогенерировать, например, паскаль. Потому что есть программисты на паскале. Это парадоксально? beluginи языков с макросами хвалят немерле. Смотрел, не то. beluginА еще можно посмотреть Осло Ок, гляну, спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2009, 16:14:48 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
ПрограмёрПечонкин, насколько я понимаю, то сама идея хорошая - сделать что-то универсальное с определённым стандартом. Но именно в данном случае возникает вопрос для чего? Ну например, если бы у меня был выбор какой код юзать, написанный на делфях или на С++, то я бы выбрал второй, и думаю так бы поступил любой (так как если оба кода дают одинаковую функциональность, то лучше брать тот, который более компактный и при компиляции даёт меньшие обьёмы). А я вот не думаю. И код на C++ не стал бы использовать принципиально, максимум, что рассмотрел бы - это плоские декларации в DLL, и не более того. С++ - это никчемный тупик эволюции в некоторых областях (в RAD - на 100%). У яверов умоминание C++ вызывает аналогичную идиосинкразию. Програмёр И ещё один минус данной идеи. Даже при том, что я не очень хорошо умею программировать, я бы отдал предпочтение написать код на чистых делфях, чем писать код на непонятном мне языке (который сначала надо бы выучить и понять), а потом ещё и надеяться, что этот код будет преобразован именно в то, что я имел ввиду при написании. Это уже твои личные проблемы. Задача стоит именно кроссязыковой (мультиязыковой) библиотеки. Кому как удобно писать, сначала на Delphi, потом на метаязыке (с проверкой результата с оригиналом) - это уже личные трудности разработчика. Конечный результат (исходный текст) должен быть на метаязыке. А отладку делай на том языке, на котором тебе больше нравится (сгенерил, запустил в IDE, нашел баг, исправил в метаязыке, перегенерил). Напряжно, да, но иного способа сделать именно независимую от конкретного языка библиотеку я не вижу. ПрограмёрИ третье... Мне интересно, каким образом будут формироваться шаблоны для того же делфи (паскаля). Ты с m4 вообще не знаком? И понятие параметризированного макроса является откровением? ПрограмёрЯзык с довольно жёсткой структурой и обьявление чего-либо где-попало не подойдёт. Ну взять например импорт некой функции из какой-либо длл (написаной самим программистом) с последующим использованием её в программе. Если я правильно понял работу данного метаязыка, то мне эта задача кажется очень трудоёмкой, и потому достаточно бесполезной. Логически бессвязный бред. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2009, 16:20:33 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
Вообще в соцприроде бывает, например, чтобы эстонцу сообщить что-то азербайджанцу - с эстонcкого на русский с русского на азербайджанский. Эст зовет другого эста, знающего русский, и тот переводит на русский. Азер зовет другого азера, которой знает русский, и тот переводит с русского тому азеру. А можно обучить всех эсперанто. Но эсператно всегда беднее, чем любой натуральный язык. Вот обедненный-усеченный английский в мире вроде виртуальной машины на всех официальных платформах. И что - всем думать на убого-усеченно английском, а потом переводить в родной язык? В каждом языка своя уникальная ценность в чем-то, чего нет в другом. Всяких суперменов губили несупермэны в деталях, которые у несуперменов были лучше. Сделать такой супервыразительный суперCLI и писать на суперCLI Net и Mono, потом переводя в Python или C#? СуперCLI уже не нужны будут Python или C#. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2009, 17:50:03 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
AlexandrPlusВообще в соцприроде бывает, например, чтобы эстонцу сообщить что-то азербайджанцу - с эстонcкого на русский с русского на азербайджанский. Эст зовет другого эста, знающего русский, и тот переводит на русский. Азер зовет другого азера, которой знает русский, и тот переводит с русского тому азеру. А можно обучить всех эсперанто. Но эсператно всегда беднее, чем любой натуральный язык. Вот обедненный-усеченный английский в мире вроде виртуальной машины на всех официальных платформах. И что - всем думать на убого-усеченно английском, а потом переводить в родной язык? Примерно так. AlexandrPlusВ каждом языка своя уникальная ценность в чем-то, чего нет в другом. В данном случае уникальности не интересуют вообще. AlexandrPlusВсяких суперменов губили несупермэны в деталях, которые у несуперменов были лучше. Назови хоть одну кроссплатформенную программную библиотеку? Тотоже. Ребята из GTK+ вон себе жо..у порвали на американский флаг, пытаясь привинтить биндинги в питон. А могли бы сразу писать на чем-то универсальном. AlexandrPlusСделать такой супервыразительный суперCLI и писать на суперCLI Net и Mono, потом переводя в Python или C#? СуперCLI уже не нужны будут Python или C#. Речи нет о мировом господстве. Всегда найдутся программисты ниже-средней руки, тачающие незабвенный АРМ-Склад на конкретном языке. Но в данном случае речь идет о библиотечных средствах (повторяюсь, если кто еще не сразу понял). Для особо недоходчивых - писаться будет только ядро. Всякие интерфейсные или платформозавимые моменты будут строгаться на средствах конкретной платформы. Неужели так трудно это вкурить? Ну представьте, что C++ или Java - это ассемблер. А вы сейчас будете свой C сочинять, который будет транслировать в "Java ассемблер". А вместо аппаратных каких прерываний будут такие моменты, как коллекции (в Java), массивы (в чистом C как "ассемблере"). Ну и так далее. Базовые то абстракции, блин, везде подобны. Везде структуры, списки, ссылки, ветвления, циклы, функции-методы. Как и в человеческих языках. Существительное, прилагательное и глагол есть в ЛЮБОМ языке. А тонкости написания/понимания "мама мыла раму" или "раму мыла мама" не важны (ими можно пренебречь). Один хрен - мама мыла рама => рама есть вымыта мамой => рама чистая ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2009, 18:00:56 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
Этот способ сводин на нет все преимущества конкретного языка. В этоге получается, что писать придётся на неком паскалеподобном нежизнеспособном уродце. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2009, 21:18:36 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
йййЭтот способ сводин на нет все преимущества конкретного языка. Про какие именно преимущества идет речь? Можно пример? Берем за основу ANSI С. Что именно не удастся написать на ANSI C (более примитивных языков вроде нет)? йййВ этоге получается, что писать придётся на неком паскалеподобном нежизнеспособном уродце. Лисп подобном, вполне жизнеспособном. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2009, 21:31:22 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
ПечонкинЧто именно не удастся написать на ANSI C (более примитивных языков вроде нет)? Human-readable реализацию карринга, ленивости, замыканий, продолжений etc. Или читаемость сгенерированного кода значения не имеет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2009, 21:55:49 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
твой идея - бред сивой кобылы. Печонкин IF(AND(EQ(a,b), LT(c,d)), SET( LIST(e, 5), SQRT(f) ) ) ктож эти никому не понятные каракули будет учить? и главное кому от этого польза? почему все написано в верхнем регистре? что за уродство EQ, LT? меня уже слегка подташнивает. А что будет если я "блокнот" начну писать?- вырвет на клаву и все...! Печонкин А теперь вопрос. Как сделать такое - не вопрос, но не хочется изобретать велосипед. Потому интересно, есть ли уже готовые решения пиши смело, с квадратными колесами еще никто не изобретал :-) почему неуловимый Джо - неуловимый, да потому-что нах никому не нужно его ловить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2009, 21:57:09 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
ПочконкинПечонкинЧто именно не удастся написать на ANSI C (более примитивных языков вроде нет)? Human-readable реализацию карринга, ленивости, замыканий, продолжений etc. Зачем все эти умные (sic!) слова для библиотечных средств класса gtk+, glibc или libjpeg? ПочконкинИли читаемость сгенерированного кода значения не имеет? Имеет (поэтому и не подходит M4, он не умеет indentation делать). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2009, 21:58:31 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
Иван Пертович Дуркобред поскипан Дверь налево ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2009, 21:59:48 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
ПечонкинЗачем все эти умные (sic!) слова для библиотечных средств класса gtk+, glibc или libjpeg? Понятия не имею зачем, ты же не говоришь какой именно набор примитивов тебя интересует в гипотетическом многоязыковом трансляторе (кроме весьма расплывчатой фразы "Везде структуры, списки, ссылки, ветвления, циклы, функции-методы."). А ведь с этого и надо начинать, не? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2009, 22:06:38 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
ПочконкинПечонкинЗачем все эти умные (sic!) слова для библиотечных средств класса gtk+, glibc или libjpeg? Понятия не имею зачем, ты же не говоришь какой именно набор примитивов тебя интересует в гипотетическом многоязыковом трансляторе (кроме весьма расплывчатой фразы "Везде структуры, списки, ссылки, ветвления, циклы, функции-методы."). А ведь с этого и надо начинать, не? Честно говоря удивляюсь. Первое - никто не читает что написано. Второе - все пытаются вставить что-то типо умное, из отряда "это мне не надо, это говно" (ну если ты не понимаешь зачем это, иди лесом, незачем тут свои фобии выплескивать). В четвертых - я явно выше обозначил интересующее подмножество языковых возможностей, указав ANSI C, его синтаксический минимум, как границу разумного достаточного. Спросив в добавок - есть ли что такое, что не может быть реализовано в рамках ANSI C. Но нет, зачем читать, если есть своя типо мысль (банальная как двери: а лямба у тебя будет?). Да не будет там никаких лямб, сборщика мусора и аспектного программирования. Там будет только минимум, достаточный для написания системных библиотек (ядер операционных систем). И точка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2009, 22:12:07 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
ПеченкинПервое - никто не читает что написано. Второе - все пытаются вставить что-то типо умное, из отряда "это мне не надо, это говно" (ну если ты не понимаешь зачем это, иди лесом, незачем тут свои фобии выплескивать). В четвертых - А где третье? Печенкиня явно выше обозначил интересующее подмножество языковых возможностей, указав ANSI C, его синтаксический минимум, как границу разумного достаточного. Фраза "Берем за основу ANSI С" никак не является явным обозначенем интересующего подмножества языковых возможностей. ПеченкинСпросив в добавок - есть ли что такое, что не может быть реализовано в рамках ANSI C. Сам вопрос нелепый в силу существования понятия полноты по Тьюрингу. Смысл вопросу может добавить только требование сохранения читабельности кода, которое ты, на свое счастье, предъявляешь. Но вот незадача - вопрос опять теряет смысл, потому что если "за основу" брать Си, если располагать полным набором сишных синтаксических конструкций и только ими, то очевидно, что всё, что будет читабельно до трансляции на Си, останется читабельным и после нее. Печенкин(ну если ты не понимаешь зачем это, иди лесом, незачем тут свои фобии выплескивать) Тебе уже многие люди как бы пытаются намекнуть, что ты сам, судя по всему, не очень понимаешь задачу, которую пытаешься сформулировать, потому и с формулировкой беда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2009, 22:26:50 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
ПочконкинПеченкинПервое - никто не читает что написано. Второе - все пытаются вставить что-то типо умное, из отряда "это мне не надо, это говно" (ну если ты не понимаешь зачем это, иди лесом, незачем тут свои фобии выплескивать). В четвертых - А где третье? Самоотмодерировано ПочконкинПеченкиня явно выше обозначил интересующее подмножество языковых возможностей, указав ANSI C, его синтаксический минимум, как границу разумного достаточного. Фраза "Берем за основу ANSI С" никак не является явным обозначенем интересующего подмножества языковых возможностей. Для тех, у кого с русским языком плохо? ПочконкинПеченкинСпросив в добавок - есть ли что такое, что не может быть реализовано в рамках ANSI C. Сам вопрос нелепый в силу существования понятия полноты по Тьюрингу. Смысл вопросу может добавить только требование сохранения читабельности кода, которое ты, на свое счастье, предъявляешь. Но вот незадача - вопрос опять теряет смысл, потому что если "за основу" брать Си, если располагать полным набором сишных синтаксических конструкций и только ими, то очевидно, что всё, что будет читабельно до трансляции на Си, останется читабельным и после нее. Ура-ура! Ну хоть кто-то что-то понял ;))) ПочконкинПеченкин(ну если ты не понимаешь зачем это, иди лесом, незачем тут свои фобии выплескивать) Тебе уже многие люди как бы пытаются намекнуть, что ты сам, судя по всему, не очень понимаешь задачу, которую пытаешься сформулировать, потому и с формулировкой беда. Да неужели? Я уже даже на уровне плинтуса привел выше аналогию. Берем ассемблер и С. Понятная парадигма? Транслятор-компилятор? А теперь ставим C на место ассемблера, а вместо C ставим метаязык. И с точно таким-же успехом, как раньше мы из С транслировали в машинные кода всего множества аппаратных реализаций (и даже в JVM байт-коды и в Flash VM), то теперь мы вместо машинных кодов получаем трансляцию в языки высокого уровня (C, Pascal, Java, C#, практически любой вид императивного типа). Охрененно трудная для понимания мысль, да? Я это уже раз двадцатый объясняю, а дети так и не догоняют, чо надо? Просто блеск, да. И это называется - я не могу сформулировать задачу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2009, 22:39:28 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
ПечонкинbeluginПеченкин, не вполне понятно, зачем когогенерировать, например, паскаль. Потому что есть программисты на паскале. Это парадоксально? Нафиг программистам на паскале паскаль, опущенный до уровня промежуточного языка для генерации некоей библиотеки? Не проще ли сделать просто DLL (как все и так делают)? В принципе, не очень понятно, зачем делать какой-то собственный метаязык. В чем он будет мета? Почему бы не сделать бекенд для существующего языка, для которого есть живое сообщество? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2009, 23:59:49 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
Еще вспоминается джоэл с его wasabi ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2009, 00:04:02 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
beluginПечонкинbeluginПеченкин, не вполне понятно, зачем когогенерировать, например, паскаль. Потому что есть программисты на паскале. Это парадоксально? Нафиг программистам на паскале паскаль, опущенный до уровня промежуточного языка для генерации некоей библиотеки? Не проще ли сделать просто DLL (как все и так делают)? Поди объясни сначала яверам или дотнетчикам, про то, насколько у тебя safe твоя DLL. Потом расскажешь, что они тебе там скажут. beluginВ принципе, не очень понятно, зачем делать какой-то собственный метаязык. В чем он будет мета? Да потому что он (метаязык) не будет зависеть ни от какого существующего языка. Он будет просто будет задавать лексические конструкции и правила их макро-преобразования в конкретный язык. Т.е. конструкции на метаязыке будут описывать другой язык, уже конкретный. А писать на метаязыке (или на макроязыке) это точно так-же писать код, но в другом синтаксисе, т.е. писать в этих самых мета (макро) конструкциях. И мета конструкция EQ($ARG1 $ARG2), в виде кода как макроподстановки EQ(a b) будет транслируема в С код if (a==b) (к примеру). Да, а вот уже в самом коде, который будет транслирован IF(EQ(a b) SET(b = c)), само слово метаязык уже как-бы избыточно, но вводить понятие "обобщенно-универсальный макроязык, семантика которого задана метаязыком" я не стал, понадеялся что дети поймут и так, о чем речь. Напрасно понадеялся. beluginПочему бы не сделать бекенд для существующего языка, для которого есть живое сообщество? Мое терпение начинает лопаться. Я несколько раз сказал, что в конечном счете все будет транслироваться в конкретный язык, конкретный ЯВУ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2009, 00:23:23 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
Печенкин, Ты знаешь. Я тебя уважаю, как человека, явно влюбленного в программирование(сам такой). Но от этого не легче, к сожалению. Проблема в том, что твоя мотивация в данном случае задана ошибочными посылками. И еще есть один момент. Мне кажется, ты как то привратно понимаешь саму идею библиотек. Но ближе к телу(как говорил Гиде Мопассан ;) ) Во первых,изначально известно, что скажем, с++(который сам господь велел использовать, как пример), ты не сможешь интерпретировать на некоем гипотетическом языке, дабы получить рабочий результат. Я сейчас не говорю о "Hello World" - в таком контекте нет проблем. Речь идет о реальных рабочих программах. Пока слышен только треп, перемешанный с разными терминами. Дай реальный пример, хоть один. А там уже посмотрим ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2009, 03:12:37 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
SQL_Lamer Твой бред выглядит примерно так: "Та не, чуваг, ты ...ню морозишь. Я тебе гарантирую это. Но дай мне пример, подтверждающий это" Так проблемы вовсе не у меня, не так ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2009, 03:26:40 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
ПеченкинSQL_Lamer Твой бред выглядит примерно так: "Та не, чуваг, ты ...ню морозишь. Я тебе гарантирую это. Но дай мне пример, подтверждающий это" Так проблемы вовсе не у меня, не так ли? Ты вроде говорил про то, что уже есть под с++? Вот и хотел посмотреть ;) Или дальше будем обмениваться остроумными репликами, типа "сам дурак"? Ты сказал на первой странице этого топика :" уже написано!" - так будь добр - ответь за базар ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2009, 03:36:46 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
Печонкин SQL_LamerТы под с++ попробуй напиши хотя - бы. Уже написано, теперь вопрос как это автоматически переводить на другие языки. Это тебе для освежения памяти. Так что уже написано? Можно пример? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2009, 03:45:19 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=35818554&tid=1344650]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
152ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 444ms |

| 0 / 0 |
