LINUX.ORG.RU

Метапрог-прототип, версия 11 + бенчмарк

 , ,


1

3

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

Метапрог-прототип 13 + LOR Browser

Скачать (читать файл с названием своего языка из архива!):

https://www111.zippyshare.com/v/Nq5mH4Sa/file.html

Версия 11 содержит оптимизации транслятора и исправления в Метапрог онлайн. В остальном различий с описанием 10 версии нет.

Версия 10 содержит несколько хотфиксов для транслятора диаграмм и онлайн-функционала. В остальном различий в сравнении с описанием 9 версии нет.

Версия 9 содержит хотфикс: в 8 версии были проблемы со скачиванием проектов через Метапрог онлайн. В остальном различий в сравнении с описанием 8 версии нет.

В текущей версии прототипа наконец-то исправлены проблемы с отображением справки в скомпилированном ехе (рекомендую изучить справочную систему) и реализованы условные схождения. Это означает, что на нем можно делать уже по-настоящему сложную логику. Например, бенчмарк, предложенный в прошлых темах. Другие уже сделали множество реализаций на разных текстовых языках программирования, я сделал реализацию на Лабвью - а теперь это возможно и на Метапроге. Исходная задача на бенчмарк: Метапрог-прототип, версия 6 + будильник на Метапроге (комментарий)

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

https://www32.zippyshare.com/v/JlUIhEAn/file.html или https://drive.google.com/file/d/1lu1RVqqXEVGgZbviCfwrxFMhdDgvo6LT/view

Доступ к Метапрог-диаграммам можно получить через Метапрог онлайн (репозиторий «бенчмарк ЛОР»), открыть - в прототипе Метапрога.

Каждый бенчмарк проходит 10 повторений, во время каждого выводится 4 числа:

Номер повторения (0-9).

Время (миллисекунды) генерации 100000 строк длиной 100 байт и подсчета их хешей.

Время (миллисекунды) генерации 1000 строк по 20 байт и подсчета их хешей.

Время (миллисекунды) поиска вхождний по хешам.

В случае каждого нахождения вхождения в консоль/stdout выводятся подстрока и строка.

В тестах в случае совпадения хешей в консоль/stdout выводится строка «мяу». Кстати, совпадения хешей случаются даже с 20-символьными подстроками, хотя самих вхождений нет (идет дополнительная проверка).

Условное схождение присутствует, например, в функции генерации случайной английской буквы (A-Z_a-z.bmp, между условием и «+»). После слияния веток с данными (или жесткими последовательностями выполнения) от противоположных условий дальнейшие блоки выполняются в обеих случаях.

Есть разные функции генерации случайного числа, и они совершенно разные по скорости. Если использовать randombytes_uniform из библиотеки libsodium - генерация случайных строк работает в сотни раз медленнее, чем rand. Но функция randombytes_uniform из специальной криптографической библиотеки дает «по-настоящему» случайные числа, в отличие от строк из псевдослучайных чисел (rand), которые повторяются даже между разными запусками программы. Есть тесты, использующие разные функции для случайного числа при генерации 100000 строк по 100 байт. Генерация 1000 строк по 20 байт погоды не делает, тут во всех тестах randombytes_uniform. Уверен, что rand сократило б время генерации 1000 строк по 20 байт до нуля миллисекунд.

Подсчет хешей функцией nk_murmur_hash во всех случаях занимает ничтожную часть времени.

Также для тестирования на достоверность и корректность работы программы есть тесты с подстроками по 5 и 3 байта вместо 20. По ним видно, что бенчмарк работает корректно.

