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 (всего исправлений: 2)
Ответ на: комментарий от metaprog

Ардуинные библиотеки на С++, так то и дело приходится шарить в исходниках или велосипедить что-то в обход ООП, поскольку просто так взять и вытащить из класса данные, как из структуры, нельзя

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

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

Хорошо, дай описание языка, опиши вкратце концепции, какие проблемы он решает(не только для тебя).

Окей, попытаюсь вкратце.

Метапрог дает удобный графический интерфейс программирования, не отходя от сишной системы типов и вообще сишных концептов. В отличие от текстового Си, ты вытягиваешь блоки и соединяешь их проводками. Данные «текут» по проводкам, не надо вручную прописывать имена и типы переменных. На уровне Метапрога переменных вообще нет, есть только источники и «потребители» потоков данных.

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

Так-то лучше один раз увидеть чем 100 раз услышать. Подробные описания концептов будут позже. Или если что конкретное интересует - спрашивай.

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

Вообще я не понимаю его негатива к так называемым антиметапрогерам. К тебе, или скажем к rebforce

Глупость, умноженная на ЧСВ. Чего только стоит обещанный, но не сделанный «антиметапрог» rebforce. Накидать несбывшихся вангований упоротых антиметапрогеров?

Я не вижу в ваших постах хоть чего-то на что можно обижаться

Да уж, ничего такого:

кловун

мертвопрог

Обижаться не на что, правда?

AntonI, shpinog

С важным видом несут бред. Особенно про СУВТ, которые проФФесор Сферического Матана В Вакууме спутал с PyObject. AntonI, так что, будет ли Метапрог медленнее питона из-за СУВТ?

А i-rinat или hobbit вообще мне кажется ему это метапрог бы написали, если бы он нормально попросил.

i-rinat хватило только на игрушку, а hobbit и не претендует на написание «антиметапрога».

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

В библиотеке с тачскрином вытащить позицию курсора например. Сделать это прямо нельзя, компилятор маюткается что приватное поле. Раздражает.

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

Кстати, как на ардуинах с параллельными потоками?

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

Которая либа конкретно? Из там пачка.

Кстати, как на ардуинах с параллельными потоками?

Как напишешь, так и будет.

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

Которая либа конкретно? Из там пачка.

http://ceezblog.info/downloads/TFT-LGDP4535.rar

Кстати, как на ардуинах с параллельными потоками?

Как напишешь, так и будет.

Нет ли библиотеки, позволяющие параллельное выполнение кода а-ля pthreads?

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

В каком смысле поломки? Вылетит - перезапущу.

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

Кому-то может и помогает, но мне лично только мешает.

Ну там выше писали чем хорош ООП. AntonI например писал про инкапсуляцию. Я думаю мешает потому что не умеешь его правильно готовить. Но это уже дело твое, мусолить эту тему снова неохота.

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

Глупость, умноженная на ЧСВ. Чего только стоит обещанный, но не сделанный «антиметапрог» rebforce. Накидать несбывшихся вангований упоротых антиметапрогеров?

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

Обижаться не на что, правда? кловун мертвопрог

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

i-rinat хватило только на игрушку

I-rinat писал тот проект for fun, для своего удовольствия то бишь. Это не показатель его уровня. Может он в силиконовой долине за миллионы долларов графические интерфейсы пишет, вероятность всегда существует. А ты уже записал его в противники и помощь получить теперь будет сложно. Твоя же цель тут найти помошников для проекта?

а hobbit и не претендует на написание «антиметапрога».

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

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

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

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

@Razk, но это же не описание - это агитка «матепрог няшный, метапрог Ъ, метапрог ми-ми-ми».

вытягиваешь блоки

виды блоков не перечислены

соединяешь их проводками

что именно с чем именно можно соединять? Что там с контролем типов?

Данные «текут» по проводкам

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

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

это блок? Как тогда понимать выражение что «в метапроге нет переменных» и все данные связаны только с проводками?

