LINUX.ORG.RU

Метапрог-прототип, версия 7 + графические диалоги на Метапроге

 , ,


0

3

Скачать (перед запуском читайте !Русский.txt или !Українська.txt):

https://www71.zippyshare.com/v/dNcHIgzD/file.html

Новая версия принесла несколько новых фич интерфейса пользователя. Добавлено выделение прямоугольником для вырезания и копирования части диаграммы (в прошлой версии было только копирование и вставка одного блока по щелчку колесом мыши). После копирования куска диаграммы (с проводками с данными и жесткими последовательностями) его можно вставить кликом колесом мыши на пустом месте диаграммы. Есть план реализовать в будущий версиях также создание подфункций из выделенного куска - аналог Create SubVI из LabVIEW (так была сделана немалая часть функций в прототипе Метапрога).

Однако самая интересная фича новой версии - сериализация в base64 координат блока на диаграмме с цепочкой функций. Этому есть как минимум два возможных применения. Можно «ткнуть пальцем» на нужный блок (меню блоки - ткнуть пальцем на блок). Будет сгенерирована строка такого вида:

metaprog_debug:AAAAAAAAAAAAAAAHAAAAAFBUSDAAAAAEAAAAAAAAAAAAAAAAAAAAAwAAAAdNUEwgMi4wAAAAB0xJQ0VOU0UAAAAU4fPk6Ov87ejqIO3gIOfg7+jy4PUAAAAK0+rw4L/t8fzq4AAAABXh8+To6/zt6Oog7eAg5+Dv8O7x4PUAAAAH0PPx8ero6VBUSDEAAAAxcmVsIAAr0LHRg9C00LjQu9GM0L3QuNC6INC90LAg0LfQsNC/0LjRgtCw0YUubXBiZBNiCtNfkRABAAAAAwAAAAdNUEwgMi4wAAAAB0xJQ0VOU0UAAAAT9rPr7vfo8evu4ujpIOSz4Ovu4wAAAArT6vDgv+3x/OrgAAAAFPbl6+736PHr5e3t++kg5Ojg6+7jAAAAB9Dz8fHq6OlQVEgxAAAANXJlbCAAA25rYwAq0YbRltC70L7Rh9C40YHQu9C+0LLQuNC5INC00ZbQsNC70L7Qsy5tcGJkP/rfBI32qgEAAAADAAAAB01QTCAyLjAAAAAHTElDRU5TRQAAABDy5erx8u7i6Okg5LPg6+7jAAAACtPq8OC/7fH86uAAAAAQ8uXq8fLu4vvpIOTo4Ovu4wAAAAfQ8/Hx6ujpUFRIMQAAAC9yZWwgAANua2MAJNGC0LXQutGB0YLQvtCy0LjQuSDQtNGW0LDQu9C+0LMubXBiZFbEp7cIT2gBAAAAAwAAAAdNUEwgMi4wAAAAB0xJQ0VOU0UAAAAV5+Dv8/HqIOKz6u3gIE51a2xlYXIrAAAACtPq8OC/7fH86uAAAAAU5+Dv8/HqIO7q7eAgTnVrbGVhcisAAAAH0PPx8ero6VBUSDAAAAAWAAEAAgNua2MNbmtjIGluaXQubXBiZFQc/+kgVZgBAAAAAwAAAAdNUEwgMi4wAAAAB0xJQ0VOU0UAAAAO+PDo9PIg7fPq6+Xg8CsAAAAK0+rw4L/t8fzq4AAAAA748Oj08iDt8+rr5eDwKwAAAAfQ8/Hx6ujpUFRIMQAAADpyZWwgAANua2MAL9GW0L3RltGG0ZbQsNC70ZbQt9Cw0YbRltGPINC90YPQutC70LXQsNGAKy5tcGJkaxMcpv873AEAAAAAUFRIMAAAAAQAAAAAdcftGC2ZsAE=:metaprog_debug

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

