LINUX.ORG.RU

Метапрог-прототип 43: начало переделки «на самом себе»

 , , , ,


2

4

Скачать:

https://mega.nz/file/fUhEjbCI#1LbpnccSm_SkwJi5Bugwc679tFxj7YJzCTOQxmxHvq0

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

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

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

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

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

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

Предыдущая тема:

Метапрог-прототип 42



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

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

описания формата не существует

== «документации нет»

Тип и есть формат, используется стандартная LabVIEW-сериализация

и выше ты пишешь (копипастить лень) «что форматы меняются… версионирование…» – как это противоречит моей догадке о «переписывании на лету».

видишь ли, дело в том что, это нормальный подход в написании «наколенных поделок»/«лаб для зачета»/«одноразового» софта…

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

сложно в «текстовую справку»? ну так делайте «комиксы», видосы, подкасты…

anonymous
()

Много раз говорил, что @metaprog обязательно сделает Метапрог.
Ему же деваться некуда …

Или он Метапрог ведет в загс или ... /разные варианты/
anonymous
()
Ответ на: комментарий от metaprog

Скачать Debian GNU/Linux можно и на торренте.

Ох уж эти виндузятники! Даже опенсорс пытаются пиратить.

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

Насколько я понял, это что-то вроде

for name,val in pairs(x) do
  serialize(name, val)
end

Или что-то подобное на Питоне. Вызов dir(), все дела.

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

Метапроговские схемы - это всего лишь сериализированные LabVIEW-кластера (аналог структур). Надо смотреть типы. Их при желании расшифровать легко

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

К тому же, форматы меняются.

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

Но это не беда, так как есть версионирование по форматам

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

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

и выше ты пишешь (копипастить лень) «что форматы меняются… версионирование…» – как это противоречит моей догадке о «переписывании на лету».

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

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

я нигде не говорил что это ненормально. я говорил «документации нет» (в том числе и по причине «постоянных» изменений).

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

Усложняешь, антиметапрогеры уже все придумали! Метапрог нарисован в паинте.

MOPKOBKA ★★★★
()

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

Это как?

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

Похоже на таблицы и метатаблицы в Lua или Python

Вообще не в тему. Метаинформация и массивы не генерируются.

Но это - язык с динамической типизацией, состав переменной заранее неизвестен.

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

Какой смысл в подобном управлении памятью

Есть динамическая память, указатели.

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

Я бы и слово структура заменил, какое то непонятное.

MOPKOBKA ★★★★
()

Судя по вашим тредам у вас постепенно нарабатываются стандартные диаграммы /в C/C++ это называется функциями/.
Когда вы начнете публиковать примеры их использования?
Ведь проект open source и цель то вашего проекта вроде как упрощение разработки программ.

Хотя верится, с трудом ...
anonymous
()
Ответ на: комментарий от COKPOWEHEU

Ох уж эти виндузятники! Даже опенсорс пытаются пиратить.

Зачем качать из тормозного зеркала, если можно использовать всю ширину полосы, заодно ещё и раздавая другим?

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

А там все понятно, названия у диаграмм на человеческом языке, аргументы тоже нормалньно подписанны. Это же не char *strcpy(char *src, char *dst);

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

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

Вы предали идеи Метапрог!
В Метапрог текста нет …

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

Наоборот, текст там где он нужен, i_ne_s_ogranicheniyami а нормальный, многоязычный.

Все же вам и @metaprog нужно разработать хорошие демки, чтобы народ

КЛЮНУЛ
anonymous
()

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

Ура?

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

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

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

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

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

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

я нигде не говорил что это ненормально. я говорил «документации нет» (в том числе и по причине «постоянных» изменений).

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

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

Sorry за повтор суждения, которое уже раз пятнадцать постил.

Проект у вас интересный и перспективный, но GUI LabView не годится для графического представления алгоритмов.
Оно не readable …

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

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

Должна быть хоть какая-нибудь …

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

Вообще не в тему. Метаинформация и массивы не генерируются.

Что вы понимаете под метаинформацией? Зачем она нужна и откуда берется?

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

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

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

Есть динамическая память, указатели.

И что?

Зачем качать из тормозного зеркала, если можно использовать всю ширину полосы, заодно ещё и раздавая другим?

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

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

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

нет смысла тратить время на документирование всего и вся

Должна быть хоть какая-нибудь …

Если вывалили на всеобщее обозрение - да. Вот если бы пилили где-то у себя локально… под одеялом… пока никто не видит… там можно было обойтись без документирования.

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

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

а я настаиваю

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

иначе проект «свежей крови» не получит.

нет смысла тратить время на документирование всего и вся

автор предлагает ЛОР/онлайн-чат как источник знаний о Метапроге – не самое рациональное использование времени

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