позволяет скрыть работу с указателями на массивы под капотом функций-оберток

Я хочу обработать не все а некоторые элементы массива, как мне это сделать?

Метапрог дает абстракции

Список даваемых Метапрогом абстракций в студию.


@Razk, проблема ТСа не в том что у него знаний на уровне дворника - я когда на ЛОР пришел тоже многого не знал (и даже не знал как многого не знаю). Проблема ТСа не в его манере общения, и даже не в его ЧСВ раздутом до орбиты Юпитера. Проблема ТСа в его НЕОБУЧАЕМОСТИ

Вопросы, которые я задал в этом посте, ему задавали 100500 раз разные люди - он не ответил. Про скорость работы кода на различных ЯП ему тут пытались объяснять многократно - он по прежнему считает, что самый быстрый АСМ, потом С. остальное отстает в разы. Аналогично со «скриптухой» («ненужно, PyObject* зло»), c квадратным уравнением («я не спец по матану»), с книгами и теорией, с наукой - этот список можно продолжать очень долго.

Причем пытающихся ему че то объяснить ТС быстро записывает в антиметарпрогеров, глупцов с разудутым ЧСВ и тд и тп. Так что че то ему объяснять - совершенно безнадежное занятие. Хорошо видно, что ТС как был на уровне дворника дцать тем назад, так он на уровне дворника и остался. Увы…

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

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

Тогда уж в прототипе метапрога.

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

Я задавал ему этот вопрос. Он, как я понял, считает такую ситуацию маловероятной, поскольку большая часть прототипа уже написана, и уже вот-вот… и пока что LabVIEW его ни в чём не ограничивает, а потом он от LabVIEW отделается.

Я, конечно, считаю, что с этим «вот-вот» он сильно оптимистичен. И по закону Мэрфи подлянка с большой вероятностью может появиться именно тогда, когда до избавления от лабвью останется буквально последний шаг.

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

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

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

Лазерно-утюжной технологией?

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

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

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

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

Просто одна маленькая будет стоить как пачка. Зато будет многослойная.

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

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

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

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

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

Метапрог дает удобный графический интерфейс программирования

Люди должны жить достойно, оптимизация, улучшения!

Собственно в чём конкретно удобство заключается и почему это удобно.

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

И почему это удобно? Собственно имена дают возможность визуального опознавания, в метапроге вместо этого ты предлагаешь «комментарии» - какая разница ?

не отходя от сишной системы типов и вообще сишных концептов.

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

Зачем рассказывать про Си, рассказывай про свой продукт.

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

Ничего не мешает реализовать это поверх Си

и в целом упрощающих работу с массивами.

Чем?

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

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

А собственно про само графическое программирование можно почитать, а не про то какой плохой С и ты всё исправляешь?

Так-то лучше один раз увидеть чем 100 раз услышать. Подробные описания концептов будут позже. Или если что конкретное интересует - спрашивай.

Когда? Позже уже длится год.

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

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

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

же не описание - это агитка

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

Metaprog рекомендую обратить внимание на вопросы AntonI и дополнить описание проекта.

не в его манере общения

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

НЕОБУЧАЕМОСТИ

Можно я немного позанудствую. Не хочется != необучаемый. Необучаемый (в моем понимании) это когда из за каких-то медицинских проблем человек не может научится. Например вышеупомянутая тобой дислекция. Я медицинских справок ТСа не видел и диагноз ему поставить удаленно не могу.

Причем пытающихся ему че то объяснить ТС быстро записывает в антиметарпрогеров, глупцов с разудутым ЧСВ и тд и тп

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

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

Не хочется != необучаемый.

Что совой об пень, что пнем об сову - результат один.

Ну ты ему сейчас написал что нужно…

Я ему и написал выше…

