LINUX.ORG.RU

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

 , , ,


0

3

Интерактивная обучалка

https://streamable.com/dnhoy

Интерактивная инструкция по сборке факториала

https://streamable.com/h8dto

Меню из функций

Наконец допилил меню из функций. Программирование на Метапроге будет выглядеть примерно так:

https://streamable.com/xlprt

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

Сама функция, считающая факториал, выглядит так:

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

Полученный код корректно считает факториал 11 (10+1, как на схеме):

https://pastebin.com/pdbhKcey

Переключатель (он же switch)

https://streamable.com/vgn3w

https://pastebin.com/tuB9X00u

Чат-клиент

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

Версия 1.

http://e2tilsgo5s44hqmlwb4epwrjnh7ynvsckj2tl5duwdqbxg67chqpelad.onion/file/de...

Требования

1. Windows начиная с ХР с кириллической локализацией (иначе будут проблемы с кодировкой символов).

2. Для запуска скомпилированного ехе-файла бесплатный рантайм (32-битный):

https://download.ni.com/support/softlib/labview/labview_runtime/2013 SP1/Wind...

3. Для просмотра и редактирования диаграмм с кодом чат-клиента - LabVIEW начиная с 2013. Как кто его достанет - личное дело каждого, если жалко денег - на торрентах оно есть.

4. Tor Browser или Tor для подключения к серверу:

https://www.torproject.org/

Сам чат-клиент лицензирован под GNU GPL v3, подробности - по кнопке «Про программу».

FAQ

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

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

11. Как выглядит факториал в графическом представлении?

https://i.postimg.cc/ZRzpHhnv/image.png (уже на Метапроге, а не Лабвью).

Прошлые темы:

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

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

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

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

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

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

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

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



Последнее исправление: metaprog (всего исправлений: 8)
Ответ на: комментарий от i-rinat

Да, но получив исходники, он начнет искать, кто их доработает вместо него.

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

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

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

При чем пообещал донат и за лабвьюшный прототип.

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

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

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

Какие-то квадратики, стрелочки. Откуда начинается работа и когда она заканчивается

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

Все стрелки работают одновременно параллельно или за единицу времени работает только одна

Как писать параллельный код и как его синхронизировать

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

Что случается, когда возникает ошибка

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

Как происходит работа с динамической памятью

malloc/free? Просто вызовом функций.

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

Как создаются функции и определяются типы входа и выхода. И т.д.

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

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

Я не знаю что такое BTree, можешь на пальцах объяснить?

Ну или по проще, ту же пирамидальную сортировку. Без динамической памяти, без указателей, ничего интересного. Чисто циклы и доступ и модификация элементов массива. Но реализация на сях занимает 20 строк. Хочется посмотреть, сколько займет в графическом виде.

Скорее уж квиксорт, попробую на досуге повторить лабвьюшную схему на Метапроге.

Скорее всего, выпущу Метапрог досрочно для пользователей чатика и к 24 числу попробую написать кое-какое описание и доработать обучалки.

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

В Метапроге сейчас параллелизации выполнения пока нет

колбеки libevent

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

malloc/free

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

Я не знаю что такое BTree, можешь на пальцах объяснить?

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

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

на словах он революционер, а на деле хочет ехать на чьей-нибудь шее. Он постоянно требует простых объяснений, потому что ему лень читать.

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

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

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

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

Критикуешь - предлагай.

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

Чтобы мне все объясняли простыми словами и помогали в разработке опенсорсного продукта

Тебе никто ничего не должен. Более того, с таким отношением к другим разработчикам ты уже успел заработать себе отрицательную репутацию, так что теперь никто в здравом уме в этот «прожект» бесплатно не впишется. Более того, мне видится в корне неправильным, чтобы взрослого человека водили по манам за ручку. Указать направление для изучения - это пожалуйста. Решить сложную проблему, с которой еще никто не сталкивался? Пожалуйста, тут соберется куча народу. Образовывать тебя - нет, желающих нет.

Гуглом я и сам пользоваться умею

чем на изучение того, что и без меня уже тысячу раз сделали

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

Если предположить, что кому-то понравится твоя идея, то вот в чем вопрос: зачем в этом проекте ты? Тратить время на твое образование + разработку, или тратить время только на разрабоку? По-моему, ответ очевиден. Сами по себе идеи ничего не стоят. Даже в собственном проекте ты выступаешь в роли балласта.

в жопу

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

Критикуешь - предлагай

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

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

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