иначе проект «свежей крови» не получит.

Проект свежей крови не получает уже не первый год. И, видимо, всех это устраивает.

автор предлагает ЛОР/онлайн-чат как источник знаний о Метапроге – не самое рациональное использование времени

Автор сам не умеет в чтение документации и считает остальных столь же ущербными.

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

автор предлагает ЛОР/онлайн-чат как источник знаний о Метапроге

Пока что ЛОР является источником знаний больше о Метапроге как личности и его особенностях, чем о его продукте. Собственно о продукте мы пока знаем только, что это проприетарная поделка на основе проприетарного Labview, в которой можно рисовать квадратики с Си-шными функциями и соединять их жгутиками. Легенды гласят, что в этой лапше даже можно разобраться… если ты Метапрог. Ах да, еще эта лапша транслируется в Си-шную лапшу, в которой разобраться не может уже никто, даже сам Метапрог.

COKPOWEHEU
()

@mataprog и @МОРКОВКА у вас похожи сформировалось устойчивое мнение, что вам все желают зла и посмеяться над вами.
Это не так.
Раз треды публикуются, значит вам нужно мнение иных разработчиков.
Правильно?
Да и не у всех есть время участвовать в разработке.
Но зная то, что делаете, какое API используете, что хотели бы реализовать, планы, …, то наверняка кроме плохих постов будут и хорошие.
Пока лишь одни догадки, что вы там разрабатываете …

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

«аплодирую (стоя)»

общение/атмосфера – «за это мы и любим» треды о Метапроге (о программе и человеке)

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

Что вы понимаете под метаинформацией?

struct MetaField {
  const char *name;
  uintptr_t offset;
};

struct Example {
  int a;
  int b;
};

static struct MetaField[] Example_METAINFO = {
  {"a", 0},
  {"b", sizeof(Example.a)}
};

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

Да. Но скриптуху не уважаем.

И что?

Ты либо хранишь все, либо удаляешь нужное. Я так понимаю ты только на скриптухе и писал, если вообще программист?

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

И вызывают тормоза, знаем. Простого счетчика не будет, это точно.

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

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

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

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

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

Зачем метать бисер перед антиметапрогерами?

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

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

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

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

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

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

Документацию писать трудно, это отдельная работа, ты видел сколько этих диаграмм? Как будет выглядеть метапрог никто не знает, что описывать кроме того что есть?

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

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

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

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

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

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

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

Да еще и обвинять меня, вполне возможно, одного из самых честных и порядочных людей в этом треде!

Шас вам модераторы премию выпишут …

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

Есть интерактивное обучение

Зачем? Зачем тратить силы и время на это?

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

Вы вообще понимаете, что это «есть» только для вас?

Документацию писать трудно, это отдельная работа

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

Как будет выглядеть метапрог никто не знает

Ну да, всего-то 43 версия.

я даже видео записывал как это сделать.

Жесть. Это чтобы выкачать надо что на компьютер ставить?

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

Стыдно должно быть такое писать.

Нет, не должно.

Да еще и обвинять меня, вполне возможно, одного из самых честных и порядочных людей в этом треде!

Я вас ещё и в нарциссизме обвиню.

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

{случайно скопированный с предыдущего ответа текст}

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

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

А можно точное название файла? А то я там увидел разве что «бекенд/backend.c» с нечитаемыми идентификаторами - явный генерат, который к Си-шному коду отношения не имеет. Ну еще файл с забавным названием «типи» - если мне не изменяет память, это индейская национальная народная изба так называется.

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

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

Исходники есть…

…но мы вам их не покажем, да?

Как будет выглядеть метапрог никто не знает

Ну да, всего-то 43 версия.

Метапрог-прототип терпит крушение на протяжении 43 серий.

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

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

Как-то в LabView смотрел ваши диаграммы.
ИМХО не readable.
Может быть конечно дело в привычка и вкусовщина, но для меня диаграммы не readble.
Код должен быть хорош во всем: логика, название переменных, стиль форматирования …
LabView диаграммы все же «не очень».
Вполне допускаю, что для работы с их железом они упрощают разработку программ, но использование их в качестве любых алгоритмов они как-то там еще понятны для совсем простых алгоритмов.
Вот в Дракон диаграммы не супер, но более readable …

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

А можно точное название файла?

Репозиторий «Раскрутка», метапрог\метапрог-бекенд.mpbd

Код на С есть в архиве, бинарником тоже есть.

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

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

Типы по-украински.

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

Зачем? Зачем тратить силы и время на это?

Да я вот тем же вопросом задаюсь, зачем бисер метать.

Вы вообще понимаете, что это «есть» только для вас?

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

