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

Понятие асинхронного, например, встречать не доводилось

Теперь вот думаю над вопросом как красивее изобразить указатель на функцию на графической диаграмме

Кстати, я писал про синхронный веб-сервер: Metaprog: универсальная графическая среда программирования [в разработке] (комментарий) Для этого ни «асинхронность», ни указатели на функции не нужны. Простой как топор код.

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

Цикл нужен. Ладно, чуть позже. Все же от освоения асинхронных коллбэков будет толку больше.

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

Что это? TCP-сервер, который плюётся ответом сразу, как клиент соединение устанавливает? А где открытие файлов на диске и отсылка их содержимого?

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

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

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

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

Что касается GLib, не нашёл там сходу разбора HTTP. Не думаю, что там десятком строк получится обойтись.

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

Что касается GLib, не нашёл там сходу разбора HTTP

Оно в другой библиотеке вроде, в glib базовый функционал!

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

Ты сообщение-то читал? :-D

И да. Зачем мне код на сях? Я знаю, какой он будет. Гораздо интереснее посмотреть на тот ад, что будет в графическом представлении.

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

Давай-давай! Нужно больше ада диаграмм!

Ты ведь в курсе, что запрос может приходить по-кусочкам? Парсить его нужно тоже по тем кусочкам, что есть.

i-rinat ★★★★★
()
Последнее исправление: i-rinat (всего исправлений: 1)
Ответ на: комментарий от Deleted

неюзабельно

В названии топика написано: «универсальная графическая среда программирования». Так что никаких «неюзабельно». Это всё попытки спрятать проблему, которая всё равно вылезет. HTTP-сервер это самое простое, на чём начнётся ад, если реализовывать эквивалентами функций libc.

Ну вот будут у тебя вспомогательные блоки. Не покроешь же всё. Когда-то понадобится реализовать что-то вручную. Что тогда делать?

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

Проблема, причем еще более сложная чем в синхронном коде %) Тут вся проблема в том что части идут по кусочкам + неизвестен размер кусочков, его нужно определять самому!

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

Если не дошло - ждать пока дойдет?

Ну да.

Вроде в асинхронном исполнении это не проблема, верно?

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

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

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

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

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

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

Лабвью в этом равных нет

В Geany тоже есть интерактивный дебаггинг для С, я бы не сказал что тут у LabVIEW есть какой то особый плюс!

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

Плюс - что кликаешь мышкой на проводке - и появляется проба. Правой мыши - поставить точку останова - будет останавливаться на проводке. Можно еще включить «лампочку» и смотреть как выполняется код. Где еще такое видано?

https://youtu.be/WWsAU34PNug

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

Ставишь брейкпоинт куда нибудь, потом наводишь на переменные курсор, и показывает их значение... Все как нужно вопщем!

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

Есть история переменных, значения их посмотреть можно итд!

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

Посмотри видео.

Посмотрим еще как в Метапроге будет, но в целом хочется свое опенсорсное Лабвью «со случайными числами и программистками».

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

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

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

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

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

На Лабвью работы почти нет, так как кому надо сам в нем схемы нужные соберет.

Почему нет? Есть, но специфическая — для тех, кто занимается обработкой сигналов. И там тоже надо учиться, тоже есть хорошие и плохие практики работы. Я просто общался когда-то с пишущими на ней, и сам слегка тыкал, но потом это направление у нас слегка подзаглохло, и за 7 лет я, конечно, уже всё забыл.

Вот гипотетически программировать станет раз в 10 проще.

Ну попробуй, сваргань инструментарий. Причём такой, который для начального тыканья можно собрать с помощью чистого GCC (непонятно чем собранные блобы я, например, качать не хочу). Хотя бы парочку IDE+компилятор. Будет что пощупать - будет разговор.

В целом понятно почему люди продолжают программировать в тексте в 2019 году

Да — потому, что ты до сих пор подбрасываешь дрова в эту тему вместо того, чтобы уже всем показать свою готовую IDE, сиречь редактор диаграмм.

Если что, последнее предложение — шутка (но только отчасти).

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

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

А программисты 1С — это любители или профессионалы? До языка докапываются, когда докопаться больше не до чего.

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

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

А по линиям - я вот тоже считаю, что текст для программирования куда проще и однозначнее, чем диаграмма

На самом деле очень спорное утверждение.

Вот возьмем этап проектирования. Что на нем делают? Рисуют диаграммы, блок-схемы. Потом по ним пишут текстовый код. Это если разрабатывать «по книжке». А что предлагает ТС? По сути ведь то же, только код автоматически генерироваться будет.

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

То есть имеем ровно ту ситуацию, о которой говорит ТС.

Рассмотрим теперь такую дисциплину как ТАУ (теория автоматического управления, для гуманитариев которые возможно читают поясняю). Как описываются объекты? Диф. уравнениями. Но все почему-то рисуют _графические_ структурные схемы на каждый чих. Причем изначально вручную, еще до компьютеров.

Дальше. Я разрабатываю проект с кодом на языке FAUST. Опять же, цифровая обработка сигналов. Язык текстовый, но! Он имеет функцию автоматической генерации диаграммы по коду. И для отладки кода бывает очень полезно это диаграмму сгенерировать и смотреть свой код в графическом виде, а не текстовом.

Этот мой проект плавно перетекает в программирование под DSP процессор ADAU. И что представляет собой IDE - SigmaStudio? Чисто ГРАФИЧЕСКОЕ программирование. На блоках. Причем что интересно - писать программу на C под этот процессор практически бессмысленно. А ассемблер под него представляет собой ненаглядное текстовое представление графических диаграмм.

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

Конкретно про metaprog. Есть LabView, он широко используется, он используется ТСом в работе, он несвободен. Все! Этих аргументов более чем достаточно для разработки свободного аналога. И говорить «ненужно» тут абсолютно неуместно. Даже если он не сделает универсальную среду, тупо свободный клон LabView будет очень и очень полезен.

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

Плюсуем сюда Mindstorms - от роботоконструктора Lego. Весь код на диаграммах. Для детей среда, кстати очень сильно связанная с LabView. Неужели они тупые, что вместо сишки детям вот это подсовывают?

Scratch - ну это все же ближе к тексту по духу, чем к графике. Но не чистый текст. Не думаю что в MIT тупые люди, которые его разрабатывают.

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

На Лабвью работы почти нет,

На лабвью у нас тест автомейшены писались. Потому что QA тимлида взяли упоротого по этой херне. Но заменили ее на Robot Framework, теперь он упорот по нему :D

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

хоть бы язык английский использовал

Был бы англичанином или американцем - использовал бы английский.

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

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

А пока готового проекта нет - эта тема нужна не столько для флеймов, сколько для советов и подсказок.

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

Что я должен был понять из этих «ну вы поняли»? Что код на плюсах сегфолтится? Я это и так понимаю. То, что у разрабов кед нет времени тестировать все возможные железки перед релизом? Я тоже понимаю. То, что в сложном ПО всегда куча ошибок (включая утечки и сегфолты, если язык не GC и не раст)? Тоже очевидно.

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

Ты не зря написал - «этап проектирования». Да, там диаграммы уместны. Более того, в уважающих себя UML-моделлерах есть кодогенерация. Но её используют в лучшем случае для создания прототипа, потом правят код руками.

«Всё через диаграмму» - это подход Rhapsody, ТСу она чем-то не понравилась.

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

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