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

Как ты начнёшь выявлять утечку? С чего начнёшь дебаг?

Вознесет молитвы свое метлой метапрогоматери Диане, та заглянет в исходники и пофиксит баг.

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

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

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

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

Да уж, а умничать с дивана так все гаразд.

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

Да уж, а умничать с дивана так все гаразд.

Просто указал тебе на очевидную проблему, и подсказал пути решения.

Не нужно много системных окон. Делай интерфейс аля Блендер. Вот так: http://dexp.in/nuklear-webdemo/

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

Потуги антиметапрогеров смешны.

А потуги необучаемых дворников унылы.

Дорогие коллеги (@DELIRIUM, @hobbit, @cluge, @saibogo, @abcq, @liksys, @ossa, @Unicode4all - сорри если кого забыл)!

Поскольку повторять ТСу мантру о том, что он очевидно некомпетентен оценивать МIТ/питон/скриптовые языки (и далее по списку) становится несколько утомительно, я предлагаю ввести аббревиатуру ПНДУ (Потуги Необучаемых Дворников Унылы). С телефона удобнее набирать, да и в метапроговских тредах такая аббревиатура увы гораздо актуальнее чем СУВТ.

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

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

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

Напомните, кого надо кастовать, чтоб на metaprog.org появилась новая цитата?

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

К тебе с твоим ЧСВ я могу примеить только аббривеатуру ПНХ.


Я на Лабвью прекрасно делаю огромные проекты.

Мне лень гуглить. Я прекрасно программирую на Лабвью и Метапроге, не зная что такое «консистенция».

Императивный, декларативный, функциональный. Lingua Latina non penis canina. Да-да, я прекрасно программирую на Лабвью, не зная значения всех этих заумных словес.

– Полиграф Полиграфович…
– Кто такой?
– Так звали литературного героя которой вылитый Вы.
– Макулатуру не читаю.

– Вы успешно притащили в свое поделие одну из самых больших проблем С - ручную сборку мусора.
– Разве это проблема?

Мне нужно чтобы на мои вопросы отвечали прямо. Никаких посыланий к гуглу, книгам и прочего подобного бреда.

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

Большая часть айти-«образования» - не более чем фабрика макак.


Раздутое ЧСВ говорит он…

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

@hobbit знает, но мне не нравится оформление - я бы их списком дал.

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

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

На самом деле зависит от задачи и исполнения, но при прочих равных очевидно что будет так.

Я знаю что он плюсами не брезгует. С++ таки лучший из ООПнутых ЯП, но лучше будет все же Метапрог, прямо транслирующийся в Си.

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

То же самое делает почти любой нынешний ЯП.

Намекаете на ллвм, ну проект для этого и создан чтобы быть универсальной основой для языкостроителей, буст для тех кто не хочет возиться (для умненьких, кто понимает что +- любой язык на уровне ллвм выглядит также, и лучше там уже вряд ли что-то сделаешь) в своем очередном «не таком как все» язычке, с самого нуля. Всегда улыбало мнение людей которые считают использование ллвм каким-то нонсенсом на уровне воровства. Алло, его для этого и сделали.

Я ни разу не скрывал, что использую готовые компиляторы Си, в чем проблема?

Эта ваша реплика еще раз доказывает что вы читаете что вам пишут, но сути не понимаете(или намеренно не хотите понимать). Используйте что хотите, только делайте это скромнее, вы и ваш проект пока уж простите, ноль без палочки, но вы продолжаете себя и свой проект отождествлять и и сравнивать в готовыми профессиональными продуктами которые лучше во всем и к тем корифеям ИТ которые их создали. Скромнее надо быть, коль за душой ни гроша. И только не начинайте сейчас опять свою рекламную компанию (сеанс психотерапии) о том как вам удобно «в графике», или о том что у вас все поверх С и поэтому будет очень быстро, вы к этой быстроте не имеете никакого отношения, когда напишите свой компилятор уровня этой быстроты тогда и будете иметь право этим бахвалиться.

Ну не текстовая форма представления и что?

Снова подтверждение того, что вы не понимаете(не хотите понимать) что вам пишут, хоть и читать вроде умеете. Прямо народный фольклор, я вам про Фому, вы мне про Ерёму. Слышите только то что хотите, отвечаете только на то, на что удобно и то Ерёма постоянно какой-то выходит.

А знаете что самое смешное, на наш с вами век может быть еще принципов заложенных в веке прошлом + кремния и хватит, но вот следующий век скорее всего уже будет использовать во всю какие-нибудь квантовые компьютеры, в которых ваша «фундаментальная» сишка будет разве что в роли пасынка болтаться для поддержки старой периферии (и это касается любого современного языка под текущую архитектуру), там совсем другие языки и принципы, так что все мы с вами окажемся на задворках истории скорее всего, главное ласты склеить раньше этого светлого времени :)

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

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

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

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

потому что для того чтобы это понять нужно читать документацию по библиотеке, а мы же знаем что ТС этого делать не станет ССЗБ в чистом виде.

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

ну это может через пол года год заходите.

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

У меня Exception thrown, see JavaScript console. Фаерфокс из последнего тор браузера.

JavaScript блочится, полагаю.

Все работает: https://imgur.com/a/yR2nnEy

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

Опасные речи вы завели, это примой путь к клейму «Антиметапрогера» кайтесь, кайтесь!

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