В Метапрог-диагармме подфункции/поддиагарммы могут быть представлены в виде ссылок на файлы (серо-зеленая дискетка при наведении мышью) или же быть частично или полностью отвязанными от файла на диске и полностью находиться в теле файла диагарммы (в таком случае цвет дискетки зависит от наличия и соответствия файлу на диске - путь к нему все же хранится в кластере/структуре диаграммы). Иногда это удобно, чтобы, например, сделать локальный форк подфункции. Например, чтобы использовать rand вместо randombytes_uniform, достаточно было форкнуть диаграмму основного бенчмарка и сделать отвязку от файлов на диске цепочки поддиаграмм, отвечающих за формирование массива случайных строк вплоть до функции генерации псевдослучайного числа. В итоге получились локальные форки функций без необходимости сохранять их в новые файлы. Подобным образом можно управлять и типами, такими как структура/выбор (struct/union), структура условного выбора типа (СУВТ, прямых аналогов в Си нет), пронумерованный список (enum) итд.

Бонус: будильник с проверкой введенных значений (сишная трансляция в файле alarm.c в архиве с бенчмарком, Метапрог-диагарммы в Метапрог онлайн, проект «будильник»).

Из недоделанного: схождения по переключателю (switch) корректно работают только в случае схождения всех без исключения случаев, в том числе «інше»/«другое» (default).

Также заметно, что диагарммы бенчмарков «оплелись» в области поиска подстрок. В прототипе Метапрога работать не очень удобно: есть ограничение на размер окна (если еще увеличить - будут слишком большие задержки отрисовки) и не только, переместить блок входа в цикл по условию (do... while), когда он стал перекрывать вход в типованный цикл (for) было уже довольно сложно (надо переподключать проводки и жесткие последовательности), решил оставить все как есть - все равно работает. В Метапроге «сам на себе», когда он появится, подобных неудобств быть не должно.

В планах: циклы по структурам, переключатели (switch) по многотиповому типу, возможно макросы.

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



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

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

Вы это прекратите! У Нас вот сонерик совершенно не переносит 29 февраля, показывает кракозябры и только после перезагрузки дата слетает в ноль. А айфоны одно время и вовсе окирпичивались, если установить время чуть раньше начала эпохи UNIX. А будильник на Метапроге на фоне этого совершенно безобиден, просто падает в корку… Как видите, такое качество уже на голову выше того, что предлагает современная индустрия. А ведь это только начало и год разработки! Вы представляете, в какого монстра инженерного гения превратится этот будильник, скажем, ещё через год? Нет? А Мы и представить себе боимся!

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

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

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

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

Во времена СССР, кстати, были электрические будильники с тем же недостатком: если ночью пропадёт электропитание, часы отстают на время перебоя или вообще сбрасываются, а если электричества не будет к утру… беда-беда.

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

Ну pngquant вполне на такое способен, почему бы и нет. Хотите испортить медиафайл — спросите Нас, как; имеется большой опыт, последняя разработка вот — генератор SÉCAM-помех на Rust. Пока в зачаточном состоянии, зато в ходе экспериментов обнаружен любопытный способ порчи видео путём перегона в raw, чтения в неправильном разрешении, сжатия lossy-кодеком и повторения обратного процесса.

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

Когда Мы только начинали пользоваться GitHub — Мы тоже понятия не имели, как работает git, и пользовались официальным клиентом GitHub для Windows. Смысла версионирования правок не понимали, тупо клали каждым коммитом новую версию с новым именем + изменения в чейнджлоге. Полюбуйтесь на это безобразие

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

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

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

Ну это вообщем очевидно.

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

->[масив]-----------------------------+    [масотр]--+
  [101  ]-+ [розпар]--+----->[пародн] +--->[мас]  ]  |
  [     ]==>[    [i]         [    [i]-|-+->[i]    ]  |
          +>[N]    ]       +>[N]    ] | |            +>[-]-+     [масклад]==+
          |                |          | +-----------+->[ ] | +-->[мас]   ]  ‖
          |                |          +-------------|------|-+ +>[i]     ]  +=>[паркінч]
          +--------->[-]---+----+     |             |      +---|>[знач]  ]  ‖
                [1]->[ ]        |     |             +----------+            ‖
                                |     +----------------------+   [масклад]==+
                                |     |    [масотр]-+        +-->[мас]   ]
                                |     +--->[мас]  ] +->[+]-+  +->[i]     ]
                                +--+------>[i]    ]  +>[ ] +--|->[знач]  ]
                                   +-----------------+--------+

