LINUX.ORG.RU

Метапрог-прототип 43: начало переделки «на самом себе»

 , , , ,


2

4

Скачать:

https://mega.nz/file/fUhEjbCI#1LbpnccSm_SkwJi5Bugwc679tFxj7YJzCTOQxmxHvq0

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

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

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

Пока что бекенд только записывает с-файл, вызывает компилятор, а также создает инклуды в процессе трансляции, чтобы уменьшить размер кода и тем самым оптимизировать потребление памяти у сделанного на LabVIEW транслятора. Но пока что не удается оттранслировать схему, отображающую типы в дереве: транслятор вылетает из-за того что «обжирается памяти».

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

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

Предыдущая тема:

Метапрог-прототип 42



Последнее исправление: metaprog (всего исправлений: 2)

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

Какой синтаксис если Метапрог не текстовый?

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

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

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

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

Разве синтаксис это не из лингвистики? Я не люблю спорить о терминах, но в этот раз сделаю исключение. Википедия вещает:

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

Разве стоит притаскивать в графическое программирование понятие из лингвистики?

Начальное ознакомление с языком можно производить и «методом тыка», но как только речь зайдёт про хоть сколько-нибудь нетривиальные вещи — описание понадобится

Было бы кому его писать:)

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

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

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

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

Ну и что здесь мимо? Символы алфавита в данном случае — это разные типы узлов и связей между ними. Всё подходит.

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

Было бы кому его писать

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

liksys ★★★☆
()

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

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

Разве синтаксис это не из лингвистики? Я не люблю спорить о терминах Разве стоит притаскивать в графическое программирование понятие из лингвистики?

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

Было бы кому его писать:)

было бы для кого его писать…

Мне по Лабвью ни одна книга не понадобилась. Меня научили базовым вещам в офлайне

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

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

Желание обвести сишку в квадратики. Потом ТС обосрался с этой простой идей и теперь пытается сделать примитивное подмножество сишки, прибитое гвоздями к sdl. Прямо сейчас ты можешь наблюдать, как он обгаживается и с этим. Интересное шоу, на самом деле, только программу выступления @metaprog вообще не продумал, поэтому иногда его клоунада становится очень унылой.

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

только программу выступления @metaprog вообще не продумал

А вы сами пробовали когда-нибудь планировать программу выступления аж на три года вперед?

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

Я же не клоун, чтобы три года делать метапрог.

liksys ★★★☆
()

@metaprog, ты выдохся что ли? Уже неделю тишина, где продолжение твоей метаклоунады?

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

https://www.opennet.ru/opennews/art.shtml?num=56206
https://github.com/zecruel/CadZinho/tree/opengl/src

САПР на чистой сишке, для GUI используется SDL2 + OpenGL + Nuklear.

Можно утянуть виджеты, например файловый диалог что бы не зависить от сторонних утилит или gtk на linux - https://i.imgur.com/ilpu7PE.png
Ну и всякие функции для Canvas понадобятся.

MOPKOBKA ★★★★
()
Последнее исправление: MOPKOBKA (всего исправлений: 3)

Пользуясь случаем и тем, что вспомнил пароль и обнаружил, что сообщений у меня снова на одно меньше, чем требуется, скажу вот что:

  • От очередного >9000-го виртуала (с)котечки, конечно, стоило ожидать упоминания моего ника (с неправильным окончанием, разумеется) даже в этом (т/б)реде — воистину, вбрасывать нужно так, чтоб тебя даже спустя 2.5 года не забывали.
  • Домен metaprog.org давно уже отпущен в свободное плавание, так что, @metaprog, пользуйся на здоровье… Ах да, у тебя же денег нет и быть не может по определению.
  • Напоминаю о нотариально заверенном скриншоте про "месяц-другой". Думаю, неофитам в этих тредах это о чём-нибудь да скажет.
  • Всем остальным: вы до сих пор возитесь с этими сказочными… персонажами? Кажется, мем протух, причём безвозвратно. Даже всякие "вульгарные свойства" и прочее "управление памяти при помощи SDL-семафоров" лулзов уже приносят чуть менее чем никаких.

В общем, мораль сей басни такова: когда цель — "софт делать, а не учиться", в итоге ни софта не сделаешь, ни не научишься ничему.

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

Адью!

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

Мем больше не мем. Очевидно, что @metaprog страдает от аспергера и еще парочки психических заболеваний. Но так как он с этим ничего делать не хочет, а хочет только клоунадить - ради бога.

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

Оказывается, подробный формат существует как часть CMSIS и называется SVD.

Спасибо. Как ни странно, нашелся файл для gd32vf103 (RISC-V). Но потом я наугад потыкал другие контроллеры от разных производителей: для ATSAM3N нашлось, для ATmega8, ADuC7060, pic16f84, LPC1343, К1986ВЕ91 не нашлось.

Это у меня проблема с поиском или у производителей с поддержкой svd?

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

Всем остальным: вы до сих пор возитесь с этими сказочными… персонажами

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

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

Да даже Labview написано не на Labview.

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

Но вот смысла писать ПРОТОТИП метапрога (который всё равно будет выброшен) на Лабвью, я не вижу решительно. Взял бы автор хотя бы связку C/GObject/GTK — был бы гораздо ближе к результату.

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

что сообщений у меня снова на одно меньше, чем требуется

А ты опасен!

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

Отличная штука, кстати.

@metaprog, мое предложение подарить тебе lego mindstorms всё еще в силе. Сможешь делать паровозики и программировать их в графике. Наконец твой неуемный творческий потанцевал найдет выход, адекватный твоим способностям.

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

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

