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

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

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

Веб-приложения - это вообще «адъ и Израиль» по производительности. Пример - Electron, восхищаться которым на ЛОРе не принято. Говорят хеллоуворлды на нем жрут по 500 мегабайт ОЗУ. ИМХО делать браузерные, а не десктопные приложения - себя не уважать.

И вообще зачем Джаваскрипт когда есть Си?

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

Веб-приложения - это вообще «адъ и Израиль» по производительности. Пример - Electron, восхищаться которым на ЛОРе не принято. Говорят хеллоуворлды на нем жрут по 500 мегабайт ОЗУ. ИМХО делать браузерные, а не десктопные приложения - себя не уважать.

Электрон — это не совсем то, что я имею ввиду. Я имею ввиду — веб-сайт. Вот пример:

http://orgo.stolarsky.com/

И делается он элементарно. А главное, что если Вы пожелаете переделать всё на GTK, Qt, SDL или что-либо другое — у Вас уже будет готовая концепция, готовый продукт, то на что можно опереться. Я о том, что на D3js делать подобные штуки настолько элементарно, что Вы можете посвятить своё время конкретно Метапроге, генерации кода, и прочему. Фишка веб-сайта в том, что его не нужно устанавливать — кинул ссылку и перешёл. Для обретения популярности это самое то.

И вообще зачем Джаваскрипт когда есть Си?

Да транслировать-то можно во что угодно. Но JS в случае веб-приложения, можно запустит прямо в браузере. Я имею ввиду, что пользователь посетив этот сайт сможет тут же запустить своё приложение. Но это я так. Мысли вслух. Удобство занчит много. Тот же Го взлетел благодаря своей экосистеме. Тому же play.golang.org.

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

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

Прототип у меня уже есть лабвьюшный. И есть даже транслятор. Все пока на Лабвью, перенос, скорее всего, будет по частям. А вместо веб-сайта - метапроговский десктопный клиент с подключением к своему «репозиторию» через тор. Его уже можно будет улучшать, не оглядываясь на ограничения джаваскрипта, D3js и чего-либо еще кроме непосредственно Си.

Но, во всяком, случае, спасибо за совет.

metaprog ()

Решил собрать под свою openSUSE, но нигде не нашёл исходники. Добавь в исходное сообщение, пожалуйста, а то я не хочу смотреть все 4 темы по 1000 сообщений каждое

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

Будет еще. Пока в разработке, релиза альфы еще не было. Когда будет - будет ссылка в шапке.

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

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

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

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

Документация будет прикручиваться к функциям и вообще разным блокам

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

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

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

Отдельная тема — описание стандартной библиотеки. Не думай, что «прикручивание к блокам» тебе его заменит. К примеру, в Qt Creator у меня работает автодополнение кода, есть всплывающие подсказки по всем классам и функциям. Но тем не менее, есть и связная справка, в которой эти же классы описаны последовательно.

Отдельная тема — связь с кодом на других языках.

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

Для меня важно услышать — будет ли в принципе такой документ, или ты хочешь отделаться «прикручиванием документации к блокам» в самой среде?

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

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

Тем не менее, в Метапроге будет своя система справки. Более того: я задумал свой 2-мерный формат документов. Та же диаграмма, но вместо логики программы там будут текстовые блоки, картинки и прочие плюшки. При этом по ней, как и по программной диаграмме, можно будет бегать с помощью зумового интерфейса. Кстати, так можно не только метапроговскую справку делать, а и вообще новое поколение веб-страниц.

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

Ты уже видел, что у меня есть меню из функций и типов? В первой теме. Эти меню можно будет отображать в разном виде: только названия, название+картинка, название+картинка+(названия и типы всех терминалов функции), ...+ (краткая справка, как в Лабвью), ...+(подробная справка) и так далее.

в виде отдельной цельной PDFки оно будет? Которую я могу полистать, поскакать с одной части на другую и даже (иногда и такое нужно бывает) распечатать для чтения в поезде?

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