// Какие гады убрали из кода горизонтальную прокрутку? Ничего не напоминает? Ах да — обычные барьеры! А уж с жёсткими последовательностями — прекрасная замена мьютексам получается! Локи, шмоки — это всё туфта, просто собираетесь в одном месте и ждёте.

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

Ваше письмо доктору с подчерком вс1 более не разборчивым.

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

Как это продвигать как универсальную среду программировани так и осталось загадкой.

Никак. Целью создания Метапрога и является устранение фатального недостатка LabVIEW.

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

в том сгенерированном коде даже носом не ткнешь в проблему

И не нужно. C-шный код не для того генерируется, чтобы его вообще пытались читать и изучать, это просто прослойка. С таким же успехом можно сетовать, что .obj-файлы ковырять тяжело. Мы не особо понимаем, зачем вообще @metaprog пытается его кому-то показывать и тем более выкладывать. Неосиляторы развернуть прототип не представляют ценности для проекта, нечего метать перед ними бисер.

Причем тут метапрог, использующий его в качестве бекенда?

Его заслуга в использовании именно сишной прослойки, которая даёт высокую производительность (а не какой-нибудь Java, как в MyOpenLab, или, чего хуже, JavaScript, как в МЕРТВОПРОГ). И это вполне себе оправдано, поскольку компилятору, несмотря на концептуальную оторванность Метапрога от C, и дичайший понос на выходе транслятора, удаётся генерировать вполне достойный по производительности код. При этом в отличие от всяких костылей типа Cython, для получения высокопроизводительного кода не требуется каких-то ограничений языка, поскольку язык изначально проектируется для генерирования низкоуровневого высокопроизводительного кода.

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

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

g++

Да ёшкин же дрын, сто раз им говорили, что Метапрог поддерживает только clang, но мыши продолжают жрать кактус и поражаться: «а как это», «как такое может быть», «а что они там такого наворотили?» Сразу видно, кто практическим программированием занимается, а кто языком только чешет.

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

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

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

Там в посте на который он отвечает вообще вопрос был про бенчмарк fsb4000. Он прекрасно собирается g++. Дурку опять ТС включает(ну или mertvoprog, кому уж как удобно).

мне удалось скомпилять чудо-будильник

Счастливый ты человек. А я вот так и помру неосилятором.

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

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

На условиях - через if, на свичах - пока все через жопу, работать будут только со схождением ВСЕХ кейсов. Для схождения не от всех кейсов надо таки вкручивать goto наверное...

Вы, @metaprog, вот что: не валяли бы дурака, а заложили бы в Ваш… как бы это сказать — язык? хотя языком его назвать язык не поворачивается… в общем, заложили бы параллелизм

Я уже долго ломаю голову над тем как бы повыгоднее его реализовать. Pthreads? C11 threads? SDL threads? Асинхронщина? И чтоб еще не создавало издержек в случаях, когда параллелизм отжирает больше, чем дает. Кстати, в Лабвью параллелизм есть из коробки и очень удобно.

Мы заметили, что у Вас уже используется libuv.h — вот неплохо бы на его основе, так сказать, и сделать

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

Блок параллельного расхождения, блок параллельного схождения, блок параллельного расхождения на n одинаковых потоков — вот и базовые основы параллелизма, а наложить это на диаграммы… красота же получится!

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

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

У Нас прототип Метапрога дичайше тормозит

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

Да и Метапрог Онлайн процессор нагружает порядочно

Это когда со старта сгружает с сервера и отрисовывает картинки проектов, так-то в режиме ожидания сидит тихо и проц не жрет.

не говоря уж о полной неюзабельности интерфейса (сам чатик ещё куда ни шло).

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

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

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

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

Ваши условные схождения

Патент!

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

