LINUX.ORG.RU

Метапрог-прототип, версия 7 + графические диалоги на Метапроге

 , ,


0

3

Скачать (перед запуском читайте !Русский.txt или !Українська.txt):

https://www71.zippyshare.com/v/dNcHIgzD/file.html

Новая версия принесла несколько новых фич интерфейса пользователя. Добавлено выделение прямоугольником для вырезания и копирования части диаграммы (в прошлой версии было только копирование и вставка одного блока по щелчку колесом мыши). После копирования куска диаграммы (с проводками с данными и жесткими последовательностями) его можно вставить кликом колесом мыши на пустом месте диаграммы. Есть план реализовать в будущий версиях также создание подфункций из выделенного куска - аналог Create SubVI из LabVIEW (так была сделана немалая часть функций в прототипе Метапрога).

Однако самая интересная фича новой версии - сериализация в base64 координат блока на диаграмме с цепочкой функций. Этому есть как минимум два возможных применения. Можно «ткнуть пальцем» на нужный блок (меню блоки - ткнуть пальцем на блок). Будет сгенерирована строка такого вида:

metaprog_debug:AAAAAAAAAAAAAAAHAAAAAFBUSDAAAAAEAAAAAAAAAAAAAAAAAAAAAwAAAAdNUEwgMi4wAAAAB0xJQ0VOU0UAAAAU4fPk6Ov87ejqIO3gIOfg7+jy4PUAAAAK0+rw4L/t8fzq4AAAABXh8+To6/zt6Oog7eAg5+Dv8O7x4PUAAAAH0PPx8ero6VBUSDEAAAAxcmVsIAAr0LHRg9C00LjQu9GM0L3QuNC6INC90LAg0LfQsNC/0LjRgtCw0YUubXBiZBNiCtNfkRABAAAAAwAAAAdNUEwgMi4wAAAAB0xJQ0VOU0UAAAAT9rPr7vfo8evu4ujpIOSz4Ovu4wAAAArT6vDgv+3x/OrgAAAAFPbl6+736PHr5e3t++kg5Ojg6+7jAAAAB9Dz8fHq6OlQVEgxAAAANXJlbCAAA25rYwAq0YbRltC70L7Rh9C40YHQu9C+0LLQuNC5INC00ZbQsNC70L7Qsy5tcGJkP/rfBI32qgEAAAADAAAAB01QTCAyLjAAAAAHTElDRU5TRQAAABDy5erx8u7i6Okg5LPg6+7jAAAACtPq8OC/7fH86uAAAAAQ8uXq8fLu4vvpIOTo4Ovu4wAAAAfQ8/Hx6ujpUFRIMQAAAC9yZWwgAANua2MAJNGC0LXQutGB0YLQvtCy0LjQuSDQtNGW0LDQu9C+0LMubXBiZFbEp7cIT2gBAAAAAwAAAAdNUEwgMi4wAAAAB0xJQ0VOU0UAAAAV5+Dv8/HqIOKz6u3gIE51a2xlYXIrAAAACtPq8OC/7fH86uAAAAAU5+Dv8/HqIO7q7eAgTnVrbGVhcisAAAAH0PPx8ero6VBUSDAAAAAWAAEAAgNua2MNbmtjIGluaXQubXBiZFQc/+kgVZgBAAAAAwAAAAdNUEwgMi4wAAAAB0xJQ0VOU0UAAAAO+PDo9PIg7fPq6+Xg8CsAAAAK0+rw4L/t8fzq4AAAAA748Oj08iDt8+rr5eDwKwAAAAfQ8/Hx6ujpUFRIMQAAADpyZWwgAANua2MAL9GW0L3RltGG0ZbQsNC70ZbQt9Cw0YbRltGPINC90YPQutC70LXQsNGAKy5tcGJkaxMcpv873AEAAAAAUFRIMAAAAAQAAAAAdcftGC2ZsAE=:metaprog_debug

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

