LINUX.ORG.RU

Метапрог-прототип, версия 4

 , ,


0

3

В новой версии серьезно доработана система типов. Теперь сложные типы (структуры (аналог struct/union), пронумерованные списки (аналог enum), структуры условного выбора типа) можно сохранять на диск как отдельный файл и использовать ссылки на них в диаграммах и других типах.

Скачать:

https://www38.zippyshare.com/v/KUuZC9Ie/file.html

Из недоработанного: трансляция массивов в структурах в Си. В сишном представлении метапроговская структура с массивом должна превращаться в несколько переменных:

1. Саму структуру (struct/union), в которой на месте массива - указатель на его первый элемент.

2. Вторую структуру (struct) подобного вида:

struct {
char * pointer;
size_t size;
char dynamic; //динамический массив?
} metaprog_array_structure_123;

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

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

Metaprog: выпуск прототипа (универсальная графическая среда программирования)



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

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

Эх, жаль, на ЛОРе вменяемых людей не так уж много осталось.

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

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

Ржал в голос, молодец!

потом, возможно, перепрофилируется на что-либо более толковое

Почему бы и нет - по-счастью метапрограммирование не исчерпывается забывшими принять галоперидол :)

zabbal ★★★★★
()

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

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

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

Нас в этом болоте полёг уже полк…

Видимо, такие вещи осознаются только на собственном опыте.

hobbit ★★★★★
()

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

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

Даже хочется скачать и попробовать его метапрог, но пока опасаюсь

Ну попробуй, если купленный Лабвью есть. :)

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

если купленный Лабвью есть

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

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

Я бы заманался бы такое мышкой рисовать лол

Так наоборот же, легко и просто!

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

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

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

А он не нужен на самом то деле, возможно уже скоро будет единый экзешник

С библиотеками, тащенными из Лабвью? Так это юридически то же самое.

Или уже сам-на-себе внезапно подкрался?

только мини-образ икспи к нему надо

Реактос подойдёт? :)

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

мой тебе совет: ты делаешь схему программы СРАЗУ ВСЕЙ. а это неверно.

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

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

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

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

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

Реактос подойдёт? :)

Не думаю, но проверить надо.

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

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

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

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

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

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

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

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

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

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

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

Ну вообще LabView рантайм я вчера пробовал ставить в ReactOS, вроде бы все успешно.

Проверь сегодня, остался ли он там после перезагрузки. :) Над стабильностью ReactOS в последние 2-3 версии поработали хорошо, но закидоны ещё бывают.

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

я с вами прощаюсь

Что ж, одним п болтуном меньше.

Metaprog: универсальная графическая среда программирования [в разработке] часть 4 (комментарий)

Ну так вот, концепт AMP будет устаканен в течение недели

Походу «антиметапрог» на реде или Clojure мы так и не увидим. Забавно.

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

это ж айти, а не краеведческий музей

А айти это обязательно английский, да? В Метапроге будут мультиязычные названия (функций, типов, полей структур, элементов диаграмм итд итп). Украинец будет видеть все на украинском, русский на русском, англичанин на английском итд.

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

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

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

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

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

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

ХР не обязательна если есть винда. Но под линуксом (вайном) хз поставится ли лабвьюшный рантайм, у меня не получилось.

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

представь что на метапроге ты разрабатываешь метапрог

Я уже практически это и делаю. Если чего не хватает для реализации метапрога на прототипе - допиливаю прототип:)

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

иметь возможность спрятать часть

В подфункции (поддиаграммы). Так и делаю.

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

5 версию прототипа выложу со скомпилированными ехе.

А сишных исходников (пусть даже сгенерённых), из которых можно будет собрать exe самому без лабвьюшных библиотек, я так понимаю, ждать ещё долго?

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

собрать exe самому без лабвьюшных библиотек

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

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

Кстати Множественные уязвимости в OpenBSD

Обман заключается в передаче имени пользователя «-schallenge» или «-schallenge:passwd», которое затем интерпретируется не как имя пользователя, а как опция. После этого система принимает любой пароль.

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

П. С.: основной принцип обращения Метапрога со строками - никаких специальных символов (например, нуль-терминированных строк) и регулярных выражений (regular expression). Это уже должно гарантировать невозможность уязвимостей, связанных с нуль-терминированными строками и специальными символами (а-ля shellshock/bashdoor), верно?

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

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

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

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

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

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

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

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

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

Походу «антиметапрог» на реде или Clojure мы так и не увидим. Забавно.

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

А айти это обязательно английский, да?

Да.

Как думаешь, возможна ли подобная тупость бинарными форматами и протоколами?

Да.

никаких … регулярных выражений

Удачи с таким подходом, лол.

самая большая «уязвимость» которую я у себя вижу

Обрести профессиональную паранойю тебе только предстоит, я смотрю.

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

Я не в курсе тех уязвимостей, читать надо.

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

В течение той же недели он отказался от этой затеи, как от бессмысленной.

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

Вообще ребфорсер постоянно говорил что вот вот сделает, возвращался к идеи. Еще говорил что на clojurescript или другом хипстерском языке было бы мегабыстро, ну так чего не продемонстрировал то, а?

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

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

Так в текстовых форматах можно скобку забыть закрыть, тоже самое.

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

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

И если это не велосипед с квадратными колёсами, а что-то более-менее стандартое типа XML/JSON – это УЖЕ написано. Много лет назад. Метапрог позволяет вызывать сишные либы? Чудесно, берём libxml2 и пользуемся. Библиотека старая, основные дырки давным-давно закрыты. Какой-то libjson, вроде, тоже есть.

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

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

И если это не велосипед с квадратными колёсами, а что-то более-менее стандартое типа XML/JSON – это УЖЕ написано. Много лет назад. Метапрог позволяет вызывать сишные либы? Чудесно, берём libxml2 и пользуемся. Библиотека старая, основные дырки давным-давно закрыты. Какой-то libjson, вроде, тоже есть.

https://sourceforge.net/projects/libwbxml/ ???

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

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

Знаешь, что самое обидное?

Что генерация гуя из визуального представления в код — задача давным-давно уже решённая. Всякие там GtkBuilder, Qt Designer и др. Всё как ты любишь — разработчик мышкой натаскивает виджеты на окно, указывает им размещение, задаёт свойства в табличках, любуется на свой труд, и при сборке проекта из этого генерируется код. Это как раз тот случай, когда визуальная разработка оправдана.

Но сами эти инструменты написаны не на метапроге и не на лабвью. Там C или C++. И если бы ты не проповедовал догму, что «ВСЁ должно быть написано на диаграммах», ты бы уже сейчас для гуя мог взять ту же Gtk, не занимаясь кодогенерацией для кнопок и списков сам. А метапрог-диаграммы оставил бы для логики. Ну и как-нибудь увязать дизайнер и логику, чтобы из контекстного меню, связанного с кнопкой, вызывалась уже метапрог-диаграмма, описывающая логику. Каждой задаче — свой инструмент.

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

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