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)
Ответ на: комментарий от hobbit

Как только будет допилен лабвьюшный прототип - займемся отвязкой.

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

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

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

«Декларативный» и «императивный» - понятия размытые и субъективные. Даже ассемблер можно назвать декларативным. Ассемблер?! Да, ассемблер - декларативный. В сравнении с ручным набиванием опкодов ты говоришь процессору словами чего ты от него хочешь (суммировать, инкрементировать итд). Так что транслятор инструкций ассемблера в машинный код - это и есть тот самый

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

По крайней мере, мне за 9 тем так и не назвали сферических декларативных ЯП в вакууме, кроме человеческих (русский, украинский итд). И даже в них может быть и декларативное, и императивное приенение. Словом, Lingua Latina non penis canina est.

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

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

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

так и не назвали сферических декларативных ЯП в вакууме

Пролог, xslt

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

Лично мне просто наскучило. Один и тот же бред, одни и те же сказки.

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

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

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

Я тут как-то писал в одном из ранних тредов. Если ты визуал, то такие блюпритны это спасение. Я приводил пример, с тем, что все мы оказавшись в городе где были единожды 10 лет назад легко сориентеируемся там вновь по памяти. Я когда смотрю в свой код годичной давности обычно ничего ен помню по его содержанию, но вот форма блоков кода на минимапе врезается в память железно, а зацепившись за неё легко начинаю выуживать из памяти что там было ик а коно работало. Также легко мы ориентируемся даже по бумажной карте (это аналог состояния визуального программирования сейчас) даже самого запутанного города. Теперь представьте что в визуальное программирование завезли все плюшки из Османда: зум, изменение детализации схемы при зуме, поиск, возможность вешать лейблы на куски схемы итд. Теперь представьте что блоки схемы можно не тягять мышкой а ставить по вимомодобным или емаксоподобным шорткатам. Красота же.

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

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

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Ну дальше должны идти средства контроля сложности, аналог операции извлечь метод, например. Обвёл рамочкой какую-то часть схемы, дал команду ВСИМВОЛУПАКОВАТЬ и у тебя эта часть становится символом с автосгенерированными портами подключения. Ну и аналогичных вещей напридумывать (ограничения на число портов символа, например, или на число символов на один лист диаграммы, думаю хороший дизайнер сможет много чего придумать), но тс хочет иметь визуальный язык лишь чуточку выше уровнем, чем няшкная сишка. При этом я тут вбрасывал визуальный язык общего назначения высокого уровня поверх СБЦЛ https://openmusic-project.github.io/om7/ Там не только музыку писать можно, там любые лисп конструкции овизуалены, бесшовно интегрируется любой код, написанный под СБЦЛ.

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

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

Графическое представление программ не масштабируется.

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

Обвёл рамочкой какую-то часть схемы, дал команду ВСИМВОЛУПАКОВАТЬ и у тебя эта часть становится символом с автосгенерированными портами подключения

В Лабвью я часть использую выделение участка диагарммы и Create SubVI (создать подфункцию). Что-то подобное будет и в Метапроге. Кстати, как насчет присоединиться к проекту?

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

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

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

Графическое представление программ не масштабируется.

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

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

(сарказм)

Это не сарказм, это упёртость.

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

Я говорил о локальности. Ты что, этого не понял?

https://69.media.tumblr.com/3cf887d0bb89e6a1c13f9dab8daac2de/tumblr_pjajzfIAn41wp4jg6o1_1280.jpg

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

Да легко. Посмотри на ПО на твоём компьютере.

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

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

Давайте тотализатор устроим. Могу обещать лениться. У меня неплохо получается лениться.

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

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

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

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

Я говорил о локальности. Ты что, этого не понял?

https://69.media.tumblr.com/3cf887d0bb89e6a1c13f9dab8daac2de/tumblr_pjajzfIAn...

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

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

У меня вот уже начался, а метапрога всё нет.

Грусть, печаль.

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

Ты бы лучше посмотрел код чат-клиента

Ты уже начал раздавать деньги на приобретение лицензий на LabVIEW?

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

Ты бы лучше посмотрел код чат-клиента

Поверь, тебе будет лучше, если я не буду смотреть на код твоего чата. А то я ненароком ещё и аудит могу сделать. Лучше не надо.

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

Да давай, чего уж там. Чертей я не боюсь.

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

Ялта, август.

Ты ещё про месяц-другой вспомни.

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

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

Но он не хочет.)

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

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

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

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

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

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

Как правило, если у библиотеки/чего-либо хороший и продуманный интерфейс, то и вспоминать ничего не надо:

Vector2D v1(12, 13);
double a = v1.len(); //Мне даже не нужно ничего читать и запоминать, чтобы знать что эта функция делает.
//Просто потому что функция имеет говорящее название.

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

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

Если же берем обычные функции, то тут тоже не очень то и сложно

std::sort(it1, it2);
std::swap(a, b);
std::make_tuple(...);
...
В общем, главное больше думать над архитектурой и названиями, чем бить по клавиатуре.

snake266 ★★
()

Кстати, как выяснилось, существует LabVIEW Home Bundle for Windows, который стоит 50 баксов. Это уже вполне подъёмная цена, не тысячи.

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

Даже в твоем примере надо заранее помнить: Vector2D, double, len. При этом на будущее надо обязательно запомнить v1, a. И при этом надо знать английский, зная только лишь украинский или русский программировать на Си/С++/(почти всех других текстовых ЯП) невозможно. Гуманитарщина.

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

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

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

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

Покупай

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

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

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

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

Кстати, есть ещё бесплатный (и даже свободный!) GCC. С его помощью можно… Да много чего с его помощью можно.

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

программировать визуально

За более чем четыре месяца клоунады ты так и не смог показать преимущество «программирования визуально».

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

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

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

А ты не смог показать мне преимущество программирования в тексте.

Ты пишешь это через браузер.

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

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

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

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

Как нельзя объяснить закоренелому виндузятнику-мышевозу смысл консоли

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

так нельзя и тебе объяснить программирование

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

metaprog
() автор топика
Ответ на: Showtime Komputeishon 4 от i-rinat

Как насчет вызова сишных функций, циклов, условий, переключателей, стуктур. массивов, структур условного выбора типа и прочих плюшек Метапрога?

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