Вместо тысячи слов:

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

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

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

https://postimg.cc/hQVLBcHp

Дебаг-строку выводит оранжевый блок.

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

Для компиляции надо скачать https://sourceforge.net/projects/tinyfiledialogs/

Распаковать в папке с Си-файлом так, чтобы работал соответствующий инклюд.

Код:

https://pastebin.com/5NW30tQx

Введя нужное число, закрываете окошко. После ввода часа и минуты в консоль будет выведено время срабатывания. Теперь будильником можно пользоваться и для повседневных нужд (звук пронзительный, хорошо слышный, sound.wav больше не нужен), однако завершать его работу надо еще через диспетчер задач или Ctrl+C в консоли, когда не идет звук. Также нет проверки введенных чисел, если введете не то число - будильник никогда не сработает.

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

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

Метапрог-прототип, версия 6 + будильник на Метапроге

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

Не самодостаточная среда программирования, так что мимо.

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

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

Вы так и не поняли что такое абстракция. В метапроге реализовано очень кастрированное ООП. Между тем вся эта «заумь» которая по Вашему «ненужна» придумывались исключительно с целью сделать код компактнее и проще.

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

Вот интересно, а сам метапрог таким анализом занимался, прежде чем заявлять «Сишный компилятор все оптимизирует»?

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

Каждое имя в метапроге содержит по крайней мере четыре случайных числа. Не многовато ли?

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

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

В отличие от «самостоятельного» метапрога дохиджен не требует дополнительной установки проприетарного софта и запуска из под вайна

Игра FreeCiv тоже не требует дополнительной установки проприетарного софта и запуска из под вайна, но это не делает ее способной выполнять функционал прототипа Метапрога.

В метапроге реализовано очень кастрированное ООП.

А вот на этом месте поподробнее.

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

Простите, но вы ошибаетесь.

Нет, я же не говорил что это единственная цель.

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

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

Откуда знаешь? Эти знания тебе свыше пришли? Или таки почитал что-то по оптимизации кода?

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

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

А вот на этом месте поподробнее.

Ну СУВТ это PyObject же, по мнению увожаемых профессоров.

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

А что работает быстрее Си? Ассемблер? Или таки питон?))

Я Вам на этот вопрос уже отвечал. Могу повторить - один и тот же алгоритм сделанный прямыми руками будет работать с одинаковой скоростью на С/C++/фортране/паскале/ассемблере.

Если задача вычислительно сложная и верхний управляющий слой переписать на питоне, производительность незначительно упадет (на проценты) но код станет компактнее удобнее в работе.

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

И они за это время не устарели.

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

И что мне вместо этого закладывать в Метапрог? ООП? ФП? Сборщик мусора?

Для действительно сложных проектов это все необходимо, да.

Что там еще в новомодной скриптухе, которую мне лень учить?

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

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

Ладно, вернемся к конкретике.

Вот, к примеру, пресловутая СУВТ, упоминаемая тобой, как из основных плюсов метапроги, что из себя представляет? Код на Си покажи. Тут многие полагают, что это очередной велосипед многократно реализованных в разных библиотеках Variant’а, а на самом деле может это действительно какая-то новая концепция. Документации описывающей СУВТ нет.

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

Игра FreeCiv