a)Будильник на сервере? Ну допустим. Заработал будильник, встать, включить телефон, зайти в терменал, зайти на сервер по SSH, отключить будильник.

b) Услышать будильник, подойти к рабочему пк, включить монитор, отключить будильник. Отключить колонки, включить наушники обратно, продолжать насиловать джека каждый день.

Мммм, действительно инновационные открытия в удобстве!

Никак. Целью создания Метапрога и является устранение фатального недостатка LabVIEW.

Закрытость? Платность? Metaprogу это не помешало пользоваться лабвью, спиратил и всё.
Если автора не остановило, то как можно говорить о фатальности?

Его заслуга в использовании именно сишной прослойки, которая даёт высокую производительность

По тестам это не так.

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

Ложь. Автор сам не знает как, будет реализовывать те или иные фичи, о каком проектировании идёт речь?

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

ограничений языка

Концепция визуального программирования в стиле лабвью и есть главное ограничение.

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

Лично я задонатил на будильник 100500 биткоинов. Правда он у меня сегфолтится.

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

bmp не искажает изображение

PNG, внезапно, тоже.

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

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

…И эти слова скастовали в тему мертвопрога!

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

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

А не надо делать исходники, которые потом приходится распиливать. Я уже ТСу объяснял, что его стремление засунуть всё в функцию main() приводит к тому, что становится невозможным ловить ошибки valgrind-ом, да и вообще приводит к нечитаемости кода.

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

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

Блин я честно не хотел :), треша в теме прибавилось конечно.

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

Да ёшкин же дрын, сто раз им говорили, что Метапрог поддерживает только clang

Ты решил Котечкой поработать? Это очень плохой подход, если ТС так и уйдёт в этом направлении.

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

Его заслуга в использовании именно сишной прослойки, которая даёт высокую производительность

Его производительность втрое ниже чем у питона и в 40 раз ниже чем у плюсов. Про расход памяти я не говорю… Дело не в ЯП бекэнда а в расположении рук того кто этим ЯП пользуется. Ваш К.О.

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

Ну повезло, фигли. А у кого-то флеш-плагин на новых ведроидах заводится, и что? Флеш от этого стаёт поддерживать новые ведроиды, или что?

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

На условиях - через if

Мда… а не запутается ли транслятор, если замкнуть несколько схождений не вложенно, а «верёвочкой»?

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

Вот это на ранней стадии разработки вредно. Про pre-mature optimization знаете? Сначала сделайте как-нибудь, а потом можно просто сменить бэкенд. Сишка ведь тоже не идеальна и не единственная, и надо будет соскочить с неё на LLVM/WA. Главное — абстрагироваться от конкретной библиотеки параллелизации, чтобы без проблем переехать на другую.

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

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

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

Реализация каждой новой плюшки для прототипа может серьезно сбить скорость работы

Оу, ну тогда понятно, почему «сам на себе» — первоочерёдная задача.

Это ты просто не врубился еще

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

Пока шо мне проще консультировать в чатике, чем писать документацию

Ну это вот весьма зря, книги и индексируемые поисковиками форумы придумали, как Вы думаете, для чего? — что передавать одни и те же знания не каждому по отдельности, а сразу многим людям.

Хотя справочная система есть

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

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

Ну это явно ближе к SVN, чем к Git. Особенно с учётом централизованности.

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

Патент!

Ваши копирастические баззворды have no power here.

Будильник на сервере? Ну допустим

Почему «на сервере»? Опять поражённые виндузом головного мозга люди делят универсальные ЭВМ на какие-то эфемерные классы?

включить монитор

Про DPMS не слышали? Тоже в 90-х застряли? Нет активности — экран сам гаснет, начинаете ввод — зажигается.

Отключить колонки, включить наушники обратно

Нищеброд с одной звуковой картой? Можно преспокойно воткнуть для будильника отдельную и вывести на неё только будильник.

насиловать джека

https://0x0.st/imvq.3GP

Закрытость? Платность?

