LINUX.ORG.RU

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

 , , ,


2

3

Не нравится - проходите мимо. Нравится - помогайте проекту.

Дополнительно:

Структуры условного выбора типа

Примеры

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

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

Структура

Структура GtkWidgetClass с кучей членов-указателей на функции:

https://i.postimg.cc/bwTrb1r1/2.png

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

Да, большая и на экран не вмещается. После релиза эта проблема будет решаться перемещением видового экрана по диаграмме и зумом (как в играх-стратегиях или при просмотре фоток под зумом).

Она же в текстовом виде: https://pastebin.com/TeTsSMQz



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

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

Владимир

Сообщество нужно потихоньку переводить на новую технологию.
Шоковая терапия здесь - противопоказана.

anonymous
()

ТС, предлагаю тебе тупо зарегистрироваться на амазоне и получить год одногиговой VPS бесплатно. Там можно хостить сайтик с картинками, ну и BTC адрес свой оставить. А если взлетит, то можно потом переехать туда, где подешевле и помощнее. Почтовую рассылочку, GitLab, все в таком духе.

А то из вот этого мне вообще нихрена не понятно, зачем здесь C и причем тут GTK...

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

Читай оригинальную тему и комменты к ней (тьфу, почти как RTFM). Там, кстати, и BTC-адресок есть, если есть желание поспособствовать прогрессу:)

В Си диаграммы транслируются, GTK будет использоваться Метапрогом после переноса его кода с Лабвью.

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

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

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

Читай оригинальную тему

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

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

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

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

Думаю постить на Хабр, но это уже после релиза.

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

Я визуализировал структуру с интерфейсами для GtkWidget. Вроде те самые методы, которые еще вчера взрывали мне мозги. Но все типы в тех функциях «неопределенные» (void). Это неправильно?

https://i.postimg.cc/TP9YDHvq/image.png

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

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

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

Первая из функций в структуре - dispatch_child_properties_changed. Она имеет 3 параметра и один (как и у всех сишных функций) выход. Все типа void (неопределенное, невизначене). И так далее, что тут непонятного?

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

Владимир

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

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

Как аргументы могут быть void? Может быть void*? Если так то вроде все окей, а может и нет. Я код на Gtk впервые дня 3 назад увидел.

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

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

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

А вот у некоторых функций на выходе не void, а знаковое 32-битное, то есть int.

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

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

struct _GtkWidgetClass
{
  GInitiallyUnownedClass parent_class;



  guint activate_signal;


  void (*dispatch_child_properties_changed) (GtkWidget *widget,
          guint n_pspecs,
          GParamSpec **pspecs);


  void (* destroy) (GtkWidget *widget);
  void (* show) (GtkWidget *widget);
  void (* show_all) (GtkWidget *widget);
  void (* hide) (GtkWidget *widget);
  void (* map) (GtkWidget *widget);
  void (* unmap) (GtkWidget *widget);
  void (* realize) (GtkWidget *widget);
  void (* unrealize) (GtkWidget *widget);
  void (* size_allocate) (GtkWidget *widget,
    GtkAllocation *allocation);
  void (* state_changed) (GtkWidget *widget,
    GtkStateType previous_state);
  void (* state_flags_changed) (GtkWidget *widget,
    GtkStateFlags previous_state_flags);
  void (* parent_set) (GtkWidget *widget,
    GtkWidget *previous_parent);
  void (* hierarchy_changed) (GtkWidget *widget,
    GtkWidget *previous_toplevel);
  void (* style_set) (GtkWidget *widget,
    GtkStyle *previous_style);
  void (* direction_changed) (GtkWidget *widget,
    GtkTextDirection previous_direction);
  void (* grab_notify) (GtkWidget *widget,
    gboolean was_grabbed);
  void (* child_notify) (GtkWidget *widget,
    GParamSpec *child_property);
  gboolean (* draw) (GtkWidget *widget,
                                cairo_t *cr);

...
};

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

Но это потом, когда достаточно графического кода наберется, хотя к тому времени, может, и Генту перейдет на Метапрог.

И ядро...

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

Хорошо - это моральная категория. Если их использование решает (пусть даже решало когда-то) больше проблем, чем создает, то они востребованы. Здесь критерий очень простой - либо приживается и используется, либо не приживается... Ты там, кажется драйверы хотел на метапроге разрабатывать. Чего мелочиться с ЛОРом - спрашивай мнение сразу на lkml.org

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

