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)

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

У тебя галлюцинации, клован. Попей таблеточек каких-нибудь. Бай-бай.

liksys ★★★★
()

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

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

Он же заблокирован... Вы что, либерал-русофоб?

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

А я ее как раз и нарисовал, один в один. Так он выглядит IRL. Правда я его приукрасил на 30кг, иначе в аватарку бы не влез.

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

Очкастая жопа. Черт, жаль что я едва ли пейнтом владею, чтобы это передать. Рисовалка диаграмм не в счет: там все рисуется програмно.

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

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

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

А у меня как то виндовс сломался, установщика не было, зато был диск с Ubuntu 12.04, там я нашел GIMP, и даже о винде забыл, пробовал там планеты вращать, инструменты тестировал. С того момента линукс и опенсурс в душу и запали %)

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

Жаль только, что код опенсорса открыт только для тех, кто умеет читать текстовый код. А программистов всего лишь 0,25% населения планеты Земля.

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

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

сделаю разработку Метапрога коллективной как только будет готовый редактор диаграмм

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

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

«Настоящий» Метапрог будет от Лабвью уже отвязан. Результат сборки проекта - сишный код или скомпилированный бинарник. Уже есть примеры кода.

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

А ты специально форматировал, или у тебя IDE такая?

Текстовый редактор с плагинами. Открыл, отформатировал.

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

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

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

программа говно потому что:

1. не будет работать на не 64-битных архитектурах

2. реверсит только первые 8 букв байт

3. не поддерживает utf-8, здраствуй саахрикту

4. если в исходной строке меньше 8 букв байт, может выйти segfault

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

У матлаба была такая фича — матлаб компайлер. Он генерил исходник на Си из набора исходников на матлабе, всё это компилировал и линковал в большой исполняемый файл. Потом в какой-то версии, кажется в 7, компилятор перестал генерировать исходник на Си. Вместо этого приложение пакуется в ZIP-архив, шифруется xor-ом, и рядом кладётся установщик набора библиотек.

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

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

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

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

Так не просто питон поставить. Поставить питон правильной версии! И пакеты еще поставить. И помолиться, чтобы оно не упало до того как клиент перечислит деньги за заказ.

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

А когда клиент обращаеться с багами в питоньих скриптах - решать проблемы с ними за дополнительную плату:)

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

Секрет в том, что компиляция в Си — не панацея. Нужно думать, как решать задачу, а не поклоняться идолам. В новой версии их движок стал значительно лучше обрабатывать места языка, которые традиционно были слабыми. Циклы, например.

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

Лучше, чем был транслятор - только и всего.

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

Получилось примерно как недавно с zlib, переписанном на Javascript. Вроде код медленнее кода на Си, но за счёт того, что не нужно выпрыгивать в Си и запрыгивать обратно, получается быстрее.

Насколько я помню, Matlab стал использовать JVM.

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

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

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