Если предположить, что кому-то понравится твоя идея, то вот в чем вопрос: зачем в этом проекте ты? Тратить время на твое образование + разработку, или тратить время только на разрабоку? По-моему, ответ очевиден. Сами по себе идеи ничего не стоят. Даже в собственном проекте ты выступаешь в роли балласта.

Теперь будем делать так: каждое твое хамство я буду репортить модераторам.

Прекрасно. Почему тогда ты еще здесь?

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

Ты ничего не умеешь, ничего не знаешь

Этого «ничего» благодаря Лабвью хватает на не менее чем разработку прототипа Метапрога. И если б не тупость копирастов из NI, искусственно ограничивших возможности Лабвью, хватало б и на ядра ОС, драйвера, юзерспейс и вообще что угодно.

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

Как же в Си реализовать параллелизм?

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

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

Прекрасно. Почему тогда ты еще здесь?

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

не менее чем разработку прототипа Метапрога

Мы уже выяснили, что это несложно.

И если б не тупость копирастов из NI

Опять маня-фантазии без какого-либо подтверждения.

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

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

Как это ограничение выглядит-то? Сидишь такой, делаешь ядро ОС на лабвью, и тут вылазит табличка с надписью: «Ядро ОС делаешь? НИЗЯ-Я-Я!!!!!». Так, что ли?

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

Нет. Просто невозможность оперировать сишными инклюдами и ассемблерными вставками. И невозможность вкрутить эти возможности самостоятельно.

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

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

Ух-ты! Ранний доступ для избранных! Эксклюзивные DLC будут? Platinum Starter Pack, всё такое.

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

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

C11 threads? Раньше уже шла речь о параллелизме, мне все же предлагали pthreads вместо них. Еще какие варианты, чтобы без оверхеда на открытие потоков? Что не так с использованием libevent?

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

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

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

Ты пытаешься добавить блок с «сишными инклюдами и ассемблерными вставками», а вылазит табличка: «НИЗЯЯЯЯЯ!!!»
Так, что ли?

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

Еще какие варианты, чтобы без оверхеда на открытие потоков?

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

Что не так с использованием libevent?

Читать разучился? Тебе было русским языком написано: асинхронность и параллелизм - это разные вещи.

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

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

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

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

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

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

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

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

Примерно как «недополученная прибыль». Могли бы получить, но не получили. Значит прибыль украдена.

У ТСа логика точно такая же, как и у копирастов :D

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

А это работает с другими вещами, не с баблом? Ну, например, я мог бы получить диплом магистра, но не получил, могу я засудить вуз за это?

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

dr15, не объясняй ему, пусть сам учится получать информацию

«Гусары, ни слова о жопе!» - закричал догадливый поручик…

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

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

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

Возможность прямо юзать сишные функции и типы, оперировать указателями? Нет. Есть упрощенное подобие указателя:

https://zone.ni.com/reference/en-XX/help/371361R-01/glang/new_data_value_refe...

Но оно не дает возможности прямо на Лабвью оперировать опкодами процессора, делать ядра ОС на х86, ARM, прошивки на ардуино итп.

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

Похоже, молодчики из NI таки добрались до ТСа и искусственно ограничили его возможность отвечать.

Похоже, у меня в жизни есть не только ЛОР.

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

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

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

асинхронность и параллелизм - это разные вещи

Как насчет реализовать параллелизм через асинхронность?

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

Будет - сможешь потыкать в Метапроге.

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

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

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

Как насчет реализовать параллелизм через асинхронность?

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

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

Вот блин. А ведь ты прав.
Надеюсь, ты не будешь ограничивать моё право считать тебя правым, ограничивая твоё право быть не правым и/или не считаться таковым, но не ограничиваясь им, или около того.

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

Как насчет реализовать параллелизм через асинхронность?

Ты уже прочитал, что это такое и чем отличается?

Будет - сможешь потыкать

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

Они меня ограничили

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

Дети так часто делают. Ударился ногой об скамейку - виновата скамейка. Все потому, что дети психически незрелы, и у них отсутствует самокритика. Признать свою неправоту для них целая катастрофа. Прям как для тебя. Виноваты кто угодно - копирасты из NI, разработчики GCC, питонисты, рептилоды, но только не ты, святой и непогрешимый.

оперировать опкодами процессора, делать ядра ОС на х86, ARM, прошивки на ардуино итп

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

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

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

У тебя и не было возможности изменять код Лабвью, так что акта ограничения не было.

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

Они меня ограничили в возможности изменить код Лабвью

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

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

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

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

Блин, ты ещё тупее, чем я думал. Как ты намерен ЯП разработать, если не знаешь самых базовых вещей? Освой хотя бы один язык для начала и напиши что-нибудь сложнее хеллоуворда.

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