А проблем даже плюсы создают много. Джава или питон - еще больше. У тебя никогда не лагал андроид-телефон?

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

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

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

От будет версия, надо будет переписать ЛОР, а то он на Java, лимиты эти сделать настраиваемыми для модераторов, такой плохой функционал то из за явы этой как раз!

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

Знал я что джава - ужас, но чтоб настолько, что нельзя даже дать модераторам настроить лимиты на сообщения в теме... Это не шутка?

Прикольная ава.

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

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

Валгринд, профайлеры всякие тоже будешь делать с нуля?

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

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

Deleted
()
Ответ на: комментарий от Deleted
somebodys.braindamaged.inspired.by.drugs.fantasy.give.me.forum.thread.limit(14914210);
somebodys.braindamaged.inspired.by.alcohol.fantasy.give.moderators.forum.thread.limit(14914210);
somebodys.braindamaged.inspired.by.alcohol.fantasy.take.from.moderators.forum.thread.limit(14914210);
somebodys.braindamaged.inspired.by.drugs.fantasy.set.me.forum.thread.limit(14914210);
metaprog
() автор топика
Ответ на: комментарий от metaprog

Сначала нужно сделать фабрику классов и несколько пакетов! Тут еще главное не забыть поправить файл сборки.

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

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

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

Ах да, там же со системами сборки все в порядке. Ну и что, что ими пользоваться сложно до невозможности? Вот вам и бизнес, товарищ seiken.

Бизнесу нужно то, на чем удобно бабки пилить. Говнокод, поддержка, через пару-тройку лет - выкидывание говнокода и переписывание наново. На поддержке пилят бабла, наверное, не меньше, чем на разработке (эта клоака называется DevOps). А книги по ООП, джаве, а курсы? Бабло течет рекой, кому нужен метапрог который прикроет эту кормушку?

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

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

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

Валгринд, профайлеры

Объясни коротко что это и для чего?

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

Ты вот любишь плюсы...

предпочитаю женщин

Я вот опять словил С++ баг в лабвью. Ты писал?

но ты же его купил? Или ты воруешь ПО?

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

В косяках Лабвью виноваты не столько плюсы, сколько копирасты. Они могли б давно уже сделать Лабвью «само на себе», Могли б сделать визуальную среду получше и понизкоуровнее, чем даже Си. Большая часть работы, которую я сейчас делаю по Метапрогу, у них была сделана лет 20 назад. Но они, имея кучу бабла и разрабов, имея десятилетия на разработку, этого не сделали.

Я читал книгу Линуса Just for fun, там он описывал как страдал от недостатков миникса:

     Эндрю Таненбаум -- тот амстердамский профессор,  который написал Minix,
-- хотел, чтобы  система оставалась учебным  инструментом.  Поэтому она была
намеренно изуродована. Существовали заплатки -- то есть усовершенствования к
Minix,  в том числе знаменитая заплатка  австралийского хакера  Брюса Эванса
(это был царь  и бог Minix  386). С его заплаткой Minix на 386-м становилась
намного лучше.  Я  начал  читать  телеконференцию  по Minix в онлайне еще до
покупки нового компьютера, поэтому с самого начала знал, что хочу установить
именно  усовершенствованную версию Эванса. Но из-за лицензионных ограничений
пришлось сначала  купить исходную  версию Minix, а потом изрядно повозиться,
приделывая заплатки Эванса. Это было целое дело. У меня 
возникло множество претензий к Minix. Хуже всего  была эмуляция
терминала,  очень  важная  для  меня  программа,  потому  что  именно  ее  я
использовал для подключения к университетскому компьютеру. Я зависел от этой
эмуляции  каждый раз, когда связывался с университетским  компьютером, чтобы
поработать с мощной Unix-системой или просто выйти в онлайн.
     Пришлось писать собственную программу эмуляции. Я peшил не подстраивать
ее под Minix, а опираться прямо на аппаратный уровень. Разработка  программы
позволяла,  кроме  всего прочего, детально изучить работу 386-го. Как  я уже
сказал, в  Хельсинки стояла зима. У меня был крутой  компьютер. Важнее всего
было  разобраться, что  эта машина может, и  использовать эти  возможности в
свое удовольствие.

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

Из той же книги Линуса Just for fun (советую почитать)

     На  компьютере  была  установлена  урезанная  версия  DOS. Я  же  хотел