Вместо тысячи слов:

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

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

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

https://postimg.cc/hQVLBcHp

Дебаг-строку выводит оранжевый блок.

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

Для компиляции надо скачать https://sourceforge.net/projects/tinyfiledialogs/

Распаковать в папке с Си-файлом так, чтобы работал соответствующий инклюд.

Код:

https://pastebin.com/5NW30tQx

Введя нужное число, закрываете окошко. После ввода часа и минуты в консоль будет выведено время срабатывания. Теперь будильником можно пользоваться и для повседневных нужд (звук пронзительный, хорошо слышный, sound.wav больше не нужен), однако завершать его работу надо еще через диспетчер задач или Ctrl+C в консоли, когда не идет звук. Также нет проверки введенных чисел, если введете не то число - будильник никогда не сработает.

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

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

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



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

Ещё раз говорю, у тебя под носом есть хороший пример такого языка (Vala), так почему бы не посмотреть, как это там реализовано?

Ты что? Он же текстовой! Да еще ненавидимое ТСом ООП во все поля!

ЗЫ: не в тему, но таки, как ЛОРовцы относятся к языку V? Транслируется в Си, куча контрибьюторов в отличие от метапроги, каждый день куча правок на гитхабе.

ЗЫЫ: ТСу, ты бы таки завел репозитарий на гитхабе/гитлабе для выхлопов метапроги, на пастебине опубликованный код быстро протухает. Плюс, еще бы инструкции для сборки, а лучше Makefile’ы.

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

Сферические Сакральные Знания В Вакууме? Если он все равно питонист, зачем ему вообще что-либо знать о процессоре? Потому что проФФесор? А если все же доводится пользовать непосредственно опкоды процессора и ассемблерные вставки, то как можно делать это без знания ассемблера?

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

Я хотя бы не проФФесор, претендующий на Истину В Последней Инстанции и статус Носителя Сакральных Знаний, как некоторые. Так что имею право кое-что и не знать:)

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

Ну да, все люди делятся на питонистов и ассемблерщиков, других в природе нет:-)

Спасибо за веселое утро.

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

Вообще-то переворот массива байтов уже есть.

Вообще то суть задачи не в простом перевороте (тем более простого массива), а именно в связке всех условий. Так что это не решение, а отмазанька.

А для юникодной лучше найти готовую либу

Я даже не просил перевернуть юникод. Нужно было просто прочитать строку, перевернуть, вывести. прочитать следующую и тд.

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

Так что задачу ты не решил.

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

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

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

Зависит от задачи.

Как сложно устроены эти клятве оопнутые яп, да?

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

Ну тут рыбников ему поможет. Правда у рыбниковской логарифмической шкалы начало отсчёта в нуле, ну кого это смутит…

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

Я, кстати, знаю двух профессоров с физфака МГУ, которые придерживаются теории эфира. Один из них завкаф общей ядерной физики.

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

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

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

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

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

А в МИФИ вообще кафедра теологии и идущий дорогу не асилил:-(

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

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

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

Например пилить метапрог наступая на одни и те же грабли под гомерический хохот Лора.

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

В МИФИ я библиотеку однажды искал, а нашел храм)

Но про кафедру теологии что раз уже обсуждалось, могу тебе лично ещё раз рассказать.

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

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

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

Ваш излюбленный прием, Фома и Ерёма. Вы имеете право на свое мнение по данному вопросу, но это никак не отменяет тот факт что есть люди которые любят учиться и действительно испытывают от этого положительные эмоции. Так то, возможно про условные «догмы» правописания я может быть с вами и соглашусь, что в первую очередь все же важнее именно информационная составляющая, но с другой стороны, если всякий будет коверкать слова так как ему удобно и нравится, есть шанс что мы перестанем понимать друг друга, можете подумать об этом.

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

на сборище попов рассказывали основные моменты использования операции pop в стекоподобных структурах данных, конечно тема благодатная, не грех и занятия отменить :3

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

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

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

