LINUX.ORG.RU

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

 , ,


1

3

Наконец-то настало время для первой прикладной программы на Метапроге - будильника. Чтобы правильно его собрать, нужна последняя версия прототипа Метапрога. Архив включает в себя исходные диагарммы на LabVIEW и скомпилированные exe, которые можно запустить под Wine на линуксе, читайте инструкции из архива с названием вашего языка. Скачать:

https://www24.zippyshare.com/v/xEn1RKAG/file.html

Основная причина выпуска 6 версии - исправление бага с жесткими последовательностями, ведущими к началу цикла. Это исправление вряд ли окончательное, но для трансляции диагарммы будильника сойдет. Если после транслятора из 5 версии прототипа Метапрога сообщение о времени будильника выводилось в цикле каждый раз, то тут - только один раз, в самом начале:

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

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

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

Сишная трансляция диаграммы будильника (не забудьте sound.wav!):

https://pastebin.com/YAd4J1SN

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

Переворот массива

Наконец-то удалось первернуть массив из байтов. Для этого пришлось повозиться с диаграммами транслятора-кодогенератора. В 6 версии прототипа Метапрога эта диагармма уже корректно не оттранслируется, планирую выпуск 7 версии, но надо еще поработать над массивами.

Диагармма с подробными комментариями, думаю, что все тут должно быть понятно:

https://postimg.cc/RJMKXyTB

Если все же что-то неясно - не стесняйтесь спрашивать. Полученный код:

https://pastebin.com/UsY0TZvc

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

Метапрог-прототип, версия 5



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

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

Вам бы следовало быть осторожее в суждниях. Подозреваю, что там все равно останется от половины до четверти кода со всякого рода PyObject. А в трансляциях Метапрога нечего выкидывать, кроме разве что лишних неиспользуемых инклюдов и аргументов команды компилятора для линкинга библиотек (которые можно фильтровать автоматически, но мне лень вополщать это на данном этапе). «Лишние» переменные компилятор по-любому оптимизирует, особенно с -O3.

но тем не менее останется все равно лучше того, что наваяли вы.

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

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

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

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

Да собственно никаких, вы делаете какой-то «наивняк» который худо-бедно будет работать в определенных условиях, на более-менее производительном железе и при этом достаточно медленно чем крупнее будет проект

Ну это про питон, джаваскрипт (node, electron, говнофреймвроки) и прочие модные нынче приколы, на фоне которых даже джава кажется идеалом производительности (черт побери, сносно идет даже под ХР с 512 мб ОЗУ и слабым одноядерным проциком, хоть и тормознутое убожество в сравнении с Си). А с чего бы Метапрог был таким тормознутым? Я полагаю, что даже в нынешнем виде метапроговские трансляции будут по производительности сравнимы с рукописным Си. Лишние переменные оптимизируются компилятором, СУВТ и массивы собраны из сишных структур и юнионов, в остальном «под капотом» обычный Си без лишних оверхедных примочек.

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

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

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

Вот вы из таких? Тут привели пример с трансляцией питона - ждем подробного сравнения получаемых бинарников. А как с глобальными переменными в сишных трансляциях Метапрога, о которых вы заявляли? Вот тот самый будильник из заголовка темы https://pastebin.com/UsY0TZvc назовите хоть одну глобальную переменную в этом коде.

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

Что не знаю - могу спросить на ЛОРе и у Котечки.

а любую оправданную критику скипаете под предлогом «своего пути»

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

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

Все зависит от адекватности собеседника. Скажем, hobbit может подтвердить, что за все Метапрог-темы (а он тут с первой) я его ни разу никуда не послал, хотя он далеко не во всем со мной согласен и больше даже скептик. А на троллинг и хамство я могу ответить тем же, только и всего

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

Я ни разу не писал, что у меня Лабвью якобы «пиратка». Предпочту сохранить интригу - по крайней мере, до серьезной реформы законодательства в области «авторских прав».

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

А в трансляциях Метапрога нечего выкидывать

Ага, это ровно тот случай, когда туда надо много чего добавить.

Будет смешно, если «наивный» транслятор, сделанный «неучем», уделает «профессиональный» питон.

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

Ведь кто как не профессионалы делают нынешний говнософт

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

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

Твои обычные претензии к питону ровно из той же оперы. Куча макак пишет на ней кривой код, потому что питон прост в освоении. Страшно представить, каким будет софт мета-макак.