Ограниченная пригодность для программирования.

По тестам это не так

Тесты показывают, что Метапрог производительнее скриптухи.

Автор сам не знает как, будет реализовывать те или иные фичи

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

да он просто пальцем в небо тыкает

В этом смысл и предназначение Метапрога: сделать программирование доступным для тех, кто не шарит, а просто хочет что-то сделать методом тыка. Примерно как сочинять музыку, не зная нот. Как видите, это вполне прижилось, достаточно по всяким soundcloud да promodj пошариться — почему в программировании до сих пор иначе?

Концепция визуального программирования в стиле лабвью и есть главное ограничение

Перечень ограничений в студию. Пока что Мы видим, что оно наборот — от ограничений избавляет. Например, от необходимости давать переменным имена и разделять их по скоупам. Модульность делать можно, но не нужно. В полутрекере-полуDAW SunVox, например, эта концепция вполне живёт и здравствует, там есть набор встроенных модулей и с недавних пор поддерживаются метамодули, которые можно насобирать из других модулей, назначить входы и выходы, и обмениваться файлами метамодулей. Причём они платформонезависимые, в отличие от VSTi и прочего дерьма, и денег за них, как правило, не дерут.

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

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

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

это становится невозможным ловить ошибки valgrind-ом

Это проблемы Valgrind’а. И они Нам уже порядочно мешали, когда Мы пытались им что-то анализировать.

да и вообще приводит к нечитаемости кода

Так и не надо его читать. C-шный выхлоп — для компилятора, а не для людей.

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

Ты решил Котечкой поработать?

Нам прискорбно видеть, как глумятся над юродивыми. Посему кто ещё защитит юродивых, как не юродивые? ШУЕ ППШ ШПШ, вот это всё.

Это очень плохой подход

Почему плохой? GCC — старпёрский кал, там легаси уже дохрена и он при компиляции вдвое больше памяти жрёт, чем шланг. Инструменты для анализа кода у шланга уже на голову выше, да и кроссплатформенность там получше (на выньдузе вон менее чужеродный, чем GCC). GCC как раз из-за завязанных на нём проектов и стоит только использовать в наше время, ну и из-за лицензионного фанатизма (GPL FTW).

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

втрое ниже чем у питона

Пруф. Питонобенчмарк тоже 10 раз повторяется?

Про расход памяти я не говорю…

А если чистку памяти добавить? Протекающий кал тоже можно на любом языке написать, знаете ли. У Метапрога, видимо, просто тачка мощная, поэтому 2 ГБ памяти как-то не особо волнуют — те же мотивы у разработчиков Electron-говна.

а в расположении рук того кто этим ЯП пользуется. Ваш К.О.

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

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

Ваши копирастические баззворды have no power here.

Целуй пятки Ленина, иначе глупо возмущаться что в пустыне жарко и много песка. Так что мой павер бейзет он лоджик, анд воркинг эвреВЭРЭ.

Почему «на сервере»? Опять поражённые виндузом головного мозга люди делят универсальные ЭВМ на какие-то эфемерные классы?

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

ЭВМ на какие-то эфемерные классы?

То есть будильник метапрога одинаково хороша работает на моей стиральной машинке, фото рамке и электронной книге?

Про DPMS не слышали? Тоже в 90-х застряли? Нет активности — экран сам гаснет, начинаете ввод — зажигается.

Предлагаю осилить причинно-следственную связь. Будильник метапрога не выполняет ввод, монитор был выключен, ты проснулся уже с выключенным монитором (DPMS детка), после чего тебе нужно либо на клавиатуру жмакать, либо по монитору.

https://0x0.st/imvq.3GP

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

Ограниченная пригодность для программирования.

Примеры?

Тесты показывают, что Метапрог производительнее скриптухи.

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

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

То есть метапрог это просто наёмный пёс, а за кулисами мертвопрог?