работать с Minix, разновидностью  Unix,  поэтому я сделал заказ и ждал почти
месяц, пока  моя покупка доберется до Финляндии. Учебник по Minix продавался
в книжном магазине, но поскольку на саму операционку спрос был маленький, то
ее надо было заказывать через тот  же книжный. Она стоила 169 долларов, плюс
налоги, плюс затраты на конвертацию, плюс всякое-разное. В то время я считал
это грабежом. Честно говоря, и сейчас так считаю.

...

     Вообще  говоря,  я  смотрю  на  проблему авторских прав с двух  сторон.
Возьмем  человека,  который  зарабатывает  50 долларов  в  месяц.  Можно  ли
ожидать, что он  заплатит  за программу  250  долларов? Я не считаю,  что он
поступит  аморально, если  нелегально скопирует  программу,  а сэкономленную
сумму, равную своей зарплате за пять месяцев, потратит на  еду. С  моральной
точки зрения это вполне допустимо. И было бы аморально,  да  и просто глупо,
преследовать такого  "нарушителя". Что  касается Linux,  то кому какое дело,
соблюдает ли человек GPL, если он использует программу для собственных нужд?
Вот когда кто-то  собирается на  ней  зарабатывать, игнорируя GPL, --  это я
считаю аморальным, будь то  в США или в Африке. Но  и  тогда  все зависит от
масштабов. Жадность всегда отвратительна.
metaprog
() автор топика
Ответ на: комментарий от metaprog

Цитаты из творчества Торвальдса - это прекрасно. Только Торвальдс писал Линукс JFF, и потом, через многие годы, так получилось (ИМХО в основном из-за лицензии, ситуации на рынке ОС, ну и немного из-за личности самого автора), что Линукс полезен не только мелкой группке хакеров, но и большим корпорациям. Ты же пытаешься сразу заявить о универсальности применения метапрога, не добившись даже замены им Лабвью в конкретной нише, для которой предназначен Лабвью.

Кстати, если не ошибаюсь, Торвальдс вывалил Линукс на международное обозрение как только был готов базовый загрузчик, примитивная ФС и дюжина системных вызовов. И с инструментарием тоже был напряг, первичный загрузчик был написан для не-GNU'шного ассемблера и требовал отдельной утилиты.

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

Конференцию о своей системе он вел за месяц до релиза первой калечной, «демо»-версии 0.01

     From: torvaldsSklaava.Helsinki.Fi (Linus Benedict Torvalds)
     To: Newsgroups: comp.os.inix
     Subject: Чего вам больше всего не хватает в minix?
     Summary:  небольшой  опрос  для  моей операционной системы  Message-ID:
<1991Aug25.205708.9541@klaava.Helsinki.Fi>

     Привет всем  пользователям minix! Я тут пишу  (бесплатную) операционную
систему   (любительскую  версию   --   она   не  будет   такой   большой   и
профессиональной, как gnu) для 386-х и 486-х AT. Я вожусь с этим с апреля, и
она, похоже, скоро будет готова. Напишите мне, кому что нравится/не нравится
в  minix, поскольку моя ОС на нее похожа  (кроме всего прочего,  у нее -- по
практическим соображениям -- то же физическое размещение файловой системы).
     Пока что  я  перенес в  нее  bash  (1.08)  и gсс (1.40)  , и все  вроде
работает. Значит, в ближайшие месяцы у меня получится уже что-то работающее,
и  мне  бы хотелось знать,  какие  функции  нужны  большинству.  Все  заявки
принимаются, но выполнение не гарантируется : -)

     Линус (Torvalds@klaava.Helsinki.fi)

     PS. Она  свободна  от кода  minix  и  включает мультизадачную  файловую
систему. Она НЕ переносима (используется переключение  задач 386 и  пр.)  и,
возможно,  никогда не  будет поддерживать  ничего,  кроме  АТ-винчестеров --
потому что у меня больше ничего нет : - (.


     Наиболее рьяные энтузиасты Minix встрепенулись.  Мне  прислали  не  так
много заявок по поводу ее функций, но зато были другие сообщения.

     >Расскажи поподробней! Ей нужен MMU?

     Ответ: да

     >Какая часть написана на Си? Какие будут трудности
     >при переносе? Кто тебе поверит про машинную
     >зависимость ;-) , я вот хочу ее перенести к себе на
     >Amiga.

     Ответ:  она в основном  написана на  Си, но многие скажут,  что это  не