Я это объясняю исключительно копирастическими причинами. Копирастия и конские цены на лицензии - главное, что сдерживает распространение Лабвью как среды программирования общего назначения.

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

Первый догмат - что программировать в графике удобнее, и пофигу на мировой опыт и то, что твои собственные примеры этот догмат опровергают. Надо просто верить.

Второй догмат - сказка про копирастов из NI и их недалекость. Тут все еще проще: абсолютно все компании, создававшие простые средства разработки, распространяли их как инструменты общего назначения. Так было с Sun и жавой, так было с M$ и C#. NI - это люди, которые занимаются научными приборами. Я думаю, что они явно будут поумнее тебя. Заметь, это копирасты, которые гонятся за деньгами. Уже имея готовый лабвью, им ничего не стоило бы начать продвигать его, как среду общего назначения, но они понимают, что он пригоден лишь для описания конфигурации оборудования. Будь это не так, NI, как копирасты, уже давно бы начали педалировать его, как упомянутые Sun и M$ свои поделия.

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

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

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

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

А с чего бы Метапрог был таким тормознутым?

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

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

Вы как обычно глубоко заблуждаетесь.

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

Что не знаю - могу спросить на ЛОРе и у Котечки.

Что бы проигнорировать все содержательные ответы? Так Вы после этого как не знали так и будете не знать.

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

Нет, не можете.

Скажем, @hobbit может подтвердить, что за все Метапрог-темы (а он тут с первой) я его ни разу никуда не послал

Он же может подтвердить что Вы ни разу не прислушались ни к одному критическому замечанию и что Вы всегда голословно отвергаете/игнорируете аргументы оппонентов.

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

Моей второй (и последней) программой общего назначения был как раз будильник на билдере (плюсовая обёртка для Дельфи). Делал в подарок жене. Времени заняло полдня без помощи Лора (его тогда ещё не было), получилось гораздо лучше чем у метапрога. Так что увы, даже тут метапрог не айс…:-(

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

Когда мы были молодые
И чушь прекрасную несли
Фонтаны били голубые
И розы красные росли…

Я тогда только учил билдер.

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

у тебя украденный лабвью

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

А в трансляциях Метапрога нечего выкидывать

Ага, это ровно тот случай, когда туда надо много чего добавить.

Я вот все чухаю бинарник, выплюнутый шлангом - 494,8 кб. Комментирую лишние инклюды, убираю лишние опции линкера - не уменьшается. Видимо, все и так предельно оптимизировано компилятором. Чего же тут не хватает для полного счастья? Тысячи PyObject?

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

Черт побери, это ж просто чудесно! Трансляции метапроговских диаграмм получается куда более простыми и без лишней шелухи будут работать куда шустрее. Зачем все эти объекты и абстракции, тем более в выхлопе транслятора? Чтобы загрузить многоядерные процессоры и забить гигабайты ОЗУ? Производители железа потирают ручки под звон кассовых аппаратов.

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

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

Говнософт появился исключительно потому, что бизнесу понадобилась дешевая и массовая рабочая сила. Он ее получил с помощью простых языков вроде JS

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

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

То, что я не профессиональный матанщик, не означает, что Метапрог несовместим с матаном и прочей наукой. И в графике алгоритмы куда очевиднее, чем в теоретическом описании. Например, квиксорт мне было легче всего понять именно в Лабвью.

Твои обычные претензии к питону ровно из той же оперы. Куча макак пишет на ней кривой код, потому что питон прост в освоении. Страшно представить, каким будет софт мета-макак.

Боюсь им придется освоить систему типов и указатели. Иначе придется, скажем, запретить им изменять внутренности блоков, оперирующих указателями, оставив только клепать софт из высокоуровневых блоков.

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

Пруфы можно скачать по ссылке в заголовке темы.

Первый догмат - что программировать в графике удобнее, и пофигу на мировой опыт и то, что твои собственные примеры этот догмат опровергают. Надо просто верить.

Мой личный опыт говорит мне о том, что программировать в графике не только можно, но еще и чертовски удобно.

Заметь, это копирасты, которые гонятся за деньгами. Уже имея готовый лабвью, им ничего не стоило бы начать продвигать его, как среду общего назначения, но они понимают, что он пригоден лишь для описания конфигурации оборудования. Будь это не так, NI, как копирасты, уже давно бы начали педалировать его, как упомянутые Sun и M$ свои поделия.

Скорее всего, они считают Лабвью фирменной фичей своих железок, и раскидав ее по всему свету они потеряют конкурентное преимущество перед другими производителями железок. Ты же не учитываешь эту гипотезу и догматически считаешь действия копирастов критерием истины, даже не зная что у них в голове за тараканы. При этом есть куча других примеров весьма странного поведения копирастов - например, OS/2, похеренная IBM.

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

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

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

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

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

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

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

С СУВТ - из всех возможных решений Вы выбрали самое тормознутое и самое жрущее память.

Почему?

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

Как это утверждение стыкуется с сущестованием прототипа Метапрога с онлайн-функционалом (чат+система контроля версий), сделанного на Лабвью?

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

Вы как обычно глубоко заблуждаетесь.

Откуда такая уверенность? Вы провели тесты и бенчмарки?

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

функционалом

Прекрати уже применять этот термин не по назначению. Функан ты точно не учил) То, что ты подразумеваешь, называется «функциональность», а не «функц онал».

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