В этом смысл и предназначение Метапрога: сделать программирование доступным для тех, кто не шарит, а просто хочет что-то сделать методом тыка. Примерно как сочинять музыку, не зная нот. Как видите, это вполне прижилось, достаточно по всяким soundcloud да promodj пошариться — почему в программировании до сих пор иначе?

Потому что программирование это не музыка? А почему в матане всего 10 чисел и я не могу пальцем в небо тыкая выбирать нужные при ответе на уравнения?

Перечень ограничений в студию.

Например, от необходимости давать переменным имена

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

Тем более присваивать данным имена это преимущество.

Модульность делать можно, но не нужно. В полутрекере-полуDAW SunVox, например, эта концепция вполне живёт и здравствует, там есть набор встроенных модулей и с недавних пор поддерживаются метамодули, которые можно насобирать из других модулей, назначить входы и выходы, и обмениваться файлами метамодулей. Причём они платформонезависимые, в отличие от VSTi и прочего дерьма, и денег за них, как правило, не дерут.

Маргинальщина похлеще лабвью.

Перечень ограничений в студию.

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

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

И по сути это неизбежно, подходы и догмы текстовых ЯП основаны на вполне конкретных задачах, которые эти парадигмы должны решать.

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

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

А если чистку памяти добавить?

Ну так чего твой гуру не добавил?

Протекающий кал тоже можно на любом языке написать, знаете ли.

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

У Метапрога, видимо, просто тачка мощная, поэтому 2 ГБ памяти как-то не особо волнуют — те же мотивы у разработчиков Electron-говна.

Метапрог = Electron говно, говно = Electron, Метапрог =?

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

Пруф. Питонобенчмарк тоже 10 раз повторяется?

одна итерация питона 1.2 сек, итерация метапрога 3.8. Пару страниц назад в этом же треде это активно обсуждали, @provaton тестил все реализации.

Метапрог-прототип, версия 11 + бенчмарк (комментарий)

Протекающий кал тоже можно на любом языке написать

Можно, беда в том что метапрог ничего кроме такого г-на пока не написал.

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

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

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

а не запутается ли транслятор, если замкнуть несколько схождений не вложенно, а «верёвочкой»?

Собери и покажи соответствующую схемку, тогда скажу.

Вот это на ранней стадии разработки вредно. Про pre-mature optimization знаете?

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

Сишка ведь тоже не идеальна и не единственная, и надо будет соскочить с неё на LLVM/WA

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

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

Или сделать обобщенные функции, которые смогут работать с несколькими библиотеками, выбираемыми по макросу (макросов кстати еще нет).

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

Совершенно верно. На то будущее, когда будет «сам на себе».

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

Да тут не во врубании дело, сама концепция интерфейса неудобная, привет из 90-х какой-то

Как-то так. Тебе не доводилось пользоваться виндой 98 и интернет експлорером 6? Мне доводилось))

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

Это то, шо можно наговнякать на Лабвью, особо не заморачиваясь. Я вообще даже не думал изначально выпускать лабвьюшный прототип, но «сам на себе» не получилось по срокам и пришлосьтаки выпустить его. И не зря: Котечка на нем уже сделал кое-что интересное.

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

Котечка тоже так считает, и у меня нет причин не соласиться с этим. Но то уже когда будет «на самом себе».

Ну это вот весьма зря, книги и индексируемые поисковиками форумы придумали, как Вы думаете, для чего? — что передавать одни и те же знания не каждому по отдельности, а сразу многим людям.

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

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

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

Metaprog: выпуск прототипа (универсальная графическая среда программирования)

Начинается с «Описание конструктора диаграмм (часть справочной системы, лучше читать смотря на Метапрог)».

И, кстати, есть отдельная справка и по каждому (ну почти) виду блоков, кликать на красный вопросик, появляющийся при наведении на блок.

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

Целуй пятки Ленина

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

очевидное разнообразие

Как разнообразие мешает универсальности?

У сервера как правило нет монитора

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

То есть будильник метапрога одинаково хороша работает на моей стиральной машинке, фото рамке и электронной книге?

