Автор Гілка: Metaprog: універсальне графічне середовище програмування  (Прочитано 11422 раз)

Відсутній metaprog

  • Новачок
  • *
  • дописів: 9
  • Карма: +0/-0
Я не професійний програміст і пробував писати на кількох текстових мовах програмування, але це неодмінно означало гугління, читання книжок та інструкцій неукраїнськими мовами. Але мені довелось позайомитись з LabVIEW - графічним середовищем програмування. Засвоїв інтерфейс - і далі все було легко. Не прочитавши жодної книжки з програмування та не користуючись гуглом, я можу будувати програми, що оперують мережею, рядками, файлами та ін.

Але, на жаль, LabVIEW - пропієтарна річ з закритим кодом та дорогими ліцензіями, що дуже стримує його поширення. Воно має купу обмежень, що не дає йому змогу стати універсальним середовищем програмування, здатним замінити текстові аналоги. Тому я вирішив створити його аналог з відкритим кодом: Метапрог.

Метапрог - блоковий конструктор діаграм. Дані "течуть" по дротам між блоками в порядку виконання. Метапрог в базових блоках спирається на Сі, система типів в своїй основі теж сішна. Можна прямо викликати функції на Сі та робити вставки сішного коду.

Метапрог багатомовний, всі назви відображаються обраною мовою. На даний момент є українська та російська локалізації, в разі потреби можна буде додати англійську та інші. На Метапрогу кожен зможе програмувати, знаючи лише свою мову, знання англійської стане необов'язковим.

На даний момент є та розробляється прототип Метапрогу на LabVIEW. Згодом планується за допомогою прототипу зробити Метапрог "сам на собі" та повністю відмовитись від LabVIEW.

Шоста версія прототипу доступна для завантаження. Архів включає в себе джерельні LabVIEW-діагарми та зкомпільовані exe, які можна запустити на лінуксі під Wine. Ліцензований під GNU GPL v3, докладні інструкції в текстовоу файлі з назвою вашої мови:

https://www24.zippyshare.com/v/xEn1RKAG/file.html

На прототипі Метапрогу вже можна зробити простенький будильник. Зелені дроти з зеленою та червоною стрілками на кінцях - це жорсткі послідовності, які задають порядок виконання блоків. Решта - дроти з даними.

Поки що він на константах, але з майбутніми версіями можна буде зробити і на графічному інтерфейсі. Функція "програвач звуку":

Її основу робив росіянин (з ЛОРу), я забув перекласти коментарі:)

Діаграми транслюються в код на Сі, який вже згодовується компілятору (перший рядок - команда для виклику компілятора). Не забудьте sound.wav!

https://pastebin.com/YAd4J1SN

Знаю що цей код не дуже "гарний", але він не призначений для читання людьми, тільки для компіляції. Для людей є діаграми.
« Змінено: 2020-01-12 15:39:20 від metaprog »

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3820
  • Карма: +10/-0
  • Програміст
Може краще не мучити програмістів черговим графічним середовищем, а спробувати зробити ігру для дітей, для навчання програмуванню?

Подивіться на  nandgame, наприклад. Або на TIS-100 чи Shenzen I/O.
http://www.nandgame.com/
https://store.steampowered.com/app/370360/TIS100/
https://store.steampowered.com/app/504210/SHENZHEN_IO/

[Fedora Linux]

Відсутній lpi3

  • Новачок
  • *
  • дописів: 30
  • Карма: +0/-0
Маю досвід співробітництва з вченими, які дуже часто автоматизують роботу в лабораторії використовуючи саме лабв'ю. Виглядає непогано, але тільки для простих випадків. Зазвичай більш складні перетворюються на фільм жахів.

До речі, у розробці цифрових схем людство давно відійшло від графічного представлення і створило vhdl та verilog. Здається щось таке є і для аналогових схем (але це не точно).

Відсутній metaprog

  • Новачок
  • *
  • дописів: 9
  • Карма: +0/-0
Цитата
Може краще не мучити програмістів черговим графічним середовищем
Я пробував багато різних "графічних" середовищ і з існуючого нічого практично придатного крім Лабв'ю не бачив. Ну а поширення Лабв'ю стримують в основному дорогі ліцензії та закритий код.