Что бы проигнорировать все содержательные ответы? Так Вы после этого как не знали так и будете не знать.

Я уже узнал что такое колбеки/асинхронность и многие другие понятия, о которых даже не слышал до ЛОРа. И, самое главное, получил кучу подсказок и помощи. Жаль, что не от тебя.

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

Нет, не можете.

Могу. Стоило только тому же liksys оставить хамство - дискуссия перешла в культуное русло. Я-то уже и в игнор его подумывал вписать...

Он же может подтвердить что Вы ни разу не прислушались ни к одному критическому замечанию и что Вы всегда голословно отвергаете/игнорируете аргументы оппонентов.

И выдвигаю свои в ответ.

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

Ну так у тя целое делфи было, а мне-то еще блоки для гуя наваять в Метапроге...

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

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

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

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

Да, бывают ситуации,когда вариантные типы нужны (для чего всякие Variant и QVariant и делают), но это исключение, а не правило. И если программист с самого начала ими обмазывается — он что-то сделал не так.

Поверь, это грабли, по которым прошёл даже не полк, а целая армия программистов. Лично я этим переболел году так где-то в 1998.

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

(обольстительным голосом) А libxml2 и если угодно, QtXml уже давным-давно написаны и отлажены.

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

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

То, что я не профессиональный матанщик,

Весь ЛОР помнит что Вы не владеете элементарной математикой даже в рамках средней школы

не означает, что Метапрог несовместим с матаном и прочей наукой.

То что метапрог непригоден для «матана и прочей науки» я могу ответственно заявить как «профессиональный матанщик» (стаж овер 20 лет).

И в графике алгоритмы куда очевиднее, чем в теоретическом описании.

Крупными блоками - да. С детализацией пригодной для кодогенерации - очевидно нет.

Например, квиксорт мне было легче всего понять именно в Лабвью.

Не нужно проецировать свои особенности восприятия на весь мир. Любой выпускник ИТ специальности с «засранными мозгами» знает несколько текстовых ЯП (абсолютно недостижимый для Вас уровень) и способен писать актуальный софт (то на что Вы физически неспособны).

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

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

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

Кто сказал «Web-разработка»? :)))

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

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

Кстати, ты не тыкал Julia? Я вот попробовал и мне показалось весьма удобно для всяких ЧМов.

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

Это классика

Я ни разу не писал, что у меня Лабвью якобы «пиратка».

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

И вообще кому какое до этого дело?))

Во-первых, я у неё никакого горшка не брала.

Во-вторых, когда я его брала, он уже был разбит.

В третьих, я вернула его целым!

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

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

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

Почему?

Потому что:

  1. эффективный аналог СУВТ делается по другому (через банальный полиморфизм)

  2. проверки условий сильно просаживают производительность (читайте про конвееризацию вычислений)

  3. в Вашем случае никакие СУВТ вообще не нужны, это костыль при помощи которого Вы пытаетесь поправить косяк в архитектуре.

Как это утверждение стыкуется с сущестованием прототипа Метапрога с онлайн-функционалом (чат+система контроля версий), сделанного на Лабвью?

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

Откуда такая уверенность? Вы провели тесты и бенчмарки?

