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)
Ответ на: комментарий от anonymous

Критикую я что-то не просто так, а по делу.

ООП, например, за монструозную сложность в освоении, которую я не осилил. И не надо из меня дурчака делать, Лабвью я ж смог освоить!

HiAsm (который я за 9 минут забраковал) - за то, что непонятно было где исходники подфункций. Сейчас еще раз взглянул - черт побери, в исходниках модулей - текстовый паскаль! Там даже графических подфункций я не увидел. Лабвью все же на голову выше, и аналогов ему, к сожалению, нет (если не считать Метапрога, который пока что в разработке).

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

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

Владимир

За всю свою жизнь не одного «дурачка» не встретил.
У вас имеется способности, целеустремленность, ...
Но от того, что вы ООП C++ не осилили он хуже не станет.
Ни кто вас не призывает быть «глупеньким» и со всем соглашающимся форумчанином, но
не судите о том, в чем не разбираетесь.

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

Но от того, что вы ООП C++ не осилили он хуже не станет.

Станет. В Лабвью, кстати, тоже есть ООП. Это дает мне возможность в графике оценить сам концепт ООП. И что - я на него посмотрел (вместе с примерами) и решил, что ну его в баню. Оперирую исключительно примитивными типами, массивами и структурами (в Лабвью структуры называются «кластерами», но суть практически та же). Это проще и надежнее. То же, что есть в Си, нет только указателей сишного типа (хотя есть всякие указатели на прилжение, функцию, элемент контрольной панели для операций с данными, свойствами и вызова методов для работы с ними).

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

Владимир

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

Это ложь.

У меня ни когда даже на ум не приходила эта мысль /это ваши заботы и вам решать нужно или нет/.

Что за обиды?
За то что вам указали на то, что «Поступающий в вуз не должен судить о том, чего он не изучал?».

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

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

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

Владимир

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

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

Владимир

Продолжение например такое - «Вы заметили, что диалог с вами уже ни кто не ведет?»
Ну с моей стороны правда еще «маленькие угольки» остались /но не касающегося вашего проекта/.

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

Ну ОП максимум monk'у грубо ответил, лол, зато ему и мне пишут вещи вообще неадекватные! Кто еще троллит!

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

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

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

Если бы я был таким сильным сторонником графического программирования, я бы выделил направления для реальной работы:

0) формат диаграмм. Как я понимаю, это уже более-менее определилось, поэтому ставлю номер ноль;

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

2) написать работающий компилятор из внутреннего представления в Си. Опять-таки, я не стал бы писать монстра, который весь графический проект загоняет в функцию main(), а сделал бы концепцию «одна схемка - один исходник», что дало бы возможность применять существующие отладчики, тот же валгринд и др. И написал бы я его тоже на Си, чтобы максимально расширить потенциальную аудиторию. Бутстрапом можно будет заняться попозже;

3) написать IDE, он же редактор диаграмм. По мере реализации этого пункта, скорее всего, придётся несколько раз возвращаться к предыдущему. Это нормально.

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

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

1) воспользоваться богатейшим аппаратом работы с текстовыми исходниками, разработанным под свободными лицензиями;

2) предоставить потенциальным товарищам по разработке возможность выбора. Один будет пользоваться текстовым гитом, не изменяя своим привычкам, а второй - будущей графической VCS (которая так же может быть надстроена и над текстовым представлением). Да может, он сам её и напишет со временем, если ты его сразу не распугаешь.

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

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

Теперь, как обещал, раскрою тезис о доверии. Внутренний текстовый формат помог бы убить двух зайцев:
1) воспользоваться богатейшим аппаратом работы с текстовыми исходниками, разработанным под свободными лицензиями;

Зато тормоза, ну можно сделать конвертер в текст если так хочется!

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

ТС не троллить пришел, а «донаты» собирать. Это было очевидно уже по наличию биткоин-кошелька в самом первом треде. Интересно, хоть копейку собрал?

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

Хммм, что-то интересное. map or unmap files or devices into memory - это? http://man7.org/linux/man-pages/man2/mmap.2.html

Если да, то попробуй рассказать подоступнее как им пользоваться (мануал есть, но слишком заумный). Можно ли им мапить массивы в файл и из файла?

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

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

Пересылать данные из файла в файл вроде нужно через линуксовую функцию sendfile!

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

Можно ли им мапить массивы в файл и из файла

Не совсем понял, но ты можешь имеешь виду запись? Можно открыть файл mmap'ом одновременно на чтение и запись. А работать как с массивом простым.

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

0, 1. Уже строю диаграммы в лабвьюшном прототипе метапрога (в том числе те, что вы выдели на скринах) и определяюсь с их форматом. Пока как-то так:

https://i.postimg.cc/4ys016Fp/image.png

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

2, 3. Транслятор блок-диаграмм в Си как раз уже делается, и IDE тоже. Но пока в лабвьюшном прототипе (его вы и видите на скринах, а в коде - результат работы транслятора), так как на чистом Си без помощи графического IDE я такое программировать буду раз в 100 медленнее. Чуть позже начнется перенос Метапрога «сам на себя».

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

Версионированный бинарный формат убввает двух зайцев:

1. Удобство автоматической сериализации/десериализации прямо в структуры, с которыми оперирует уже сама программа.

2. Быстродействие из-за «тупой» сериализации без парсера.

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

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

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

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

А как в мапированном файле обстоит дело с realloc, если, скажем, надо вместо массива из 4 байтов вставить 30 байтов?

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

То есть просто realloc и файл автоматически расширится, чтоб дать место для массива большего размера? И уменьшится, если наоборот массив укоротился?

Вызывать просто realloc или что-то другое?

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

Свой клон realloc пилить или там есть функция?

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