LINUX.ORG.RU

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

 , , , ,


2

4

Скачать:

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

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

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

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

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

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

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

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

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



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

Зачем нужен метапрог на метапроге?

Как я соберу себе бинарник метапрога, если у меня нет бинарника метапрога?

К чему тут этот бутстрапинг?

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

Зачем нужен метапрог на метапроге?

Шутка.

По существу это означает, что метапрог всегда будет зависеть от прототипа.
Или же тогда нужно будет использовать результат «метапрог на метапроге?» для разработки компилятор метапрог на компиляторе метапрог …

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

Я тебе указал на конкретное место в коде. Вместо sizeof – offsetof, потому что так корректнее. А так, ты приложил кусок классического способа сериализации структур в Си. В этом нет ничего нового.

Впрочем, в метапроге в принципе нет ничего нового или интересного.

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

Зачем нужен метапрог на метапроге?

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

Как я соберу себе бинарник метапрога, если у меня нет бинарника метапрога?

А как собрать любой другой компилятор, если нет бинарника этого компилятора?

К чему тут этот бутстрапинг?

Да никто не знает. Казалось бы, ну пишешь ты скриптуху, ну и пускай интерпретируется на чем-то более простом и быстром. Никто ведь не удивляется, что python написан не на python, или bash написан не на bash. Да даже Labview написано не на Labview.

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

Я тебе указал на конкретное место в коде

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

А так, ты приложил кусок классического способа сериализации структур в Си.

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

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

У меня в плюсах это так генерируется

struct Example{
  float a;
  int b;
  TYPEINFO(a, b);
};

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

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

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

А если на метапроге реализовать тот же алгоритм что был в питоне? Кто будет быстрее?

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

хорошо что в метапроге еще 100500 удобностей и полезностей.

Жаль только самого метапрога нет и не скоро будет.

И жаль что в нем нет тех полезностей, которые реально нужны.

А если на метапроге реализовать тот же алгоритм что был в питоне? Кто будет быстрее?

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

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

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

Это был риторический вопрос.

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

Это был риторический вопрос.

Ну почему же. Авторы метапрога утверждают, что его производительность сравнима с Си. Завистники - что хуже Питона. Как предлагал сам Метапрог «эксперимент критерий истины». Поскольку завистники не понимают не то что красоты метапрога, но хотя бы синтаксиса, кому как не вам этот эксперимент проводить.

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

Предлагаю ответить на более простой вопрос:

Зачем нужен метапрог?

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

liksys ★★★★
()

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

Нескромный вопрос к афтору топика: Вы тут (на форуме тысча раз) «продвигаете» супер-пупер и читая Ваши коменнты все нормально. А есть Пользователи вашей поделки ? Есть только комменты.

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

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

Погонять Метапрог имеют техническую возможность все здесь присутствующие у кого линукс с вайном или винда начиная с ХР.

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

Нескромный вопрос

Нескормные вопросы задавать в Метапрог Онлайн.

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

Насколько я понял, в случае Метапрога «связи» это все-таки порядок выполнения, а не потоки данных

Враньё. И ты еще имеешь наглость давать мне советы.

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

Спасибо за толику здравого смысла.

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

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

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

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

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

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

Насколько я понял […]

Враньё.

То есть вы утверждаете, что я соврал, что не уверен в своих словах? На чем основывается данное утверждение?

И ты еще имеешь наглость давать мне советы.

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

Погонять Метапрог имеют техническую возможность все здесь присутствующие у кого линукс с вайном или винда начиная с ХР.

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

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

Нескормные вопросы задавать в Метапрог Онлайн.

Надо понимать, идею письменного хранения информации вы до сих пор не освоили? Все до сих пор на уровне устных преданий?

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

То есть вы утверждаете, что я соврал, что не уверен в своих словах? На чем основывается данное утверждение?

Погоняй Метапрог - увидишь. Объяснять лень.

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

Ты из «демократических» штатов или еще более «демократического» ЕС? К тебе спецназ приедет двери выбивать если что вдруг нарушишь? Или ты из «демократической» Австралии, где за отсутствие маски детей штрафуют на 40 долларов, подростков на 80, а взрослых на все 200?

Знание синтаксиса метапрога

Какой синтаксис если Метапрог не текстовый?

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

Котечка смог, при чем с минимумом моей помощи.

Надо понимать

Как написано - так и понимай.

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

Инвестиции меня интересуют только безвозмездные и без каких-либо обязательств с моей стороны. Понятно?

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

Инвестиции меня интересуют только безвозмездные и без каких-либо обязательств с моей стороны. Понятно?

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

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

Инвестору интересно помочь тебе деньгами и самому на этом заработать. Ты ж нихера не умеешь, даже с людьми общаться. За что тебе платить? Что ты делаешь такого, что не может сделать кто-то еще? У тебя нет ни навыков, ни понимания сферы, даже видения какого-то и плана нет, кроме желания обвести сишку в квадратики и стянуть их жгутиками.

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

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

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

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

Инвестору интересно помочь тебе деньгами и самому на этом заработать

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

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

скриптухи

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

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

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

Хоть на том же Питоне

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

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

Да уж, как посмотреть на 10 и 11 винду, написанную профессиональными программистами и сравнить хотя бы с ХР - мир был бы намного лучше, если б они реально не умели читать и писать.

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

Да уж, как посмотреть на 10 и 11 винду, написанную профессиональными программистами и сравнить хотя бы с ХР - мир был бы намного лучше, если б они реально не умели читать и писать.

