LINUX.ORG.RU

Metaprog: универсальная графическая среда программирования [в разработке] часть 8

 , ,


1

2

Рейтинг пользователей тем про Метапрог или практический пример применения визульного программирования

Пока Метапрог не готов, продемонстрирую практическое применение LabVIEW. Скачать программу-демонстратор можно тут:

http://e2tilsgo5s44hqmlwb4epwrjnh7ynvsckj2tl5duwdqbxg67chqpelad.onion/file/9b...

Для перехода по ссылке нужен Tor Browser, для просмотра кода примера - LabVIEW начиная с 2013.

На данном графике - количество комментариев самых активных зарегистрированных пользователей в темах про Метапрог на момент 29.06.19 04:47:37

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

Всего две маленькие диаграмки на Лабвью. Для начала надо распарсить сообщения из сохраненных веб-страниц. Да, страницы пришлось сохранять вручную, так как в Лабвью проблемы с HTTPS (и многими другими сторонними библиотеками). На данный момент проще было сохранить страницы вручную через браузер, чем самостоятельно сделать лабвьюшную реализацию TLS.

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

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

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

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

Почти все подписано, специально повключал названия лабвьюшных функций.

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

FAQ

0. Где отсутствующие примеры и пункты FAQ? Как вообще читать эти темы?

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

Примеры

Предыдущие см. в прошлых темах

Metaprog: универсальная графическая среда программирования [в разработке]

Metaprog: универсальная графическая среда программирования [в разработке] часть 2

Metaprog: универсальная графическая среда программирования [в разработке] часть 3

Metaprog: универсальная графическая среда программирования [в разработке] часть 4

Metaprog: универсальная графическая среда программирования [в разработке] часть 5

Metaprog: универсальная графическая среда программирования [в разработке] часть 6

Metaprog: универсальная графическая среда программирования [в разработке] часть 7

Наконец-то нормально работают циклы!

https://pastebin.com/1duyPBMB

Это та самая диаграмма со старого скрина:

https://i.postimg.cc/65N2KMQz/image.png

Теперь тупиковые ветки (nk_end и «малювання SDL») тоже остаются в теле цикла. Теперь осталось внедрить тот же механизм управления тупиковыми ветками для условий (if, switch) и можно будет приниматься за разработку Метапрога на «самом себе».

Донат

Bitcoin:1AYoK2TScSpD5bhf67mv9AxHDJ2RidRvjD



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

Я уже привел тебе вызов strtod. А про константу массива писал потому что спутал strtod с stdout.

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

А может и выйдет годное.

Наивно так думать.

они набираются опыта

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

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

За восемь тредов разыменование указателей

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

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

Короче, к нему я приткнул нулл.

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

Где вывод полученного значения в терминал?

Ты уверен, что в реальных программах после

char metaprog_instance_0complex_array_array_pointer_8982710548059625473[] = {50,46,49};

в памяти не будет лежать какая-нибудь хрень? И strtod() не продолжит дальше обрабатывать дальнейшие байты? И получится фигня.

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

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

Не думаю, что ТС нуждается в Вашей защите.

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

Где вывод полученного значения в терминал?

Сам прикрути printf, если хочешь. Если б надо было выводить - вывел бы искомую строку.

И strtod() не продолжит дальше обрабатывать дальнейшие байты? И получится фигня.

А, черт, оно же нуль-терминированные строки кушает? Ладно, сделаю костыль для подобных случаев.

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

А, черт, оно же нуль-терминированные строки кушает

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

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

А, черт, оно же нуль-терминированные строки кушает?

Сделай строки нуль-терминированными по умолчанию.

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

А че за ценники тогда?

Ценники вроде для веб-версии. У них там и хранилище удалённое и сборка. Все дела.

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

Сделай строки нуль-терминированными по умолчанию.

Насколько я помню ТС собирался свои строки пилить с указанием размера. Что, кстати, будет конфликтовать со стандартной библиотекой Си, как и с принятыми в нём (в Се) техниками.

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

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

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

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

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

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

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

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

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

Просто так не хочется тащить дальше этот бред с нуль-терминацией...

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

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

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

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

Дык сделай что бы как в glib

А что бы сразу glib не прикрутить, вместе с его GString и прочим барахлом? Зачем все самому писать?

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

Есть функции, хавающие нуль-терминированные строки. Ладно, все же можно добавлять нолик при трансляции, так будет проще.

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

Уже пробовал гтк, ООП там жуткое. Не вариант.

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

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

идиотских нападок

идиотских

Сможете объяснить?

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

Стопэ, не мешайте меня с ТСом в одну кучу. Он пилит САМ метапрог (опираясь на подсказки и советы других), а я отдельно пилю skyvis. Я много лет назад разобрался с указателями, ооп, базовыми паттернами, питоном, js... И понимаю зачем это.

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

