LINUX.ORG.RU

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

 , , ,


4

3

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

FAQ

1. Где скачать?

Релиза еще не было. Идет разработка, темы посвящены ей. Есть сделанный на LabVIEW прототип (его работа показана в примерах).

2. Почему не открыт код LabVIEW-прототипа Метапрога?

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

3. Почему не Дракон, MIT App Inventor, Unreal Blueprints?

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

4. Чем плохи LabVIEW или MyOpenLab?

LabVIEW пропиетарный, а MyOpenLab - хоть и опенсорсный, но какой-то недоделанный (пытался у себя запустить - выдало джава эксепшоны). Да-да, опенсорсный «клон» LabVIEW написанный на джаве! LabVIEW хотя бы на C++, а это все же меньшее зло. Обе эти системы даже не сделаны «сами на себе» в графике. Они даже не пытаются претендовать на универсальную замену всем текстовым языкам, хотя LabVIEW могло бы, если бы не тупость копирастов. Эти системы написаны на текстовых языках, их код (даже если б LabVIEW был опенсорсным) невозможно редактировать, ни разу не обращаясь к текстовым языкам. Метапрог изначально предполагает полный отрыв от текста и текстовых языков, за исключением Си как бэкенда. И то пользователям никогда не придется иметь дело с текстовым Си за исключением блоков сишных вставок (для особых случаев типа арифметических операций, ассемблерных вставок итп).

5. Почему как бэкенд выбран именно Си?

Си - это по сути мощный «кроссплатформенный ассемблер». На нем сделано огромное количество кода, готовых библиотек, в Линуксе (и вообще UNIX) Си - общепринятый стандарт для системного программирования. Кроме того, на Си делаются прошивки микроконтроллеров. Си работает быстро, не требует тяжелых и глючных рантаймов, и в то же время дает наиболее полный контроль над поведением программы (из кроссплатформенных языков).

6. В Си указатели и ручное управление памятью. Это же так сложно!

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

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

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

8. Почему в Метапроге будут предпочитаться бинарные форматы и чем это лучше?

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

http://zone.ni.com/reference/en-XX/help/371361R-01/glang/flatten_to_string/

http://zone.ni.com/reference/en-XX/help/371361R-01/glang/unflatten_from_string/

Что-то подобное будет и в Метапроге. При открытом коде никаких сложностей с чтением бинарных файлов не будет.

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

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

Примеры

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

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

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

Прокручиваемая и выделяемая строка с автопереносом

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

https://pastebin.com/SWJJwvvC

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

Скрины подфункций в следующем примере.

Тот же пример, но покрасивее

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

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

На сей раз не поленюсь сделать скрины и объяснить их суть.

В подфункциях есть три вида контейнеров с данными: константа (стала, constant), контроль и индикатор (сверху вниз):

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

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

Сама подфункция «главное окно»:

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

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

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

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

Подфункция для подцепки асинхронных функций:

https://i.postimg.cc/3r0rYVCS/image.png

Добавить объект в контейнер:

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

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

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

Делаем лейбл (и любой другой нужный виджет) прокручиваемым:

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

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

https://pastebin.com/16bq1Jbs

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

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

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

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

Беззнаковое 32-битное, означающее размер массива (темно-синий провод) кастуется в знаковое 32-битное (светло-синие провода и пустая константа, задающая тип). Функция gtk_text_buffer_set_text в качестве размера строки берет беззнаковое, а не знаковое, как принято - видимо, чтобы через "-1" говорить, что строка нуль-терминированная. Но из-за этого вместо 4 гб строки туда можно подать лишь 2 гб - аж в 2 раза меншье! Что за люди?

Тем не менее, с нуль-терминированными функциями в текстовых полях покончено - и это победа!

https://pastebin.com/hQRMSZ1s

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



Последнее исправление: CYB3R (всего исправлений: 7)

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

Кстати, а тема тестирования поднималась?

Зачем тестировать hello world? С 50-го раза заработало кое-как да и норм - у автора улыбка до ушей от свершения. Ведь юнит-тесты придумали любители матана и коммерсанты, чтобы сельские попрошайки не могли кодить.

Первая часть Незнайки (где он разные профессии пробует) хорошо автора описывает.

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

У меня не вопрос, у меня предложение: вот эту картинку сохрани где-нибудь отдельно, а месяца через полтора достать и попробуй объяснить, что это такое и что оно делает.

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

Нафига нужна твоя подвязка коллбэков под капотом подфункции (кстати, объясни, что ты понимаешь под словом «подфункция», а то твои определения, как и у Дедала в своё время, очень разнятся с общепринятыми)? Что это упрощает, блджад?!

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

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

Это какие-то абстракции, фу.

У меня сложилось впечатление, что автор «изобрел» граф управления и предлагает его рисовать руками.

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

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

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

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

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

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

