LINUX.ORG.RU

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

 , , ,


7

7

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

Какой из ныне существующих языков программирования позволяет программировать мышкой, а не клавиатурой? На чем можно программировать графически, а не в тексте? Пока что это позволяет на приличном уровне только пропиетарное LabVIEW. Трудно поверить, но это единственная полностью графическая среда программирования серьезного уровня в 2019 году! Но даже в LabVIEW есть куча недостатков (которые невозможно самостоятельно устранить из-за пропиетарности).

Графическое программирование намного проще и понятнее. Если в качестве бэкенда брать Си и манипулировать функциями из сишной стандартной библиотеки, это не будет создавать никаких лишних абстракций, зато серьезно упростит жизнь программистам и особенно людям, имеющим дело с чужим кодом. Код любого уровня и любой сложности, представленный в виде графических блоков, станет открытым не только для узких специалистов, но и вообще любому продвинутому пользователю. Простота программирования и эффективность, не меньшая, чем у Си, убьет C++, Python, Java, Javascript и прочую ерунду с раздутыми и полными багов абстракциями (которые Линус не раз крыл матом).

Я уже делаю некое подобие LabVIEW на самом LabVIEW, назовем его Metaprog. Так же, как в 1991 Линус Торвальдс делал линукс, пользуясь пропиетарным Minix. И так же жаловался на кучу недостатков в Minix, желая устранить их в своей системе.

Я уже рисую простенькие блок-схемы. Добился того, что функции, типы, структуры, юнионы из сишных #include сразу отображаются в виде меню, что серьезно упрощает знакомство со стандартной библиотекой Си.

Примеры

Примеры с кодом на Си генерируются автоматически. Они тут же скармливаются компилятору и не предназначены для чтения эстетами, не любящими «абракадабру». Здесь они приведены лишь как пример работы транслятора и для возможности самостоятельно скомпилировать графические диаграммы со скринов. Так сказать, приобщиться к прекрасному.

Самое простое - Hello World. Скомпилируйте (gcc -o ./test ./code.c).

https://i.postimg.cc/YCywWbSh/fwrite.png

#include <stdio.h>

int main(){
char metaprog_array_pointer_10156130170823954432[] = {72,101,108,108,111,32,87,111,114,108,100};
unsigned long int metaprog_variable_13830126042312755200 = 1;
unsigned long int metaprog_array_size_10156130170823954432 = 11;
fwrite(metaprog_array_pointer_10156130170823954432,metaprog_variable_13830126042312755200,metaprog_array_size_10156130170823954432,stdout);

}

Я подписываю терминалы на украинском (сам оттуда), с таким же успехом их можно подписывать на русском, а не только на английском. Можно будет перевести все, кроме, разве что, вызываемых сишных функций, а gcc этого и не заметит (посмотрите код). При работе международной командой можно к каждой подписи/надписи прилагать словарь с нужными языками. Игры ж локализируют, чем визуальное программирование хуже?

Массив декларируется не как строка в кавычках, а как последовательность байтов, а байт - это цифра. Строки редактируются отдельным редактором (пока что средствами LabVIEW, но это временно). Больше никаких проблем и глюков с управляющими символами, кавычками итп (очень серьезная проблема при программировании на Си, Shell scripting и вообще всех текстовых языках).

Константа-массив имеет отдельные терминалы для указателя на массив и длины массива (известной редактору кода). Если терминал длины подключен - декларируется отдельная переменная. Не подключен - незачем и декларировать.

Пример посложнее: запись и в stdout, и в файл ./fwrite-test.txt

https://i.postimg.cc/v8KvKKmQ/fwrite2.png

#include <stdio.h>

int main(){
char metaprog_array_pointer_10156130170823954432[] = {72,101,108,108,111,32,87,111,114,108,100};
unsigned long int metaprog_variable_13830126042312755200 = 1;
unsigned long int metaprog_array_size_10156130170823954432 = 11;
fwrite(metaprog_array_pointer_10156130170823954432,metaprog_variable_13830126042312755200,metaprog_array_size_10156130170823954432,stdout);
char metaprog_array_pointer_12385851444566411264[] = {46,47,102,119,114,105,116,101,45,116,101,115,116,46,116,120,116,0};
char metaprog_array_pointer_16510743873862514688[] = {119,43,0};
fwrite(metaprog_array_pointer_10156130170823954432,metaprog_variable_13830126042312755200,metaprog_array_size_10156130170823954432,fopen(metaprog_array_pointer_12385851444566411264,metaprog_array_pointer_16510743873862514688));

}

В данном примере используется функция fwrite, а не printf. То есть, символ «0» не влияет на запись массива в файл или stdout. Сколько символов писать функция и так знает из длины массива.

Заявки

Принимаю заявки на новые фичи. Пишите в комментариях. Уже приняты заявки:

1. Пример с простым HTTP-сервером.

2. Пример с сортировкой Хоара (quicksort).

3. Простой в пользовании функционал работы со строками (больная тема для Си и С++).

4. Полностью графический функционал работы с регулярными выражениями, без вовлечения PCRE.