настоящий Си.  В ней использованы все  особенности 386-го,  которые  я  смог
обнаружить, потому что хотел попутно разобраться в  его работе. Некоторые из
моих файлов на Си сильно смахивают на ассемблер.
     Как я  уже писал, она использует MMU  как для страничной подкачки (пока
не  на  диск),   так  и   для  сегментации.  Именно  из-за  сегментации  она
ПО-НАСТОЯЩЕМУ зависит от 386-го (у каждой задачи есть 64-мегабайтный сегмент
для кода и данных - максимум  64 задачи на 4 Гб. Если нужно  больше 64 Мб на
задачу -- будут проблемы).


     Несколько человек даже предложили стать бета-тестерами.
     В итоге  разместить  ее в Интернете было  просто  естественно. Я привык
обмениваться программами именно  так.  Поэтому вопрос был только один --  на
каком  этапе  я решусь  показать  ее  людям?  Или  точнее: когда  она  будет
достаточно готова, чтобы мне нечего было стыдиться?
     Вообще-то мне хотелось иметь компилятор и настоящую среду, чтобы  можно
было писать  программы прямо в Linux, без помощи Minix.  Но я был так  горд,
когда у меня заработала оболочка gnu, что был готов всем это показать. И еще
мне хотелось получить отклики.
     К  тому  моменту,  как  заработала  оболочка,  у  меня  было  несколько
элементарных бинарников, которые я скомпилировал  для операционки. Делать  с
ними  пока было  особенно нечего, но уже  было видно, что  система похожа на
Unix. На самом деле она работала, как увечная Unix.
     И вот я решился ее выложить. Я не делал публичных  объявлений, а просто
написал  пятерым-десятерым  хакерам  на  личные  адреса,  что она  лежит  на
FTP-сайте. В числе прочих  я  написал знаменитому среди фанатов Minix  Брюсу
Эвансу  и  Ари Лемке.  Я  выложил  исходники самой  Linux  и  еще  несколько
бинарников, чтобы можно  было хоть что-то делать. Я сказал, что нужно, чтобы
запустить все это хозяйство. На машине должна была стоять Minix (версия 386)
и нужен был компилятор GCC.  Причем на самом деле нужна была моя версия GCC,
поэтому ее я тоже выложил.
     Существуют  правила нумерации версий. Это вопрос психологический. Когда
вы  считаете, что программа по-настоящему  готова -- это  версия  1.0.  А до
этого  вы  нумеруете версии  так, чтобы было видно,  сколько  еще  предстоит
потрудиться до выпуска 1.0. Из этих соображений я положил на FTP-сайт версию
0.01. Чтобы все знали, что она мало на что пока годится.

     Эту дату я хорошо помню: 17 сентября 1991 года.
     Не  думаю, чтобы  ту  версию проверяло больше одного-двух  человек. Для
этого нужно было возиться с установкой  специального  компилятора,  выделить
пустой раздел, чтобы использовать его для загрузки, откомпилировать мое ядро
и запустить оболочку. А кроме запуска оболочки, делать было особенно нечего.
Можно  было распечатать  исходники  --  всего 10 000  строк, т.е. меньше ста
страниц, если печатать мелким шрифтом. (Сейчас там уже порядка 10  миллионов
строк.)
metaprog
() автор топика
Ответ на: комментарий от metaprog

25 августа 1991... а день независимости Украины 24 августа 1991. Интересное совпадение.

metaprog
() автор топика

наверное я что-то пропустил :-) Что вообще тут делается ?

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

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

Это вторая часть, ссылка на первую сверху.

Универсальная графическая среда программирования.

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

Это вторая часть, ссылка на первую сверху.

ссылки в топиках я умею читать :-)

кратко резюмируйте 1000 с хреном страниц, если не сложно.

Я честно говоря не понял зачем в первый этап пишется граф.редактор :-)

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

Не любишь RTFM? Я тоже. Поэтому придумал идею универсальной графической среды программирования.

Графический редактор блок-схем - это «альфа и омега, начало и конец» в системе графического программирования.

Какие-то более конкретные вопросы будут?

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

Но сайтик лучше все же сделать (ну или попросить единомышленников).

Если увижу рабочий прототип (чтобы helloworld мышкой натыкать можно было), обязательно пожертвую.

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