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)

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

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

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

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

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

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

Тор с открытым кодом, скачать и поставить - плевое дело. Даже в репозиториях дистров есть.

Патч Бармина тоже с открытым кодом, только я его запускать почему-то не хочу.

Да, есть вещи, ради которых я, возможно, поставлю тор, но разработка непонятно чего на палёном лабвью к ним точно не относится. :)

И дело не лично во мне и не лично в Пыхтере. Просто твоя разработка и так интересна очень уж нишевой аудитории, а вводя рогатки в виде тора, ты сам её сознательно сужаешь в разы. Да, можно гланды через анус удалять. НО ЗАЧЕМ?!?

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

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

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

saibogo ★★★★
()
Последнее исправление: saibogo (всего исправлений: 2)

А ты не мог бы перевести обучалки на русский? Нифига ж непонятно, что происходит.

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

Так тех кому больше 13, их по количеству больше. Не все так просто!

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

Если что, донат сюда:

Bitcoin:1AYoK2TScSpD5bhf67mv9AxHDJ2RidRvjD

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

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

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

В некоторых случаях, разработчик библиотеки (класса) должен скрывать реализацию от пользователя (то есть программиста, использующего его библиотеку в своем проекте), предоставляя ему доступы только через СТРОГО ОГОВОРЕННЫЙ интерфейс

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

Если разработчик класса(библиотеки) заприватил какое-то поле — значит использовать его == стрелять себе в ногу — так ясно?

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

Да, в текстовом программировании классы с инкапсуляциями и сокрытиями нужны, но не в визуальном.

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

Здесь ему помочь не сможет никто

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

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

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

Едрить, да не собираюсь я виртуалку с ШИНДОВСОМ ставить ради этой хурмы. Ты же говорил, что у тебя уже такая пейсдатая кодогенерация, что можешь в Си этот чат затрындюрить. Ну и хде?

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

Фцитатнег.

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

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

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

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

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

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

Это плохо. И именно таким путем движется индустрия ИТ с питонами, джаваскриптами и говнофреймворками. Но с чего бы Метапрог ассоциировать с такого рода усложнением?! Он наоборот упростит программирование, сам опираясь только на низкоуровневый Си!

Не, «мой» я имел в виду тот который я в данный момент ковыряю. У меня самописных, в основном, питоноскриптии, которые я уже сто лет не ковырял, но всё довольно просто, хоть и возникает вопрос «зачем я так делал?». А вот с чтением чужого кода проблемы. Особенно когда код писал «крутой» программист, срезая на поворотах и экономя на формулах. Совсем недавно пришлось парсить такой исходник, обработчик макросов для станка. Мало того, что он написан на старинных сях, для доса, так ещё и пол дня убил на поверхностное вникание из-за формул написанных непочеловечески. В результате переписал формулу «по деревенски», разложив на более понятные мне члены и всё заработало, потом добавил своё, вроде работает, но блин, сколько времени ушло на это... Вот таких вещей хочется избежать, поскольку я не программист, вникать всегда приходится долго, а структуру увидев как-то сподручнее, чтоли. По крайней мере отваливается нужда вникать в объявления функций, а у каждого языка оно своё, раз в сто лет влезая в код помнить нюансы каждого языка просто невозможно.

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

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

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

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

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

В Метапроге все будет чуток по-другому. Все регулируется интерфейсами функций. Складывать указатель с указателем нельзя? Если нельзя - то указатели может принимать только первый терминал функции «суммировать», второй - только числа.

Кстати, складывать указатель с указателем нельзя?

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

Или, если флоаты складывать нельзя, разрешить только целые?

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

Так и вижу вокруг заслуженных тринадцатилетних пацанов.

У молодежи мозги не так засраны шлаком (религии, «авторское право, текстовый кодинг итп), так что на них надежды больше, чем на старперов.

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

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

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

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

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

Разве что у молодёжи. У людей постарше надежд уже не так много, потому что есть опыт, которого у молодёжи нет. Или ты думаешь, что люди постарше сразу такими родились, и никогда не были молодёжью? :-)

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

Ютуб прост как ёжик и не заблокирован.

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

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

этож хорошо: ошибка компиляции это и подсказка, где искать ошибки в программе

и матюку со стороны кодера

мне кажется, что матерятся* чаще, когда непонятно из-за чего ошибка (или программа работает не как ожидалось).

в худшем - к трудноуловимому багу.

в графическом программировании не будет «трудноуловимых багов»?! ты это серъёзно??

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

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

как графическое программирование найдёт такой баг?

