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)
Ответ на: комментарий от hobbit

По-моему, метапрог-темы - это такие темы, где понятия «оффтопик» не существует.

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

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

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

а как же автор?

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

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

коммунисты могут охарактеризовать суть своих требований как уничтожение частной собственности…

… а также, модулей, блоков, локальных переменных, …

речь идёт о переделке экономического механизма

Административно-командный ассемблер — идеал комуняк. Все остальные ЯП — буржуазные излишества :)

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

А можно ещё раз, что такое «структуры условного выбора типа» и «многотиповый тип»? Я пытался найти, но так и не понял. Это какой-то стандартный термин? Желательно с примерами на C.

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

struct{
int selector;
union{
type1 type1_var;
type2 type2_var;
//...
}
}

Простой пример использования в подробностях, направление выполнения алгоритма тут слева направо:

https://i.postimg.cc/90y27nHX/image.png

При записи переменной в СУВТ задается значение селектора и сама переменная в юнионе. Записывать надо только одну переменную из всех возможных (как в юнионе). Далее СУВТ можно подключить к переключателю (прямой аналог сишного switch). В нем будут кейсы по селектору и будет идти разветвление: выполняться будет та ветка, которая соответствует значению селектора СУВТ.

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

Если что не до конца понятно - не стесняйся спрашивать.

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

Ничего не знаю, я Метапрог ваяю не за деньги (по крайней мере пока что). Линус тоже написал ядро линукса just for fun.

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

А вы знаете что такое коллиматоры?

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

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

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

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

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

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

в делфи 6 можно было базу данных с отчетами мышой только сделать. А будильник там делался 1 компонентом и 2 кликами. И заметь его можно было потом сконфигурить (то есть когда он уже собран и запущен), выбрав дату в календаре и время в часах. А твой «будильник» так может?

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

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

Для меня визуальный мусор - это почти любой более-менее сложный текстовый код. Дай рандомному человеку. не знающему текстовые ЯП (около 99% населения Земли) почитать те заклинания, с какой попытки он угадает, что делет код?

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

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

Возможно, это недалеко от истины:))))

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

Вот прямо сейчас ты как раз кукарекаешь.

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

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

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

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

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

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

А я сделал еще кучу опенсорса фор фан. Который, кстати, в отличие от твоего поделия, не нарушает GPL.

Речь шла о работе, а не о петпроджектах.

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

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

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

Ха-ха, я уже репорт написал

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

но Метапрог GPL не нарушает

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

А работаю я не программистом

Да никто и не сомневался, в общем-то, что ты не программист. Иначе не нес бы бред на протяжении 16 тем.

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

Лучше почитаю классиков: https://stihi.deti.guru/ivan-barkov/

Иван Барков

Шёл ху

Шёл метапрог по метапрогу,

Нашёл метапрог метапрог на метапроге,

Но подумал метапрог: «Ну зачем мне метапрог, если сам я метапрог?!»

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

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

Да я уже и прототип выложил под GPL.

Это шлак. От того, что ты его называешь «прототипом», ситуация не улучшается. Или сейчас @iluha16 нам расскажет, как «прототип метапрога» ему значительно повысил производительность труда?

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

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

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

Но вполне себе годная для информации, копирование которой практически бесплатно, особенно в век интернета.

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

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

Для меня этот код - непонятная абракадабра.

«@metaprog — мера всех вещей».

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

Да-да, умница. Шутить надо так, чтобы это нравилось большим дядям, я понимаю.

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

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

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

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

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

Дай рандомному человеку. не знающему текстовые ЯП (около 99% населения Земли) почитать те заклинания, с какой попытки он угадает, что делет код?

write(2+2) показал 3 людям не программистам. Все сказали, что «пишет 4».

И ты попытайся для начала хотя бы сваять хеллоуворлд и факториал на Метапроге

