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

А зачем дифференциальные уравнения-то, если есть

у = +-sqrt (r2 - x2)

для окружности в центре координат с радиусом r на отрезке [-r, +r]. Но это с корнем.

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

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

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

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

он написал 'без тригонометрии и корней'

так я не спорю - делается весьма просто

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

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

ссылка за тобой, я ж не настолько айтишник ноулайфер, чтобы 30 страниц читать

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

Ну если по чесноку, то это восемь сегментов. Просто рядышком.

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

Думаю, да. Надо только ещё раз код просмотреть и историю подчистить. Я вообще не планировал выкладывать, и названия коммитов там далеки от рекомендуемого.

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

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

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

значит, раньше не умел

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

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

А как же драйвера и ядро ОС?

Никак.

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

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

ссылка за тобой, я ж не настолько айтишник ноулайфер, чтобы 30 страниц читать

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

он написал, что осилил нарисовать круг. значит, раньше не умел

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

https://vimeo.com/351835220

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

Браво! Наглядная демонстрация преимуществ графического программирования. Это невероятно компактно и легко для понимания.

liksys ★★★★
()
Ответ на: Showtime Komputeishon | Source Code от i-rinat

metaprog, смотри за примерно тыщу строк на питоне и пару недель работы i-rinat сделал красивый конструктор математики. А ты за полгода только циклы осилил и генерацию кода, который даже не компилируется без ошибок и течет, как гнилая труба.

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

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

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

На самом деле, код никому не нужен

А ты назовись Програсом-Лампасом и продавай это за большие деньги.

WitcherGeralt ★★
()
Ответ на: Showtime Komputeishon | Source Code от i-rinat

Классно, но я не понимаю людей, которые пихают все исходники в один большой файл. Никакие «go to definition/implementation...» не заменят разделение на файлы-модули. Даже если это одноразовый скрипт на 10 экранов.

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

Никакие «go to definition/implementation…» не заменят разделение на файлы-модули.

А у меня и нет «go to definition/implementation…». В текстовом редакторе есть только базовый парсинг структуры файла, которой я почти и не пользовался.

но я не понимаю людей

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

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

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

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

Сишные функции вызывать умеет? Функции и типы из инклюдов читать и показывать в виде меню умеет? Транслироваться в Си умеет? Сам на себе сделан? Нет. Так что не считается.

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

Сам на себе сделан?

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

i-rinat круто получилось!

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

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

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

немногие избранные

Лол. Мне даже сказать нечего...

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

Опять ты свою пластинку завёл. Что не считается, кем не считается? Почему это кому-то кроме тебя интересно?

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

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

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

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

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

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

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

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

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

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

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

Получается, ТС является главным препятствием к реализации мечты ТС’а. Какая злая ирония.

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

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

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

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

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

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

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

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

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

Пролог

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

f(N, I, _, Y) :- I >= N -> write(Y), !.
f(N, I, X, Y) :-
  Y1 is X + Y,
  X1 is Y,
  I1 is I + 1,
  f(N, I1, X1, Y1).

fib(N) :- f(N, 2, 1, 1).
siegment
()
Ответ на: комментарий от siegment

Мгновенно считает, кстати (swipl):

19 ?- fib(9000).
346160291286684746313289272940653195821004938840574649197792354882626761451249209476688158830845438584081783077248969641036805567685925275096026379667053520731117017902152350004056055263290740468312565519013758527115134986679500927618960595898784125436743322890902556558480966166842068858827121368084037500398689666218044551350360442646862696279483129043660912539980584260616428129687853518243358544506024804211410314325692133398509706576596745187284000675448960566587838629300214068490071678112576561242120168921521062906855593650494011391615760506296564726181583639595605639315514462323593255726350681177298919692687529131475966996479175735276726414564038873951028105275764984412066591637415934772279139455253087288034009154993561193308269619883651016764739580528775882659332284075160900251889565909001620005955898020498741253426259183467407856451935255744598735677063143605951074135853992415938277666700535092854704966755528337679057697026202081967337389133151551900992563506110333584028337592625787023110008351289364452178195306107056259768301902940710358705695173401175797592063874235214258319794748258830812224447883759078743189231351248058057742818858083652751310389157188583652487191753681908871324452598859106144951594606797195786754559141129782727790928218793262000601818878041232712620482141748965030717911922256234544033929372196985105014830841771293541916105669494308393067698504542986022441130160781328108216014215621166500631310190198456977407701085658980743316402172456165191576635035885104241740897029972735571913355609051794588175072614073380279274977928339443177725603335698391914343325635814053921690136602830888930385122496970174170881935462763316271613842866892088329627160809282789447665993788904319486227140536689107577971883772835153070545678359828373104418268785375257487856252266909918112168299229852218195022374231040315139836301079422737682650129388000
true.
siegment
()
Ответ на: комментарий от liksys

Это тривиальная задача, в которой нет даже намека на элемент ресерча

Ну так сделай, докажи свою правоту. Или только умничать умеешь?

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

Не понимаю, зачем ТС возится с лабвью

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

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

Прототип есть, работоспособный код генерирует. Что мне еще там учить?

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

При этом, даже за ориентир он принял довольно старый язык C

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

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

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

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

Если ты даже какой-нибудь жаваскрипт осилить не можешь

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

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

В моем лабвьюшном прототипе Метапрога ООП и тем более ФП не используется. В Лабвью есть классы, но инкапсуляция меня бесит - нельзя, видите ли, дергать приватные поля. Зачем вообще классы, когда есть кластера (аналог сишной структуры)?

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

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

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

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

В моем лабвьюшном прототипе Метапрога ООП и тем более ФП не используется.

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

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

А не из‐под рута в Debian нельзя пакеты поставить. Ух, как бесит, нельзя, видите ли, пакет поставить!

Зачем вообще классы, когда есть кластера (аналог сишной структуры)?

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

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

пролог легко скатывается в императивщину

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

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

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

Ядро линукс, systemd и многое другое тоже.

А не из‐под рута в Debian нельзя пакеты поставить. Ух, как бесит, нельзя, видите ли, пакет поставить!

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

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

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

Ядро линукс, systemd и многое другое тоже.

Ну первые юниксы вообще на ассемблере писали, и что? Да и вообще: не надо распространять системщину на весь софт.

А от чего защищает ООП в программном коде?

Как я тебе могу объяснить, если ты не можешь осилить простую концепцию инкапсуляции?

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

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

Книжки почитай, а то выглядит как «математика программисту не нужна».

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

Глупости морозишь.

Мораль: книжки тебе надо читать, а то и дальше будешь бегать с UNIX‐дубиной (структурщина и сишка) из мира первобытных ЭВМ.

Пока что любые объяснения тебе чего угодно ударяются в «а мне и в болоте нормально».

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

Она не проприетарна и не закрыта - описание языка доступно, открытые компиляторы тоже имеются. Лучше LabView тем, что является промышленным ЯП, а LabView - строго специализированное средство описания и управления технологическими процессами для АсуТП.

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