LINUX.ORG.RU

Метапрог-прототип 19 + API на СУВТ + ускорение трансляции

 , , ,


0

3

Скачать:

https://mega.nz/file/ONxVwDJb#zFun6oB2BOxRglVeqNGusssQqT4teCdvtt4dEd0kfV0

В 19 версии серьезно переработан транслятор, что ускорило трансляцию схем с множеством ветвлений.

В 18 версии прототипа добавлен вывод значения переключателя из свича по СУВТ. В остальном она не отличается от 17 версии.

Это позволяет реализовывать весьма интересные вещи, например API для работы с чатом Метапрог онлайн на Метапроге:

https://i.postimg.cc/52xTMR4V/image.png

К блоку операции над структурой надо (не считая константы СУВТ) подключить ТОЛЬКО один из входов определенного типа. Это может быть переключатель (перемикач), задающий значение селектора СУВТ или любой из типов СУВТ. При подключении типов соответствующее значение переключателя СУВТ будет задано автоматически.

Кстати, украинский в Метапроге знать не совсем обязательно. Вот совершенно та же схема без изменений, только язык в настройках поменял на русский:

https://i.postimg.cc/MTygw2Qz/image.png

Только кейсы енума, управляющего СУВТ, было лень перевести:)

В версии 17 исправлен серьезный баг с кодогенерацией. В 16 версии при трансляции схем, в которых в ветку с условием «входят» данные извне, код, отвечающий за обработку этих данных (до их входа в условие) мог сгенерироваться после тела условия. Это серьезно тормозило развитие проекта, но теперь в стандартной библиотеке есть демки, успешно соединяющиеся с сервером Метапрог онлайн через Tor (SOCKS5) и работающие с некоторыми методами (проверить версию клиента и логин/регистрация).

Скорее всего, простой чат-клиент Метапрог онлайн с использованием СУВТ можно будет реализовать уже в этой версии прототипа. Если это не удастся - будут багфиксы, но если таки удастся - можно будет приступить к макросам времени компиляции, таким как «многотиповой» тип и цикл по структуре. После чего уже можно будет серьезно переделывать Метапрог «на самом себе».

Предыдущая версия:

Метапрог-прототип 16 + СУВТ по енумам



Последнее исправление: metaprog (всего исправлений: 2)

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

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

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

Кажется, до меня дошло, в чём суть.

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

hobbit ★★★★★
()

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

https://pastebin.com/2CSZJyPg

metaprog
() автор топика
Ответ на: комментарий от i-rinat

То есть, максимум, на что ты замахиваешься, это скрипты оболочки, так?

Не так, уже кучу раз писал.

metaprog
() автор топика
Ответ на: комментарий от cluge

походу, автор слишком занялся пилением всяких СУВТ на прототипе написаном на лабвью, а над поставленной им же самим задачей «метапрог сам на себе» перестал работать.

Без СУВТ будет намного менее удобно.

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

Что я делаю не так?

У меня не собирается.

Ошибка 1: В строке:

metaprog_instance_0_1112125838329681921__function_declaration(metaprog_instance_0_1112125838329681921_3164686298075908097__variable_2177429585687949313, metaprog_instance_0_1112125838329681921_8931648081730074625__function_output_pointer_5715671038210098177);

произошла ошибка

Ошибка	C4700	использована неинициализированная локальная переменная "metaprog_instance_0_1112125838329681921_8931648081730074625__function_output_pointer_5715671038210098177"	

Ошибка 2: В строке:

metaprog_instance_0_1112125838329681921__function_declaration(metaprog_instance_0__variable_4993627196671313921, metaprog_instance_0_1112125838329681921__function_output_pointer_5715671038210098177);

произошла ошибка:

Ошибка	C4700	использована неинициализированная локальная переменная "metaprog_instance_0_1112125838329681921__function_output_pointer_5715671038210098177"
fsb4000 ★★★★★
()
Ответ на: комментарий от metaprog

Если это пофиксить, то даже работает:

