LINUX.ORG.RU

Метапрог-прототип 43: начало переделки «на самом себе»

 , , , ,


2

4

Скачать:

https://mega.nz/file/fUhEjbCI#1LbpnccSm_SkwJi5Bugwc679tFxj7YJzCTOQxmxHvq0

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

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

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

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

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

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

Предыдущая тема:

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



Последнее исправление: metaprog (всего исправлений: 2)

Ответ на: комментарий от token_polyak

В первых темах даже четкое задание было.

Потом пасипака «хения» с погонялом «котечка», начал придумывать юникод/неюникод, массив/немассив и другую херь

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

За три года никто так и не сказал, что означает «перевернуть строку».

Гм.
Так?

˙»ʎʞоdɯɔ qɯʎнdǝʚǝdǝu« ɯǝɐҺɐнεо оɯҺ ,vɐεɐʞɔ ǝн и ʞɐɯ оɯʞин ɐɓоɹ иdɯ ɐε
anonymous
()
Ответ на: комментарий от MOPKOBKA

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

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

перекомпилячивать для каждой новой строки.

Это пять! Это точно прорыв в технологиях! Революция в программировании! Уже готов печать на этом самом метапроге.

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

Ввод из консоли, вывод в консоль. Для char и char32_t строк.

Репозиторий «тесты», диаграмма «переворот строки u32»

MOPKOBKA ★★★★
()
Последнее исправление: MOPKOBKA (всего исправлений: 2)

@metaprog, ты своему подпевале хотя бы платишь, или он клованит вместо тебя на добровольных началах?

А вообще, движок лора отлично уловил суть разработки дупапрога: https://i.imgur.com/USxudU1.png

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

Lua на микроконтроллерах уже давным-давно используют

annulen ★★★★★
()

Это чо вообще? Какая-то поделка на LabView? Что вообще весь этот поток сознания значит?

anonymous
()

Че творится то!!!

Несколько лет назад:

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

Сейчас:

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

Несколько лет назад:

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

Сейчас:

Кстати, насчет управления памятью…

Неужто ТС начал учиться?! Поздравляю от всего сердца!!!

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

Тише, тише горячие эстонские парни - ТС неск. лет назад квадратное уравнение решить не смог а тут Фурье… может с тех пор чего поменялось конечно?

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

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

Сейчас ТС хотя бы признал что проблема есть, уже прогресс. Изобрел сборку мусора на основе подсчета ссылок и обозвал ее по своему. Дальше, когда он ее сделает, получится че то аццки неэффективное вроде питона ранних версий - тока у питона GC умеет кольцевые ссылки разрешать… Лет через пять ТС и с кольцевыми ссылками справится.

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

Обсуждали - в том плане что ТСу говорили что это серьезная проблема

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

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

В большинстве реализаций VBA тоже подсчёт ссылок.

VBA - супер удобная работа с COM объектами.
Windows очень плотно использует COM.
Иначе не будет функционировать OLE.
Вообще то COM, DCOM медленные /оверхед ЗАШКАЛИВАЕТ/ …

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

VBA - супер удобная работа с COM объектами

Вообще то пост был о VB, но VBA его младший брат …

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

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

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

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

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

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

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

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

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

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

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

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

А если впендюрить такую сборку на все переменные (то что собирается сделать ТС) то это будет второй питон по скорости.

PS Я и без этой сборки мусора обгонял поделие ТС-а на питоне;-)

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

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

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

