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

Здрасьтеприехали, а кто многочисленные виндосборочки клепают?

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

Ретрограды самодостаточны.

Вон под Windows 98 даже дрова сами пилят.

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

А подобие паттерн-матчинга на этих ваших СУВТ можно сварганить? Какое-нибудь банальное.

<0 => -x
0..2 => 0
>2 => x-2

Это уже будет близко к системе типов, за которую топят Их Святейшество.

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

Да нормальная система, ток утилиты из папки sdktools собрать, и можно пользоваться.

actools    dc         hextract       netjoin      regini        tz
addsect    debuggers  hivepp         netperm      regsvr32      tztool
adduser    delnode    hotfixmanager  nmake        remote        uixport
alias      delrp      hotpatch       ntrelhash    rescan        undel
apimon     depends    hsplit         nvram        restools      units
appcompat  devmap     ia64           objdir       rm            upd
appparse   diff       iasinfdb       opprec       roshare       updrn
asn1       dirs       idlemon        order        sclist        uwdump
autosafe   diskperf   ini            pageheap     sdv           vdmperf
avrf       dload      ioverify       paranoia     secedit       verifier
bin2c      dosdev     job            parcomp      seterror      vi
bootstat   drivemap   kbdtool        passprop     setlink       vmmreg32
buggy      du         kerntwk        pcmcmd       setuplog      vmtests
build      dumpclip   kverify        pcopy        sfp           walk
buildnum   dumppo     link16         pdh          spt           wc
bvtsigvf   ech        links          perfmtr      srvname       wcache
cabs       echotime   list           perftool     strings       wcshdr
cacls      efinvram   listmung       pfmon        structo       where
cat        emptydirs  loc            ploc         suck          who
cddump     ethstat    logerr         pnpinit      supporttools  windiff
checkrel   exctrlst   ls             ppr          symlink       winobj
checksym   exp        m4             pretty       sync          wperf
chksum     extag      mapmsg         proccon      sysparse      ws
chmode     fcom       mapsym         procmon      systrack      ws2hdr
clearmem   filever    masm           profile      tags          wsremote
cmdevent   frespace   mc             profiler     tail          wst
cmdline    fsdump     memavail       project.mk   takeown       xerox
compdir    ftc        memsnap        psapi        tc            yapt
consume    generr     mep            pstat        tee           ync
copyfapi   genlvl     mkmsg          pview        thunk32       zoomin
cp         gensrv     mkupdate       pviewer      timer         ztools
cpuid      gflags     mrc            ramdiskctrl  timtp         zwapi
crash      gutils     mtdir          rc           tlist
ctlcode    hd         mtscript       rcdll        touch
custcon    hdivide    mttf           rcdump       trace
dbmon      he         munge          regcopy      trans
dbwin32    head       mv             regdiff      tsen
«cc» конечно не хватает, хотя make в принципе есть, им же система и собирается.

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

функцию

Не-е, это уже не статическая типизация будет ;)

Не видать вам одобрения Святейшества.

mertvoprog
()

В стандартной библиотеке добавлено меню «параллелизм» … стала частью официальной стандартной библиотеки.

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

А сами в то же время наглотались зубного порошку. Евпочя.

liksys ★★★★
()

Кстати, разработка программ узлами и проводками — это не рекорд экзотики:

80-летний японец известен на весь мир своими изумительными рисунками. Он создает их… в Microsoft Excel

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

Примерно так может лабвьюшный свич (Case Structure).

При желании, конечно, можно сделать и такие правила для СУВТ или свича и транслировать в один-два if, но разве это должно быть частью системы типов, а не задаваться алгоритмически? Хотелось бы об этом пообщаться с царем.

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

Уже успешно собирают, я погуглил пару минут о сборке, но видео удаленны итд, майкрософт не дремлет, короче не нашел.

Там программ много, и слито тоже многое, единого Makefile не завезли для сборки прям всего.

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

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

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

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

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

Именно так.

Хотелось бы об этом пообщаться с царем

Ну так дуйте к Святейшеству в бложик.

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

но видео удаленны итд, майкрософт не дремлет, короче не нашел

Во копирастические черти! А ведь с опенсорсом-то как заигрывать начали в последние коды, гейхаб купили...

Разве нет ничего на хакерских форумах или еще где? Хотелось бы обзорчик почитать. Ведь, черт возьми, я даже не мечтал о том что исходники лучшей винды так быстро выложат! С нетерпением жду сборок, не уступающих десятке по возможности запуска современного софта на современном железе.

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

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

Пример: gcc - опенсорс, вайн - опенсорс, Линукс - тоже опенсорс.

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

Понятненько, мда?

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

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

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

