LINUX.ORG.RU

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

 , , ,


1

3

FAQ

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

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

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

Решено вводом неанонимных структур, если идет обращение к данным из сишных инклюдов.

12. Зачем ты пытаешься сделать «графический C» (используя подходы к разработке, структуры данных и прочее из C, но в виде блоксхем)?

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

13. Есть же first order logic, лямбда исчисление и т.д. Ты бы изучил для начала альтернативы, может для данного вида представления имеются лучшие подходы?

Мне очень тяжело дается восприятие кода в тексте. Когда нельзя потыкать-пощупать, а только сиди и читай чертов текст с мануалами и понимай каждую чертову синтаксическую конструкцию. После Лабвью я уже не смогу полюбить ни один текстовый язык, разве что Си и ассемблеры, но только в качестве бекенда для Метапрога. Если бы были графические среды для перечисленных понятий - еще бы потыкал и попробовал, а так - не считаю нужным насиловать себя чтением стен текста. К тому же, с производительностью у всяких сложных концепций как правило намного хуже, чем у простого низкоуровневого Си, а простоты программирования они тоже как правило не добавляют.

Примеры

Предыдущие см. в прошлых темах

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

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

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

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

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

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

Неанонимные структуры

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

Главная функция:

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

Открытие нового окна:

https://postimg.cc/kBX6rB0P

Та же диаграмма в видео:

https://streamable.com/jqng1

Видно всплывающие подсказки, в конце удаляется и снова проводится один из проводков.

Начало рисования SDL, то что должно делаться каждый цикл в нуклеаре:

https://postimg.cc/tYS199bZ

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

Кстати, что мешает мне сейчас сделать главный нуклеаровский цикл, ведь циклы ж уже готовы? Смотрите на этот скрин:

https://i.postimg.cc/65N2KMQz/image.png

Почти такой же пример, только есть цикл и нету sleep (чтобы можно было полюболваться на окошко 10 секунд). Что тут не так? Схема правильная, но надо еще научить транслятор ставить «тупиковые» ветки, берущие начало в цикле, в пределах цикла по-умолчанию. Сейчас код nk_end и малювання SDL оказываются за пределами тела цикла, буду это исправлять. Где-то там же находится ключ к полному налаживанию ветвления через if и switch.

Сам код:

https://pastebin.com/f5PDfi77

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



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

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

Текст автор не переваривает. У него даже гитхаб свой запланирован, графический.

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

Кстати, раз уж речь зашла бабах. Это не ты случайно участвуешь в творчестве про роботян и волко-ящериц?

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

всякие там дизайнеры редко знают что такое указатель, структура и юнион

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

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

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

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

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

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

Срочно нужны пиктограммы (высотой до 12-14 пикселей, длина может быть любой в разумных пределах) для следующих понятий:
1. структура
2. юнион
3. указатель
4. массив
5. структура условного выбора типа
6. версионированный формат

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

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

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

В данный момент мне интересны именно пиктограммы для перечисленных понятий. Интересны именно сами творческие идеи, рисовалка будет скорее всего пиксельная (на вектор переделать успеем потом, если надо будет).

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

не получить какое-нибудь неюзабельное гавно

metaprog

incompatible

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

Всё уже открыто стебут автора и ожидают ещё более диких отжигов

Некоторые регистранты пока таки скрыто. Хорошо, что поциент этого пока не замечает.

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

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

но вообще посмотри здесь может что то подберёшь: https://www.flaticon.com/

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

Вы не правы

заниматься сейчас «украшательствами» не имея

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

Как утверждает внезапно заработавший libastral.ko: «хардкор код бай дизинг».

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

В данный момент мне интересны именно пиктограммы для перечисленных понятий.

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

Интересны именно сами творческие идеи

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

скорее всего пиксельная

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

на вектор переделать успеем потом

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

Что ж, указатель принят. Подходит хорошо, а еще SJW потроллим, мол указатели - только для настоящих мужчин:)

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

Нет, не думаю. Юнион это не объединение, а возможность выбора из разных типов.

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

Одного круга со стрелочкой маловато. Может еще что добавить? Скажем, пиктограмку-микросхемку (память)?

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

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

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

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

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

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