Цитата
а спробувати зробити ігру для дітей, для навчання програмуванню?
Краще одразу зробити середовище програмування, яке в засвоєнні не складніше за графічний інтерфейс користувача. Діти легко засвоюють графічну вінду, не знаючи англійську, але з лінуксом та консоллю їм вже складніше, не кажучи вже про текстові мови програмування.


Я, знов ж таки, пробував кілька текстових мов - і всі вони даються виключно через книжки, мануали та гугління. А в Лабв'ю щойно розібрався з інтерфейсом - інше стало даватись легко, без гугління та майже без інструкцій (зазвичай достатньо короткої контекстної довідки). Лабв'ю звільнило мене від гугла.

Цитата
Маю досвід співробітництва з вченими, які дуже часто автоматизують роботу в лабораторії використовуючи саме лабв'ю. Виглядає непогано, але тільки для простих випадків. Зазвичай більш складні перетворюються на фільм жахів.
Я на Лабв'ю роблю і можу розуміти схеми будь-якої складності, а от текстовий код складніший за хеллоуворлд - то вже для мене фільм жахів: пам'ятати і прописувати англійські назви змінних та функцій, вічно шукаючи компроміс між короткістю та зрозумілістю - не для мене.

Проблема лиш що Лабв'ю все ж таки досить обмежене і закрите, тому я і роблю Метапрог.

Ще важливий нюанс - мовний. Всі текстові мови програмування (крім російської 1С) намертво прив'язані до англійської, яку більшість українців не знає. І я вважаю несправедливою ситуацію, коли знання однієї лиш української мови недостатньо для програмування, коли наша мова стає "другорядною". Багатомовний Метапрог зрівняє мови і відновить справедливість.

Відсутній lpi3

  • Новачок
  • *
  • дописів: 30
  • Карма: +0/-0
Якщо вам складно запам'ятати назви змінних і ф-ій, тоді що у вас з математики? Може інженерна спеціальність - то не для вас?
Раджу ознайомитись з APL, в ній немає жодного англійського слова :) Та і в усіх інших використовуються лише декілька слів, які легко запам'ятати. Також в срср для навчання в школах була популярна мова, синтаксично - паскаль, але в якості слів мови використовувалися кириличні абревіатури.

Відсутній metaprog

  • Новачок
  • *
  • дописів: 9
  • Карма: +0/-0
Цитата
Раджу ознайомитись з APL, в ній немає жодного англійського слова
Посиланя будь ласка.
Цитата
Та і в усіх інших використовуються лише декілька слів, які легко запам'ятати
Але вони неукраїнські. І назви типів, змінних, функцій, полів структур ітп пишуть англійською. Якою треба володіти, щоб грамотно все називати. Ітаких неукраїномовних ідентифікаторів можуть бути тисячі, десятки тисяч, мільйони.

Цитата
Також в срср для навчання в школах була популярна мова, синтаксично - паскаль, але в якості слів мови використовувалися кириличні абревіатури
Я знаю що таке паскаль і подумував його українізувати. Але потім познайомився з Лабв'ю і зрозумів, що націоналізацію програмування треба проводити не через банальний переклад текстових мов, а через винахід чогось нового,чого ніхто в світі ще не робив: багатомовного візуального середовища програмування.

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3820
  • Карма: +10/-0
  • Програміст
Цитата
Може краще не мучити програмістів черговим графічним середовищем
Я пробував багато різних "графічних" середовищ і з існуючого нічого практично придатного крім Лабв'ю не бачив. Ну а поширення Лабв'ю стримують в основному дорогі ліцензії та закритий код.
Повірте, програмістів закритий код не стримує. Якби Лабв'ю був того вартий, його переписали би вже декілька раз.


Цитата
а спробувати зробити ігру для дітей, для навчання програмуванню?
Краще одразу зробити середовище програмування, яке в засвоєнні не складніше за графічний інтерфейс користувача. Діти легко засвоюють графічну вінду, не знаючи англійську, але з лінуксом та консоллю їм вже складніше, не кажучи вже про текстові мови програмування.
Повірте, мені теж краще один раз побачити, ніж сто раз прочитати. Але переваги текстового інтерфейсу переважають всі його недоліки коли над програмою працює більше одного програміста. Але навіть у тексті, програми де є багато графічних операторів (наприклад perl, чи APL, чи інші подібні мови), сильно програють у розумінні коду програмам, які використовують простий текст. Напр. Rust відмовився від багатьох операторів на користь тексту, що значно спростило його розуміння при вивченні.

