LINUX.ORG.RU

Метапрог-прототип, версия 6 + будильник на Метапроге

 , ,


1

3

Наконец-то настало время для первой прикладной программы на Метапроге - будильника. Чтобы правильно его собрать, нужна последняя версия прототипа Метапрога. Архив включает в себя исходные диагарммы на LabVIEW и скомпилированные exe, которые можно запустить под Wine на линуксе, читайте инструкции из архива с названием вашего языка. Скачать:

https://www24.zippyshare.com/v/xEn1RKAG/file.html

Основная причина выпуска 6 версии - исправление бага с жесткими последовательностями, ведущими к началу цикла. Это исправление вряд ли окончательное, но для трансляции диагарммы будильника сойдет. Если после транслятора из 5 версии прототипа Метапрога сообщение о времени будильника выводилось в цикле каждый раз, то тут - только один раз, в самом начале:

https://i.postimg.cc/QM43XMjf/image.png

Также проект может похвастаться тем, что функцию проигрывания звукового файла в своей основе сделал insw, успешно разобравшись с функционалом прототипа Метапрога. Я лишь добавил дебаги с условными разветвлениями (аналог if...else) и жесткими последовательностями. В получаемом из транслятора сишном коде это выглядит как множество вложенных друг в друга if...else. Проигрывание звука:

https://i.postimg.cc/d0d2FhRY/image.png

Сишная трансляция диаграммы будильника (не забудьте sound.wav!):

https://pastebin.com/YAd4J1SN

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

Переворот массива

Наконец-то удалось первернуть массив из байтов. Для этого пришлось повозиться с диаграммами транслятора-кодогенератора. В 6 версии прототипа Метапрога эта диагармма уже корректно не оттранслируется, планирую выпуск 7 версии, но надо еще поработать над массивами.

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

https://postimg.cc/RJMKXyTB

Если все же что-то неясно - не стесняйтесь спрашивать. Полученный код:

https://pastebin.com/UsY0TZvc

Предыдущая версия:

Метапрог-прототип, версия 5



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

Почитав чуточку кода ядра, могу с этим не согласиться.

Для полноты сравнения нужен такой же код ядра на метапроге. :) Ибо ядро это не будильник всё-таки.

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

О, у кого-то снег выпал. А я сына-второклассника на лыжи в воскресенье поставил, а сам не успел: в понедельник всё растаяло…

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

Я вообще такого не помню - что бы всю неделю погода звенела (склоны ободрали конечно, но катать норм - в арках дофига отличных красных трасс с утренним вельветом) и только в пятницу с обеда немного подсыпало. Вчера засадил 2км перепада с Айгюль Руж без остановки, аж устал:-)

Сегодня в Тинь переберусь.

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

Ядро положенное в таз это хороший исполнительный механизм для будильника!

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

Пока ты ее неосилил от слова совсем никак.

Что, мегапрог даже строку перевернуть не сможет? А fizzbuzz он могёт?

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

Там текстом и на английском, поэтому сам это читай, раз тебе делать нехер, а мне надо программировать!

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

О, у кого-то снег выпал. А я сына-второклассника на лыжи в воскресенье поставил, а сам не успел: в понедельник всё растаяло…

Пора перебираться куда-нибудь в Сургут.

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

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

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

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

Особенно хорош п.3, Version Control.

Почему Копирасты Из NI (TM) приняли defected by design решение — «исходники» в виде блобов — понять как раз можно. Именно потому, что они не заинтересованы в миграции исходников между Лабвью и чем бы то ни было ещё. Даже не то, что конкурирующим продуктом, а каким-нибудь сторонним вспомогательным анализатором кода, например, который может быть написан НЕ на Лабвью.

Но самое смешное, что @metaprog, который этих «копирастов» кроет и заверяет, что Метапрог будет открытым, собирается заботливо скопировать у себя это решение. Он, правда, не собирается специально огораживать формат, но учитывая его отношение к документации и то, что «стандартной функции сериализации хватит для всего» — результат, видимо, будет тот же.

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

так что наличие там русского и украинского пригодно лишь для провокации нарушения правил форума

Или для облегчения работы над проектом автора, для которого украинский родной. Меня вот от украинского языка в исходниках МП совсем не бомбит. Если концепция и основные архитектурные решения будут правильными — найдутся люди, которые придут и переведут. Другое дело, что вот как раз с основными архитектурными решениями всё печально.

Я вот по этому пункту как-то с @Bagrovым больше согласен…

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

Читаю и хихикаю. Мне не нужен подробный стектрейс а-ля питон, достаточно нажать на кнопочку Show Context Help (чего автор статейки сделать, видимо, не догадался), навести курсор на тот самый проводок и все станет ясно в подробностях.

Работа со строками, массивами итп там удобнейшая. С циклами разобраться легко.

Разного рода недостатки у Лабвью, конечно, есть, иначе я б не делал Метапрог. Но даже прототип Метапрога я делаю на Лабвью: мне ни к чему зубрить для этого текстовые ЯП, Лабвью хватит с головой.

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

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

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

ТС как то топил за то что его поделие выдает сишный код что типа обеспеичвает скорость и эффективность - с его СУВТ про скорость и эффективность можно навсегда забыть

Почему?

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

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

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

Управление ресурсами в его случае сводится к обычному стеку

malloc+realloc+free в Метапроге тоже можно использовать, что я и делаю.

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

