LINUX.ORG.RU

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

 , , ,


3

6

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

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

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

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

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

Чисто технические. По Си, библиотекам итп. А поучать не по делу - «не учите меня жить, лучше помогите материально».

Примеры

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

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

Собственная метапроговская функция

Метапрог не только умеет вызывать сишные функции, но на нем можно и свои делать. Функция для открытия слушателя (listener) на нужном адресе и порте и ее схема:

https://i.postimg.cc/8kXBCX40/image.png

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

У функции есть своя пиктограмма.

Открытие окошка

Этот пример открывает окно. Там же есть асинхронный вызов (на завершение):

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

Инициализация (отдельная функция, инлайнится еще на уровне метапрога в главную диаграмму):

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

Асинхронная функция на завершение:

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

Все это генерирует такой код (опять же - не для эстетов, а для скармливания gcc):

https://pastebin.com/T3Bu5Qy6



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

Вернемся к этому вопросу где-то после релиза:)

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

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

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

А, ну так-то да. Я ожидал, что ОП сам будет на libc+pthreads писать параллелизм.

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

Ну ды, event-loop, все такое, главное не блочить ничего в твоих функциях..... Я вообще не особо разбираюсь что там да как, просто увидел когда то GIO и недавно вот тебе предложил.

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

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

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

Наверное, через указатели и функцию cairo_get_current_point. Все же сишка со своими тараканами, но не знаю что подошло бы лучше как «ассемблер» для Метапрога.

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

Тараканы Си - не в указателях, а в том, что один выход у функции (и нуль-терминированных строках, об этом я писал выше). Это обусловлено архитектурой процессора PDP-11 или в нынешних процессорах так же?

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

Прекрасно. Ждём вашего безусловно единственно верного и объективного мнения по другим технологиям, например:

  • SystemD
  • SysVInit
  • bash
  • PHP
  • Electron
  • JavaScript
  • Windows
balsoft ★★
()
Последнее исправление: balsoft (всего исправлений: 1)
Ответ на: комментарий от metaprog

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

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

процессору вообще пофиг на ваши функции, ему машинный код подавай, в котором функций нет и в помине. Можно ли реализовать несколько выходов функции? - Да, можно.

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

Подобные нюансы толкают меня к мысли о своем компиляторе. Но до этого далеко, в альфе и бете не ждите:)

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

Ладно уж свой компилятор, на существующие архитектуры, может, и Си хватит. А вот своя архитектура, разработанная с нуля с учетом Метарога и оптимизированная под него - в самый раз. Чтоб уж точно никаких спектров и мелтдаунов:)

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

по части названия

нет, я имею в виду, блоки графики искать, без текста

то есть надо найти, допустим что-то-там1 чтоугодно что-то-там2

но что-то-там1 и что-то-там2 могут, очевидно, быть и текстом и графикой

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

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

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

Спасибо. Я просто не привык читать и сходу понимать текстовый код и видеть там такие мелочи.

Планирую первым этапом перенести «сам на себя» редактор диаграмм (самая глючная и тормозная часть лабвьюшного прототипа) и прикрутить возможность совместного редактирования диаграмм в режиме онлайн. Ты тогда присоединишься к дальнейшей разработке Метапрога?

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

Так если один работает и другой работает, как запускать и проверять код? Пока у одного он собирается, другой только еще работает и у него не собирается его часть.

Так то я попилить могу, если я смогу разобраться %)

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

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

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

Да ничего ты не увидишь, днище. Завязывай с клоунадой. И виртуальчика своего забирай.

anonymous
()

А вот ещё вспомнился такой язык как ЛОГО. Для обучения детей разного возраста :) программированию.

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

Тем не менее, сам язык был текстовым! Всё это были команды на текстовом языке, а графика позволяла тут же проверить, как всё это работает.

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

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

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

Потому что

Для обучения... программированию.

Программированию в тексте, конечно же, а не в графике.

Любая «визуальная» среда программирования, не отрицающая основную роль текста, не будет полноценной. Это вам и Дракон с текстовыми блоками, и Unreal Urinal Engine (с идиотской визуализацией даже циклов www.linux.org.ru/forum/development/14918675?cid=14920968). Или вообще какие-то детские обучалки. Кстати, Scratch тоже не в счет, так как там больше текст, чем графика.

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

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

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

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

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