Да понятно это уже всем давно...ну кроме аффтора. Кстати диа научить генерить ред код, вроде. Если да, то твою схему уже можно прям сразу реализовать уже прям в ui и всем нужным функционалом.

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

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

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

Ну там есть такая тулзовина, как dia2code, но этот момент требует дополнительного изучения. Спасибо за наводку, гляну. А то велосипедировать, в отличие от, как-то по минимуму хочется.

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

Наконец-то твои схемы. Любопытно.

1. Где цвета кроме белого и черного? Как без них понимать какие где типы?

2. Почему всякие там layout, title, font надо прописывать ручками в тексте, а не подключением терминалов? И еще надо помнить названия возможных полей и кавычки ставить? А что если надо в выводимой строке показать кавычку?

3. Почему не используется енумы или что-то подобное для задания фиксированных значений (как в layout) и надо помнить каждое название возможного значения?

4. Почему все на английском в конце концов, есть ли возможность перевести все на русский и украинский?

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

Закопайся же!

Где цвета кроме белого и черного? Как без них понимать какие где типы?

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

В UML, если что, изредка используются ещё красный и жёлтый цвета. И всё. Остальное ненужно от слова вообще.

Почему всякие там layout, title, font надо прописывать ручками в тексте, а не подключением терминалов?

Потому что это проще, дубинушка.

И еще надо помнить названия возможных полей и кавычки ставить?

Это уже нарисованная диаграмма. IDE сам предложит список свойств и подставит кавычки.

А что если надо в выводимой строке показать кавычку?

Эскейпинг изобрели ещё в твоём любимом Си, дубинушка. Только здесь чуток по-другому, чем в Си: ^ вместо . Кавычку вводят как ^", а знак ^ - как ^^.

Почему не используется енумы или что-то подобное для задания фиксированных значений (как в layout) и надо помнить каждое название возможного значения?

А кто сказал, что они не используются на бэкэнде, дурень? Или ты предлагаешь пропускать всю введённую в управляющие конструкции дичь?

Почему все на английском в конце концов, есть ли возможность перевести все на русский и украинский?

Только после того, как ты вызовы GTK на них переведёшь, ага. Ты даже не въехал своим межушным ганглием, что read, write и request-file - это УЖЕ вызовы бэкэнда, то бишь Red, в котором это всё уже реализовано.

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

Вот более точное построение.

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

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

См. выше: пассажир уже нашёл, к чему придраться. Нецветасто, видите ли, и кавычек слишком много.

rebforce
()
Ответ на: Закопайся же! от rebforce

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

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

Динамическая типизация... В твоем реде/реболе тоже так? Ужас. Вангую баги и неоднозначности в духе PHP, там тоже динамическая типизация. Конечно же цвета не нужны, ведь тебе по барабану какие типы у тебя там. Это у меня каждый цвет означает свой тип, у тебя же типов как таковых вообще нет.

IDE сам предложит список свойств и подставит кавычки

К чему тогда вообще кавычки и единое текстовое поле? Делай таблицу свойств и в зависимости от типа (опять типы, черт бы их побрал:)) либо текстовое поле, либо цифра, либо список выбора и так далее. Кстати, примерно так я буду делать в Метапроге.

Эскейпинг изобрели ещё в твоём любимом Си, дубинушка. Только здесь чуток по-другому, чем в Си: ^ вместо . Кавычку вводят как ^", а знак ^ - как ^^.

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

предлагаешь пропускать всю введённую в управляющие конструкции дичь?

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

Только после того, как ты вызовы GTK на них переведёшь, ага

Все что выше вызовов непосредственно сишных функций я называю по-украински.

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

Где цвета кроме белого и черного? Как без них понимать какие где типы?

Омг! Это тело говорит что текстовое погромирование сложна! Тоесть ты предлагаешь УЧИТЬ что какой цвет значит? Ты предлагаешь ЧИТАТЬ мануалы или смотреть видео для того чтоб твою кашу понимать? Цветов вообще должно быть по минимуму. Нейтральный, важный (например для варнингов) и критический (для ошибок). Все остальное это визуальный мусор. В принципе все твои схемы это мусор. Ты хоть в курсе, что у ni есть целая программа обучения работе в этой самой лабвью?

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

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

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

Делай таблицу свойств и в зависимости от типа (опять типы, черт бы их побрал:)) либо текстовое поле, либо цифра, либо список выбора и так далее. Кстати, примерно так я буду делать в Метапроге.

Зачем? Чтобы без ста грамм точно никто кроме тебя не разобрался, и ты сохранил своё ЧСВ?

Все что выше вызовов непосредственно сишных функций я называю по-украински.

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

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

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

