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

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

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

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

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

громоздкость их рантаймов

Тут не поспоришь, жирноваты.

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

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

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

Ого, Red даже без network I/O? А ты хотел, чтобы я променял 47-летний Си с огромным багажом исходников, библиотек, кодом ядра Линукс, системных служб и кучи прикладных программ и прочими плюшками на недоделку даже без сетевого функционала? Которую мне еще и учить, в отличие от Си? И транслятор тоже переделывать... И кто из нас выглядит глупее?

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

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

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

Тебе просто надо расширять кругозор, в современном мире бизнесу главное 50 базовых типов, а не какой то там устаревший TCP/IP!!!

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

Там другая логика, ты не создаешь элементы в окне, а рисуешь их. В Gtk ты добавляешь элементы в окно, а он там сам как то... В Nuklear ты сам творец %) Вот тебе что бы понятно было различие, два примера, на Nuklear и Gtk, они нерабочие эти примеры, я псевдокодом написал.

Подход Nuklear.

if(nk_window("Окно с элементами", 400, 500)) {
	nk_label("Текст, просто текст.");
	if(nk_button("Кликни по мне")) {
		printf("Вы кликнули по кнопке!");
	}
}

if(nk_window("Пустое окно с размером 200x200", 200, 200)) {
	
}
Подход Gtk.
void onclick() {
	printf("Вы кликнули по кнопке");
}

GtkWindow *win1 = gtk_create_window("окно с элементами", 400, 500);

GtkLabel *lab = gtk_create_label("Текст, просто текст");
gtk_container_add(win1, lab);

GtkButton *btn = gtk_create_button("кликни по мне");
g_signal_connect(btn, "click", onclick);
gtk_container_add(win1, btn);

GtkWindow *win2 = gtk_create_window("Пустое окно с размером 200x200", 200, 200);

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

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

Как там с аппаратным ускорением графики?

Сам он не занимается отрисовкой как я уже сказал выше, но есть несколько драйверов которые занимаются...

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

Нету, там без коллбеков система. На if'ах он строиться в основном.

на события типа клик мышкой

Ну поймать клик мышки в нем легко, свои элементы сделать тоже! Вот к примеру нужна тебе надпись любая, и рядом кнопка Ок, как это можно реализовать в Nuklear:

#define CLICK    1
#define NO_CLICK 0

int my_gui_element(const char *text) {
	nk_label(text);
	if(nk_button("Ok")) {
		return CLICK;
	} else {
		return NO_CLICK;
	}
}

my_gui_element("Text");
my_gui_element("Текст");
my_gui_element("Надпись");

Может все же его взять вместо гтк?

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

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

А как в Nuklear с асинхронностью? Легко ли прикрутить? Или может с гуем оно не так уж и нужно?))

А, и с графическим ускорением как? Я видел скрины даже с играми, вроде должно быть - или нет?

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

Ого, Red даже без network I/O?

А в C (как языке) он с каких пор появился?

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

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

А вот ты открыть HTTP URL как файловый дескриптор без потусторонних библиотек не можешь.

Могу открыть с помощью socks5 не напрягаясь, чего не может Red.

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

А как в Nuklear с асинхронностью?

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

А, и с графическим ускорением как?

Я же писал выше, он даже отрисовкой не занимается, ему нужны драйверы, они есть. Вот тут лежат https://github.com/vurtun/nuklear/tree/master/demo и как видишь можно отрисовывать через GDI (Windows), X11, X11 + OpenGL, SDL + OpenGL, итд.

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

Не-а. Не сможешь ты сделать так, чтобы fopen вместо файлов открывал урлы, а fread делал GET по HTTP вместо чтения файла. Не говоря уж о том, что и OpenSSL в стандартную библиотеку не входит.

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

Не-а. Не сможешь ты сделать так, чтобы fopen вместо файлов открывал урлы

Стандарт С существует для переносимости кода между компиляторами. Вдумайся в эту фразу. Не обязательно себя ограничивать МИНИМАЛЬНЫМ наобором, он не для того нужен!

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

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

fopen('http://...')
, почему нет? Это даже будет полностью соответствовать стандарту.

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