У них нет цели писать что-то хорошее, аргумент неверен.

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

Они не профессионалы, а читать как раз таки не хотят.

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

Питоном не брезгуешь, так ведь?

Пока брезгую. Но не исключено, что скоро придется и его осваивать.

А так, я вроде рассказывал уже, как переводил автоматизацию научного эксперимента с Labview на Lua. Даже несмотря на то, что некоторые вещи у меня получились криво, писать алгоритм на текстовом языке неизмеримо приятнее, чем тянуть все эти линии в графическом режиме.

Зато Метапрог, о котором ты знаешь меньше чем я о питоне, скриптухой называешь.

А ведь вы правы. Скриптуха изначально предназначена для «по-быстрому накидать алгоритм», то есть простой и высокоуровневый язык. А скорость выполнения не критична. Метапрог под такое определение вряд ли подходит, разве что в плане скорости.

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

А это уже зависит от того сумеете вы им внятно описать ТЗ или нет.

Если уж делать прототип на скриптухе, Лабвью тоже сгодится.

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

Да уж, как посмотреть на 10 и 11 винду, написанную профессиональными программистами

см. выше про ТЗ. Они ж ее не для себя писали и не для пользователей.

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

я вроде рассказывал уже, как переводил автоматизацию научного эксперимента с Labview на Lua

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

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

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

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

Для меня это именно Лабвью.

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

В какую конкретно - в ваш дупопрожный чатик? Нет, спасибо, сами там сидите.

Я не из таких.

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

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

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

По такой логике ты еще тупее: не способен осилить ассемблер и вместо этого пишешь на сях и питонах.

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

rust кстати написан на rust

И его бинарник без rust не собрать

Метапрог вдохновился

(хотя конечно и gcc на c и c++ но для них дофига компиляторов других)

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

Да, сишка - лучшее из кроссплатформенного.

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

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

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

Как думаете, каков будет результат?

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

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

Надо ли говорить какой подход оказался быстрее?

По такой логике ты еще тупее: не способен осилить ассемблер и вместо этого пишешь на сях и питонах.

А кто вам сказал что Ликсис не осилил ассемблер? (что там вообще осиливать-то?) Знание ассемблера это очень полезный навык для программиста. Другое дело что большие программы на нем почти никто не пишет: уж больно громоздко получается. Не просто так ведь столько языков мирно сосуществуют друг с другом: кто-то лучше подходит для возни в драйверах и ядре, кто-то «по-быстрому накидать алгоритм, который будет файлики перекладывать», кто-то для жесткого матана, графических шейдеров, параллельных вычислений, моделирования электрических схем. У каждого из них своя ниша, где с ним конкурировать сложно.

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

Отсюда вопрос: вы свой метапрог на какую нишу нацеливаете? С какими языками хотите конкурировать? И сможете ли хотя бы в теории, через 20 летактивной разработки, реализовать сильные стороны того же условного Питона лучше него самого?

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

А вот тут надо будет провести эксперимент: взять человека, не знакомого ни с Lua, ни с Labview

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

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

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

Я такое накрутил бы на Лабвью. От баш-скриптов я плююсь еще больше чем от ручного ввода текстовой сишки.

Отсюда вопрос: вы свой метапрог на какую нишу нацеливаете? С какими языками хотите конкурировать?

Графическая замена Си и С++, опенсорсная замена Лабвью. Также - более оптимизированная альтернатива скриптухе и сексу с башем.

И сможете ли хотя бы в теории, через 20 лет активной разработки, реализовать сильные стороны того же условного Питона лучше него самого?

За 20 лет именно активной разработки Метапрога - думаю что питон отправим в область легаси. К сожалению, она пока что «полуактивная». Приходится отвлекаться, особенно в последнее время (ходить на протесты против принудительной вакцинации). Но разработка идет.

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

кловун

Иди в жопу.

А тебе сишка нужна

Я ее вручную не ввожу. Я ее генерирую автоматически.

хотя ты ее не знаешь

Работоспособный сишный код Метапрог генерирует.

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

Я такое накрутил бы на Лабвью.

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

Отсюда вопрос: вы свой метапрог на какую нишу нацеливаете? С какими языками хотите конкурировать?

Графическая замена Си и С++, опенсорсная замена Лабвью. Также - более оптимизированная альтернатива скриптухе и сексу с башем.

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

За 20 лет именно активной разработки Метапрога - думаю что питон отправим в область легаси.

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

Кстати, еще одно применение Питона - встраивание скрипта в другие программы без перекомпиляции. У вас есть хотя бы приблизительное представление как такого добиться и не слишком сильно потерять производительность?

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

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

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

Давно его не видел что то, может он за пределами ЛОРа активен? Не знаешь fsb4000?

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

Похоже, вашим пенсионерам пора начинать изучать конституцию. В случае Украины принуждение к вакцинации нарушает базовые конституционные права. Stanson, как у вас с этим?

У нас невакцинированных бюджетников (в основном учителей, врачей и ученых) поотстраняли без сохранения зарплаты. Через месяц хотят взяться за железнодорожников, работников почты и прочих госпредприятий. Ждем когда уже за студентов возьмутся, чтоб майданы резко выросли в объеме. Правда студенты, насколько я знаю, разленились вконец за полтора года удаленки и традиционная студенческая солидарность из-за отсутствия социальной коммуникации очень пострадала.

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

пук-хрюк

Говори по-человечески, я твой клованский диалект не разумею.

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