Я, знов ж таки, пробував кілька текстових мов - і всі вони даються виключно через книжки, мануали та гугління.
Так. Просто прочитав текст, погуглив книжку — і ти вже можеш писати код, який зрозуміють програмісти з усього світу.

А в Лабв'ю щойно розібрався з інтерфейсом - інше стало даватись легко, без гугління та майже без інструкцій (зазвичай достатньо короткої контекстної довідки). Лабв'ю звільнило мене від гугла.
Я нічого не розумію у Лабв'ю. На вашому знімку я бачу багато факів і знайомі назви функцій. :-/

Я на Лабв'ю роблю і можу розуміти схеми будь-якої складності, а от текстовий код складніший за хеллоуворлд - то вже для мене фільм жахів: пам'ятати і прописувати англійські назви змінних та функцій, вічно шукаючи компроміс між короткістю та зрозумілістю - не для мене.
Пишіть їх українською (якщо мова підтримує), або транслітом.

Проблема лиш що Лабв'ю все ж таки досить обмежене і закрите, тому я і роблю Метапрог.
Це дуже добре що ви пишете Метапрог. Краще зробити щось, ніж розказувати чому робити не варто. :-)
Але, зробіть будь ласка текстовий аналог, щоб його можна було скопіювати у звичайний текстовий редактор і відредагувати. Або згенерувати. Ви ж генеруєте код на Сі, а не картинки для графічної мови програмування.

Ще важливий нюанс - мовний. Всі текстові мови програмування (крім російської 1С) намертво прив'язані до англійської, яку більшість українців не знає. І я вважаю несправедливою ситуацію, коли знання однієї лиш української мови недостатньо для програмування, коли наша мова стає "другорядною". Багатомовний Метапрог зрівняє мови і відновить справедливість.
Алгол, Рапіра, Фокал, Бейсик, та інші мови. ДЕМОС, ФОБОС, РАФОС, та інші ОС-ки. Їх є достатньо. Я на них вчився програмуванню. Але якщо я хочу співпрацювати з іноземними програмістами, то ми маємо використовувати спільну мову. На жаль, українська є мало популярною у світі, хоча українська мова на стільки логічна, що її можна використовувати напряму, як комп'ютерну.
Найлегший спосіб отримати українську мову програмування — це взяти відкритий компілятор чи інтерпретатор та додати до англомовних ідентифікаторів також українські аналоги, тоді можна буде писати як українською та і англійською мовою. Те саме можна зробити для бібліотек — додати допоміжні бібіліотеки які тільки перекладатимуть назви функцій та міститимуть документацію українською мовою. Таку мову програмування можна зробити навіть багатомовною. На це навіть можна отримати якийсь грант віж ЄС (полегшення викладання програмування у школах для створення нових робочих місць).

[Fedora Linux]

Відсутній metaprog

  • Новачок
  • *
  • дописів: 9
  • Карма: +0/-0
Цитата
Повірте, програмістів закритий код не стримує. Якби Лабв'ю був того вартий, його переписали би вже декілька раз.
Деякі досі віддають перевагу консолі, а текстові мови надто міцно в'їлись в мізки більшості програмістів. Та й дуже мало хто думає на перспективу, в основному всі заробяють гроші в межах наявних технологій і не стали б програмістами якби за це платили менше. Я - виняток з цього правила, роблю Метапрог чисто зі "спортивного інтересу" (хоча й маю біткоїн-адресу для донату).