Да это бесполезная трата времени, на С же все равно быстрее, ТС не важно применимость, нужность, или адекватная оценка. Ему важно а) Что быстрее, хоть он не имеет к этой быстроте никакого отношения как и его поделка. б) Метапрог и Лабвью удобнее всего, хоть любому человеку очевидно что возить мышкой по экрану медленней и мучительнее чем просто набрать текст. Главное теперь ТС не показать какой-нибудь хаскель, где этот тестовый прогон вообще пишется в одну строку.

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

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

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

Ох лол. Вообще-то, О-нотация - это не по сравнение двух языков, а про сравнение алгоритмов. А ещё есть CPU- и IO-bound задачи, где в первом случае питон справляется не слишком хорошо, зато второй вообще отлично. Я ведь тебе уже это рассказывал. Детский сад, дорогой мой человечек - это когда ты выбираешь язык по одной лишь производительности. В этом случае любая твоя затея будет обречена на порвал :)

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

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

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

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

О-нотация

Это жосский матан. Ты ему ещё про инварианты расскажи. Это все придумали враги, чтоб нормальные посоны программы не могли писатьрисовать

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

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

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

может тогда до тс дойдет

Я Вами восхищаюсь (всерьез, без всякого сарказма) - какой же Вы все таки позитивный, верящий в людей человек!!!

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

Может кстати и нет, м.б. все что дальше будет наворочено поверх нынешней архитектуры.

Математика же не отказалась ни от Евклида, ни от Ньютона с лейбницем

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

Чорт, и правда - какой сюжет для современного театра!!! Драматурги есть?

Метапрог и Диана. Комедия в двух действиях. Нет повести печальнее на свете…

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

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

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

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

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

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

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

ну да я почитывал немного научпопа на эту тему, я просто к тому что ведь наука она такая, всегда кажется что вроде все, уперлись … а потом оказывается что нет :)

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

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

Честно говоря, я хз что это такое и с чем его едят.

Ты разве не встречался с ассоциативными контейнерами? Это такие словари, в которых к элементам обращаются по ключу. Это к вопросу о красно-чёрных деревьях, поскольку такие коллекции чаще всего основаны на них (например, std::map).

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

Ты разве не встречался с ассоциативными контейнерами?

"– Наука ещё не знает способов обращать зверей в людей. Вот я попробовал да только неудачно, как видите. Поговорил и начал обращаться в первобытное состояние. Атавизм.

– Неприличными словами не выражаться, – вдруг гаркнул пёс с кресла и встал.

Чёрный человек внезапно побледнел, уронил портфель и стал падать на бок милицейский подхватил его сбоку, а Фёдор сзади."

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

Помните историю с энигмой, антиэнигмой в виде bombe и аланом тьюрингом, так что не факт что третья мировая наоборот не даст скачок науке :)

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

Да, но эта третья мировая будет последней.

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

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

Почему? В Rust используется: B-tree

В Java используется AVL дерево…

В С++ да, там красно-черное

В .NET вообще сразу оба дерева реализовали:

В C# Dictionary класс реализован на красно-черном дереве

В F# Map реализован на AVL. Конечно, можно и в F# использовать класс Dictionary и в C# Map из F#.

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

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

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

Но в случае метапрога ему 100% нужно реализовывать AVL дерево:

Его же изобрели два советских человека: один из Самары, другой из Харькова

https://ru.wikipedia.org/wiki/%D0%90%D0%92%D0%9B-%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D0%BE

Не то что эти B-Tree и RB-Tree:

https://ru.wikipedia.org/wiki/B-%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D0%BE

https://ru.wikipedia.org/wiki/%D0%9A%D1%80%D0%B0%D1%81%D0%BD%D0%BE-%D1%87%D1%91%D1%80%D0%BD%D0%BE%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D0%BE

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

Ты разве не встречался с ассоциативными контейнерами?

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

Это к вопросу о красно-чёрных деревьях, поскольку такие коллекции чаще всего основаны на них (например, std::map).

Это из С++? Я на нем не писал (если не считать ардуин). Деревья - это то, что должно ускорить поиск? Но как? Было б хорошо, если б ты помог мне все это реализовать в Метапроге, сам я не думаю, что смогу этим заняться в ближайшее время.

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

Намек на то что метапрог отвергает все что хоть как-то связано с западной культурой и наукой? )

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

Это к вопросу о красно-чёрных деревьях, поскольку такие коллекции чаще всего основаны на них (например, std::map).

Это из С++? Я на нем не писал (если не считать ардуин). Деревья - это то, что должно ускорить поиск? Но как?

Еще одна цитатка подъехала, сегодня прям как их рога изобилия сыплются.

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

ООП всего лишь подход, как он выглядит в С вы уже имели счастье лицезреть когда не осилили глибу и гтк

Не «не осилил», а сознательно отбросил. Я не обязан использовать то, что мне не нравится. В том числе ООПнутые костыли и необходимость ручками прописывать всякие там CSS - на десктопе, черт возьми, даже не в вебе! Если б я это тащил - пришлось бы делать и кучу костылей, которые я и делал с макросами, пока не бросил гтк.

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

От нуля слышу.

вы к этой быстроте не имеете никакого отношения

Мне что важно? Производительность! И она сравнима с сишной благодаря прямой трансляции диаграмм Метапрога в Си и использованию сишной системы типов.

когда напишите свой компилятор

Зачем? Пока что и готовых хватает.

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

Думаешь и тогда все будут кодить в тексте? По мне так будет развитие визуального программирования до виртуальной реальности и нейроинтерфейсов.

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

В с++ есть ещё unordered_map котрый хешмап.

А в расте есть Dictionary, котрый тоже хешмап.

ossa ★★
()
Последнее исправление: ossa (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.