А там не в словечках дело было вовсе, а в самой структуре. Так — понятно. И было бы понятно (хотя и менее) даже на украинском. Как у тебя — не будет понятно и на английском.

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

Ты хоть в курсе, что у ni есть целая программа обучения работе в этой самой лабвью?

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

У меня вообще будет встроенная в Метапрог обучалка, как в играх. Обучение должно быть предельно простым.

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

Если ты дальтоник - то ты прав. А так глупо не использовать возможности человеческого глаза.

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

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

Вперёд назад к наскальной живописи. Рисуем граф руками, а не генерим его из описания.

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

Да я вот глянул на Dia - что-то грустно стало, там UML урезанный и т.д, да и под XQuartz еле завелась (гусары, молчать - казённым мракбуком тоже пользоваться приходится, не только уютненьким арчиком). Graphviz таки поуниверсальней будет, да.

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

И я всячески «за» визуальную (графическую) модульную сборку, но при высоком уровне абстракции. А абстракции — это уже матан и Тьюринг. Не катит.

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

В контексте данных тредов известную фразу Паука «трэш, угар и содомия» можно заменить на «текст, матан и Тьюринг».

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

Это не просто матан. Это рекурсия. Кстати аффтор про нее тоже не вкурсе.

anonymous
()
Ответ на: удаленный комментарий

Никому в бизнес-логике твои гпоинтеры и бинарные инициализаторы не упали

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

https://habr.com/ru/post/434478/

В ИТ делают хорошие вещи, но их процент ничтожно мал. Большинство обслуживает дурацкие потребности, которых раньше просто не существовало, потому что не существовало ИТ. То есть, инженеры не делают великие вещи, инженеры просто поддерживают инфраструктуру перекачки бабла между людьми. В таких условиях писать хороший код перестает быть необходимым. Это нужно только для того, чтобы мне было веселее работать, и я подольше не выгорал. Но рано или поздно приходит топ-менеджер и говорит: «Все, заколотите гвоздями и пуляйте. Пора стричь бабло».

https://habr.com/ru/post/432052/

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

https://habr.com/ru/post/423889/

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

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

Поэтому я хочу заявить: нынешняя ситуация — полное дерьмо. Как инженеры, мы можем и должны, и сделаем лучше. У нас могут быть лучшие инструменты, мы можем создавать лучшие приложения, более быстрые, предсказуемые, более надёжные, использующие меньше ресурсов (на порядки меньше!). Мы должны глубоко понять, что мы делаем и почему. Мы должны выпускать продукты надёжно, предсказуемо, с самым высоким качеством. Мы можем и должны гордиться нашей работой. Не просто «учитывая то, что у нас было...» — никаких оговорок!

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

И на десерт https://ebanoe.it/ да простят меня модераторы за нецензурную ссылку:)

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

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

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

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

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

Давно заметил, что ТС цитирует всякие быдлоресурсы в том случае, когда самому сказать нечего. Он даже не знает, что такое бизнес-логика. И не подозревает, насколько он сам со своей быдлокодерской Мегапрогой останется не у дел (если она, конечно, будет допилена в этом столетии, в чём я лично сомневаюсь…)

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

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

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

Там общие фразы не о чем.

А как будет у тебя выглядеть что-то посложнее простейшего текстового редактора? Скажем, аналог экселя и ворда. Либре офис в этом плане глючный и с тормозами, сможешь сделать лучше? И сохранится ли при этом твоя «простота»? Или все же придется с типами да указателями?:)

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

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

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

Либре офис в этом плане глючный и с тормозами

Это в каком месте?

Или все же придется с типами да указателями?:)

Там нет «типов и указателей»

Deleted
()

Тема слишком большая. Удалите.

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

Ибо я знаю, что он ни хрена из написанного там не поймёт.

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

Смогу, но мне это нафиг не упало, ибо 1) и так есть нормальные инструменты, 2) за 7+ лет пользования оными я уже отвык от мышления виндорастическими категориями типа «офисных пакетов».

А вот ты не сможешь. Вообще, в принципе и никогда.

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

Скажи лучше что сложнее простого текстового редактора сможешь запилить на том, что задумал? Я, если что, позиционирую свое решение как универсальное. А ты?

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

Я-то тоже. Есть одна загвоздка: универсальность - далеко не единственный критерий. Машина Тьюринга тоже универсальна, равно как и язык Brainfuck, скажем. Как и мой Myth, скажем. То есть да, на них теоретически решаются задачи любой сложности. Но попробуй на них написать что-то вменяемое и понятное, ага.

Ну так вот, что толку от универсальности твоего поделия, если оно, судя по содержимому всех 4 тредов, неюзабельно чуть более, чем полностью? И не будет никогда юзабельно, потому что автор неадекватен чуть более, чем совсем?

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

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