Вы опять несете ахинею… ;-( Дохиджен умеет рисовать картинки а-ля метапрог, причем гораздо выше качеством.

А вот на этом месте поподробнее.

СУВТ это очень неуклюжая попытка сделать полиморфизм. Все эти кластеры (так кажется) это слабое подобие инкапсуляции. Осталось добавить наследование и будет ООП, но кривое как фиг знает что.

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

Антон, тебе не надоело тратить скор в бесполезной, кхм, полемике с пациентом ТСом?

Это же априори замкнутый круг (-:

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

Там целочисленный селектор типа и юнион из разных типов. Единственный плюс перед трад. решением - все объекты имеют одинаковый тип и размер и их самих (а не пойнтеры) можно сложить в коллекцию. Все остальное минусы, причем эти клоуны даже арифметику на них сделать не асилили, хотя казалось бы че там делать…

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

У меня семестр не начался еще, есть запас энергии кому то че то пообъяснять. Ну и потом у меня сейчас творческий кризис… можно рассматривать это как сублимацию.

И еще при этом хорошо думается.

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

Там целочисленный селектор типа и юнион из разных типов.

Ну если это так, как ты понял, то очередной велосипед Variant’a, может быть с какими-то плюшками.

Вот поэтому и @hobbit и многие другие участники хотят от метапрогра описания концепции, которая десять раз может поменяться, пока не выйдет из стадии прототипа.

Вместо этого лозунги, основным из которых является «в метапроге БУДЕТ!». Только когда будет, это еще тот вопрос. Судя по темпам – никогда.

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

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

https://i.ytimg.com/vi/uB4zwhvaKLE/hqdefault.jpg

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

Только вот то, что назвали Вы целью не являлось вовсе.

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

А ты, я смотрю, не только голову в песок прячешь

Этим тут занимаешься только ты

не отвечая на неудобные вопросы

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

еще и кляузы строчишь

А ты не устраивай клоунаду.

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

Так мой вопрос и был про это. Откуда уверенность?

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

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

Так вот, откуда такая уверенность, что абстракции «нинужны»?

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

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

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

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

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

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

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

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

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

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

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

Или все же нормально написать не можете?

Вопрос риторический.

Я на Лабвью прекрасно делаю огромные проекты.

Мне лень гуглить. Я прекрасно программирую на Лабвью и Метапроге, не зная что такое «консистенция».

Императивный, декларативный, функциональный. Lingua Latina non penis canina. Да-да, я прекрасно программирую на Лабвью, не зная значения всех этих заумных словес.

А после того как в труппу приблудилась метапрогомать Диана и @fsb4000 напел им дифирамбов, все вообще стало в шоколаде…

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

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

Ну согласно этой их «логике» метапрог ненужен тем более - и будильник и решение квадратного уравнения делаются 100500 способами влет без всякого метапрога, и любой из этих способов лучше метапрога;-)

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

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

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

Так мой вопрос и был про это. Откуда уверенность?

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

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

Факт что в текущем виде пока ничего полезного из себя этот проект не представляет

Прототип экспериментальный. Если ты этого не понимаешь - тебе в этих темах делать нечего.

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

Откуда знаешь? Эти знания тебе свыше пришли? Или таки почитал что-то по оптимизации кода?

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

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

Ну СУВТ это PyObject же, по мнению увожаемых профессоров.

Кстати, вспомнилась та простыня из питоноскрипта на пару строк с кучей PyObject: Метапрог-прототип, версия 6 + будильник на Метапроге (комментарий)

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

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

Я Вам на этот вопрос уже отвечал. Могу повторить - один и тот же алгоритм сделанный прямыми руками будет работать с одинаковой скоростью на С/C++/фортране/паскале/ассемблере.

Все одинаково? https://benchmarksgame-team.pages.debian.net/benchmarksgame/

Если задача вычислительно сложная и верхний управляющий слой переписать на питоне, производительность незначительно упадет (на проценты) но код станет компактнее удобнее в работе.

Да-да, с динамической-то типизацией.

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

Только почему-то почти весь софт только в говно и катится. Винда, андроид, даже в линуксе есть случаи регресса (как XFCE в последнем дебиане с падающим файловым менеджером).

Для действительно сложных проектов это все необходимо, да.

Чтоб все висло от сборщика мусора. Я в прототипе Метапрога то и дело борюсь за память и без ручного управления ей это весьма сложно.

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

Да уж, ООП и секса с геттерами-сеттерами мне там явно не хватает. Хотя стоп - в лабвью-то ООП есть, какой же я дурак что пользуюсь простыми и понятными кластерами и мне с того, что я использую в Лабвью, легко будет перейти на Метапрог с сишной (в своей основе) системой типов.

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

Дохиджен умеет рисовать картинки а-ля метапрог, причем гораздо выше качеством

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

СУВТ это очень неуклюжая попытка сделать полиморфизм

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

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

Вопрос зачем вообще эти ветки создавать

Потому что так проще транслятор. Зачем мне в него добавлять проверку на пустоту веток if...else, если компилятор это и так оптимизирует? Ради того, чтобы ты сказал «вау»?

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

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

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

лурку

Охрененный источник получения информации по IT.

Только почему-то почти весь софт только в говно и катится.

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

Почему нельзя было сделать нормальный интерфейс? Не осилил (попросил бы котечку помочь с интерфейсом) или прототип метапроги тупо не позволяет? Вроде должно бы, но ты вместо нормального интерфейса выкатил какую-то хрень.

Чтоб все висло от сборщика мусора.

Ну, пользуюсь eclipse и что-то не замечал, что где-то что-то висло.

Разумеется, конечной целью не являются одни лишь будильники

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

Формальное описание с примерами кода на Си того, что из себя представляют пресловутые СУВТ будет? Или все в очередной раз будут наблюдать мантры: «СУВТ – это будет круто. Я делаю СУВТ, потому-что они мне помогут сделать метапрогу саму на себе».

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

Все, ты был прав, я сдаюсь.

Главное же я сам че то похожее писал другим пару недель назад, и сам же вляпался…

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

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

Только почему-то почти весь софт только в говно и катится.

Не только софт. Автомобили, телефоны, ботинки… Копроэкономика одноразовых вещей наступает. Ни ООП, ни ФП тут не виноваты.

И да, если в этот экономический процесс встроить метапрог, он может радикально ускорить процесс говнизации.

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

За что Олег @metaprog наш не берется
Все превращается в гавно
А если за гавно берется
То просто тратит меньше сил
(с)

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

Так я о том и говорю. Я же не про конкретную задачу. Утверждение-то про «вообще».

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

Может он просто тролль 80-го уровня.

Потом будет одноклассникам и соседям этот тред показывать и хвастать, как он своим говном морочил головы программистам и «доцентам с кандидатами» ;-)