Просто поделие ТС`а - убогая скриптуха %)

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

И просадка питона и пр. зависит от задачи - где то он не отстает

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

PS Я и без этой сборки мусора обгонял поделие ТС-а на питоне;-)

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

Графическая скриптуха она скриптуха и есть, со всеми недостатками. Но теоретически из графического представления можно выжать некоторые достоинства вроде низкого порога входа. Пока, правда, порог входа еще выше, чем в Брейнфак, редактируемый в vim’е, но вот как раз тут есть куда развиваться.

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

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

Проблема в том, что взялся за поднятие штанги весом 500 кг., а сам еще и 50 кг. с трудом поднимает.
Это не значит, что он глупый.
Просто не принято прыгать через пять ступеней.
Да и вообще, то сначала ведется разработка core, а затем на основании его предметная часть.
В постах ТС о core ничего не говорится …

На ходу придумываются СКВ, КВН, СКВТ, СКВНТ, …
Это говорит о том, что у проекта нет core и скорее всего архитектуры …

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

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

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

Ну и еще до кучи сам подход графический ущербный, это да.

Не раз говорил ТС, что графический язык должен быть почти ИИ.
То бишь core проекта должно уметь, то что не умеют 100000 нубов.
Почему так?
Да потому, что нуб лишь сможет сформулировать свою «хотелку», а вот core должна нубу не копошиться в 500000 классов и 10000000 миллионах методов.
Это очень трудозатратно /см. Java, Net, …/.
Но как ТС разработает такую систему если он НЕ УМЕЕТ.

Это не значит, что он не сможет, а означает, что

Удобней в дом заходить через дверь, а не печной дымоход на крыше ...
anonymous
()
Ответ на: комментарий от AntonI

С тз теории у метапрога есть одна фатальная родовая травма.

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

Это говорит о том, что у проекта нет core и скорее всего архитектуры …

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

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

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

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

Это все так, но это связано с аффтором. А я говорю о концепции. Дело в том, что на таких графах стрелочками обозначают данные, а узлы это операции над данными. И это не случайно.

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

Дело в том, что на таких графах стрелочками обозначают данные, а узлы это операции над данными. И это не случайно.

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

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

COKPOWEHEU
()

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

— Лор, вот у меня почему-то раны вокруг рта…
— Так ты ж ешь с ножа. Ложку попробуй.
— Ложкофаг закукарекал. Ложкой мне неудобно.
— Тогда йодом помажь, лалка.

— Лор, а почему я суп так медленно ем? И мне очень неудобно.
— Потому что ты ножом суп ешь? Ложкой ешь.
— Ложкофаги не нужны! Бамп! Еще варианты? Бамп!
— Ну отхлебни из тарелки тогда.

— Лор, почему на меня в ресторане так странно поглядывают?
— Потому что ты с ножа ешь!
— Каждый раз одно и то же, что за дебильные регистранты. А другого объяснения нет?
— Может и есть, но это не важно. Важно есть твердое вилкой, а жидкое ложкой.
— Кажется, я совсем не понимаю мира и не гожусь для этой жизни.
— Да все с тобой нормально, просто возьми ложку, когда принесут суп.
- ПРОСТО! аххахахах! ПРОСТО! Идите в жопу.
liksys ★★★★
()
Ответ на: комментарий от COKPOWEHEU

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

Сейчас ТС выучил слово сериализация, два года на это ушло. Через пару лет он может выучит слова функциональный/императивный и поймет почему данные на стрелочках живут… А там и до вменяемой концепции лет 10 останется.

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

А там и до вменяемой концепции лет 10 останется.

Без труда не вытащищь Метапрог из ГОВНА ...
anonymous
()
Ответ на: комментарий от alysnix

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

К версии 86 автор до трёхмерных схем догадается.

apt_install_lrzsz ★★★
()

@metaprog, давай Java на Метапрог «переделай» …

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

понял, что эта поделка для неосиляторов

это поделка ОТ неосиляторов.

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

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

По крайней мере ни один из осиляторов за все эти треды не осилил.

тынипанимаешь! у них слишком узкий взгляд. А метапрог – он ширее! Он дальше всех текстов! Он вне просранства и времени! Именно поэтому 3 года всего прошло и всего 1 кривенький проект. метапрог это из будущего. Из далекого!

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

я бы все жесказал, что от неосиляторов для неосиляторов

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

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

скорее всего у неосиляторов появится желание этим пользоваться

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

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

посылание всех в жопу и так далее.

Ну так это фирменный стиль … /не матом же?/

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

За кадром драматическая музыка.

Имперский марш, надеюсь?..

hobbit ★★★★★
()

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

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

Продолжим …

И вот туземец приехал и окончил МГУ.
Шо дальше?

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