Совершенно верно.

Но вот смысла писать ПРОТОТИП метапрога (который всё равно будет выброшен) на Лабвью, я не вижу решительно. Взял бы автор хотя бы связку C/GObject/GTK — был бы гораздо ближе к результату.

Смысл в том, чтобы его не писать, а собирать. Писать не хочется от слова совсем, а собирать не на чем кроме Лабвью.

Если что, писать текстовый код я хоть и не люблю, но могу если очень надо. Для ардуинок я если что скетчи пишу, в студенческие годы даже писал проги на делфи и не так давно по просьбе коллег трахался с одним микроконтроллером, пытаясь сделать сишную прогу на нем. Понял, что мануалы по контроллерам курить долго и секса с ними много, очень пожалел что лабвьюшного/метапроговского API на них нет. В общем, Лабвью я, несмотря на все его недостатки, люблю больше чем текстовые ЯП.

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

Пользуясь случаем и тем, что вспомнил пароль и обнаружил, что сообщений у меня снова на одно меньше, чем требуется

Если еще что-нибудь твое удалят, придется еще ответить.

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

В первую очередь твой Антиметапрог на Реде.

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

Сам-то привился от ковида тремя дозами? Аусвайс получил?

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

Кстати, на Packt Free Learning сегодня раздают книжку «Learning LEGO MINDSTORMS EV3».

Предпочитаю учиться не по книжкам. Пока получатеся.

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

примитивное подмножество сишки, прибитое гвоздями к sdl

Если ты про семафоры в структурах массивов, то массивы можно в Метапроге по-разному реализовать.

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

Предпочитаю учиться не по книжкам.

Для того чтобы шпалы укладывать книжки действительно не нужны.

Пока получатеся.

А если серьезно - то это крайне заметно как по твоим нулевым навыкам, так и по низкому интеллекту.

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

а в перспективе на Метапроге

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

Ну и чё? С тех времён что-нибудь поменялось? Только анонсы а том, как все становится круто, никаких новых демок, ничего!

Что мешает сделать видео, как круто запилить будильник на новейшей версии Метапрога? Потратить час, зато, ну если это будет круто, возможны новые фанаты, а то ополоумевший и брешущий каждый второй пост Котечка уже не веселит.

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

Что мешает сделать видео, как круто запилить будильник на новейшей версии Метапрога? Потратить час

Целый час на таймер?! Даже на чистом labview можно быстрее справиться, не говоря уж про более пригодные для программирования языка

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

С тех времён что-нибудь поменялось?

Было сделано множество улучшений никому не нужных суньвт. Как только сделает высуньвт - все текстовые языки сразу же умрут.

ополоумевший и брешущий каждый второй пост Котечка

Это бешенство, животное пора усыплять.

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

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

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

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

Было сделано множество улучшений никому не нужных суньвт. Как только сделает высуньвт - все текстовые языки сразу же умрут.

Напомнило: «я сделал замечательный архиватор, который сжимает любой файл до двух байт, 0x00, 0x01» - «а как же разархиватор?» - «а про разархиватор разговора не было!»

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

Подам отличную идею — уже сейчас делить разные числа одно на другое, конвертить остатки в avi и смотреть еще не вышедшие фильмы :). Результат обсуждения Бабушкинского алгоритма сжатия на хабре.

Чет вспомнилось.

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

никому не нужных суньвт

Вы забываете про супермега фичу «цикл по структуре».

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

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

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

Цикл по полям в нормальных языках - это не суперфича, а обычное свойство встроенной интроспекции. Полезно, но не критически необходимо. В питоне, кстати, из коробки. Если бы @metaprog писал свой жопопрог на питоне, то ему бы не пришлось изобретать велосипед, и прототип был бы готов еще два года назад.

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

Цикл по полям в нормальных языках - это не суперфича

А какие языки вы считаете нормальными? Что-то мне кажется, это характерно скорее для динамически типизированных языков. Скажем, в Си такого нет, в С++ вроде тоже.

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

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

Если бы @metaprog писал свой жопопрог на питоне, то ему бы не пришлось изобретать велосипед, и прототип был бы готов еще два года назад.

Ну как так можно! Это ведь пришлось бы чужой код ЧИТАТЬ!

COKPOWEHEU
()

MOPKOBKA и прочие пользователи Метапрог Онлайн из России. Вы там в тор пробиться не можете? Вам накидать мостов и ссылок на тор браузер?

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

прочие пользователи Метапрог Онлайн из России

Просто интересно. Много ли было пользователей из России? В среднем всех из всех стран пользователей по дням было 2 целых хрен знает сколько сотых, полагаю. Сотые – это те лоровчане, которые сумели запустить твой прототип, зашли, исплевались на недружественный интерфейс и удалили все нахрен.

Конечно, могу быть не прав, и комьюнити у Метапрога огромное, все прям помогают его развивать.

Вам накидать мостов и ссылок на тор браузер?

Реально? Поклонники Метапрога настолько тупые, что сами это не могут найти?

ЗЫ: к закручиванию гаек Роскомпозором отношусь отрицательно.

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

Цикл по полям в нормальных языках - это не суперфича, а обычное свойство встроенной интроспекции.

А Си – это нормальный ЯП? Там такого нет. А в C# такое есть? Ну реально, редко это нужно.

cluge
()
Последнее исправление: cluge (всего исправлений: 1)
Ответ на: комментарий от jhonathan

Когда релиз?

Какой тебе релиз? Ты задонатил на развитие Метапрога?

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