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

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

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

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

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

Да это один и тот же селюк пишет с разных учеток...

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

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

Вот тут как будто 12-летний писал. Инфантильный стиль речи.

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

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

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

вот среди проекта FoNC/STEP была ссылка на Nile и Gezire. в Nile была PDF презентация со слайдами. там описан workflow на функциональном программировании, операция DupZip для потоков данных. то есть этот конвейер операций — это какая-то монада или монада-трансформер в FRP типа Fran или похожем

всё это также хорошо ложится на реактивный GUI. например, FRP или iFRP. собственно, сам Nile есть пример применения такого DSL для задач 2D отрисовки.

есть мнение, что его можно распространить и на прочий произвольный dataflow.

то есть, можно писать текстовый FRP DSL. а отрисовывать диаграммы полуавтоматически. либо наоборот, натыкать проводочков в диаграммах. и чтобы параллельно лайвкодингово тут FRP такого pipeline сам строился, в кодогенерированном.

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

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

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

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

Это ты на нуле если думаешь что для меня твоя примитивщина какие то сверхзнания. Ну тут сразу виден https://ru.wikipedia.org/wiki/Эффект_Даннинга_—_Крюгера

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

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

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

Жду «не примитивщину» на мегапроге.

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

Самое смешное что многие анонимы сами не смогли осилить текст, и прочесть что такое metaprog, при этом еще и ОП'а критикуют.

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

Увидел ссылку в теме, да?

Опять он. Когда же ты уже осознаешь свою тупость?

Которую я же и отправил?

Еще один не смог осилить текст. Ее до тебя отправляли 100500 раз.

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

Мы уже убедились что ты фанатик без каких либо знаний, тебе сказали Rebol мощнейший язык там все есть, ты и поверил, что ты избранный, остальные глупые и не знают этой мощи! Ух!

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

Ну что-то ты, понятное дело, знаешь. Вон тот же эффект Даннинга — Крюгера. Молодец.

Да ему в треде уже подсказали.

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

Поскольку Ненад с компанией раньше страдали таким же диагнозом, что и ТС, они в ранних версиях слишком дофига внимания уделили GUI, а сетевой I/O оставили на потом (на версию 0.7.0). Так что Red как раз для визуальщины на данный момент - что доктор прописал. Да и HTTP-запросы там уже работают. А иного для прототипа и не нужно.

я вот кстати, не понял по состоянию REBOLv3 на гитхабе. как бы оно не более дохлое чем RED. ну да, интерпретатор ребола классического, с модулями и более first class objects. а в остальном — по моему, RED уже REBOLv3 обогнал в развитии немного.

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

Самое смешное что многие анонимы сами не смогли осилить текст, и прочесть что такое metaprog

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

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

но оги до сих пор не запилили под линукс гтк бекенд дял своего диалект VID,который за гуйню овечает

вот и повод допилить его до ума :)

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

Зачем во что то верить? У тебя шиза?

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

Не немного, а весьма конкретно. Если бы ещё с Network I/O не втыкали, вообще шик был бы.

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

А как иначе убедиться что за забором именно то, что на нем написано?

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

А указатели есть? Чем от Си отличается?

да почти ничем и не отличается, по семантике. синтаксис вот да, гомоиконный со скобочками. читай спецификацию. текстовую.

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

Тем не менее, меня терзают смутные сомнения, что человек задающий такие вопросы

Какие такие? Я написал сразу же правильный ответ в вопросе, но интересно было узнать о реализациях в тех языках что я не знаю. Что именно тебя смущает?

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

Но какие преимущества в сравнении с Си?

гомоиконность и простота кодогенерации на этом языке. например, самим этим языком.

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

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

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

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

Дык тема про него.

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

Когда же ты уже осознаешь свою тупость?

Когда студенты вместо Си с Питоном начнут учить вашу мегахрень.

Мы уже убедились что ты фанатик без каких либо знаний

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

тебе сказали Rebol мощнейший язык там все есть, ты и поверил, что ты избранный, остальные глупые и не знают этой мощи! Ух!

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

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

Ты совсем поехавший? Я уже даже не знаю где жесткий диск с тем язычком.

Deleted ()

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

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

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

например, табличка не двумерная как в экселе, а 4х мерная (NSWE, по сторонам света. и такие далее S одной клетки связать в N другой, например).

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

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

Ты совсем поехавший? Я уже даже не знаю где жесткий диск с тем язычком.

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

anonymous ()

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

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

на реболе как бы не точно такой же пример был. из кнопок туда напрашивается добавить свои новые: test, weave, tangle.

например, makedoc3 на реболе. оно умеет literate programming генерить документацию, то есть weave. ещё на реболе был какой-то WeTan, который в HTML правильный литературный исходник — с оглавлениями, ссылками, индексами генерировал. а можно и не в HTML, а например в VID диалект.

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

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

Дооо...больше доносов Богу доносов. Фу таким быть, мало того что стакачество, так еще и вранье. Я так и сам могу по 4.2 на тебя настучать, но я выше этого.

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

Если все будет в графике, то какая разница сколько где строчек?

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

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

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

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

Самопересекающихся линий нет. Есть линии одинакового цвета. На физике в школе электросхемы рисовал? Там пересечение проводков-линий без точки не считается соединением. А там где соединение - стоит точка (в моем случае - стоят квадратики).

можно же хотя бы layout сделать нормальный, переупорядочить блоки чтобы читалось легче?

Все образуется, это же первые грубые примеры:)

но ведь как-то же всё равно надо описывать ? не методом тыка же ты там проводки скручиваешь

«По наитию»:)

Я не строю воздушных замков из всяких сферических спецификаций в вакууме. Вместо этого ставлю тактические задачи. На сегодня это было вкрутить встроенные блоки для каста типов и для указателей: вписать в указатель/reference, вытянуть из указателя/dereference. Завтра, думаю, уже будет рабочий пример с кастом.