Повышать ЧСВ. В противном случае — он упорот.

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

Да, возможны оба варианта.

И хотя я тут познакомился с кучей замечательных людей и вообще интересно пообщался на отвлеченные темы (а лулзов то от ТСа скока было!), но ИМНО пора прикрывать этот балаган. Как в свое время прикрыли Царя. Тем более что достойных цитат от ТСа давно не было…

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

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

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

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

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

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

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

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

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

Зачем мне в него добавлять проверку на пустоту веток if…else

То, что это доставляет тебе такие трудности, как бы очень характеризует «удобство» визуального программирования.

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

Если тебе нужна «проверка на пустоту» if…else, значит, у тебя уже косяк глубоко в архитектуре (если она есть, конечно же).

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

да нет там никакой архитектуры структура имеет поле dynamic если это поле имеет не нулевое значение считается что «массив» которой этой структурой представлен является так называемым «динамическим» то есть выделяемым и высвобождаемым через malloc/free куском памяти. Ну так вот если поле структуры именуемое dynamic не нуль что проверяется этим дубильным if (dynamic) { free() } else {} в котором еlse ветка вообще пустая, а структура условно глобальная и открытая для изменения. Вот такая вот «архитектура» в общем-то, как то так устроен массив метапрога. И если в графике от такого дерьма собственно графика спасает худо-бедно, то когда это превращается в код на С условного пользователя этого барахла уже мало что спасет.

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

косяк глубоко в архитектуре (если она есть, конечно же)

Какая архитектура, о чем ты вообще?

Теперь хотелось бы получше понять что понимают под «архитектурой» @ metaprog

liksys ★★ ()
Ограничение на отправку комментариев: