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)

Почему я не могу править заглавное сообщение? Тоже автоматически закрылось?

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

Ничего они еще не придумали нормального.

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

Ну так и не надо сравнивать другие язычки с великой и могучей сишкой %) Аналогов нет! Серьезна.

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

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

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

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

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

С выделяемыми лейблами проблема: они сразу полностью выделены, а это не всегда нужно. Прошарил функции по лейблам - там только get selection, но не set. Что делать?

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

Тогда можно использовать TextView. Так даже правильнее думаю.

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk

gtk_window = Gtk.Window()

gtk_text_view = Gtk.TextView()
gtk_text_view.set_cursor_visible(False)
gtk_text_view.set_editable(False)

gtk_text_buffer = gtk_text_view.get_buffer()
gtk_text_buffer.set_text("Hello World! Gtk3!")
gtk_window.add(gtk_text_view)

gtk_window.show_all()
Gtk.main()

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

Кстати, советую посмотреть Glade! С помощью него можно делать формы, потом Gtk читает эти формы и создает по ним элементы.

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

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

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

Лучше, когда настанет время, сделаем свой конструктор форм. Текстовая запись (XML) - это легаси, шаг назад.

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

Ну функционал создания форм из XML встроен уже в Gtk если что. Формы эти в одну строку загружаются, и в принципе можно сделать свою функцию для шага вперед %)

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

Текстовая запись (XML) - это легаси, шаг назад.

Фанатизм перешёл новую границу. Ты любой формат на основе текста будешь объявлять устаревшим?

Интересно, если кто-то на Метапроге захочет написать, например, программу, работающую с файлами треков GPS-навигатора, ты увидишь, что там внутри треков XML, раскритикуешь эту затею и пообещаешь, что скоро все навигаторы будут с новыми прошивками, сделанными на Метапроге? А что, тоже вариант. Так область применения твоего продукта стремительно сужается, и не надо ничего развивать.

Или всё-таки средства для работы с текстовыми файлами (в том числе структурированными) у тебя будут?

Мне это напоминает историю с Царём. Тот как-то всё требовал дать ему достойную задачу попрограммировать, но сразу сказал, что гуйни писать не будет, драйверов писать не будет, серверных программ тоже не будет, всё это ненужно. Короче, сразу исключил практически все задачи, которые могли принести пользу хоть кому-то. Ну и кончилось всё обычной клоунадой.

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

Да, любой текстовый формат файла я считаю устаревшим. Исключение - человеческие языки и текстовые файлы, предназначенные только для чтения человеком (а не машиной).

https://3.bp.blogspot.com/-xCxdrwknhE8/UHGtTtLkIEI/AAAAAAAAJfo/yoBUzt4yz1E/s1...

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

если кто-то на Метапроге захочет написать, например, программу, работающую с файлами треков GPS-навигатора, ты увидишь, что там внутри треков XML, раскритикуешь эту затею и пообещаешь, что скоро все навигаторы будут с новыми прошивками, сделанными на Метапроге? ... Или всё-таки средства для работы с текстовыми файлами (в том числе структурированными) у тебя будут?

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

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

То, что я текстовые форматы причисляю к легаси, не означает, что их поддержка будет невозможна. Но в новых метапроговских программах версионированные бинарные форматы будут намного проще в испольовании, чем БДСМ с текстовыми конфигами. Легаси умрет само по себе.

Systemd тоже заменило sysvinit, но при этом сохранив совместимость со старыми скриптами (редактировать которые - удовольствие для мазохиста). И постепенно их вытесняет. Так же будут вытесняться и текстовые форматы с внедрением Метапрога. Кстати, для нормальной работы с тем же Systemd мне не хватает графических заменителей для консольных systemctl, journalctl итп. Их, думаю, будет несложно сделать через Метапрог, используя сишные функции из исходников консольных утилит.

Кстати, попробуй новый исходник и поймешь зачем я инициализирую строки как массивы байтов:

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

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

И я знаю насколько сложным может быть парсер текстового формата

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

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

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

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

Думаю, даже если у тебя всё получится — всё оборудование, которое сейчас работает с текстами, в категорию «старого» перейдёт ещё ООООЙ как не скоро.

Да и не только оборудование. Плееры работают с плейлистами (M3U). Офисные пакеты хранят документы в зазипованном тексте (причём MSO перешёл на такой формат с бинарного, интересно, зачем). Почти любая электронная таблица импортирует данные в структурированном текстовом формате CSV. Про Visual Paradigm я уже писал. Он создаёт модели на UML, т.е. очень близко к графическому программированию. Тем не менее, поддерживается работа с XMI (текстовое представление UML-диаграмм на базе XML).

Так если всё равно для большинства сколько-нибудь реальных задач всё равно придётся писать парсер текста — не лучше ли его написать сразу? Трёх парсеров — для INI, XML и JSON — тебе хватит, чтобы покрыть чуть ли не 90% областей применения.

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

И я знаю насколько сложным может быть парсер текстового формата

Если вам парсер текста сложно написать, то я уже не понимаю, как вы хоть умудрились linux.org.ru набрать, заходя сюда в первый раз…

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

А как я посты набираю?)))

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

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

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

Так если всё равно для большинства сколько-нибудь реальных задач всё равно придётся писать парсер текста — не лучше ли его написать сразу? Трёх парсеров — для INI, XML и JSON — тебе хватит, чтобы покрыть чуть ли не 90% областей применения.

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

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

Очередной Денис Попов нас троллит.

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

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

Тебе вазюкать мышью туда-сюда проще, чем на клавиатуре набрать [ b ] к примеру?

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

Тебе вазюкать мышью туда-сюда проще, чем на клавиатуре набрать [ b ] к примеру?

Да, намного проще. Тут ведь еще на английский надо переключаться.

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

Блин а Markdown по моему жесто неудобная вещь! ббкоды рулят!

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

Тебе вазюкать

Ты голубой чтоли?

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

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

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

Писать вручную парсеры будет только дурак, особенно на С, ОП аргументированно рассказал почему будет бинарный формат!

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

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

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

олько дурак говорит, что это сложно

Это бесполезная работа.

Протобуфер

Это неюзабельное нечто.

Ты, впроем тоже.

Научился преобразовывать текст в JSON на JavaScript и уже ЧСВ поднялось, ды?

Бинарные данные, внезапно, тоже нужно парсить.

Это будет намного легче и быстрее.

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

Секретарши не умеют в код, каким бы видом этот код не был, графичеким или текстовым.

В код могут все, смешат люди которые считают это чем то илитным.

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

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

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

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

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

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

В код таки? Умею. Только на картинках то не код.

И не в тексте, а в своих фантазиях...

Нах мне в этой каше вообще разбираться?

Тоже самое и про текст можно сказать, почему ты такой лицимерный, просто обдумай все!

тут единственный фанбой - это ты

Тому ще мне нужен такой проект, это реально даст людям возможность нормально программировать! А не читать по 10к страниц про UB и устройство памяти.

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

Мало кто понимает в треде вообще саму идею.

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

И не в тексте,

«Текстовый код» - это как масло маслянное или британский английский, когда речь идет о программировании. Репрезентация кода в программировании побеждает та которая помещает самое большое кол-во информации на экран и не создает шума. Signal/Noise. Казалось бы, графпрог мог бы и добавить новый слой полезной инфы, которую трудно показать текстово, но какой именно - не придумали пока еще.

а в своих фантазиях...

Фантазируешь с переходом на личности тут только ты.

Тому ще мне нужен такой проект, это реально даст людям возможность нормально программировать! А не читать по 10к страниц про UB и устройство памяти.

Ты сам-то программист? ТС уже приделал к проекту сишные колеса - UB и устройство памяти через его схемки никуда не исчезнет. И не 10к и «талмуды», а полтора поста на стэкофервлой. Неосиляторство как оно есть.

Мало кто понимает в треде вообще саму идею.

Бывает какой-нибудь чел пошутит, никто не смеется, а потом он сидит и думает - да просто меня никто не понял! Если автора никто не понял - это сугубо проблема автора.

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

Казалось бы, графпрог мог бы и добавить новый слой полезной инфы, которую трудно показать текстово, но какой именно - не придумали пока еще.

Читай треды, придумали, куча идей!

Фантазируешь с переходом на личности тут только ты.

Нет, ты.

Ты сам-то программист?

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

Если автора никто не понял - это сугубо проблема автора.

После выхода первых версий, я думаю все все поймут на практики и по видео.

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

куча идей

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

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

Читай треды, придумали, куча идей!

Читал, может не все, но полистал. Возможность не придумывать имена переменных увидел. Кучу велосипедов тоже увидел.

Я что то пропустил? И если да, то почему это не реализовали текстово? Может потому-что не нужно?

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

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

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

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

куча идей

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

Пару примерчиков плес.

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

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

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

То есть то что «талмуды» читать не нужно ты все же знаешь и согласен с этим.

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

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

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

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

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

Вместо синтаксиса придется учить что делает каждый блок, веревочка или проводочек. Если проект проживет дольше пары месяцев и на нем будет сделано хоть что-нибудь кроме Hello world, то придется ещё и 10MB Errata по каждому блоку штудировать – легаси же. И вот кстати отличие – в тексте всегда можно глянуть настоящее определение любой функции или константы из стандартной библиотеки текстового языка, а здесь – фигушки, ну в лучшем случае можно глянуть лапшекод, который описывает этот блок (ну либо аффтору придется переписывать все библиотеки на metaprog)

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

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

Да ничего там не было, я это знаю даже не листая тред.

по ссылке:

Надо блок с математическими выражениями сделать.

Ум за разум заходит! Щас стены %#а&ь полезу!

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