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

concatenative languages вообще не про data flow, хотя подкупают тем, что в них нет «переменных».

Как нет?

VARIABLE DATE
12 DATE !
DATE @ .
monk ★★★★★
()
Ответ на: комментарий от monk

Понятно, что без глобальных переменных не обойтись. Я имел в виду, что использование переменных не идеоматично при написании 99% кода в forth-like языках

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

Владимир

Делаем одну глобальную структуру и в нее помещаем 1514 переменных.

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

Ну это что то по типу VARIABLE, в Forth есть расширение для переменных более сишного типа.

Это какое? А чем VARIABLE не сишный тип?

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

Еще как вариант чисто функциональной графической нотации — FAUST

http://faust.grame.fr/

но, как видно — все равно — ноги растут из схемотехники/signal processing — и, как следствие — язычок нишевой (для написания аудио-плагинов).

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

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

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

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

Deleted
()

Владимир

Предлагаю рассмотреть возможность использования диаграмм для разработки API /не программ/.
Библиотеки:
- для работы с строками;
- математические /матрицы, .../;
- ...

Для текстовых программ выставлять биндинги к визуальным функциям.

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

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

у faust, pd есть ide. как же без него? рисовать-то надо где-то. И библиотек уже к ним наработано будь здоров.

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

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

Представьте себе молодого и горящего бизнес-аналитика, который только ознакомился с BPMN, ощутил его «полноту» и удивляется: почему на нем программисты не пишут. Ядро Линукса написано на каком-то убогом древнем Си. Ну-ка, давайте-ка его на BPMN перепишем! Красота, стройность, наглядность, визуальщина, событийность, параллельность, конкуррентность, коллаборативность... Ну бред же. Ниша есть — и слава Богу!

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

Да. При желании. http://programatica.cs.pdx.edu/House/

У тебя какая ОС стоит? House или Линукс? Или небось винда (ядро которой тоже сделано на Си)? Я впервые об этом House слышу. И вообще не припомню хоть одной программы, сделанной на Haskell, а ты?

Что бы было, если бы fwrite не выводил бы в файл а писал бы в первый байт первого аргумента значение последнего аргумента? Угадать последовательность вызовов практически невозможно

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

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

В Си на диаграммах не видна логика? Чего-то я не понимаю тут.

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

И вообще не припомню хоть одной программы, сделанной на Haskell, а ты?

А я кстати сразу могу назвать, Haskell - Pandoc, Erlang - Wings3D, обе замечательны. А какие программы современные есть на С?

Или небось винда (ядро которой тоже сделано на Си)?

Там вроде плюсцы!

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

принцип «одна диаграмма — один исходник» очень облегчит борьбу с внутренними ошибками Метапрога и другими нетривиальными ситуациями.

Я уже инлайню метапроговские (не сишные) подфункции. Скоро будут новые скрины. Си вообще не будет видеть границ метапроговских подфункций, как будто все - одна функция. Только особые случаи, заслуживают отдельньных функций на уровне сишного транслятора: рекурсия, указатели на функцию, вызов сишных функций. Думаешь gcc 8 не схавает исходник размером в 1 Гб?)))

От внутренних ошибок Метапрога простота Си дает 100% гарантию. Называть каждую переменную уникальным именем, чтобы избегать коллизий - и все будет ок.

Что, прямо-таки для всех процессорных архитектур? Или будешь прибиваться гвоздями к интелу? Можно, конечно, потратить на это несколько лет, за которые можно было бы развить саму среду — но вот я не понимаю эту маниакальную страсть велосипедить кучу дурной работы, давно и успешно сделанной другими. Если только не прямо в машинный код, а подцепиться к какому-нибудь LLVM...

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

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

Думаешь gcc 8 не схавает исходник размером в 1 Гб?)))

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

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

До таких толстых исходников надо еще дорасти. При нужде действительно можно будет бить на отдельные файлы.

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

Ядро винды на плюсах? Серьезно?

Нет видимо, спутал!

Это все появилось до 2000 года! А что из новых проектов? Gnome, XFCE написаны не полностью на C кстати!

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

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

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

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

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

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

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

ТС-у бы хоть немножко почитать до чего наука-то дошла

Почитываю Хабр иногда.

https://habr.com/ru/post/423889/

https://habr.com/ru/post/443466/

Дошла до джаваскрипта на серверах (nodejs) и десктопе (electron). Дошла до тормозной и глючной джавы на смартфонах и планшетах. Список продолжайте сами.

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

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

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

Дошла до джаваскрипта на серверах (nodejs)

А чем это плохо? В сервере главное база данных там, io, все это на С написано.

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

С ядром линукса так и делается.

Нет, у ядра есть модули!

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

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

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

Вот смотри, собрал ты metaprog статически с PCRE, ну допустим, а потом в PCRE нашли уязвимость, и мне нужно делать apt update и перекомпилировать metaprog, а если бы оно там все динамически собралось, то я бы просто написал apt update и pcre.so обновился бы, и metaprog юзал бы его, и не надо было бы ничего перекомпилировать!

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

Само будет компилировать. Этим я не отрицаю, что иногда библиотеки быть должны, но лучше автоматическая сборка монобинарника. Вспоминается флейм Линуса с Таненбаумом:

https://groups.google.com/forum/#!topic/comp.os.minix/wlhw16QWltI

Или нынешние срачи по systemd (которое единый монобинарник, заменивший тысячи скриптов).

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

Или нынешние срачи по systemd (которое единый монобинарник, заменивший тысячи скриптов).

Но оно модульное!

но лучше автоматическая сборка монобинарника

Ну да, это тоже очень хорошо, главное что бы был выбор!

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

PCRE уже обсуждалось, лучше обойтись без него. Или, если найдутся умники и сделают такой модуль, то чтоб Метапрог обязательно предупреждал о небезопасности такого подхода.

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

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

Не пойми меня превратно, в модульности тоже ничего плохого (как в ядре линукс или systemd). Главное не переборщить с этим.

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

Си не плюсы, компилится быстро.

Долго.

GCC опенсорсный, какие проблемы?

Много весит, есть не для всех платформ.

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

От этого ломаются многие программы, это не безглючно работает! Это плохой подход.

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

Ладно, в том, что должен быть выбор ты прав. Правильный выбор будет сделать легко, ведь интерфейс-то графический будет.

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

Не думаю что специально вшивали, intel+amd могут и в открытую туда бекдоры свои поставить, альтернативы то нет.

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

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

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

Да нет, просто тут появляются всякие, с подобными же неоднозначыми и как минимум спорными утверждениями, типа того, который лежит в основе твоей идеи визуального программирования. Уж не ты ли из-под анонима набрасываешь?

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

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

Что плохого в том, чтоб перекомпилировать весь Метапрог?

Плохо то, что раз дистр бинарный, то вынь да полож бинарник. Если дистр типа генту, то подавай исходник.

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

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

rumgot ★★★★★
()
Последнее исправление: rumgot (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.