Вот так пофиксил:

long double var = 0;
long double* metaprog_instance_0_1112125838329681921__function_output_pointer_5715671038210098177 = &var;

и другую тоже:

long double var = 0;
long double* metaprog_instance_0_1112125838329681921_8931648081730074625__function_output_pointer_5715671038210098177 = &var;

память нужно выделять, перед тем как писать будешь. Я тут выделил на стеке…

https://imgur.com/a/SmBDZ8d

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

Не так, уже кучу раз писал.

Ни разу не видел ничего конкретного. Только общие слова. Вот и сейчас: «уже кучу раз писал» вместо нескольких внятных примеров.

i-rinat ★★★★★
()
Ответ на: комментарий от metaprog

Что я делаю не так?

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

Разберись со своим говнотранслятором, чтобы генерировал что-то более осмысленное, тогда и будем смотреть.

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

Что я делаю не так?

Генерируешь нечитаемый код, о чём тебе уже неоднократно говорили («не для эстетов, а для скармливания gcc», помним). Да, в данном случае добрый @fsb4000 тебе помог, но когда твои исходники разрастутся до критической величины — одной доброты будет мало.

И valgrind тебе не поможет, если будет выдавать ошибку в функции main() на несколько тысяч строк. Хотя я смотрю, у тебя там ещё появилась metaprog_instance_0_1112125838329681921__function_declaration() (видимо, как раз для рекурсии), прогресс…

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

Еще один пример того, что недостаточно умения тягать связи между блоками и проводить «эксперименты» над ними. Нужно еще понимать как реализованы языки, трансляторы на который пытаешься сделать, и учиться, читать документацию, книги, писать на таком языке, читать исходный код такого языка и уж только потом пытаться делать какой-то кодоген в такой язык. Довольно показательный щелчок по носу.

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

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

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

Что я делаю не так?

У тебя же был эксперт по всем вопросам котечка. Или ты опять набросить решил?

Не так, уже кучу раз писал.

А тебе уже кучу раз писали что ты делаешь не так. Если кратко: «все не так».

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

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

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

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

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

Я занят был, и о проблеме вообще не знал. Ну кстати по этому вопросу реально видно кто знает и понимает (fsb4000) а кто может лишь трепаться %) - Метапрог-прототип 19 + API на СУВТ + ускорение трансляции (комментарий)

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

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

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

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

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

Ну судя по тому что нарисовано в вики работа в пределах этих гамма функций вроде как и производится в рациональным представлением дробных чисел. Но подождем тех кто в теме :)

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

Я занят был

На лоре небось флудил, а в это время другой занятой не может свою метапрогу собрать. Фиговый с вас тандем.

трепаться

Ну ты тоже любитель.

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

Благодарю! Прикрутил кроме объявления указателя для возвращаемого значения объявление пустой переменной и привязку указателя к ней - заработало. Вот рабочая трансляция и скрин схем:

https://pastebin.com/UwbL2Tnu

https://i.postimg.cc/zXxRrTD8/image.png

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

metaprog
() автор топика
Ответ на: комментарий от hobbit

но когда твои исходники разрастутся до критической величины

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

Хотя я смотрю, у тебя там ещё появилась metaprog_instance_0_1112125838329681921__function_declaration() (видимо, как раз для рекурсии), прогресс…

Да. И на основе этих изменений легко сделать функцию, не подлежащую инлайну.

metaprog
() автор топика
Ответ на: комментарий от abcq

Очередные антиметапрогерские лжемудроствования и трындеж вместо конкретного ответа на конкретный вопрос. Угадай к чьим ответам я после этого буду прислушиватьс - твоим с liksys или paramon и fsb4000?

metaprog
() автор топика
Ответ на: комментарий от saibogo

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

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

Я смотрю, жизнь тебя вообще ничему не учит.

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

