LINUX.ORG.RU

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

 , , ,


2

3

FAQ

0. Где отсутствующие примеры и пункты FAQ? Как вообще читать эти темы?

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

10. Примеры выдают варнинги при компиляции (у кое-кого еще и сегфолтятся)

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

11. Как выглядит факториал в графическом представлении?

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

(пока что на Лабвью)

Примеры

Находятся в прошлых темах. Компилировать исходники нужно так:

gcc ./test.c -o ./test $(pkg-config --cflags --libs gtk+-3.0)

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

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

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

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

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

Прототип чата:

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

Показывалка языка локализации через seltocale (кстати, у кого что показывает?)

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

Прототип чата с прокруткой:

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



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

биржы это хонипоты для путешественников во времени

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

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

только многомерное и гипертекстовое метаметапрог программирование и double binding позволит распутать этот клубок time paradox причин и следствий.

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

нужны более другие. нужен Новый Кодъ.

доказано 12 обезьянами.

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

серсер

наряду с «червером» и «дынными».

глоссолалия как брутфорс метаязыка Нового Кодъа.

намшуб Энки Нейл Стивенсон Snowcrash. изобретение своего особенного языка есть шаг на пути к новой карте мира.

такъ победимъ.

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

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

одномерные скорости, проекции метапрог скорости на одномерное время.

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

а инвалид астрофизик умер который в мозгах мог представить?

про Хокинга? а так у того же Козырева была вполне себе причинностная механика. а не причинно-следственная.

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

Владимир, это всё фигня, хотя странно — за что ни хватишься, ничего нет.

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

вот, например в проекте ThingML на гитхабе про методологию приводят следующую картинку и описание методологии разработки в понятном, текстовом виде.

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

даже если не умничать про метамодель в духе Eclipse EMF, Xtend/Xtext, спецификации метаязыка ThingML

хотя она там есть, в отличие от метапрога

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

он же всё пробует методом тыка, наощупь.

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

вот тут, на картинке — крупным планом

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

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

то будет очень наглядно в ThingML/HEADS сотоварищи. и ХЗ знает какая-то магия в метапроге, ога.

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

альзо, кодогенерация настраиваемая если понятна метамодель для кодогенерации.

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

вот Janet, например. шелл-лисп. который умеет dlopen/LoadLibrary внешних С библиотек, и дёргать из них функции через FFI. который занимает 3 файла и существует под все основные платформы.

даже веб-интерфейс и GUI к нему прикрутили.

практически TrueЪ Unix GUI по ТЗ от Витуса Вагнера, только не tcl, а лисп.

ну и на том же lush подобное можно было б сделать.

чятик там тоже есть, кстати. и в отличие от метапроговского — работает.

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

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

У меня бы процесс разработки выглядел так:
- разработка добротной метадата базы;
...

не обязательно изобретать велосипед, можно взять готовую расширяемую метамодель (как в ThingML поступили с EMF из Eclipse).

но можно и как-то точнее её специфицировать, тысячи средств разработки DSL в руки (тот же Xtext или Stratego/XT Spoofax). опять же, это не настолько важно как понимание методики разработки — что далее с этой метадата базой нужно делать (и какая для этого она должна быть).

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

шелл на janet здесь : janetsh гитхаб реддит

учитывая что этот лисп умеет дёргать функции из сишных разделяемых библиотек, есть PEG парсер, модули (среди которых например веб, SQLite и GUI), есть статический генератор сайтов на janet mendoza (который просто руки чешутся расширить в нечто Literate Programming подобное, вроде GNU Skribilo на Guile, чтобы эти чанки с блоками кода были именоваными и исполняемыми с общим AST LitProg документа)

то нет повода не.

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

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

clang-ом AST построить, например. или вообще нацелиться на кодогенерацию LLVM биткода текстового или любого языка, компилируемого в текстовый LLVM биткод.

вот например язык zig — можно брать код на си и поэтапно переписывать на zig.

а сам код на zig генерировать из диаграмм. может это будет проще, чем генерировать си.

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

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

Адвайта тотальности - оксюморон. Нельзя выразить тотальность кривой темой значков…

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

Нельзя выразить тотальность кривой темой значков…

метапрог вот тоже о чём-то своём картинки рисует, о невыразимом. текстами.

может, нащупает непосредственным действием. нужно лишь правильное намерение.