у него сейчас набор из блоков где вперемешку мова, сурджик и русский

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

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

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

Абракадабра. Перефразируйте.

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

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

Не то что бы я видел тут коварные попытки отнять у меня годы на изучение чего-либо, просто не вижу смысла. Есть Лабвью, и на нем успешно можно делать прототип Метапрога - ну и к чему мне учить тот же Питон? Что он мне даст такого, чего я не сумею в Лабвью?

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

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

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

Даже с лицензионной Лабвью 2013 копирасты пошлют меня покупать (разумеется, за бешенные деньги) новую версию, не поддерживающую ХР (самую вменяемую винду для виртуалки). А линуксовая версия стоит больше 3 тысяч баксов и даже на торрентах не имеется (дохлые раздачи не в счет).

Да и чем они бы мне помогли?

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

Указатель Масив Константа Цикл Консоль Регистр Структура

Это я прочитал в описании, и мне должно быть понятно. Что бы прочитать твоё описание я должен знать все эти понятия и что они значат.

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

Кстати, сам я частично освоил эти понятия в Лабвью (не читая книг и почти не читая мануалов), частично - изучая Си как целевую платформу транслятора диаграмм (нашел краткие справки и таки пришлось покурить GNU C Reference).

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

недооценка нужности документации, в том числе при проектировании

Как пользоваться Метапрогом подробнейше описано во встроенной справочной системе. А документация при проектировании - на Метапроге и Лабвью проще сразу сделать.

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

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

Что-то подобное стектрейсам думаю сделать уже в Метапроге: функцию, которая генерирует ссылку на место на диаграмме, где произошла ошибка. Будет куда нагляднее, чем читать текстовые стектрейсы.

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

Нет, это вина Питона.

Таблетки прими.

В нем куда хуже с наглядностью, чем в Лабвью

Это лично твое мнение некомпетентного шпалоукладчика.

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

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

Окей, сам признал, что из себя представляют метапроговские данные.

Но самому мне делать это незачем.

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

Но нет, похоже, нас ждёт очередной закопиращеный .vi, только с перламутровыми пуговицами.

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

А чем Qt лучше Лабвью?

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

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

Потому что любая операция с Вашим вариантом СУВТ обвешена кучей проверок значений селектора. По производительности Ваш сгенеренный сишный код будет сливать даже питону.

Самое смешное что Вам СУВТ не нужны.

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

Вы не знаете питон достаточно хорошо что бы делать подобные заявления.

Можно ещё вспомнить что любой нормальный код на питоне имеет меньше букв чем его метаппоговский аналог жгутиков и пиктограмм - так молчите уже про наглядность в тряпочку

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

Но нет, похоже, нас ждёт очередной закопиращеный .vi, только с перламутровыми пуговицами.

Лабвьюшные vi-файлы невозможно отреверсить с помощью стандартной библиотеки Лабвью. А в Метапроге это будет вохможно. И сам Метапрог будет с открытым кодом.

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

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

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

СУВТ предназначены для работы через switch. Таблица переходов или как его там - не думаю что это будет медленнее чистого Си.

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

Самое смешное что Вам СУВТ не нужны.

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

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

На этом преимущества Qt заканчиваются и начинаются мучения с изучением С++. Есть ли еще причины идти на такие жертвы кроме лицензии и необходимости поставить Лабвью?

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

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

Как?

Таблица переходов или как его там - не думаю что это будет медленнее чистого Си.

Ты не поверишь.

Вы Метапрог и Лабвью знаете еще меньше, чем я питон. Так что не вам судить.

Ты питон вообще не знаешь.

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

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

Как?

Функциями из стандартной библиотеки.

Ты питон вообще не знаешь.

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

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

Что он мне даст

Я же уже написал — ничего не даст, учить не надо.

Мне, например, тоже Большой Адронный Коллайдер ничего не даст. Нет, пользу он мне, конечно, принесёт. Но опосредованно, сильно опосредованно. Самому мне его смысла использовать нет, да и не осилю я управление таким инструментом. Но опять-таки, это не значит, что он не нужен никому вообще. Кому-то очень нужен и полезен.

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

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

Относительно простой циклотрон из металлолома в большинстве случаев полезнее БАКа. Скажем, уран обогатить с технологиями уровня второй мировой...

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

Относительно простой циклотрон из металлолома в большинстве случаев полезнее БАКа. Скажем, уран обогатить

²³⁸Fp
(Facepalmium)

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

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

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

Домен с непопулярным именем - $10/год, самый дешёвый дроплет на digitalocean - $5/мес, доведённый до ручки метапрог - priceless.

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

Функциями из стандартной библиотеки.

Давай уточним: ты собрался отреверсить vi-файлы с помощью стандартной библиотеки метапрога?

читал питоний код, игрался с интерпретатором, запускал питоньи проги

Знать язык - значит уметь написать на нем что-то внятное на пару тыщ строк значимого кода. Ты питон не знаешь вообще.

А ты даже ни разу не запускал Метапрог

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

чем ты Метапрог

Не обязательно жрать говно, чтобы понимать, что это говно.

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

Питон? Что он мне даст такого, чего я не сумею в Лабвью?

Строчку развернуть на Питоне сможешь. В Labview это у тебя до сих пор не вышло.

rupert ★★★★★
()

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

http://okante.narod.ru/D/

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