Ведь, черт возьми, я даже не мечтал о том что исходники лучшей винды так быстро выложат!

Не выложат, а сольют. Если бы сам MS опубликовал и указал лицензию — это было бы «выложат».

лучшей винды

Win2000 лучше :)

С нетерпением жду сборок

Иди пилить ReactOS. Из него можно делать сборки совершенно легально.

А «сборки» из утекших исходников… Ты посмотри, посмотри, как их будут выкладывать, потом прибивать, потом опять выкладывать, потом опять прибивать.

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

Несложный вопрос: можешь мне показать, где я могу скачать сборку Opera Presto из утекших несколько лет назад исходников? (@mertvoprog и другие — просьба не подсказывать).

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

Иди пилить ReactOS. Из него можно делать сборки совершенно легально.

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

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

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

Зато, если понравится, можно будет исследовать вопрос запуска Лабвью под реактосью вместо XP, Котечка вроде как даже пробовал.

// Хм, чего это вдруг у меня лоркод вместо маркдауна вернулся...

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

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

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

почему без этого нельзя собрать нативный метапрог сам на себе?

С таким подходом и на брейнфаке можно.

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

Win2000 лучше :)

Там темочек с битмапами нету.

Иди пилить ReactOS

Она же не на визуальном ЯП!

где я могу скачать сборку Opera Presto из утекших несколько лет назад исходников?

А смысл распространять билды, повторяющие официальный, причём не последней минорной версии? Вот патченые имеет смысл ;)

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

Там темочек с битмапами нету.

Ага, а ещё там нет огороженной активации и убогих писалки дисков и видеоредактора, которые даже близко не стояли с популярными на тот момент отдельными аналогами. Одни достоинства, куда ни глянь.

Вот патченые имеет смысл

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

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

Всё лень как то. На это надо пару тройку дней убить что-бы все темы прошерстить, ряд сделать весёлый, скринов наделать кучу,смонтировать всё это. Тогда я за 30 минут чисто по приколу сляпал. Пока параллельно фильм смотрел(слушал)

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

огороженной активации

Её и в корпоративных сборках XP нету.

писалки дисков

А это вообще должно быть максимально прозрачно на уровне ФС, в идеале. Написали файлов в RAM-кэш — сбросили (прожгли). Без вот этих отдельных виджетов в прожигалках.

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

Это какими? Платными всякими? Мы вот в мувимейкере аж два видоса сделали минимум :P

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

Да, видел.

Что посоветуешь? Мне надо на одном видосе название конторы, емейлы, и телефон замылить. Просто с видеоредакторами дела не имел, только программы для записи видео с экрана.

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

Попробуй kdenlive. Я быстро освоился.

Плюсую. Мануалы читать не пришлось:)

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

Не выложат, а сольют. Если бы сам MS опубликовал и указал лицензию — это было бы «выложат».

А «сборки» из утекших исходников… Ты посмотри, посмотри, как их будут выкладывать, потом прибивать, потом опять выкладывать, потом опять прибивать.

Шо так шо так исходники в открытом доступе. Другое дело, что в пораженных копиразмом странах Запада репрессивный аппарат активно борется со свободой слова, да еще и другим странам навязывает это бред. Киселевы с Соловьевыми любят рассказывать какие они «антизападные», но копирастическое законодательство в РФ действует и защищает многомилилардные прибыли заокеанских жлобов. Могли бы отменить копирайт в виде ответа на санкции - но почему-то не делают этого. Сплошная ложь и лицемерие.

Win2000 лучше :)

Исходники винды 2000 вроде тоже там есть.

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

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

Несложный вопрос: можешь мне показать, где я могу скачать сборку Opera Presto из утекших несколько лет назад исходников?

Не знаю, не интересовался. Но верю, что цензура работает вовсю. Особенно в самых свободных и самых демократических странах. Лабвью на линукс довелось качать аж из тоталитарного Ирана.

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

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

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

Иди пилить ReactOS. Из него можно делать сборки совершенно легально.

Форки ХР, кстати, тоже можно будет делать на Метапроге. Это даже интереснее будет, чем форки открытого почти 30 лет линукса:)

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

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

Увидим ли мы до тепловой смерти Вселенной что-нибудь кроме текущего будильника на метапроге?

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

Ты изобрел перегрузку и один из аспектов ООП в зачаточном виде, поздравляю :)

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

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

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

Слитый != открытый

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

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

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

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

В джаве реализация в конкретном типе или классе. То есть автор определяет реализацию только своего элемента. И абсолютно не трогает все ранее реализованное. А в метапроге реализация в одном месте насколько я понял, что логически приводит к тому, что за ее расширением следить должен кто то один. Что естественным образом ограничивает совместную разработку например

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

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

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

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

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

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

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

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

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