//pic related: ахалай махалай, иначе ничего не получится :)))

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

Надо сериализировать структуру в текст и из текста.

посмотри как тот же git хранит блобы, это объектно-ориентированная база данных

ls .git

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

Git это ООСУБД с объектами-блобами и контейнерами (директориями, tree, tags, branch, в виде блокчейна OID отдельных файлов или коммитов)

git internals , pdf про Git Data Model обучающее видео

Git Objects

wikibooks/Git/Internal structure

ещё есть pijul с теорией патчей

объектная модель git ещё gitbook git internals

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

а ещё в том топике ругали текстовые конспекты... у них и так ничего не держится в голове, клипованное мышление. и если бы ручкой писали в блокнотике — чисто механически запомнили бы, потому что вынуждены были бы запомнить. а так простыней текста много, осознания 0%. запоминания 0.001%.

переполнение стека рабочей памяти.

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

покопаться уже в бинарных структурных внутренностях GCC или LLVM (кстати, что лучше и почему?).

QBE (отсюда). тоже SSA представление как в LLVM, но С а не С++ и в целом API проще.

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

Напишешь «кот» или «kitty» вместо «cat» - не поймет

как будто бы «кiшки и кiшенята» зело понятнее

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

А теперь представь каждый раз когда надо на дороге переключить передачу сидеть с клавой и писать transmission.setSpeed(1), transmission.setSpeed(2). И еще steetingWheel.steer(20), steetingWheel.steer(-10) итд вместо крутить баранку. Именно так я вижу текстовое программирование и консольный интерфейс

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

например пролог — это АКП. «переключи сам нужную скорость, чтобы было оптимально».

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

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

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

Руль, передачи (и автоматические, и ручные), педали, спидометры итп - все же графичекий интерфейс!

перделки и свистелки — тоже. как было 100 лет назад требование ПДД «bells & whistles нужны чтобы распугивать лошадей, так и осталось.» уже и лошадей столько не увидишь, а гуёвые мигалки, и пердёвые свистелки — всё ещё там.

вы находитесь здесь. всё ещё.

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

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

inofity watch сигнал на изменение содержимого директории + запуск скрипта с новым файлом.

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

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

Кошенята. Кiшенята — это что-то из области фан-сектора покойного Горшка.

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

Максим с ребятами потрут

Максима с ребятами ничего, кроме посещаемости, не интересует. А она на данном форуме достигается только путём размещения т.н. «тупняка». Sad but true

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

Владимир

Хорошего разработчика.

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

Владимир

Неплохой вы собеседник.
Пишите /пока все ваши суждения - добротны/.

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

PS: «Нельзя объять, необъятное».

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

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

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

А по хорошему бы ему первую версию IDE написать бы на Си. Да, с использованием давным-давно работающего ГРАФИЧЕСКОГО дизайнера. Дизайнер этот, кстати, можно пропатчить, чтобы указывать в качестве обработчиков кнопочек сишные процедуры, сгенерённые из метапроговских диаграмм. Да, патчить придётся программу на Си.

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

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

Владимир

Добавочка.
А вот бесконечные придирки - нехорошо.

Надеюсь что наши суждения об Метапрог - не придирки.

anonymous
()

Обновлённый список факторов риска

Краткая выжимка для Владимира и для тех, кто думает, не помочь ли автору с проектом. С позицией самого автора проще всего познакомиться, прочтя общую концепцию (тема 1) и FAQ (тема 4).

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

1) автор настолько не любит текст, что даже внутреннее представление графических диаграмм хочет сделать двоичным. Готов ради этого даже разработать собственную VCS (а также, вероятно, кучу других инструментов, о которых он сейчас просто не задумывается - hobbit);

2) автор не хочет делать сколько-нибудь внятное текстовое описание своего языка и внутреннего устройства диаграмм. Заверяет, что всё это заменят интерактивные обучалки;

3) автор не видит ничего страшного в том, что сгенерированный сишный код имеет обфусцированный вид («не для эстетов»). В частности, планирует все функции-диаграммы сливать в сишную функцию main(), что ставит жирный крест на возможности локализации ошибок в исходнике с помощью valgrind (и не только). Все переменные имеют автогенерированные цифровые идентификаторы, хотя можно было хотя бы там, где это возможно, производить сишные имена от имён объектов диаграммы;