нужно как-то популяризировать проект

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

Жесть. Это чтобы выкачать надо что на компьютер ставить?

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

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

LabView диаграммы все же «не очень».

Для простых алгоритмов еще терпимо. У нас в лаборатории эта штука применялась для автоматизации экспериментов - настройка нескольких приборов, снятие с них показаний и запись в файл. Правда, когда алгоритм работы стал чуть сложнее развертки по магнитному полю вверх-вниз, я уже не выдержал и переписал на Lua. Правда, все модули для приборов и гуйни тоже пришлось переписывать на Си и получилось довольно криво - но все равно гораздо удобнее, чем на Labview. И что больше всего радует - появилась наконец возможность писать нормальные функции и выносить повторяющиеся куски кода. Нет, sub-vi это и близко не то.

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

Он будет постепенно расти, вбирая в себе все больше функций, пока не перерастет в Метапрог «на самом себе».

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

Он будет постепенно расти, вбирая в себе все больше функций, пока не перерастет в Метапрог «на самом себе».

Предположим вы даже сделаете его лучше чем LabView.
А кто будет его использовать?
Ведь диаграммы LabView не удобны …

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

Репозиторий «Раскрутка», метапрог\метапрог-бекенд.mpbd

Код на С есть в архиве, бинарником тоже есть.

Где?! По ссылке из первого поста только архив с единственным Си-шным генератом. Никаких репозиториев там вроде бы нет.

метапрог\метапрог-бекенд.mpbd

Именно этого файла не нашел, но допустим, «тести/вивести вульгарну властивість в консоль.mpbd» - авось формат у вас везде примерно одинаковый. Ну а «тести» явно должны относиться к родственным отношениям. И что мы там видим?

?MPL 2.0?LICENSE'вивести вульгарну властивість в консоль
Українська%вывести вульгарное свойство в консольРусскийOnН}»)Ђ`z?	структура

На исходник это не похоже. Оно даже не хочет толком копироваться… а жаль. Слова там интересные есть.

Поэтому повторяю вопрос: где исходник-то?

Смотреть ты в чем диаграммы собрался? Метапрог нужен.

Да, именно это меня и интересует: в чем ваши диаграммы смотреть если желания устанавливать или запускать всякую проприетарщину желания нет?

Предположим вы даже сделаете его лучше чем LabView.

А кто будет его использовать?

Ведь диаграммы LabView не удобны …

Ну находятся же любители графических скриптовалок вроде того же Labview или АлгоритмБилдер или чего-то подобного. Люди почему-то считают, что раз можно быстро нарисовать helloworld, то и с остальным проблем не будет. Правда, практика показывает, что потом проблем возникает еще больше, чем если бы сразу стали учить нормальный язык. Но кого это останавливает…

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

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

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

Конечно, нет. Форматы будут меняться по мере необходимости. Версионирование при этом будет сохранять полную обратную совместимость при чтении старых версий формата.

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

Не обязательно. При обновлении версии формата достаточно просто добавить в функции десериализации версионирования формата конверсию из предпоследней версии в последнюю. Таким образом, совместимость со старыми файлами/протоколами итп сохраняется ценой минимальных усилий.

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

Где?! По ссылке из первого поста только архив с единственным Си-шным генератом. Никаких репозиториев там вроде бы нет.

А я там вижу !метапрог онлайн.exe

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

Конечно, нет. Форматы будут меняться по мере необходимости.

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

Не обязательно. При обновлении версии формата достаточно просто добавить в функции десериализации версионирования формата конверсию из предпоследней версии в последнюю.

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

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

Таким образом, совместимость со старыми файлами/протоколами итп сохраняется ценой минимальных усилий.

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

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

А я там вижу !метапрог онлайн.exe

Что там куча мусора никто не спорит. Вас про исходники спрашивают, а не про бинарники и генераты.

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

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

Речь про массивы, а не структуры. Хотя массив в Метапроге представлен структурой, но, наверное, ты что-то не так понял.

Как ты помнишь, структура массива в Метапроге состоит из указателя на элемент, размера (size_t) и dynamic (char). Хочу dynamic заменить указателем на SDL-семафор. В статичных массивах указатель на семафор будет создаваться нулевым (старые if на dynamic вроде должны срабатывать).

При каждом разветвлении массива (и, черт побери, даже структур с массивом и указателями на структуры с массивами!) SDL-семафор будет инкрементиться. Таким и будет счетчик ссылок. К этой мысли я пришел, борясь с утечками памяти в бекенде.

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

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

void *arr1[] = {arr2};
void *arr2[] = {arr1};

Но это простой вариант, так что можно попробовать.

MOPKOBKA ★★★★
()
Последнее исправление: MOPKOBKA (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.