Я вопросами создания эффективных кодов занимаюсь дцать лет. Что бы понять что Ваше решение унылое г-но не надо его пробовать на вкус.

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

Не, хотя вроде кто то из студентов че то на нем приносил…

Мы пишем на связке Python/C++ (или CUDA), биндинг через SWIG. Дешево, сердито, заводится почти везде, там где не заводится отказываемся от питона (оставляем только скриптоту) - но это бывает редко и для больших проектов.

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

Могу. Стоило только тому же liksys оставить хамство - дискуссия перешла в культуное русло.

Не можете. Например про СУВТ Вам только ленивый тут не написал - но Вы по прежнему стоите на своем. Про скорость ввода в графике аналогично - Вам все пофик.

И выдвигаю свои в ответ.

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

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

Причём тут это почему-то не «система учёта вычислительной техники». :)

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

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

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

Это анекдот. Мы год упихивали в 16 байт 5 вещественных и одно целое число, что бы оно проходило по тчоности. Сейчас надо будет довесить еще одно вещественное и это будет уже 20 байт - беда-беда-огорчение, выравнивание тудыть, память упс и т.д.

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

ТС, нате - уже сил не смотреть на Ваши страдания. Ваши СУВТ делаются вот так:

struct AbstractType{
   virtual ~AbstractType() = 0;
   // тут прототипы интерфейсов
};

template <typename T> struct RealType: public AbstractType{
   T data;
   // тут реализация интерфейсов, можно юзать RTTI
};

Хотя Вам это один фиг не нужно/не поможет.

Еще немного и ТС сделает питон, но со жгутиками…

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

Шутка хорошая - ситуация страшная... :)

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

abcq ★★
()
Ответ на: Это классика от hobbit

Про горшок хорошо ввернули, приорал немношк, поддерживаете градус веселья этих тредов :)

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

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

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

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

Беда ТС-а в том что он напрочь отвергает уже наработанные абстракции (типа это замусоривание мозгов) и пытается делать свои аналоги…

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

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

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

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

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

Я думаю, автор даже и не подозревает, что он это делает.

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

я тут видел такое объяснение уж не помню от кого, что якобы «мета» это по-украински - цель. Так что это цельпрог.

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

Я, если честно, сам не могу дать внятного определения. Для меня метапрограммирование ассоциируется со всякими boost.msm и прочим александреску-стайл мозголомством.

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

Для меня метапрограммирование - это написание кода которые генерит другой код. В том или ином виде.

Мы такие вещи обычно делаем на питоне, это удобно.

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

Я такое писал на перле. Генератор автотестов для антивирусного движка Касперского.

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

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

Конечно, на С можно это все делать. Более того, есть готовые либы, которые неплохо это делают (Glib). Но судя по всему метапрог не знает крестов (и не хочет знать) и не слышал про Glib, вот и приходится обмазываться велосипедами с треугольными колёсами.

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

Это че то как то сложно звучит…;-)

У меня давно есть питоний модуль в котором перегружены все мат. операции и функции. В итоге довольно произвольное выражение на питоне сам питон разбирает в AST а потом его можно конвертнуть еще куда то - обычно целевыми форматами является gnuplot или LaTeX (для построения графиков).

Когда то пытался (аналогично) сделать фреймворк для моделирования куда только вводишь схему а он генерит готовый код плюсовый код - но по ряду причин не взлетело.

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

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

Вам бы следовало быть осторожее в суждниях. Подозреваю, что там все равно останется от половины до четверти кода со всякого рода PyObject. А в трансляциях Метапрога нечего выкидывать, кроме разве что лишних неиспользуемых инклюдов и аргументов команды компилятора для линкинга библиотек (которые можно фильтровать автоматически, но мне лень вополщать это на данном этапе). «Лишние» переменные компилятор по-любому оптимизирует, особенно с -O3.

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

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

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

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

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

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

Вы все же решили блистать невежеством

Пока что этим занимаются антиметапрогеры.

зря вы даете Метапрогу ложные надежды своей клоунадой

Зря ты пытаешься меня очернить.

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

Я помогаю своими знаниями.

По поводу глобальности, они там есть это раз

Бегом побежал показывать Ты что издеваешься? Покажи глобальность, укажи строку. Или ты специально меня заигнорил в духе liksys что бы не отвечать на неудобные вопросы?

но еще и ошибся в выборе языка на котором собрался паразитировать своей прокладкой графической

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

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