как выглядит проект на макроуровне. Как я понял, у тебя проект — это ещё одна диаграмма, она тоже должна быть описана. Вопросы физической организации файлов. Проект это всегда один файл с мега-диаграммой, или куча файлов, между которыми есть связи? Как это выглядит в случае написания и использования своих библиотек.

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

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

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

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

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

metaprog ()

Кстати говоря я тут подумал, а не сбацать ли графическое ИДЕ для существующего текстового языка? Тут и придумывать в сфере компиляции ничего не надо, и взаимодействовать с теми, кто продолжает работать в тексте проще, и комбинировать текстовый ввод с графическим легко. Всего-то надо сохранять результаты работы в виде пары «отформатированный сорец на таргет языке» + «карта расположения на экране». Причем было бы очень хорошо, если получится обойтись вовсе без второго, раскидывая элементы по экрану автоматически. Это же насколько гибкая была бы среда, если в ней можно было ставить акценты, которые сами переставляли конструкции по экрану так, чтоб показать требуемый срез (например все обращения к определенной переменной).

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

Ты предлагаешь совместить текстовое и графическое программирование. Впихнуть невпихуемое. В этой области уже есть Дракон и Scratch. Но такие полумеры не особо добавляют удобства ни тем кто предпочитает графику (как я), ни тем, кто предпочитает текст. Лучше если и делать графическую среду программирования, то предполагающую полный отрыв от текстового кода. В этом, кстати, есть положительный пример: Лабвью.

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

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

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

@q0tw4, @kostyarin_, @ZenitharChampion,

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

2 @hobbit: неужели даже после фееричнейшего FAQ в шапке треда у тебя всё ещё есть надежда образумить беса?

P.S. ЛОР должен знать своих героев. Ну а на случай, если юродивые начнут там что-то править, вот версия из Wayback Machine.

P.P.S. Я предупреждал? Предупреждал…

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

Короче, я понял. Описания языка мы не дождёмся.

Ну или говорить более толерантно, человеку, который услышал про Метапрог и хочет бегло глянуть описание языка, вместо скучного посещения doc.metaprog.org будет предложено:

  • скачать и поставить Метапрог;
  • сделать конвертер 2д-документов в пдфки;
  • конвертировать эти самые 2д-документы (причём без описания непонятно, откуда их вообще дёргать);
  • PROFIT!

Не. Это не приближает паблосуржик.

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

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

Появился на ЛОРе сравнительно недавно, в феврале 2019

В конце марта.

не знает разницы между циклами while и do..while

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

(не знает разницы между) синхронными и асинхронными сокетами

Уже знаю. И асинхронные вызовы уже использую, даже в примерах есть.

Инглиш не знает, считая его засилие величайшим злом в IT

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

https://groups.google.com/forum/#!topic/comp.os.minix/wlhw16QWltI

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

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

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

Не совсем так. Будет предложено скачать и поставить/скомпилировать Метапрог и пройти интерактивную обучалку.

Все хелпы будут внутри, по крайней мере я лично заморачиваться с doc.metaprog.org вряд ли буду. Максимум статьи на Хабре, когда все будет готово для применения более-менее широкими массами.

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

Будет предложено скачать и поставить/скомпилировать Метапрог и пройти интерактивную обучалку.

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

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

ЛОР должен знать своих героев.

Хм, ты про ТСа накатал больше, чем написано про Кащенко, Вальмана и Миниробо вместе взятых???

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

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

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

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

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

Не подскажешь какой тип возвращают сишные операторы сравнения?

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

Мне надо знать какие типы можно использовать как селектор в структурах if...else и case...switch. Любые целые или как?

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

заморачиваться с doc.metaprog.org вряд ли буду

Домен-то хоть застолби, первооткрыватель.

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

Я в Лабвью только что увидел - в знаковых и беззнаковых целых от 0 до половины предела значения на бинарном уровне полностью совпадают. Например в знаковом 8-битном 7E это 127 (максимальное), а 7F это уже -128, тогда как в знаковых все идет насквозь от 0 до FF.

Какя же классная Лабвью вещь, позволяет на ходу так экспериментировать. И какие в NI идиоты, что не толкают Лабвью как среду универсального программирования. Ну им же хуже, вместо их пропиетарщины универсальной графической средой будет Метапрог.

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