Я тихо потихоньку пилю на C++ Qt. Вместо «заранее продумать концепцию» наоборот - «грубо представил очертания, буду экспериментировать и методом тыка выяснять более оптимальные варианты».

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

1. Совок — это прибор для убора мусора. Я, конечно, догадываюсь, что ты имел в виду несколько другое, но подбирай выражения.

2. По сути. Комментарий, на который ты отвечал, был не про копирайт, вообще-то, а про провокацию. Сам ты можешь относиться к копирайту как угодно (на этом ресурсе большинство к нему относятся скептически и не без оснований). Но дело не в личном отношении, а в том, что ты подначиваешь людей для участия в _твоём_ проекте использовать ПО, из-за которого потом у _них_ могут быть проблемы. Это попахивает дурно вне зависимости от того, как я или кто-то ещё отношусь к институту копирайта.

Я понимаю, это не самый выдающийся случай провокации даже на ЛОРе. Тут по легенде был персонаж, который выкладывал ссылки на детское порно, а потом то ли на сам ЛОР накатал в Роскомнадзнор, то ли на заинтересовавшихся в прокуратуру — тут уже легенды расходятся. По сравнению с ним призыв вместе попользоваться пиратским Лабвью — это ерунда, конечно. Но всё равно не стоит уподобляться.

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

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

hobbit ★★★★★
()

Про раскрутку

Ещё один момент. Ты пытаешься выпустить необкатанный Метапрог сразу сам на себе. Это крайне затруднит появление единомышленников проекта. Сначала надо какое-то сколько-то устоявшееся описание и прототип на известном языке. Чтобы люди могли его потыкать, в том числе исходники (читаемые).

Тот же Rust начали пилить в 2006м, и только в 2011 году компилятор, написанный на Rust, успешно скомпилировал сам себя! Через 5, блин, лет! И что характерно — уже после того, как к разработке подключилась Мозилла. То есть уже было некое представление о языке не только у начального автора, он завоевал внимание и начальное признание хотя бы у пилильщиков.

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

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

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

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

Это может оскорбить чувства верующих?

Комментарий, на который ты отвечал, был не про копирайт, вообще-то, а про провокацию

У вас за нарушение копирайта уже сажают на кол?))

metaprog
() автор топика
Ответ на: Про раскрутку от hobbit

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

Тот же Rust начали пилить в 2006м, и только в 2011 году компилятор, написанный на Rust, успешно скомпилировал сам себя! Через 5, блин, лет!

Это на заметку тем, кто упрекает меня в том, что разработка длится «целых» три месяца.

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

Здрасьте. Я где-то давал объяснения, может даже в заголовках. И вообще что там может быть непонятного?

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

где-то

может даже

Именно-именно!

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

Понятное дело, что сейчас ты можешь сделать только черновик такой таблички, который ещё не один десяток раз будет обновляться. Но когда есть хотя бы черновик — это куда лучше, чем когда его нет вообще.

И вообще что там может быть непонятного?

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

Я тебе уже говорил, что в описании языка, к которому ты хочешь привлечь других людей, в первую очередь должен быть заинтересован ты сам. А не Котечка, не анонимус и не гипотетический профи. Даже Котечка, если возьмётся, при всей своей доброжелательности к проекту может сделать описание, расходящееся с _твоим_ представлением. Просто потому, что он не телепат. И всплывёт это не сразу, а когда уже ещё несколько человек запутаются. :) Ничего личного, закон Мэрфи.

На данном этапе — хотя бы в виде таблички с блоками.

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

Решил попробовать libuv вместо либевента. По примеру проще и удобнее. Но тут такая вот фигня:

In file included from test.c:10:
In file included from /usr/include/uv.h:62:
/usr/include/uv/unix.h:133:9: error: unknown type name 'pthread_rwlock_t'
typedef pthread_rwlock_t uv_rwlock_t;
        ^
1 error generated.

Я ему уже pthread подсунул, а оно не хочет понимать pthread_rwlock_t.

Сам код (простая фигня вызывающая компилятор, чисто чтоб протестить инклюды):

https://pastebin.com/76dfL2UH

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

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

metaprog
() автор топика
Ответ на: Про раскрутку от hobbit

программирование на текстовом языке три раза прокачать

Для ТСа избегание текстового программирования - «вопрос жизни и смерти». Пока метапрог делается в визуальной среде - ТС лидер «как я сказал, так и будет» (правда сейчас лидер «команды» из 1 человека). Если метапрог будет делаться на текстовом ЯП - лидер превращается в обузу, который не может диктовать каким будет проект.

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

Винда 1.0 написана на Паскале.

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

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

Дык посмотри на WinAPI, там вот это DWORD, BYTE, постоянный typedef, явно паскаль нанес увечья несовместимые с нормальным кодом.

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

Ну так чистый c99 это без всяких юниксовых штук, которые были и нужны...

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