Вот в белорусском, насколько я знаю, «как слышу так и пишу» - наверное, самый правильный с этой точки зрения язык.

Ты и здесь ни хрена не знаешь…

Бестолковейший бред…

Это точная оценка твоего поста.

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

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

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

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

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

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

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

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

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

Кстати о С.

Писать кроссплатформенный С это боль. То что хорошо работает под Linux, совсем необязательно будет хорошо работать под Windows.

Я решил закончить тот тест, дописал свои версии многопоточного С и С++, и сравнил все версии.

Скриншоты: https://imgur.com/a/asGTrFc

F#: https://pastebin.com/Rat4qcrL

Rust: https://pastebin.com/1qbymReQ

C++: https://pastebin.com/0Da9SMdy

C: https://pastebin.com/wWX5LLL1

@i-rinat C: Метапрог-прототип, версия 6 + будильник на Метапроге (комментарий)

P.S. если что rand() - thread_safe под Windows:

  1. https://social.msdn.microsoft.com/Forums/vstudio/ru-RU/3263ab0b-da3f-4737-9d80-0788a5b426db/randr-identifier-not-found?forum=vcgeneral

  2. https://www.viva64.com/ru/b/0012/

да и в glibc:

https://github.com/bminor/glibc/blob/master/stdlib/rand.c#L24

https://github.com/bminor/glibc/blob/master/stdlib/random.c#L286

Можешь провести свои тесты…

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

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

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

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

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

тесты-шместы… а подумать? Вариантов значений 20ти символьной строки из строчных латинских букв и цифр

34**20 > 32**20 = 2**100 > 1e90

вероятность встретить такую подстроку в 1e5 строк из 100 символов менее чем 1e-83.

Так что вот самая быстрая реализация из предложенных

$ time for i in $(seq 100); do echo 0 совпадений; done
...
0 совпадений

real	0m0.008s
user	0m0.001s
sys	0m0.008s

ТС, учите матан и переходите на баш! Баш с матаном никакой ассемблер не обгонит!!!111

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

А мне очень нравится то что говорит дьяк Кураев…

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

У меня знакомый лет 10 учился на физфаке, сплошные академы, с трудом защитил диплом на трояк. И ему предложили (!!!!) пойти в аспирантуру на философский факультет…

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

Открываю вики по «программистским» понятиям - и вижу тонны текста ни о чем. Кстати, в школе я по той же причине не любил мову и особенно язык.

А математику любил? Как насчёт погрузиться в FP?

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

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

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

На фоне дерусификации украинского образования это такие мелочи…

Да, деруссификация образования это наверное самый печальный процесс из происходящих на украине. Даже обнищание населения и рост преступности ничто, по сравнению с этим дебилизмом. Украинизация вообще плодит психическое нездоровье с завидной эффективностью. Может ТС тоже жертва? Кто знает…

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

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

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

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

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

я когда данный тест предлагал исходил именно из того, что подстроку будет встретить практически нереально. А значит поиск гарантированно должен пройтись по всем 100 000 строк от и до

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

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

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

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

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

Если бы вероятность была ненулевой (скажем от 10% до 90%), то на большом числе испытаний тест был бы вполне повторяем. Методы Монте-Карло на этом стоят;-)

А так все условия почти гарантированно дают одинаковый результат и даже конвейр не ломается скорее всего. Скучно…

AntonI ★★★★★
()

Реквестую киллер-фичу - квадратик-сервер. Кого сейчас волнуют десктопы и локалхосты?

Метапрог в облака! Распределенный метапрог! Микросервисная архитектура на метапроге! Это будет иметь успех. Жалкий кубернетес, рыдая, закрывает разработку и ссаными тряпками разгоняет девелоперов. Девелоперы массово бегут на метапрог.

Если вы согласитесь на мой проект, то спускаться из города на пристань вы будете по мраморным лестницам! (с)

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

Ну в финском как слышится, так и пишется, так и читается. вот французский да..

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