Лабвью на голову выше всех тех «визуальных» надстроек над текстом. Там текст вообще не используется, только блоки и их взаимосвязи.

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

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

вот одни из этих немногих, кто осознает всю силу визуального подхода. думаю не стоит и говорить, что это подполье... но знай, что эти люди - прогрессоры нашего времени И НА НИХ ДЕРЖИТСЯ БУДУЩЕЕ. СКАЖИ НЕТ ТЕКСТОВОМУ НЕРАВЕНСТВУ!!1!1! ТОЛЬКО ВИЗУАЛЬНЫЙ ПОДХОД, ТОЛЬКО ПРОГРЕcСИВНОСТЬ!!1!

https://youtu.be/SPaI5BJxs5M?t=214

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

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

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

Так вы выложите - будет хотя бы какая-то от вас польза. Может быть люди, разбирающиеся в лабвью, хорошенько повеселятся.

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

Зип файл! Метапрог-архив!

От стрелки к блоку руки бросим!

Ура, товарищи!

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

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

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

Ха…

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

Спасибо, повеселили.

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

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

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

От вас толку тоже немного. Ну кроме веселья, конечно.

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

Даже жаль, что вы тролль и никакого релиза с БД и что-вы-там-ещё-обещали не будет.

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

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

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

Уже выложил прогу с открытием окошка и асинхронным вызовом

Это то, что с по ссылке с пастебина? Вау, как же я пропустил. Ей для сборки какая версия GTK нужна?

P.S. Если не хочешь прослыть наклеивателем ярлыков — называй вещи своими именами. Не «не для эстетов», а «не для чтения человеком». Кстати, эта человеконечитаемость в одних случаях может быть оправданной, в других — нет.

P.P.S. Всё, уже нашёл в комментах, что у тебя там GTK 3.0. Вот такое бы надо не на пастебин выкладывать, а на гитхаб тот же самый с человеческим README.

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

Скомпилил. Выдаёт ворнинги

T3Bu5Qy6.c:7:44: warning: anonymous struct declared inside parameter list will not be visible outside of this definition or declaration
 void metaprog_function_8484018655565672449(struct {
                                            ^~~~~~
T3Bu5Qy6.c: In function ‘main’:
T3Bu5Qy6.c:43:46: warning: initialization from incompatible pointer type [-Wincompatible-pointer-types]
 } *  metaprog_junction_9059101215904737281 = gtk_window_new(metaprog_variable_8339842838198470657);
                                              ^~~~~~~~~~~~~~
T3Bu5Qy6.c:50:21: warning: passing argument 1 of ‘gtk_widget_show_all’ from incompatible pointer type [-Wincompatible-pointer-types]
 gtk_widget_show_all(metaprog_junction_9059101215904737281);
                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/gtk-3.0/gtk/gtkapplication.h:27:0,
                 from /usr/include/gtk-3.0/gtk/gtkwindow.h:33,
                 from /usr/include/gtk-3.0/gtk/gtkdialog.h:32,
                 from /usr/include/gtk-3.0/gtk/gtkaboutdialog.h:30,
                 from /usr/include/gtk-3.0/gtk/gtk.h:31,
                 from T3Bu5Qy6.c:6:
/usr/include/gtk-3.0/gtk/gtkwidget.h:632:12: note: expected ‘GtkWidget * {aka struct _GtkWidget *}’ but argument is of type ‘struct <anonymous> *’
 void       gtk_widget_show_all            (GtkWidget           *widget);
            ^~~~~~~~~~~~~~~~~~~

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

GCC 6.3.0, GTK 3.22.11.

Запущенная программа выдаёт крошечное окошко с надписью «Metaprog test».

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

Запущенная программа выдаёт крошечное окошко с надписью «Metaprog test».

Что, кстати, с трудом прослеживается из картинки с «кодом»:

https://postimg.cc/fVwbhBJQ

Даже в 90-е формочки в ide куда круче были. Наглядно, в графике. А то, что у автора на картинке, это не графическое программирование, а дроч какой-то.

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

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

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