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)

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

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

Есть очень простой язык программирования – ассемблер. Простые конструкции: идет операция, затем параметры к ней. По факту, это практически весь язык. Не нужны ни скобки, ни точки с запятыми. И язык уже разработан и создан, работает быстро, изучается за 15 минут. Но у него есть небольшая проблема: на нем очень сложно писать хоть сколько бы то ни было сложные программы. Сложность поддержки приложения растет намного быстрее сложности самого приложения. И все языки, которые появлялись позже 50х годов, направлены именно на то, чтобы эта сложность росла медленнее.

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

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

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

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

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

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

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

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

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

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

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

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

А мои ботинки не будут снашиваться.

Я почему-то в такие ботинки больше верю.

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

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

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

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

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

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

можно обойтись просто ранцем набитым песком для массы.

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

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

Возможно-возможно. Мне кажется, ты улавливаешь суть.

Будешь со мной разрабатывать ВЕЛИКИЙ РАКЕТНЫЙ РАНЕЦ (ВРР)?

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

Остальные плебеи ничего не понимают и могут идти в жопу.

Слава ВРР!!!

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

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

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

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

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

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

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

Да нет. Я даже в проекте одного человека (первое условие не выполняется) предпочитаю структурировать проект и пользоваться VCS. А то действительно через год фиг что вспомнишь...

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

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

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

Да нормально у него с ногами. Просто он ботинки на руки пытается надевать. Шнуровать никак, поэтому шнурки’re considered harmful.

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

частично помнить, для чего он это делал

VCS не для этого, а чтобы убрать боязнь изменять код. Как тесты убирают страх разработки.

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

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

Песок можно украсть с полигона, где корпорация тестирует их джетпаки.

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

«Версия ранца, на котором убилось всего 2 человека, находится на складе №15»

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

Ты смеёшься, а я видел похожее. Только там версии были в файлах в одной директории, с нехитрой схемой именования. Допустим, оригинальный файл занимался инициализацией модели. INITMODEL в восемь байт не помещается, а mode имеет путающее значение, поэтому INITMOD.F90. Внутри файла был большой коммент с историей значимых изменений. Из него можно было узнать текущий номер версии (для определённости — 15). Перед новыми значительными изменениями файл копировался в INITMO15.F90, а в INITMOD.F90 менялся номер на 16. Разработка продолжалась дальше. Иногда старые файлы удалялись, потому что штук 250 файлов-старых-версий на 10-12 настоящих файлов это уже слишком много.

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

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

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

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

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

У меня такое ощущение, что это только до 40 работает. Если до примерно 40 не было опыта с системами контроля версий, то будет туго.

Всё-таки, их много было до git’а. Если человек прожил без них, осознания так и не пришло.

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

решение

Решения задачи с автоматическим монтированием и отмонтированием флешек под виндой уже не ждать?

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

Гит назван с поправкой на текущие реалии, у меня в своё время это был svn. :)

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

VCS не для этого, а чтобы убрать боязнь изменять код

У меня есть на Лабвью самопальная VCS, в ней уже больше ста версий прототипа Метапрога.

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

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

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

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

Точки с запятыми и скобки позволяют разбивать длинные строки кода на несколько срок или объединять несколько команд в одну строку

К счастью, в Лабвью и Метапроге нет понятия «строка кода»:)

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

Лови видео с русской локализацией. Сборка факториала из готовой функции:

https://streamable.com/sovj6

Сборка факториала из типованного цикла (он же цикл for) и цифровой палитры (часть «стандартной библиотеки» Метапрога):

https://streamable.com/474pq

Цифры над названиями поддиаграмм (при наведении мышкой) - это суммарное число комментариев определенных видов в подфункции и ее подфункциях.

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

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

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

Сборка

Пипец, это абсолютно невоспринимаемо. Любой текстовый язык, даже ассемблер, будет понятнее.

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

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

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

Сборка факториала из готовой функции

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

Сборка факториала из типованного цикла (он же цикл for) и цифровой палитры

Ещё сотня секунд (1:41). Итого больше двух минут, причём чем больше так будешь двигать блоки, тем медленнее это становится, точность снижается, увеличивается число ошибок. А вот быстрее не получится, потому что значительная часть времени съедена движениями мышкой.

А теперь аналогичный пример в шеле питона: https://streamable.com/zb804. 20 секунд на набор текста не спеша. И ещё 10 секунд на то, чтобы можно было увидеть результат, не ловя паузой момент. Ну и конечно божественные шрифты. Не сравнить с твоими пиксельными слипшимися буквами, на которые без боли смотреть нельзя.

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

Об этом я говорил еще в 1 треде. И в следующих...

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

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


format ELF64 executable 3
entry start

include 'import64.inc'

interpreter '/lib64/ld-linux-x86-64.so.2'

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
needed 'libc.so.6'  ;; Обрати внимание....  ;;
import printf,exit  ;;                      ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

segment readable executable

start:

	lea	rdi,[msg] ;; аргументы для printf
	xor	eax,eax
	call	[printf] ;; printf

	call	[exit] ;; exit

segment readable writeable

msg db 'Hello world!',0xA,0
Deleted
()
Ответ на: комментарий от Deleted

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

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

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

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

Уж не знаю кто тебе решение хотел давать.

Кто бы это мог быть? Metaprog: универсальная графическая среда программирования [LabVIEW-прототип] часть 9 (комментарий)

Мне кажется ты просто хочешь наспамить в тему

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

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

Кто бы это мог быть?

Явно не я, мне просто хотелось оспорить твое «нельзя сделать такое то».

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

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

Усе, переставай спамить.

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

мне просто хотелось оспорить твое «нельзя сделать такое то».

Но не смог.

Какой тебе ответ нужен?

Рабочее решение поставленных задач. Ты не понимаешь, что такое «работающее» решение?

Ты сам уже сказал что решение есть

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

во вторых я решение и не обязывался давать

Ты у нас тут специалист по сливанию. Оцени сам, сливание это или нет.

Усе, переставай спамить.

Ага, скоро. Только над тобой поглумлюсь немного, и всё.

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

Рабочее решение поставленных задач.

В job. Никто тебе тут его не собирается давать, хватит оффтопить.

Только над тобой поглумлюсь немного, и всё.

Поехавший, у тебя этот спам с 5-6 треда что ли идет.

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

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

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

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

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

Стыдно тебе должно быть за критику ООП, например, сути которого ты не понимаешь

Большую часть критики ООП я беру от других людей, знающих

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

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

тебе сколько лет?

Ориентировочно 18-20, второй-третий курс радиотехнического (поскольку вряд ли в другом месте он бы смог узнать о лабвью). Очень знакомый типаж. Такие товарищи обычно не знают до универа ни одного языка, по методичке худо-бедно что-то пишут, не понимая, что делают, им ставят трояки, и они проходят дальше. «Работал» с ардуиной (вероятно, в качестве курсового проекта), писал хеловорды, а потом ему показали лабвью, и на фоне невежества у него случился сдвиг по фазе.

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

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

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

ты ничего не понял

Или она будет, но будет вести себя не так, как ты ожидаешь?

А это прокликиванием тоже уберется?

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

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

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

Например мой автомобиль не дает повернуть ключ зажигания, пока селектор КПП не выставишь в положение Р. Что за связывание рук?! А вдруг я хочу заводиться на скорости на парковке?! Безобразие!

Связывание рук и приватные поля - это плохо.

Мнение человека, который не знает зачем это нужно, но «знает», что это плохо. Поэтому к тебе тут так и относятся: нельзя так делать

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

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

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

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

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