а зачем? хеловорд на питоне занимает 1 читаемую и понятную строку и требует только питона (запускается даже на тостерах), хеловорд на «метапроге» требует венду, 300 мегов рантайма определенной версии и выглядит как китайская лапша. Преимущества питона очевидно.

так что пробуй.

А ты купи слона.

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

ты переизобрел то, что было еще в 60х. это успех ящитаю.

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

Петушиться — разг. вести себя задиристо, запальчиво; горячиться

Не вижу, при чём тут ЛГБТ. :) А вот задиристость явно пристутствовала в том, как ты обещал всё сделать и обзывал существующие технологии археологией, и вот это всё «я пришёл софт писать, а не учиться».

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

Для меня этот код - непонятная абракадабра.

А ничего, что ключевые слова здесь — «для меня»? И что это именно твоя проблема, а не тех, кто действительно хочет писать программы? Я вот ни разу не питонист, но почитал про namedtuple — всё стало понятно.

Дай рандомному человеку. не знающему текстовые ЯП (около 99% населения Земли) почитать те заклинания, с какой попытки он угадает, что делет код?

У рандомного человека и на проводки с квадратиками точно такая же реакция будет. Тебя эти 99% просят им что-то дать почитать? Думаю, у них другие дела есть.

А вот если говорить про тех, кто реально хочет программировать — им всё равно что-то надо будет учить. Либо текст, либо проводки. И если они выучат текст, они программировать будут в несколько раз быстрее. Угадай, что они выберут, если выбор будет честным (т.е. если о цене выбора их предупредить заранее)?

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

Я правильно понимаю, что «СУВТ» – это суть generic с кучей ограничений? А «мультитиповой тип» – template? Очень странные названия.

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

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

Вот тут, кстати, интересный момент. Я начал писать программки когда мне было лет 7 сам, причём первые несколько месяцев ничего не читал, а у меня была чья-то программка на QB и я её менял и смотрел что получается, так и начал понимать как это работает.

Потом папа мне давал задачки, типа уравнений там, сортировок и прочая и я их решал (мне всё ещё было 7 лет). Конечно, мне он тогда и книжку подсунул.

Замечу, английского я не знал, но ни разу тогда у меня с этим проблем не возникло. И с текстом проблем не было. Как так-то, @metaprog?

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

Настоящая структура или ненастоящая — вопрос терминологии. Если под настоящей понимать структуру в Си, где в скомпилированном варианте не остаётся ни имён полей, ни их размеров и смещений, то итерироваться не то чтобы бессмысленно, этого сделать просто нельзя. Недостаточно данных.

Но итерироваться иногда хочется, хотя бы для сериализации-десериализации. В том же питоне, если хочется к полями получать доступ через точку — a.abcd, а не работать постоянно как со словарём — a['abcd'], сериализация в JSON штатным модулем json не работает. Но можно итерироваться по полям через a.__dict__ и так сделать свою сериализацию.

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

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

Сомневаюсь в истинности данного утверждения.

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

Я правильно понимаю, что «СУВТ» – это суть generic с кучей ограничений? А «мультитиповой тип» – template? Очень странные названия.

Я не знаю как назыаются аналоги СУВТ на текстовых ЯП, если они вообще существуют.

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

Перефразируй, не понимаю о чем речь.

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

Тебе Лабвью не попалось на глаза. Так-то, может, ты б за меня уже и Метапрог сделал:)

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

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

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

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

Да я уже и прототип выложил под GPL.

Это шлак. От того, что ты его называешь «прототипом», ситуация не улучшается

А ты его запускал?

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

Сейчас никто не мешает тебе создавать программы и прочий контент и распространять их бесплатно

Я и создаю Метапрог, и прототип уже выкладываю бесплатно, версия за версией.

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

Сомневаюсь в истинности данного утверждения.

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

На текстовом ЯП это цикл в пару строчек. Он и набираться будет быстрее и выглядеть компактнее.

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

На Лабвью факториал тоже накидывается недолго, если знать что накидывать. На Метапроге - подольше, но это всего лишь прототип.

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