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

А я сделал еще кучу опенсорса фор фан. Который, кстати, в отличие от твоего поделия, не нарушает 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
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.