Сейчас нужно научить Metaprog «компилировать» блок-схемы прямо в Си и скармливать этот код gcc, получая бинарники. После чего перенести сам Metaprog на Си, чтоб перестать нуждаться в пропиетарном LabVIEW и выложить результаты в опенсорс. И получить за это донат, хотя желательно уже сейчас (для ускорения работы). Bitcoin:1AYoK2TScSpD5bhf67mv9AxHDJ2RidRvjD

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

Более того: я уже сделал себе список из функций Xlib

Чому автоматически не генерируешь?

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

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

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

Не умеет. Он только простейшие строки способен генерить и скармливать gcc. Вот это уровень!

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

Надо его к китайцам отправить. Путь иероглифы поучит, будет слово «проприетарный» кисточкой рисовать пол часа )))

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

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

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

Толмуд по WIN API видели ? Книжкой можно убить. Тоже самое с API для линукса. И как такой список функций нарисовать ?!

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

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

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

Ну как-как? Руками забить в лабвью каждую. Больше забил - больше программист.

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

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

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

Да, править уже нарисованное - это тот еще ад. И контролировать.

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

Да, править уже написанное в тексте - это тот еще ад. И контролировать.

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

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

Теперь это уже похоже на слишком затянувшийся стёб.

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

А чтобы быть хирургом, достаточно уметь резать колбасу, получается. И чего они 10 лет учатся? Неуч с амбициями за месяц справится.

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

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

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

Да, от текста простейший мозг сразу перегревается ))) Ему бы иконочки, да попроще. А потом на комиксы перейдет со временем

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

Теперь это уже похоже на слишком затянувшийся стёб.

Согласен. Расходимся. Нас обманули.

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

Ага, зубрить паттерны ООП и конвенции по написанию кода - вот она, высшая мудрость в вакууме.

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

Твой заработок - 0. Твой уровень - 0. Ты помог 0 людям своими продуктами. Шанс, что твоя поделка взлетит - 0. Мои поздравления.

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

От кого я это слышу? От анонимуса? На чем программируешь? Похвастайся своими проектами.

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

Мои продукты - у работодателя в репе. А ты дальше яйца чеши бесплатно.

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

Владимир

Если исходить из таких критериев, то что можно сказать об тридцати одного миллиона разработчиков с github?

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

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

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

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

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

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

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

Открой для себя книжку по си. Там около 200 страниц. За неделю управишься даже с твоими скудными навыками.

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

Мне хватает интернета и man 3 c_function (к сожалению, приходится пока курить мануалы).

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

Владимир

Так вопрос то адресовался не к вам ..., а в защиту open source.

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

Так вопрос то адресовался не к вам ..., а в защиту open source.

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

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

Среди них много и идиотов, и умных людей. Хорошие вещи там тоже делаются.

Проблема в другом: их инструменты - говно. Си (в чисто текстовом виде, без графики) - сложный. Языки типа С++, Python, Java, Javascript - не менее сложные, но еще и раздутые и глючные. Мне самому доводилось и в тексте кодить, я имею с чем сравнивать. После опыта с текстовым программированием я влюбился в Лабвью с первого взгляда.

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

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

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

Обязательно ли читать много мануалов, чтобы программировать? В Лабвью и Метапроге - нет.

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

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

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

Нужно ли знать язык, чтобы набирать текст? Не нужно, но получится полный бред, а не уровень Достоевского или даже Донцовой.

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

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

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

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

сложнейшие программы (типа того же Метапрога),

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

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

Владимир

Вы хвалите, другие ругают ...

PS: Из фильма.
В село пришли вооруженные ...
Кто такие?
Да вроде за свободу говорят.
Значит грабить будут.

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

Программист должен быть писателем уровня Достоевского? Красиво называть переменные, все делать по конвенциям, красиво форматировать код... абсолютно не обязательно в Лабвью и Метапроге!

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

Красиво называть переменные, все делать по конвенциям, красиво форматировать код...

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

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

Код должен быть очевидным по умолчанию. Накидал схему-алгоритм - и она и работает, и очевидна любому программисту, дружащему с логикой. И никаких конвенций!

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

Код должен быть очевидным по умолчанию. Накидал схему-алгоритм - и она и работает, и очевидна любому программисту, дружащему с логикой. И никаких конвенций!

Для лабораторных работ покатит. В курсаче - туда-сюда. А в реальных проектах - в лужу сядешь.

Спрос на свою поделку можешь в этой теме видеть. 3.5 анонимуса. Да и тех распугал.

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

Главное, чтобы польза была и пользователи. У твоего метапрога с этим проблемы будут к гадалке не ходи.

Ну так а почему лол? Ты опять пришел онли бугуртить?

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

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

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

А, ну все хорошо тогда. Там кстати выше писали, xlib многое делает на процессоре, ускорения нету, ты же прочитал?

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

Проверю на практике. Ведь на Xlib работают все главные DE, разве нет?

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

То есть, с точки зрения производительности лучше Gtk, чем чистый Xlib?

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

Ну получается что так, у меня от кстати XDM медленно отрисовывается на встройке (очень), а OpenGL-based приложения нормально.

VarfolomeyKote4ka ()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)