4) автор не видит ничего страшного в том, что сгенерированный сишный код при сборке выдаёт кучу предупреждений. Правда, по его словам, это всё из-за анонимных структур, и он допускает, что «когда-нибудь» сделает структуры неаонимными, что, по его словам, должно предупреждения убрать. Однако позиция «в предупреждениях ничего страшного, сишный код не для эстетов» оставляет возможность появления новых предупреждений;

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

Замечу однако, что сама идея выхлопа в виде исходников на Си («переносимый ассемблер») очень здравая, поскольку она сильно облегчает идею переноса метапрог-программ на 100500 процессорных архитектур и позволяет задействовать некоторые существующие инструменты (точнее, позволяла бы, если бы код был необфусцирован).

Примечание для анонимусов номер 1. Я специально не стал в этих пунктах перечислять претензии к личности автора, которыми тут многие грешили в предыдущих темах (школьник, студент, ЧСВ, компетенция и всё такое). Всё это во-первых, субъективно, во-вторых (главное), лечится со временем, в третьих, обсуждение всего этого приближению к истине не способствует. С избранными высказываниями автора, характеризующими его позицию как разработчика, можно ознакомится в репозитории у balsoft. В свой список я собрал исключительно сугубо технические детали, которые продвигает автор, и на большинстве которых (в частности, на бинарном формате) он категорически настаивает.

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

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

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

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

даже не начинайте на эту тему шутить, удалят комментарии, закон о верунах же

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

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

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

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

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

Как бы красиво это обойти

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

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

Вообще не осваиваешь, раз на 6й теме такой вопрос возник.

а ведь и правда я в первый день освоения C в 13 летнем возрасте уже это знал. очевидно подход автора к обучению надёргаться отрывочных знаний вместо того что бы осилить книжку K&R ошибочен и ущербен.

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

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

так вот оно чё оказывается, виновато даже не gtk, у вас просто галлюцинации и нет никаких утечек на самом деле.

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

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

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

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

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

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

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

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

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

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

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

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

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

показывай их

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

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

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

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

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

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

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

plan9 + acme в линукс : go do the correct thing и плагин для vscode

рядом пример скрипта на janetsh

The task we are trying to solve is connect to a remote git repository, list all the remote version tags that are also semantic version numbers and print the tags as useful json values.

и нечто вроде roadmap для janetsh

описанное выше позволяет запускать скрипты в духе acme из plan9, то есть выделяем мышкой и обрабатываем выделенное скриптом. ну и нужно далее как-то делать inotify и ловить момент появления новых файлов в заданной директории.

вообще, в духе plan9 можно написать нечто вроде REST API только на файловой системе. когда файлы копируются в какую-то псевдодиректорию «логической фс», что служит командой для парсинга файла и его дальнейшей обработки по правилам. ну или типа FUSE сделать псевдофайловый интерфейс к СУБД, и далее в ней ловить появление интересного контента. при этом сей контент можно будет редактировать текстовым редактором через FUSE, запускать скрипты в шелле, и т.п.

вообще, у unDEFERER здравые мысли есть насчёт unDE: офисный софт минималистичный, с текстовыми файлами (и возможностью конвертирования в PDF, далее во что угодно).

логично сделать следующий шаг, и избавиться от файлов и приложений в классическом стиле (заменив их чем-то вроде zzStruct, ZigZag database, applitudes и Xanadu Теда Нельсона, ну или как у unDE BDB базой ключ-значение).

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

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

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

clang-ом AST построить

Да он и так используется. Дело в том что в С нету массивов, ты не можешь узнать сколько именно байт «занято» по тому указателю.

Deleted
()
Ответ на: Обновлённый список факторов риска от hobbit

1) автор настолько не любит текст, что даже внутреннее представление графических диаграмм хочет сделать двоичным. Готов ради этого даже разработать собственную VCS

В новой продвинутой systemd так же! И ничего, почти во всех дистрибутивах она по дефолту.

2) автор не хочет делать сколько-нибудь внятное текстовое описание своего языка и внутреннего устройства диаграмм. Заверяет, что всё это заменят интерактивные обучалки;

На данном этапе.

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

но C++ позволяет их создать очень удобно изолировать манипуляции с памятью с помощью энкапсуляции презираемой автором

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