Графическое программирование просто не допустит его появления, потому что сложность чтения схем растёт так быстро, что делать можно только очень простые программы. Вот, к примеру, растеризация окружности: https://vimeo.com/351835220. Попробуй разберись в алгоритме. Он вообще-то сам по себе простой, но чтобы в графике его увидеть, нужно немалые усилия приложить. Поэтому там не и будет трудноуловимых багов: нет кода — нет багов. Такие дела.

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

Ты сделал «графический брейнфак». И не говори, что брейнфак текстовый понятнее.

Кстати, Дракон, много раз упомянутый в моих темах - это «графический BASIC».

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

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

да это просто грааль какой-то :)... чтож ждать осталось не долго... я уже вижу этот безглючный, быстродействующий совершенный софт, браузеры на 100500 млн вкладок с флешами/видео/майнерами/... что там софт — непадающие, без 0day дыр оси... блин-н-н, кто опять включил будильник?! такой сон, такой сон пропал :(

нет кода — нет багов.

+100500%

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

Скажем в коде используется 01010001010100 — неважно в каком качестве (литерал, число). Но, вот я это самое 0101001010100 то ли сразу с ошибкой вбил, то ли скопипастил криво — результат: программа работает неправильно. Текстовые языки здесь сильно не помогут — они не могут определить, что это значение не соответствует, тому, что должно быть... как графическое программирование найдёт такой баг?

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

По-хорошему лучше вводить десятичное число, тогда вероятность ошибки поменьше. В графике бинарная и десятичная форма констант переключается легко, в Лабвью так:

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

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

Судить о графическом программировании по поделке Рината - это все равно что судить о тексовом программировании по брейнфаку.

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

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

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

Его «подделка» (всё же это слово мало подходит для характеристики его программы) сильно проще того, что ты предлагаешь. Я не могу утверждать, что досконально читал твои треды, но ни разу не слышал, что диаграммы кому-то понятны кроме тебя. Противоположные мнения встречались... Те диаграммы, что я смотрел построены на захардкордженных значениях — это никоим образом не может исключить фактор человеческой ошибки. Ринат прав: «большой» код — больше вероятность ошибки. Ни ты, ни я с этим ничего не поделаем (даже в теории).

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

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

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

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

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

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

Его «подделка» (всё же это слово мало подходит для характеристики его программы) сильно проще того, что ты предлагаешь

Поделка все же с одной «д». И ни на что кроме прикола не претендует, в отличие от Метапрога.

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

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

ошибки в логике допускают программисты (или алгоритм их моделирующий) — здесь «ничего сделать нельзя»©

Совершенно верно. Но в графике как-то удобнее и надежнее, легче смотреть чужой код и видеть ошибки. И свой «припавший пылью» код тоже удобнее вспоминать и редактировать. Опять же, если судить по Лабвью, а не поделке Рината.

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

:)

я написал

«подделка» (всё же это слово мало подходит для характеристики его программы)

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

anymouze ★★
()
Ответ на: :) от anymouze

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

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

Поделка все же с одной «д»

Опечатка же :(

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

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

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

Ты правда не понял? Я ошибся при написании. Но слово-то существует. Проверка прошла успешно. И при том, что ошибка есть — смысл фразы исказился. Как визуальное программирование защитит от таких опечаток?!

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

Все я понял. Визуализация не даст 100% гарантию от ошибок в задаваемых вручную переменных.

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

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

Я еще в 4 теме писал:

Визуальный Метапрог существенно упростит программирование, но не снимет с программиста ответственность за логику программы

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

Кстати, складывать указатель с указателем нельзя?

Тред девятый - учимся арифметике указателей.

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

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

Достаточно протянуть проводок не от того блока, и вот уже ошибка, аналогичная опечатке в названии. Причём если при наборе текста вручную программист ошибается только в одной букве, и сложно вместо достаточно короткого jump() написать, скажем, duck(), то в графике это запросто — достаточно дёрнуть не тот блок, если они рядом. Например, если вдруг выпал из реальности, погрузившись в размышления, а работать продолжил на автопилоте. В тексте в средних и длинных названиях вероятность ошибиться так, чтобы случайно попасть на другой идентификатор, ничтожно мала.

Так что этот пункт в графических системах хуже.

Который даже не подключится, если тип не соответствует

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

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

В текстовом программировании компилятор тоже реагирует на несоответствие типов.

Я еще в 4 теме писал:

Визуальный Метапрог существенно упростит программирование, но не снимет с программиста ответственность за логику программы

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

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

и пробелов (в питоне)

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

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

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.