Если осилите собрать на них будильник и портировать нужные библиотеки, то почему бы и нет?

после чего тебе нужно либо на клавиатуру жмакать

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

А когда папа и мама разных цветов, то выглядит не эстетично

Фигасе у Вас бардак в башке. Сначала за диверсити топите, а через пару абзацев против расосмешения.

Примеры?

Да уже ведь описаны @metaprog’ом неоднократно.

стандартный хелло ворлд на паскале

Паскаль, по Нашему мнению, вообще незаслуженно забыт. Он решал многие проблемы C/C++ ещё задолго до того, как появились всякие Go/Rust. Да и сейчас местами за пояс их заткнуть может. Что характерно, над паскалем и паскалистами на этом форуме глумятся чуть ли не больше, чем над метапрогом.

То есть метапрог это просто наёмный пёс, а за кулисами мертвопрог?

На городі бузина, а в Києві Бузина?

Потому что программирование это не музыка?

И что? Видите ли — и то, и другое объединяет то, что в естественном виде ни графикой, ни текстом они не представляются. Музыка — это звуки, а программы — это калейдоскоп электрических зарядов внутри компьютера. Чтобы «увидеть» или «прочесть» их, люди выдумывают всякие извращения.

А почему в матане всего 10 чисел и я не могу пальцем в небо тыкая выбирать нужные при ответе на уравнения?

Любимые @metaprog’ом численные методы так и работают же ;D

самодокументирующейся характеристикой

Угу, мантрам о самодокументируемом коде уже сто лет в обед, а комментарии в коде и документация как нужны были, так и есть. Так может, не надо смешивать сущности — документация отдельно, реализация программы отдельно?

«Вхёд в масыв»

3.2

Маргинальщина похлеще лабвью

Текстовые представления музыки (CSound, SuperCollider и т.п.) — ещё большая маргинальщина. Да и ноты с табами уже в прошлое уходят, ввиду убогости. Почему Вы уверены, что текстовое программирование не ждёт то же самое, когда появится что-то вроде FruityLoops для программирования, доступное для натыкивания мышкой любому деревенскому быдлану? FruityLoops, кстати, очень похож на Метапрог — такой же вырвиглазный тормозной кал с инопланетным интерфейсом, да и прочие DAW недалеко ушли.

Да ровно такие же как у того во что он транслируется,

Отнюдь. Многие проблемы «того во что он транслируется» происходят из того, что оно предоставляет бесчисленные возможности стрелять себе в ногу. Метапрог своими абстракциями типа метапроговских массивов устраняет их. Так что его стоит сравнивать скорее не с C, а с обёртками над C типа Vala и Nim.

ничего нового в самом смысле «визуальности» метапрог не приносит

Как это? Вы впрямь не осознаёте, чем отличается бесконечная беготня по коду с помощью go to reference/go to definition/etc. в попытках отследить потоки данных в нём, или, чего хуже, ковыряться отладчиком, потому что без отладчика вообще ни хрена не понятно — от простой подсветки проводка? Да, это представление всё того же, но кардинально другое. А то так можно прийти к тому, что вообще все языки одинаковые, потому что так или иначе из них получается на выходе одинаковый машинный код.

подходы и догмы текстовых ЯП основаны на вполне конкретных задачах

И массе ограничений, связанных с отображением/вводом текста и его обработкой. Главное — это его линейность. Диаграммы же не линейны, поэтому в них не нужны лютейшие костыли, осложняющие чтение кода, чтобы выйти по условию из 3-го из 5-и по вложенности цикла, или замкнуть почти все выходы из процедуры на обработчик ошибки, а один пустить мимо.

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

Ну так чего твой гуру не добавил?

Энциклопедию профессора Фортрана не читали? :3 Сами виноваты, что мерялись в бенчмарках только временем выполнения — вот и получили решение, которое укладывается в требования, только жрёт дохрена памяти. Напомнило расхожую байку про олимпиадника, у которого программа выполнялась моментально, зато компилировалась несколько часов.

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