Ого я вновь в команде антиметапрогеров. Увы нет, дорогой мой друг Метапрог, подобное калька для ваших познаний. И это печальненько на самом деле. А прислушиваться вы будете к тому, кто вам сладко поет это уже давно понятно. Вам не то что рекомендуется, вам строго необходимо годик другой пописать на С для того чтобы об этот забор голову выпрямить, чтобы вы четко понимали во что вы ввязались выбирая как хост C. И пописать не хеллоу ворлды, фибоначчи, армстронги, перевороты строк, а что-то более существенное, хотя бы лоральмолог свой попробуйте написать не на скриптухе. Ваш опыт с лабвью скриптухе на высокоуровневых кубиках вам никак не поможет от ужасов и кошмаров языков типа С и от общих знаний по построению и работе языков программирования и теории cs. Как вы вообще додумались до того чтобы брать низкоуровневый язык с кучей подводных камней и несовершенств при этом отрицая процесс обучения чему-либо? А что будет если фбс и котечка устанут вас опекать?

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

А там long double не для дробных чисел, он просто вмещает больше чем long long int.

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

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

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

Выбор сишечки как хост-языка вполне неплох. Другое дело, что наш пациент сделал это неосознанно, и все остальные решения были провальными. Генерируя код на сишке, можно избежать многих сложностей написания компилятора, доверившись GCC. Плюс вставки сишного кода - не самая плохая фишка для языка. На сишке можно реализовать все необходимые примитивы, включае высокоуровневые коллекции, сборку мусора (сделав ее опциональной) и прочие штуки. См. Cython например.

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

Расслабься и наблюдай за цирком.

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

Расслабься и наблюдай

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

плясать в треде с накладным носом

Ему видимо нравится. Первый тролляка на деревне.

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

У лора уже был царь, теперь добавились лже-царь и придворный шут. Комбо.

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

который просто не может опуститься то уровня глупых антиметапрогеров

Кажется вы немного ошиблись.

Ну а по сути высказывания я ставлю на лень и отсутствие желания тратить время на сабж, оно же никак не окупится, это логичное поведение. Для вас с ТС возможно есть какой-то смысл, вы вроде как заинтересованы в ВП. Для фбс возможно есть смысл в том, что он не может пройти мимо «вызова» и получить еще немного одобрения за свою помощь видимо он плотно сидит на этой херне :) но лучше спросить его самого чем он замотивирован в подобной поддержке проекта, тем более что там даже 100 строк нет, и вся сложность это корявые имена километровые.

Долго там еще ждать до нативной версии?

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

Я думаю что от долго до никогда. Все по тем же причинам. Если даже простейший будильник работал вкривь и вкось, то какой там блин может быть конструктор диаграмм?

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

Разработка метапрог.онлайн уже началась, метапрог на самом себе наверное будет в следующем году прям юзабельный.

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

Razk

А что не так? Где вы троллинг увидели? (если я правильно понял) Ну возьмем ОЗУ например, в Windows XP нужно 60 мб, в Windows 10 нужно уже 2000 мб (2000/60 = 30). Диск 1 гб vs 20 гб, при этом десятке нужен SSD. Процессор не знаю как сравнить, по частоте неправильно все же будет.

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

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

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

Приплел свою боль от винды

Я отвечал на твой коммент, а ты там писал о десятке, нехорошо врать!

Ну и про SSD это вообще хохма

Ну такое не только я пишу.

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

Метапрог-прототип 19 + API на СУВТ + ускорение трансляции (комментарий)

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

Ну такое не только я пишу.

Да глупости не один ты пишешь.

Отправляйся в игнор тролляка.

Razk
()
Последнее исправление: Razk (всего исправлений: 2)
Ответ на: комментарий от paramon

Тут скорее искусно их преуменьшает автор проекта и сочувствующие ему.

Разработка метапрог.онлайн уже началась, метапрог на самом себе наверное будет в следующем году прям юзабельный.

А когда через год ничего подобного не будет какой план дальше? С одними прогнозами ТС уже промахнулся, от его лица даете теперь другие, т.е. таков путь?

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

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

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

paramon
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.