Тут смотри, какая загогулина получается:

  1. Си чисто как язык умеет чуть менее, чем ничего. Без инклудов от него толку ноль. Даже хей-лох-ворлд не вывести.
  2. Си + стандартная библиотека — толку уже гораздо больше. Академично и кроссплатформенно. Однако туда ни системные вызовы, ни расширения компилятора не входят, ни тем более сетевое взаимодействие. Те же сокеты — штука уже платформозависимая по факту. Для stdlib сети не существует, смирись.
  3. Си + прочие библиотеки — то, что используется IRL. Но загогулина-то в том, что эти библиотеки могут использоваться и из других языков, поддерживающих ту же конвенцию вызова, но при этом по пунктам 1 и 2 находящихся лет на 50 впереди Си.

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

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

Си чисто как язык умеет чуть менее, чем ничего. Без инклудов от него толку ноль. Даже хей-лох-ворлд не вывести.

Да. Кстати, ассемблер тоже.

Си + стандартная библиотека — толку уже гораздо больше.

Я тебе уже рассказал какой от нее толк.

Однако туда ни системные вызовы, ни расширения компилятора не входят

Однако никто и не запрещает им туда входить.

Те же сокеты — штука уже платформозависимая по факту.

Да, но к примеру libcurl поддерживает платформ больше чем Red, так что где тут минус? Где? Наоборот у С плюс, он может юзать платформозависимые вещи, а это оптимизация, это возможности.

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

Бредятина. Только если это библиотеки с одной функцией void hello_world(void), иначе нужно вручную писать обвязки, плюс многие возможности будут ограниченны, попробуй использовать библиотеку для математики с inline, atomic где? Где int128? Нету ничего в этом отсталом язычке.

Или сравнивай Ред со стандартным рантаймом и Си со стандартной библиотекой

Нет, я сравниваю Red с библиотеками, и С с библиотеками, у С все готово, на Red нужно епстись.

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

sdl_opengles2! Тому ще SDL предоставляет кросплатформенный интерфейс, для кучи всего, ну и OpenGL ES, он есть для всех устройств.

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

Я тоже так подумал. OpenGL ES это то что будет ускоряться видеокартами (и их подобиями на других устройствах)?

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

Есть OpenGL а есть OpenGL ES, второй он типа урезанный, но зато он есть на телефонах к примеру, и на raspberry pi, на компьютерах он тоже есть конечно. Так можно будет запустить программу не только на ПК но и на мелких устройствах!

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

Дай правильную командную строку, чтобы тот пример скомпилить. Я поставил пакет libsdl2-dev, этого хватит?

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

Кстати, благодаря SDL2 + OpenGL ES такие программы можно будет запускать в браузере!

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

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

Однако есть другие вопросы. Для сетевого функционала с асинхронными сокетами брать gio или есть альтернативы? gio не будет жрать по 30 мегабайт, как гтк?

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

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

А еще легковеснее, чем гтк.

А то, вообще Nuklear можно юзать даже в микроконтроллерах.

Для сетевого функционала с асинхронными сокетами брать gio или есть альтернативы?

libuv есть для асинхронности, легкая библиотека, и кросплатфоременная. Есть более быстрые, но они онли unix.

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

Ну и таким образом, отказавшись от gtk, gdk, glib+gobject можно полностью избавиться от ООП %)

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

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

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

уже работающего

Пока что не работающего по 2 причинам:

  1. Язык ещё по вашим словам «в разработке»
  2. Нет релиза

А вот изучение Хаскела я бы не советовал выбрасывать – когда надоест метапрог, будет очень интересно сменить парадигму. Но это на будущее.

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

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

Но вообще об этом лучше таки спрашивать ТСа, а не меня.

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

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

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

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

Анну Каренину я смог осилить только в пересказе Никонова.

Охотно верю. Та же история, что и с руководствами по языкам программирования.

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

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

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

те же глупости из области межчеловеческих отношений

Вот только техника делается, как ни странно, людьми, в ходе „межчеловеческих отношений“.

Могла быть и ручная дрезина

Оно и видно, что дальше Никонова ты не осилил. В оригинале явно упоминается поезд, вагоны (Анна всё выбирала, куда броситься), так что твоя дрезина пролетает со свистом.

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

Пока что не работающего

Кое-как, но работающего. По крайней мере, для меня.

когда надоест метапрог, будет очень интересно сменить парадигму

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

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

