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)

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

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

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

Знаю, в Лабвью есть. Сериализация даже в FAQ упоминается, но анонимный чукча не читатель, анонимный чукча - писатель.

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

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

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

Есть у тебя typedef, который пишется в файл или, скажем, является частью сетевого протокола.

Вот это да! нунихерасебе! Эти задачи научились решать еще годах в 70х прошлого столетия. С разморозкой.

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

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

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

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

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

Популярность и потенциальные девелоперы

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

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

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

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

Версионированные типы должны быть стандартной частью среды программирования.

какой среды программирования? а если программист предпочитает чистый текстовый редактор?

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

анонимный чукча не читатель, анонимный чукча - писатель

Ты столько поноса надристал, и не просил модеров чистить. Кто в адеквате теперь будет это читать?

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

У тебя всегда есть выбор: вместо этой темы писать в других. Огромный выбор ресурсов, начиная от порносайтов. Словом, иди в жопу.

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

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

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

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

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

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

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

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

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

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

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

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

Только еще надо при каждой новой версии менять typedef и все такое.

Нет не нужно

struct my_cool_data_t;
struct my_cool_data_t *mcd_init();
void mcd_free(struct my_cool_data_t *);
char *mcd_serialize(struct my_cool_data_t *data, int *size);
struct my_cool_data_t *mcd_parse(char *data, int size);
Все. никаких тайпдефов не нужно. А сериализовать/парсить структуры без костылей вроде версий научились уже лет 50 как, а то и больше.

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

А если поменялся тип? Как без версий?

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

Мы разные анонимусы. Тебе не кажется, что ты неверно выстроил обмен мнениями? Когда ты допишешь свой проект, если постоянно бегаешь на ЛОР отвечать? Поставь себе лимит - 15 минут на чтение, минуту на вопросы и ответы. Видишь полезные комментарий - переспроси и уточни, остальное мимо

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

Вот и ты - занимайся проектом, изредка отвечая в своих темах, иногда уточняя непонятые пожелания

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

Первая demo программа на Metaprog /а-ля «Hello World!»/ будет содержать фразу - «Иди в жопу!».

Владимир

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

Совет дельный. Но я так еще и развлекаюсь:)

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

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

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

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

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

осилить собрать сервер для того, кто сделал это на Си не будет никаких проблем. Банальная логика

А ты на практике докажи, Аристотеля из себя строить и я умею.

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

Уже есть демо-примеры

Половина их которых «нипадает», а вторая половина «нитичет»? А еще это банальные примеры с гтк, в которых нет ни логики, ни полезной нагрузки.

тебе тут кто-то предлагал написать пример с переворотом строки, читаемой с консоли. Это проще гтк, там нет сторонних вызовов. Только чистый Си, ну и логика. Ты не осилил, съехав в демагогию. И не осилишь, потому что банальный балабол.

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

Не осилил потому что не работали циклы. А сейчас переворот строки мне тоже не нужен, тем более из консоли. Мне нужен Метапрог на нуклеаре.

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

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

Владимир

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

Сначала скинь денег на покупку камеры. Или иди в жопу.

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

всё наоборот и ржут над тобой?

это очень хитрая многоходовочка.

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

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

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

А сейчас переворот строки мне тоже не нужен, тем более из консоли.

Это и есть демагогия. Ты тут заявляешь в течении 7 тем, что визуальное программирование очешуеть какое крутое и сильно проще текстового, однако такую простую задачу ты не осиливаешь. Так, к слову. Такую задачу на С++ можно накидать секунд за 20, а на Си минуты за 2. А если лабвью такой мега крутой, то на нем это можно накидать, нууу, секунды за 2...да? или ты банальный мир_дверь_мяч?

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