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 + будильник на Метапроге

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

Доказать правтоу, конечно же. Я не обязан верить тебе на слово, что Котечка несет бред (а ты, стало быть, Истина В Последней Инстанции).

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

по факту котечка прав

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

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

Если сборщик мусора в джаве идеален, то почему же тогда серверные приложения надо периодически перезагружать? Или это враки?

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

Спасибо за развернутый ответ, теперь я все понял, и обязательно исправлюсь!

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

https://habr.com/ru/post/132500/

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

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

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

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

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

Вот тут я для разнообразия отвечу.

https://habr.com/ru/post/487116/

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

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

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

Особенно хорошо GC там работает в многопоточных программах, ну ты понял

Разумеется, отсутствие потоков в питоне - бред некомпетентного клоуна. Я уже устал опровергать это заявление. Это одна из причин, почему котечка не заслуживает моего внимения - он банально не способен воспринимать аргументацию.

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

Меня уже описывают как фантомаса какого то, то я агрессивный, то фашист-антисемит, то я троллю, то ОПа обманываю хитро... Я же уже рассказывал про свою мотивацию, и не один раз, все сильно проще и логичнее. Ну во первых метапрог идеален для обучения программингу, я за пару недель до первой метапрог темы хотел кунчика научить программки писать для себя, но текстовые языки это просто издевательство, у меня тогда появились мысли о визуальной среде программирования, а там и тема подоспела, удачно получилось. Так же я уже давно думал о продвинутом Forth'e, почему не взлетел оригинальный? Слишком низкоуровневый, за стеком трудно следить. В графике продвинутый Forth будет идеален, у него не будет ограничений текста, а гибкость и возможности это то за что и любят Forth, так же многие вещи будут сильно нагляднее и проще, это новая ступень, и огромный шаг вперед, просто многие этого не видят, или просто не могут оценить саму задумку.

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

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

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

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

В расте ручной пердолинг с расстановкой lifetime'ов. Компилятор ничем не управляет, просто ограничивает все что только можно, из за чего постоянно приходится прибегать к unsafe. Сразу видно эксперта, знаний ноль, зато метапрог приплести смог.

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

Жду когда они перейдут на очередную модную скриптуху, главное на C/C++ ничего не писать, а то ведь напишут, и все, работа кончится. А так всегда есть чем заняться, хочешь GC тюнингуй, хочешь опции к компилятору rust'а подбирай, короче прогресс можно подвигать.

Разумеется, отсутствие потоков в питоне - бред некомпетентного клоуна. Я уже устал опровергать это заявление. Это одна из причин, почему котечка не заслуживает моего внимения - он банально не способен воспринимать аргументацию.

Да, помню твое классное опровержение:

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

%)

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

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

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

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

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

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

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

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

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

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

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

Так ты это все и делаешь, по большей части троллишь )

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

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

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

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

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

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

Периодический запуск гц - другая проблема, для которой требуются уже другие решения

Отказаться от сборщика мусора в рантайме.

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

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

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

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

А местами оверхед даже «отрицательный»: обычную нуль-терминированную строку надо проходить целиком циклом while, чтобы узнать ее длину, в то время как в метапроговском массиве достаточно обратиться к элементу структуры, обозначающему размер. Чем больше строка - тем больше выгода. И если по строке надо таки пройтись - в нуль-терминированной строке тебе надо идти тем же циклом while и кроме основной операции еще и обязательно сравнивать каждый байт с нулем, а в метапроговском массиве можно проходиться циклом for (ведь длина уже известна), который лучше поддается оптимизации и даже есть возможность параллелизации выполнения. Конечно же, это все можно сделать и средствами чистого Си вручную, но в Метапроге это будет намного удобнее.

не думаю, что мне имеет смысл дочитывать остальной бред

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

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

а дальше бредовуха про кунчика

Я не шучу.

маленькие шаги для одного человека и большие для всего человечества

Ну так аналогов метапрога еще не существует, разве это не шаг вперед? Или прогресс это когда сервер дискорда (еще и клиент на электроне) переписывают с одной скриптухи на другую?

но тут дело такое, обучить никого нельзя, если только человек сам хочет учиться тогда что-то получится

А учится и не нужно, нужно софт делать. Мне кажется та фраза гениальна. Человек может реально хотеть что то сделать, но все эти мануалы на пару гигабайт отбивают все желание. Я например делал несколько заходов в программинг, потому что хотел написать кое что, но мне попадались под руку Java, C# и другие ужасные вещи, я читал про эти классы, конструкторы, и просто не мог понять кто же это мог придумать, и зачем? Я же просто хочу сделать программку!

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

а я увы не в теме ваших терок за дискорд

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

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

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

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

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

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

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

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

А с доказательствами у тебя не айс

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

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

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

Опять троллите

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

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

Дело не в знаниях, а в ненужных абстракциях.

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

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

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

Тем не менее это не делает ни то, ни другой язык плохими.

Ну я на подобное и не намекал, плохи они по другим причинам %)

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

Можно пойти дальше, и дойти до того что причин использовать Rust вместо С++ нету, лайфтаймы уже завезли в clang, пакетный менеджер microsoft уже сделал, анализаторы завезли...

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

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

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

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

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

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

это не техническая аргументация, а словесный понос

1. Скипаем неудобные вопросы и неудобные ответы

2. Объявляем все словесным поносом

3. Считаем себя Непогрешимой Истиной В Последней Инстанции

Я лучше с уважаемыми физиками в этом треде пообщаюсь

Позаниматься совместным дрочем на пистон? Только дрочить придется по очереди, в один поток.

metaprog ()
Ответ на: комментарий от metaprog
  1. Скипаем неудобные вопросы и неудобные ответы
  2. Объявляем все словесным поносом
  3. Считаем себя Непогрешимой Истиной В Последней Инстанции

Ты так самокритичен.

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

Вообще раньше этим balsoft занимался, жаль перестал…

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

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

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

Моего кода там нету.

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

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

-DNKCD=NKC_SDL

Примеры нуклеара собираются с разными графическими либами, примеры нуклеар+ собираются. Выхлоп метапроги – танцы с бубнами.

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

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

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

А прототип этот нужен ТСу для одной-единственной цели — написать на нём настоящий метапрог.

ТС месяц уже пытается запилить пресловутые «условные схождения».

Вот такой парадокс.

Зато смешно.

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