Как в нуклеаре с отрисовкой векторной графики?

Никак, он для GUI только, но можно библиотеку подключить... В gtk3 все ок.

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

я думаю для структуры больше подойдёт https://www.flaticon.com/free-icon/notepad_1665585 что как бы намекает на объект содержащий поля с данными внутри.

для юниона можно вот это https://www.flaticon.com/free-icon/tabs_1665599

для структуры условного выбора типа знак вопроса обведённый в круг

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

он для GUI только, но можно библиотеку подключить

Тогда векторная графика подождет. Потом вкрутим если надо будет.

В gtk3 все ок

Зато не все ок с отрисовкой диаграмм, а в нуклеаре даже рабочий пример есть. И еще всякое ООП да CSS, под которые только и делай костыли.

А теперь - смертельный номер! Давние читатели наврняка будут в восторге от этого простого примерчика, всего лишь открывающего пустое окошко на 10 секунд:

https://pastebin.com/f5PDfi77

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

Тоже неплохая идея. А массив и версионированный формат?

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

А теперь - смертельный номер! Давние читатели наврняка будут в восторге от этого простого примерчика, всего лишь открывающего пустое окошко на 10 секунд

segfaultов больше не будет?

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

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

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

Вопрос к знатокам nuklear: вот идут три вызова подряд к nuklear, SDL и OpenGL: nk_color_fv, SDL_GetWindowSize, glViewport. В этом вашем ядерном так и задумано?

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

Всё так. Я без претензий. Просто из любопытства. Используются три различных фреймворка. В nuklear так принято?

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

А бинарь был бы быстрее. Растровые форматы бинарные ведь - и ничего, все ок.

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

Nuklear это просто библиотека на ANSI C без использования сторонних библиотек для GUI. Он не работает с операционной системой сам, но у него есть удобный интерфейс что бы написать эту обработку самому.

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

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

Вообще я думаю все форматы файлов и протоколы (кроме легаси) свести к версионированным типам.

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

У тебя ранее уже спрашивали, но ты не ответил. Зачем ты пытаешься сделать «графический C» (используя подходы к разработке, структуры данных и прочее из C, но в виде блоксхем)? Есть же first order logic, лямбда исчисление и т.д. Ты бы изучил для начала альтернативы, может для данного вида представления имеются лучшие подходы?

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

Зачем ты пытаешься сделать «графический C» (используя подходы к разработке, структуры данных и прочее из C, но в виде блоксхем)?

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

Есть же first order logic, лямбда исчисление и т.д. Ты бы изучил для начала альтернативы, может для данного вида представления имеются лучшие подходы?

Мне очень тяжело дается восприятие кода в тексте. Когда нельзя потыкать-пощупать, а только сиди и читай чертов текст и понимай каждую чертову синтаксическую конструкцию. После Лабвью я уже не смогу полюбить ни один текстовый язык, разве что Си и ассемблеры, но только в качестве бекенда для Метапрога. Если бы были графические среды для перечисленных тобой понятий - еще бы потыкал и попробовал, а так - не хочу себя насиловать чтением стен текста. К тому же, с производительностью у всяких сложных концепций как правило намного хуже, чем у простого низкоуровневого Си.

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

тому же, с производительностью у всяких сложных концепций

Тебе уже намекали, что у тебя бестолковый черепундель? У концептов не может быть произдителтности. Только у реализаций. Ну и нуклер это и инкапсуляция и много других принципов ооп. И ты бы это понимал, почитай ты книжку хотя бы серии «программирование для чайников»

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

Но у иконок будут гиганские сисяндры

А почему не маленькие аккуратные? Впрочем, ну ладно, кому что нравится.

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

Хорошо. У реализаций чего-то сложнее Си как правило получается гораздо более худшая производительность. Так понятно?

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

Во первых не всегда

Во вторых это зависит от того кто и как пишет.

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

почему

Потому что так нравится тому художнику, если я правильно понял, о ком речь.

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

Программирование сисяндрами? Хммм. Вот за чем будущее

А как насчет программирования писюном по клаве? В тексте, чтобы не переучиваться на графику!

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