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)

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

Только что скачал MyOpenLab на винду на виртуалке (на Линуксе бросало джава ексепшоны)

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

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

Что имеется в виду? Там Java-код внутри графических блоков показан?

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

автожир подороже выходит

Новый AutoGyro Cavalon с завода от 80 тысяч евро начинается (дальше - в зависимости от выбранных опций, авионики и пр.), самолёт за эти деньги - только Б/У.

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

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

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

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

Синдром Вахтёрши. Не нравится - пройди мимо же, не? Зачем бежать 7 остановок тредов, чтобы объяснить как вы мне безразличны.

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

А реализация давно уже запиленных библиотечных примитивов — это пустая трата времени.

ну что ж тогда немного поменяем задачку. нужно взять строку и разбив её на пары символов в каждой паре поменять символы местами. пример: 12345678 -> 21436587.

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

Вопрос не в том, чтобы изобретать, а в том, чтобы свести воедино уже изобретённое. А это неинтересно, этим никто не хочет заниматься.

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

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

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

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

У меня есть USB-осцилограф, на него дрова на джаве. Под Линуксом сколько ни шаманил - не заработало. На виртуалке на винде 7 тоже не хотело, только на виртуалке с ХР заработало с пробросом USB-порта. Ну и где же хваленая переносимость джавы? А багрепорт слать, копаться там... проще на винде на виртуалке протестить, хорошо хоть до этого руки дошли.

В FAQ на их сайте прямо написано, что это не аналог лабвью и они следуют другим принципам, опираясь на джаву:

https://myopenlab.org/inicio/preguntas-frecuentes/

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

Что имеется в виду? Там Java-код внутри графических блоков показан?

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

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

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

https://postimg.cc/Z0r3BV3g

Еще раз: в майопенлаб это невозможно?

Сам скачай, поставь (потанцуй с бубном и джавой) и пощупай - опенсорс же ж, в отличие от Лабвью.

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

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

«животное» не является оскорблением а всего лишь константацией факта если конечно ты из приматов (https://ru.wikipedia.org/wiki/Приматы) как большинство тут. если же ты инопланетный робот тогда конечно это слово может тебя обидеть. предлагаю всем быть осторожнее в выражениях, я уже давно подозреваю что автор представитель внеземного разума, а в этом случае вполне возможно что к животным он не имеет никакого отношения.

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

Издеваешься? Стандартный JS (ES6):

swap = s => (''+s).replace(/(.)(.)/g, '$2$1')

Хотя я такое не далее чем 3 месяца назад вообще обычным sed-ом проворачивал, когда IMEI в квалкоммовский формат переводил.

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

https://ru.wikipedia.org/wiki/Десятичная_система_счисления

Кипу инков
Прообразом баз данных, широко использовавшихся в Центральных Андах
(Перу, Боливия) в государственных и общественных целях в I—II тысячелетии н. э.,
была узелковая письменность Инков — кипу, состоявшая как из числовых записей десятичной системы[4], так и не числовых записей в двоичной системе кодирования[5].
В кипу применялись первичные и дополнительные ключи, позиционные числа, кодирование цветом и образование серий повторяющихся данных[6].
Кипу впервые в истории человечества использовалось для применения такого способа ведения бухгалтерского учёта, как двойная запись[7].

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

Человечество очень «уперто» /как metaprog и многооооооооо более/.

PS: ИМХНО это проблема - N1.

Владимир

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

«животное» не является оскорблением а всего лишь константацией факта если конечно ты из приматов

Да, я из прямоходящих приматов. Согласен, глупо считать это оскорблением. Кстати, заметь, ты меня во многом понимаешь. Хоть и не во всем, но во многом.

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

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

Догадайтесь почему так ...

Владимир

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

взять строку и разбив её на пронумерованные (n = 0, 1, 2, ...) пары символов в каждой паре поменять символы местами если n%2 == 0, в обратном случае заменить пару на оригинальную пару предшествующую паре n. пример: 12345678 -> 21126556.

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

нет готового такого нет, есть metaprograming, но я уже разобрался можно свое добавить - готовое не обязательно!

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

взять тот же лиспосинтаксис нафиг ненужный

Тебе может и квантовая электродинамика не нужна, но это вовсе не показатель её нужности в целом.

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

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

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

лично я ничего не понял но допустим это из за того что никогда не имел дело с этим labview. в любом случае могу лишь сказать что интуитивно без чтения доков не понятно.

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

Да, проще. А когда тыкаешь в Лабвью и тебе показывает контекстный хелп на каждый блок при наведении мышью - еще проще.

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

Тут надо понаводить мышкой на элементы чтобы показало контекстную справку на каждый элемент. В Метапроге тоже что-то подобное запилю.

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

чувак без обид - мне насрать что ты там продвигаешь, но 7 тредов подряд это борщ!

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

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

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

Создатели языков программирования /в большей части/ стремятся
создать синтаксис такой, чтобы программисты могли лаконично и просто создавать код.
Вот попробуйте другим показать «лапшевидный» код и спросить их об его функциональности ...
Да, вам удобно и что из этого следует?

PS: Мы все сильно отличаемся в привычках, мышлении, ...
Безусловно это большая проблема.
Найдутся и у вас сторонники безусловно ...
И конечно какая то ниша использования вашей разработки будет.
Для того, чтобы «ниша» была больше нужно стараться или угодить большему количеству «привычек» людей или вообще исключить человеческий фактор /ни какой код на C не будет генерироваться/.

Владимир

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

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

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

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

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

не надо распечатывать, запиши на флэшку, заверни в пакетик и проглоти

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

думаю через месяц-два сделать

ты так 3 месяца назад писал

можно поставить триалку на 7 дней

а через 7 дней переустановить или просто потереть какой нибудь файлик в ~ ?

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

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

Ловлю на слове.

через месяц-два сделать

Тут уже не отвертишься как с:«месяц - другой»

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

https://ru.wikipedia.org/wiki/International_Obfuscated_C_Code_Contest

main(argc, argv)
int argc;
char **argv;
{
  while (*argv != argv[1] && (*argv = argv[1]) && (argc = 0) || (*++argv
    && (**argv && ((++argc)[*argv] && (**argv <= argc[*argv] ||
    (**argv += argc[*argv] -= **argv = argc[*argv] - **argv)) &&
    --argv || putchar(**argv) && ++*argv--) || putchar(10))));
}

Metaprog и это код - братья.

Владимир

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

ты так 3 месяца назад писал

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

И более того: я уже частично заменил анонимные структуры сишными typedefами (помнишь проблему с варнингами?), может скоро выкачу пример. А потом еще одна очень серьезная доработка транслятора для ветвлений (пока они не совсем готовые), добавление switch, структур условного выбора типа, версионированных форматов - и можно будет делать раскрутку.

а через 7 дней переустановить или просто потереть какой нибудь файлик в ~ ?

Если что есть кейгены.

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

Завтра праздник.

Не верующим желаю обрести веру.
Верующим больше видеть в себе недостатков - больше пользы будет ...

Владимир

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

Переход среды программирования на самообеспечение, в моем случае - отказ от Лабвью. По-английски bootstrapping.

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

Анонимусы, принимайте участие в конкурсе (см. шапку темы) пока 20 страниц нет. Только без стеба, а то быстро израсходуется лимит сообщений и придется молчать до 8 темы.

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

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

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

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

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