Хм, а зачем? У бенчмарков бывают разные цели?

Electron говно

Ну Вы так считаете, и многие другие ЛОРовские старпёры-нищеброды считают, а пипл хавает.

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

И да, как комментатору, мне тоже пофиг, пиратит ли он лабвью. Я не переживаю за доходы NI, как ошибочно полагает ТС. (Да и своей беспрецедентной рекламной кампанией LabVIEW на ЛОРе он уже, наверное, заслужил Enterprise-версию в подарок. :) ) Но вот если бы я собирался поучаствовать в проекте, мне было бы совсем не безразлично, не пойдёт ли мой труд в корзину из-за сомнительного правового статуса означенного проекта.

Смотри, за примерами далеко ходить не надо. Есть Линус Торвальдс, который написал первую версию линукса. На чем он ее писал, когда линукса еще не было? На миниксе. И он пишет в своей книжке, что купил его за где-то 70 баксов. А что если б он об этом не говорил и скромно умалчивал, при этом приговаривая, что нарушение лицензионных соглашений - не воровство? Кстати, он прямо пишет:

     Вообще  говоря,  я  смотрю  на  проблему авторских прав с двух  сторон.
Возьмем  человека,  который  зарабатывает  50 долларов  в  месяц.  Можно  ли
ожидать, что он  заплатит  за программу  250  долларов? Я не считаю,  что он
поступит  аморально, если  нелегально скопирует  программу,  а сэкономленную
сумму, равную своей зарплате за пять месяцев, потратит на  еду. С  моральной
точки зрения это вполне допустимо. И было бы аморально,  да  и просто глупо,
преследовать такого  "нарушителя". Что  касается Linux,  то кому какое дело,
соблюдает ли человек GPL, если он использует программу для собственных нужд?
Вот когда кто-то  собирается на  ней  зарабатывать, игнорируя GPL, --  это я
считаю аморальным, будь то  в США или в Африке. Но  и  тогда  все зависит от
масштабов. Жадность всегда отвратительна.

Допустим, первая версия линукса была бы написана на нелицензионном миниксе. И что, кому какое дело если в итоге линукс не содержит ни строчки кода миникса?

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

Пару страниц назад в этом же треде это активно обсуждали

Ну, Мы туда ещё не дошли ;) Дойдём — посмотрим, а может, и Сами погоняем (если эти ваши бенчмарки тачку не положат).

беда в том что метапрог ничего кроме такого г-на пока не написал.

На Метапроге — возможно, потому как сам Метапрог ещё сырой. А на LabVIEW?

поэтому дилетанты или должны учится или идти мести улицы

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

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

Так они и метут где-то, а в свободное от работы время делают Метапрог. Вспомните @Spoofing ещё.

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

Собери и покажи соответствующую схемку

Да оно зависает раньше, чем там получается что-то сложнее пары элементов собрать ;) Хождение по граблям сплошное. Впрочем, это и по будильнику было видно, ввиду полного отсутствия «защиты от дурака» в нём.

Может Метапрог «сам на себе» можно будет и без нее реализовать

Это безусловно.

Но пока шо сишка хороша простотой испольования готовых библиотек

Библиотеки-то из любого языка можно дёргать. Как, по-Вашему, FFI делаются?

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

Сами виноваты, что мерялись в бенчмарках только временем выполнения

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

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

Мне доводилось))

И что? У Вас синдром утёнка? Мы вот всякими закосами переболели ещё лет 6 назад.

Это то, шо можно наговнякать на Лабвью, особо не заморачиваясь

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

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

Оу, ну ладно :)

кликать на красный вопросик, появляющийся при наведении на блок

Так ведь там и тыкали. На одном типе вылезла справка по всем типам.

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

А на LabVIEW?

на лабвью он написал метапрог который сливает питону в 3 раза и плюсам в 40.

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

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

Также напомним, что программировать можно не только профессионально.

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

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