LINUX.ORG.RU

Метапрог-прототип 34 + СУВТ по логическому типу

 , , ,


0

3

Следующая тема:

Метапрог-прототип 42

Подпишусь в поддержку Столлмана Bitcoin-кошельком из первой темы про Метапрог:

Metaprog Project supports Richard Matthew Stallman. Shame to SJW, Big Tech and Big Media. We need to get rid of them or Big Money will enslave us. It is do or die! Stay straight, RMS!

Подпись:

H/3cqHl7HGdAQd9K/io474IbLYlIKi/8R6pw1Vbpz0oTN4kihI5YO4dIdZo2VRdJbSp8kWmtWgC5TRTs0MkBIAo=

Подробности:

Движение отмены Столлмана (комментарий)

Следующая версия:

www.linux.org.ru/forum/development/16219448

Скачать:

https://mega.nz/file/6VJCEboQ#N3pu86bqI31Jp15aHWt6l-FIkY_RUws0CZK9aMcvxZo

В версии 34 исправлен тот же баг что и в 33, но другим способом, так как багфикс из версии 33 вызывал другие баги.

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

К выпуску версии 32 неожиданно обнаружилось, что СУВТ может иметь переключатель логического типа. То есть, можно задавать типы на значения «да» и «нет». Никаких изменений для этого вносить с 31 версии не пришлось, надо лишь задавать в определении СУВТ типы по значению СУВТ 0 на «нет» и 1 на «да». Из изменений - некоторые исправления багов (например, с кодогенерацией структур и операций над структурами под указателями), а также экспериментальная фича отрисовки канваса через dll-вызов окошка на SDL, за подробностями обращаться к MOPKOBKA или kote4ka в Метапрог онлайн.

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

В версии 30 - исправление бага с сишной трансляцией циклов с регистрами. Теперь их значение берется на сишном уровне не напрямую, а через промежуточную переменную. Это позволило реализовать алгоритм вычисления чисел Фибоначчи, где есть непосредственная передача данных между разными регистрами. Метапрог-схема находится в меню обучение - примеры - Фибоначчи, выглядит она так:

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

Для сравнения - тот же алгоритм на LabVIEW:

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

Сишная трансляция:

https://pastebin.com/Z8rzvZpQ

Сравнение с тем же алгоритмом на «аналоге» Метапрога с бекендом на python говорит само за себя:

Metaprog здорового человека (комментарий)

В версии 29 - крупные изменения системы типов. «Встроенных» типов, вытягиваемых через меню «структуры», больше нет, все они теперь представлены в стандартной библиотеке. В особенности изменения коснулись числовых типов: теперь такие типы как число, дробь, целое, знаковое и беззнаковое представлены как многотиповые из соответствующих типов. Например, беззнаковое - многотиповой из 8, 16, 32, 64 и 128-разрядных беззнаковых, целое - многотиповой из знакового и беззнакового, число - многотиповой из целого и дробного. Теперь такие типы можно обрабатывать как многотиповые, поступая с числами разных типов по-разному.

В версии 28 переключатель (аналог сишного switch) работает с многотиповым типом. Выполнение схемы происходит только на ветке, соответствующей поданному на переключатель типу. Ветвление происходит не в рантайме (как в случае СУВТ), а при кодогенерации - не соответствующие поданному типу ветки не генерируются. Теперь осталось сделать цикл по структуре.

В версии 27 добавлена удобная возможность создать новую подфункцию, не останавливая весь прототип. Кнопка блоки - новая подфункция.

Также обнаружилась (но пока не исправлена) проблема с терминалом счетчика повторений цикла в цикле по условию - пока что не используйте его!

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

В версии 26 исправлена трансляция циклов при определенных условиях (не всегда корректно транслировались циклы с жесткими последовательностями, идущими к входному блоку).

В версии 25 исправлена трансляция сложных рекурсивных структур с СУВТ.

В версии 24 был исправлен баг транслятора, проявившийся в версии 23: на некоторых схемах (например, отправки данных по TCP) код, отвечающий за поток данных, «вливающийся» в ветки с условиями, мог сгенерироваться после кода самого условия.

В версии 23 исправлен еще один баг с упаковкой проектов, а также баг трансляции условных схождений.

В версии 22 исправлен баг с упаковкой проектов, из-за которого не паковались зависимости из локальных форков. При этом удалось существенно ускорить упаковку проектов.

В версии 21 наконец-то добавлена корректная трансляция схем, содержащих рекурсии. Как пример можно привести схемы из репозитория «разработка интерфейса на нуклеар+» (можно скачать через Метапрог онлайн). В этой схеме отрисовка элементов интерфейса основана на СУВТ (структура условного выбра типа). В этой СУВТ возможны такие элементы интерфейса, как текстовый лейбл, текстовое поле, кнопка и (самое интересное) - линия из элементов интерфейса. В последнем случае происходит рекурсивный вызов функции, обрабатывающей массив из тех же СУВТ элементов интерфейса.

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