Рановато еще. Но он может и не понадобиться, в самом Метапроге будет весь функционал для работы с репозиторием с собственным кодом (скорее всего все будет через tor).

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

А целые какого типа можно скармливать всяким if/case? Любого?

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

Когда будет не рановато, будет поздновато: домен уведут «на всякий случай». И фиг ты что докажешь. Вот прямо сейчас сунься к ближайшему регистратору и застолби. Есть не просит.

Но он может и не понадобиться

Господину киберсквоттеру это расскажешь.

скорее всего все будет через tor

А что делать тем, кто не пользуется тором? Это ведь всё-таки довольно специфическая штука, и не всем подходит. Многих напрягает, что у них на компе лежит неизвестно что неизвестно от кого.

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

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

Нет, конечно. Зачем клоуну-амёбе с СДВГ давать повод почувствовать себя равноценным участником дискуссии? А также повод лишний раз отвлечься от собственного поделия.

P.S. А так-то у меня даже свой «болгенос» имеется, правда, мобильный. И там и вправду есть кое-что принципиально новое и, возможно, даже революционное. Но чтобы запостить такое на ЛОР или подобные ресурсы, надо совсем обладать отбитым наглухо инстинктом самосохранения.

P.P.S. Сейчас ты скажешь, что я «слился» и т.д. — предсказуемая реакция ламеров и прочих МД на то, что с ними брезгуют общаться, как с равными.

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

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

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

Нет, конечно

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

чтобы запостить такое на ЛОР или подобные ресурсы, надо совсем обладать отбитым наглухо инстинктом самосохранения

При чем здесь самосохранение?

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

Всё, что не 0, будет считаться за true. Си довольно-таки безалаберный язык в этом плане.

и что в этом безалаберного?

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

С документацией к Метапрогу сможешь помочь, буду только за.

Нет, я тихо фигею. Вообще-то, это ТВОЙ язык и ТВОЯ идея. И это ты в первую очередь должен быть заинтересован в его однозначном описании, а не дядя Вальман с ЛОРа или хабра.

Если ты передоверишь кому-то сделать документашку ТВОЕГО языка по интерактивной обучалке — обязательно будут неоднозначности и некорректности. По описанию можно (и даже нужно) сделать обучалку, и это как раз можно поручить другим людям, которые в этом поднаторели. А вот наоборот — нельзя, ты сам от этого описания обплюёшься после того, как поймёшь, что оно нужно, и что тебе понаписали совсем не то, что ты имел в виду.

Как дочку в публичный дом сдаёшь, ей-богу...

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

Зря распинаетесь. Пациент...

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

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

скорее всего все будет через tor

Дался тебе этот тор. Он во многих странах вообще заблокирован. Отсекаешь аудиторию потенциальную же.

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

Графическое ide для текстовых языков.

Уже были у людей какие-то подвижки. Пример: https://habr.com/ru/post/127288/

Правда, это всего лишь генератор картинок-диаграмм для текстового кода, а не ide. Но человек дальше не развивал эту идею.

А вообще, серьёзные ide'шки и так парсят ЯП и показывают в гуе в виде списка, например, список полей и методов класса в этом файле для удобной навигации по коду.

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

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

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

Лучший способ - программировать блоками, вообще без текста, как в Лабвью (в Метапроге тоже так будет). Тогда такие глупые проблемы со всякими там кавычками, скобками, фигурными скобками итп отпадают сами собой!

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

Да. А какое у них население. К тому же твоя разработка к естественному языку не привязана - китайцам как раз хорошо бы было. А ты их тором.

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

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

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

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

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

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

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

В общем хорошо было бы вынудить Китай разблокировать тор:)

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

У них вообще интернет куда хуже чем в нормальных странах.

У них интернет куда лучше чем у тебя. Но только внутренний сегмент.

В общем хорошо было бы вынудить Китай разблокировать тор:)

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

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

Пускай делают. Даже ютуб заблочили и свой сделали. Но все равно не то. Ладно, посмотрим еще как с этим быть. Украина, Россия, Европа и Америка ведь не отпадают с тором?

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