Ах, перебег с большого универсального glib на минималистичные библиотеки: 1 для гуя, 1 для сети... Это оптимально для небольших утилит вообще без гуя. А для любой крупной программы, да ещё с гуем - лучше как раз «всё в одном». Этот перебег с одной библиотеки на другую ощутимо замедлит скорость разработки (а если понять, что в нуклеаре надо кучу типов виджетов самим велосипедить - вообще *опа). +- 30 мегабайт оперативы не важно для конечного пользователя, учитывая, что это не влияет на плавность интерфейса.

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

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

И вообще, спросишь у дотнетчика - чем так хорош .NET, а он ответит - «универсальная огромная стандартная бибилотека», а потом уже остальные +. Спросишь джависта, котлиниста, скалиста - «универсальная огромная стандартная бибилотека» опять же, главный плюс. По историческим и не только причинам Си и С++ имеют весьма минималистичные стандартные библиотеки. В последнее десятилетие С++ std ощутимо обросла «вкусняшками» «из коробки», но всё равно, до .NET/JVM не дотягивает. А вот Qt как раз вполне на уровне .NET/JVM. Опять же, glib - это тоже уровень .NET/JVM, но для сишки. Отказываться от такого - совсем не норма для прикладного программиста, особенно если программа с гуем.

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

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

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

«универсальная огромная стандартная бибилотека»

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

Ах, перебег с большого универсального glib
Это оптимально для небольших утилит вообще без гуя.

Это производительность, это возможности, это простота. Вот от Gtk не очень хочется отказываться, так как там файловые диалоги и системные темы... Но под Windows все плохо с ним.

Опять же, glib - это тоже уровень .NET/JVM, но для сишки

Нет. Это скоре плюсовая std:: для сишки.

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

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

Gtk никакой плавности точно не даст.

(а если понять, что в нуклеаре надо кучу типов виджетов самим велосипедить - вообще *опа)

Там это очень легко делается.

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

Раз «антиметапрог» на основе red отложен в долгий ящик, я могу бросить вызов. На днях я провалил собеседование на C++/Qt разработчика, очень неприятно. Вот как раз хочу написать приличную программу на этом стеке.

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

Описание других идей приветствуется.

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

Если начну, то обещаю релиз чего-то хоть как-то полезного раньше, чем релиз метапрога с полезным функционалом.

Однако я не начну, пока не будет хоть несколько человек «нужно, начинай» + помочь конкретнее сформировать суть проекта «схемы для скриптов»

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

Там это очень легко делается.

Всё равно гораздо быстрее просто взять готовое и пользоваться.

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

Хммм, может все же спира поставишь Лабвью и будем совместно работать над Метапрогом?:)

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

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

Libuv is the asynchronous library behind Node.js.

Там чистый Си? Никаких багов не будет? Чем отличается от gio? Тоже все на ифах, как в нуклеаре?

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

Никонов, если ты не в курсе - это махровый провокатор, у меня периодически создаётся ощущение, что он получает зарплату в Московском Патриархате РПЦ. По крайней мере, он делает всё, чтобы попам было на кого тыкать пальцем и верещать: «вот они, атеисты, ну, тупые!»

Из Никонова я прочитал только Каренину в его пересказе и еще одну книжку про феминизм и феномен SJW, кстати понравилось.

В оригинале явно упоминается поезд, вагоны (Анна всё выбирала, куда броситься), так что твоя дрезина пролетает со свистом.

Поезд и вагоны упоминаются, а локомотив и его тип? Может это был моторвагонный подвижной состав, экспериментальная электричка Пироцкого? Хотя Пироцкий, насколько я знаю историю, заставил двигаться только один тяжелый вагон, а если они во множественном числе - то моторвагонная электротяга пролетает, а электровозов еще не было. Стоп, а если моторный вагон Пироцкого и еще прицепленные обычные - почему бы нет? Но несколько вагонов вполне себе могли быть на конной или даже ручной человеческой тяге, если именно паровой локомотив не упомянут. Кстати, если все же паровоз, то какого типа и чем он топился? Дровами? Углем?:)

Вот только техника делается, как ни странно, людьми, в ходе „межчеловеческих отношений“.

Именно по этой причине я считаю нужным между делом немножко поприкалываться:)

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

В сравнении с твоим лабвью весь рантайм того же хаскеля — пушинка. Да что хаскеля — даже элма. Так что не надо ля-ля.

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

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

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

Кто знает как оно там в сравнении, но в любом случае от Лабвью я хочу отказаться после раскрутки.

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