Метапрог-прототип 19 + API на СУВТ + ускорение трансляции



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

Я же не программиста. Вот сколько по времени у программиста уйдёт на создание прототипа метапрога на текстовом ЯП? С учётом того что можно юзать сторонние либы, скажем на Си? А сколько на каком нибудь питоне, перле и тд?

Я конечно эксперд и мне кажется это где-то месяца 2 с перекурами.

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

Вот сколько по времени у программиста уйдёт на создание прототипа метапрога на текстовом ЯП? С учётом того что можно юзать сторонние либы, скажем на Си? А сколько на каком нибудь питоне, перле и тд?

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

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

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

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

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

Я же не программиста. Вот сколько по времени у программиста уйдёт на создание прототипа метапрога на текстовом ЯП? С учётом того что можно юзать сторонние либы, скажем на Си? А сколько на каком нибудь питоне, перле и тд?

Нисколько. Никто вменяемый аналог прототипа Метапрога так и не сделал. Хотя что-то похожее было у Котечки (Сварог вроде), то у него спроси.

Я конечно эксперд и мне кажется это где-то месяца 2 с перекурами.

Ну так давай, вперед и с песней. Не хочешь осваивать Лабвью - выучи текстовые ЯП и покажи класс.

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

как минимум

Именно про это я и говорил. Сверху ограничения нет, поэтому можно пилить до бесконечности. И никогда не допилить.

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

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

Включая тормоза? Если тормозов не будет, это не считается клоном, потому что поведение другое. Пиксель где-то не там стоит? Тоже не клон. @metaprog всё равно будет придираться до бесконечности.

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

Ну так давай, вперед и с песней. Не хочешь осваивать Лабвью - выучи текстовые ЯП и покажи класс.

Я прост интересуюсь трудоёмкостью твоего прототипа в реализации на текстовом ЯП. Понятное дело что никто в здравом уме не будет делать клон ненужно.

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

Я прост интересуюсь трудоёмкостью твоего прототипа в реализации на текстовом ЯП

По мне так на Эверест проще забраться.

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

Включая тормоза? Если тормозов не будет, это не считается клоном, потому что поведение другое. Пиксель где-то не там стоит? Тоже не клон. @metaprog всё равно будет придираться до бесконечности.

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

Просто всё это нытьё 2 года про то какие тектовые яп говно, по итогу прототип уже тормозит.

Я даже осмелюсь предположить, что прототип с нынешнем функционалом не тормозил бы даже на каком нибудь перле.

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

Включая тормоза?

Нет.

@metaprog всё равно будет придираться до бесконечности.

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

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

По мне так на Эверест проще забраться.

Ну так вот и узнаем, интересно же. Сейчас скажут что твой собиратель будильников это 1 месяц работы, и будет лулз очередной.

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

Ну так вот и узнаем, интересно же. Сейчас скажут что твой собиратель будильников это 1 месяц работы, и будет лулз очередной.

Пускай сделают, а не как хвастун rebforce:)

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

прототип с нынешнем функционалом не тормозил бы даже на каком нибудь перле.

Кривые руки могут сделать тормоза где угодно, даже на перле.

Не. В том то и суть, что запилить тот же функционал, что сейчас, но без тормозов.

На этот вопрос уже ответил Showtime Komputeishon. На простых схемах там вся сцена рисуется 60 раз в секунду. А у метапрога на простых уже всё адово тормозит. И это интерпретируемый питон против компилируемого лабвью.

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

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

Пускай сделают, а не как хвастун rebforce:)

Почему тебе тогда о ядрах ОС можно говорить? Вот сделай сначала ядро ОС на своём убийце текстовых языков, а потом уже и говори. А то только хвастаешься, что можно будет, но так и не сделал. :-)

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

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

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

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

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

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

Время программиста более ценно, чем время пользователей? Почему ради одного программиста пользователи должны страдать?

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

Да Эверест как раз попса, туда кто только не лезут, уже проторено и изучено всё до мельчайших нюансов ;) А ещё трупы как ориентиры используют, и мусор поднимающихся собирать заставляют, потому что нагажено уже шотрындец.

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

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

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

Не, ну вообще даже для сишечки ведь CLR есть. Просто это уже не чистая компилируемость получается. Чистая компилируемость — это когда zero-cost abstractions либо их отсутствие.

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

Если передо мной будет стоять жёсткий выбор — лезть на Эверест или писать аналог Метапрога на текстовом ЯП, я однозначно выберу второе, даже думать не буду. :)

Но пока что на Эверест сиречь Джомолунгму меня никто не гонит…

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

Но пока что на Эверест сиречь Джомолунгму меня никто не гонит…

Сгонял бы, только никто не приглашает.

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