Цитата
Але переваги текстового інтерфейсу переважають всі його недоліки коли над програмою працює більше одного програміста
Я знайшов на ЛОРі росіянина, який засвоїв прототип Метапрогу. В нього все (інтерфейс, назви об'єктів діагарми) російською, а в мене - українською. Працювати над спільними проектами нескладно, хоча ще багатьох функцій на штиб diff та merge нема.

Рано чи пізно Метапрог отримає англійську локалізацію, просто в нас наразі нема англійців в команді. А чи багато ви бачили середовищ програмування, які спочатку мають українську локалізацію, і тільки потім - російську та англійську?
Цитата
Я нічого не розумію у Лабв'ю. На вашому знімку я бачу багато факів і знайомі назви функцій. :-/
Це не Лабв'ю, а Метапрог. Треба розібратись з інтерфейсом, потім все стане ясно. Є посилання на завантаження, зкомпільовані ехе працюють на лінуксі під вайном. Хотілось би, щоб ви спробували, а я допоможу https://www24.zippyshare.com/v/xEn1RKAG/file.html

До речі, Лабв'ю не має багатомовності як Метапрог, і там я всі свої функції називав... українською. Можете подивитись.

Цитата
Пишіть їх українською (якщо мова підтримує), або транслітом.
Та можна, але багатомовність дозволяє бачити все в себе українською мовою, а іноземцям - своєю мовою. Перевірено росіянином, який засвоїв Метапрог.
Цитата
Але, зробіть будь ласка текстовий аналог, щоб його можна було скопіювати у звичайний текстовий редактор і відредагувати. Або згенерувати. Ви ж генеруєте код на Сі, а не картинки для графічної мови програмування
Наразі наявний прототип, зроблений на Лабв'ю (який можна скачати і запустити). Планується повна відв'язка від Лабв'ю та перехід на самозабезпечення, але для цього треба доробити сам прототип, щоб на ньому можна було повторити Метапрог. Коли буде Метапрог "сам на собі", буде трансляція його діаграм в код на Сі, який можна буде зкомпілювати через clang.

Цитата
Алгол, Рапіра, Фокал, Бейсик, та інші мови. ДЕМОС, ФОБОС, РАФОС, та інші ОС-ки. Їх є достатньо.
Я Сі взяв за універсальність. Драйвери, ядра ОС, прошивки мікроконтролерів - при цьому є багато бібліокек і для прикладних задач. А ті мови бібліотек майже не мають.

Цитата
Я на них вчився програмуванню. Але якщо я хочу співпрацювати з іноземними програмістами, то ми маємо використовувати спільну мову. На жаль, українська є мало популярною у світі, хоча українська мова на стільки логічна, що її можна використовувати напряму, як комп'ютерну.
Знов ж таки, багатомовність, яка звільнить програмістів від обов'язковості знання англійської, зі збереженням можливості співпраці з програмістами з усього світу.

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3820
  • Карма: +10/-0
  • Програміст
Якось запустив під Вайном. Декілька різних помилок під Вайном. Мені не сподобалося.
[Fedora Linux]

Відсутній metaprog

  • Новачок
  • *
  • дописів: 9
  • Карма: +0/-0
Які помилки? Що ви пробували і що не сподобалось? В Метапрог Онлайн були?

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3820
  • Карма: +10/-0
  • Програміст
Які помилки? Що ви пробували і що не сподобалось? В Метапрог Онлайн були?
Різні помилки характерні для програм на Вайні — щось упало, щось підвисло. Після перезапуску Вайна матюкнулося на помилку але запустилося. Мені не цікаво розбиратися у програмах для Віндовз. У Метапрог Онлайн я не був.

Я взагалі зацікавився цим тому що задумався як відтворити експеримент Штерна-Герлаха у макро з допомогою «блукаючих краплин» (walking droplets), і там потрібна деяка примітивна автоматизація (крутити стіл, вмикати динамік. запускати запис відео з вебкамери, запускати крапельницю). Але тепер я бачу що мені значно простіше буде зробити ту автоматизацію з допомогою ардуінки і якихось скриптів. Але я ще не впевнений що експеримент Штерна-Герлаха взагалі можна відтворити в 3Д і чи обертання замінить магнітне поле.
[Fedora Linux]

Відсутній metaprog

  • Новачок
  • *
  • дописів: 9
  • Карма: +0/-0
Метапрог наразі існує лише у вигляді прототипу. Прототип зроблений на LabVIEW. Лінуксову версію LabVIEW та компілятор під лінукс дістати важко, тому використовую віндовский на віртуалці.
Чому LabVIEW? Тому що це графічне середовище програмування, на якому я можу робити прототип Метарпога, не пишучи код в тексті і не вивчаючи текстових мов програмування.
Яке це все має відношення до лінукса? Таке, що Метапрог з відкритим кодом, і лінукс є першою цільовою платформою для генератору сішного коду з Метапрог-діаграм.
Наразі прототип Метапрогу не дуже придатний для прикладних задач, але дещо він вже вміє (дивись приклад з будильником в першому пості).