Не ты первый увы, боюсь не ты последний:-(

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

Что совой об пень, что пнем об сову - результат один.

Ну на данный момент да, тут я с тобой согласен.

Не ты первый увы, боюсь не ты последний:-(

Всем нам хочется верить в чудеса :).

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

Зачем рассказывать про Си, рассказывай про свой продукт.

Так это ж самое главное. Он же [Си] фундаментален, и его одобряет главный кумир метапрога – Царь.

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

Тогда уж в прототипе метапрога.

Да мой косяк.

а потом он от LabVIEW отделается.

Поправь если я ошибаюсь, мне Liksys писал что ТС сам сделал кодогенератор, но сделал он его в labview, я ведь правильно понимаю? То есть он диаграммы с помощью Labview в код на языке С транслировал? Вот он недостаток плохого описания проекта.

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

Тут еще знаменитого чукчу из анекдота можно вспомнить.

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

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

Резонит делает по одной, сам заказывал. Цена немного касается по сравнительно с китайцами, но все равно. Большая двухслойная обошлась мне в 5к

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

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

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

с сайта Котечки

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

зависит от пропиетарного LabVIEW

То есть возможно под этим имеется в виду что

он диаграммы с помощью Labview в код на языке С транслировал

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

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

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

ибо понять все ли корректно оттранслировал Labview не возможно, код Labview закрыт.

С теоретической точки зрения их план валиден. Сейчас идет работа на QAD (quick and dirty) версией, единственная задача которой скомпилировать настоящий метапрог.

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

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

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

Как там в одной книге говорится.

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

1 И пришли те два Ангела в Содом вечером, когда Лот сидел у ворот Содома. Лот увидел, и встал, чтобы встретить их, и поклонился лицем до земли

2 и сказал: государи мои! зайдите в дом раба вашего и ночуйте, и умойте ноги ваши, и встаньте поутру и пойдете в путь свой. Но они сказали: нет, мы ночуем на улице.

3 Он же сильно упрашивал их; и они пошли к нему и пришли в дом его. Он сделал им угощение и испек пресные хлебы, и они ели.

4 Еще не легли они спать, как городские жители, Содомляне, от молодого до старого, весь народ со всех концов города, окружили дом

5 и вызвали Лота и говорили ему: где люди, пришедшие к тебе на ночь? выведи их к нам; мы познаем их.

6 Лот вышел к ним ко входу, и запер за собою дверь,

7 и сказал [им]: братья мои, не делайте зла;

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

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

кумир метапрога – Царь.

Не сотвори себе кумира

Царя я зауважал тогда, когда познакомился с его взглядами. Он совершенно справедливо считает Си фундаментальным языком программирования, а скриптуху - говном. Кстати, у меня с ним совпадают взгляды даже в том, что бинарные форматы данных лучше (кстати, кастую hobbit):

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

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

Если всё ещё сложно - просто приводи контр-тезисы. Выкатывай мне примеры того, где обработка текста и текст как формат состоятелен. Вне контекста легаси и «для человека».

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

Для примера давай возьмём «здесь». хттп нужно человеку? Нет. html нужен человеку? Нет. Весь текст здесь нужен человеку? Нет. Её не читает человек - его читает «машина». Для человека это тогда, когда конечным потребителем является человек. И то это так же неправильное. Допустим, те же упомянутые выше логи. Кто логи производит? Машина. Кто логи будет читать? Машина. Не нужно рассказывать мне эти куллстори, что ты сам будешь читать даже мегабайты логов и разбираться в них. Вот и получается, что логи никаким образом не должны быть текстовыми - там нет никакого человека. Текст - это лишь представление. Да, ты можешь воспринимать это так. Текст для хранения и прочих операций над данными не состоятелен. Но даже как представление он несостоятелен. Вот возьмём тот же веб. Какой поехавший выберет смотреть текст, вместо смотреть инспектор? А никто. Потому что здесь явно видно различие и причины для несостоятельности текста. Тоже самое и со всем остальным. Где ты хочешь писать/читать код - в блокноте, либо нет? Выбор очевиден, а почему? Потому что там не текстовое представление. Текст - это попросту элементы представления и то не текст, а строки. Посмотри вокруг и попытайся найти текст. Везде, где ты его найдёшь - будет говно. А где не найдёшь - говна не будет. Всё просто.

Отсюда: https://tsar1997.blogspot.com/2019/10/blog-post_18.html

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

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

Диаграммы я и строю, и транслирую в Си в лабвьюшном прототипе Метапрога - самодельной программе, сделанной на Лабвью.

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

виды блоков не перечислены

Надо скачать и запустить Метапрог, после чего разобраться. Ладно, попробую перечислить: константа, операция (вызов сишной функции, сишная вставка или собственная метапроговская подфункция), вход, выход (интерфейсы подфункции), условие (if), переключатель (switch), циклы (цикл состоит из двух блоков: входного и выходного, соединенных жесткой последовательностью), операции над структурами (вытягивание или запись элемента структуры/юниона) и дополнительные плюшки, например каст типов, взятие указателя, вытягивание данных из указателя, дебаг блок.

что именно с чем именно можно соединять? Что там с контролем типов?

Каждый блок имеет типизированные входы. Несовместимый тип к ним ты даже не подключишь. Статическая типизация а-ля Си и Лабвью.

Когда данное начинает течь?

Данные начинают течь из блоков, которые выполняются. Выполняются в первую очередь блоки, не имеющие входов (константы и функции без параметров). Когда блок выполнился, он как бы «заливает» данные в проводки, идущие из его выходов. Следующие блоки начинают выполняться, получив все данные на свои входы. Так же работает принцип Data flow в Лабвью, только в прототипе Метапрога пока не реализовано параллельное выполнение параллельных веток.

Также свои коррективы в порядок выполнения блоков вносят жесткие последовательности. Кстати, в Лабвью жестких последовательностей как проводков нет (только проводки с данными), есть только жутко неудобная Flat Sequence.

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

Будет ерунда. Корректная сишная трансляция точно не получится.

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

это блок?

Это тип данных. С помощью блока «операция над структурой» можно обращаться к внутренностям структуры массива.

Я хочу обработать не все а некоторые элементы массива, как мне это сделать?

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

Список даваемых Метапрогом абстракций в студию.

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

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

Вопросы, которые я задал в этом посте, ему задавали 100500 раз разные люди - он не ответил

Значит неправильно задавали.

Причем пытающихся ему че то объяснить ТС быстро записывает в антиметарпрогеров, глупцов с разудутым ЧСВ и тд и тп

Потому что не от большого ума ты несешь истеричный бред. Особенно про СУВТ, путая их с PyObject или еще черт знает чем.

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

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

Он, как я понял, считает такую ситуацию маловероятной, поскольку большая часть прототипа уже написана, и уже вот-вот… и пока что LabVIEW его ни в чём не ограничивает, а потом он от LabVIEW отделается.

На самом деле, ограничивает во многом (иначе зачем мне делать Метапрог?), но лучшей альтернативы из существующих сред программирования нет. Лабвью позволило мне сделать прототип Метапрога. 8 версия будет уже с условными схождениями (которые, кстати, уже работают, но пока только на if). Это значит, что почти весь необходимый функционал прототипа уже сделан. Из крупного, наверное, остались только свичи по многотиповому типу (не путать с СУВТ) и циклы по структуре - это, наверное, что-то из разряда constant expression (хотя я не силен в терминологии текстовых ЯП, могу ошибаться).

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

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

Кстати, куда делся царь? Ладно на ЛОРе трут, но он даже в свой блог не пишет.

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

Железного трединга там нет, но можно сваять конкурентное выполнение кода тут на СХХ

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

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

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

Так-то думаю распбери пи пощупать, но без готового Метапрога мне там делать нечего. Скачать Debian GNU/Linux с торрента и достать лабвьюшные модули для кодинга под распбери мне не удалось, а покупать за 500 баксов не комильфо.

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

Заводить несколько контроллеров на одной плате? Да ну, неужели нельзя решить все программно?

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

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

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

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

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

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