ну звиняйте, пиктограм нема. всё текстом. ты его читать-то умеешь?

Умею, но не всякий текст этого достоин. Я и на русском/украинском далеко не не всякую книгу в руки возьму.

не видно. знал бы хорошо, не было бы 500 воньингов. но для этого нужно читать.

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

работает только у тебя? картинки эти и примеры понятны только тебе? тогда это всё не надёжно. не робастненько.

Несколько человек уже скомпилили, работает. И ты попробуй.

вон, в соседнем треде приводили пример про расчётную программу, где хедер с прототипом fabs не подключил, а слинковал правильно, с libm (оно вроде и так по дефолту). в итоге вместо float fabs(fabs x) получился int fabs(int x). в итоге оно даже иногда работало, когда не глючило.

Это на каком языке такое случилось? Си?

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

будет ограничение на звезду, а оно и к лучшему

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

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

О, ну сейчас ТСу будут объяснять, что такое полнота по Тьюрингу… Течение треда становится несколько однообразным.

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

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

всё уже придумано до нас.

в lush, который http://lush.sf.net тоже есть какой-то диалект чертилки линий и кругов. есть и генерация postscript. оно вроде работает через ivtools, который сам по себе есть библиотека на С++ текстовый DSL для отрисовки диаграмм, в духе plot+graph из plan9 (или gnu-graphics назад в линукс бекпортированного)

то есть, нужно:

1. установить ivtools. проверить отрисовку через comdraw консольку, из примеров, сгенерить postscript какой-то. не совсем тривиально, потому что исходники старые, нужны старые версии зависимостей. хотя последний раз обновлялось за последние 10 лет, так что есть шансы.

2. поставить lush и через него попробовать рисовать диаграммы в postscript диалекте. через comdraw и ivtools.

3. запускать не скрипт руками, а как-то вроде weave/tangle в literate programming. в lush есть какое-то своё средство, на нём help написан. в итоге пишем в одном едином исходнике, через tangle из него генерим lush исходники, которые запускаясь, отрисовывают postscript через lush+comdraw+ivtools (или компилируем их в сишечку, и бинарники запускаем).

а через weave это всё подвёрствывается в книжечку, текст словами (или в tex,lout,u2ps/a2ps, asciidoc, markdown). которую потом смотрим GhostScript-ом.

4. в итоге у нас и спецификация «графического синтаксиса», и рабочий код. работающие, протестированые и вычитанные, два в одном.

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

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

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

Короче я придумал давайте по приколу дружно запилим метапрог в виде металола , вот вам репа жду пул реквестов и иисулей https://github.com/fedor-elizarov/MetaLoL за неделю думаю осилим. :D

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

зачем там массив char-ов идёт не как строка, а байтами. или зачем манглирование имён происходит с цифрами.

Строка - это массив байтов, то есть чаров. Не как строка - чтоб инициализатор не спотыкался об управляющие символы /*'%\" и не добавлял автоматически 0 на конце (это не всегда нужно).

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

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

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

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

Броэ. Я уже высказывал идею в этом треде - по аналогии с темой RS, где чувак начал пилить AntiRS, предложил запилить AMP (AntiMetaProg). Но что ж, стадион так ста… МетаЛол так МетаЛол.

P.S. Концепт пилится уже ж. Как подать заявку на члЭнство в репе?

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

Ну тяжёлую артиллерию в виде пиколиспа я решил не подтягивать (пока что), но так-то да, для внутреннего представления нужен свой графический мини-DSL.

а в чём тут киллер фича пиколиспа? ну да, «Radical Approach for DB RAD development» заставляет задуматься. получить БД с персистентными символами , демона отношений, префикс классы и пролог для запросов практически на халяву. но далее: в GUI он вроде бы толком не может, компилироваться в сишку он тоже толком не может. зато есть FFI, да.

лучше, имхо, взять lush или TXR Lisp. там всё нормально с компиляцией в сишку, лисп типизированный.

в lush из коробки есть GUI, называется OGRE. есть FFI, компиляция в си, диалект для графики, postscript через ivtools+comdraw driver. см. ссылки выше по треду.

в TXR лисп почти тоже самое. только диалект больше заточен на парсинг и обработку текстов. например, какой-нибудь dia2code аналогичный можно сделать, из его XML в PostScript или графический диалект типа Lush.

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

Или ладно, просто форкну, а потом сделаю пуллреквест...

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

Выглядит максимально неюзабельно.

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

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

Форкаешь, делаешь правки, присылаешь пул-реквест я проверяю и мержу в мастер.

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

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

Пусть не строго формальную, но хоть какую-то

на примерах хотя бы.

а то ведь, новая фича в программировании. артхаусно, молодёжно, восьмибитово.

circuit bending, data bending — программирование методом тыка

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

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

на примерах хотя бы

Сейчас он тебя в шапку пошлет, инфа сотка

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

Да ладно, клоуны тоже нужны. Меня они только веселят, хотя цирк развели как в Раде.

Я 4 тему открыл чтобы заголовок править. 5 тоже открою когда правка заголовка для меня закроется.

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

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

ну кстати, Red/System соответствует сишке почти «один в один». так что запилить дополнительный текстовый синтаксис, изоморфный первому и графическому — не проблема.

так что кодогенерация в Red/System должна быть не сложнее сишки. в какой-нибудь «лисп транслируемый в си» типа lush — тоже.

но там ещё есть макросы :) можно насочинять «графические макросы». например, в ДРАКОН-редакторах было что-то подобное — не только ДРАКОН-иконы, но ещё и МАКРОИКОНЫ.

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

anonymous ()
Ограничение на отправку комментариев: