LINUX.ORG.RU

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

 , , ,


3

6

Не нравится - проходите мимо. Нравится - помогайте проекту.

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

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

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

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

Чисто технические. По Си, библиотекам итп. А поучать не по делу - «не учите меня жить, лучше помогите материально».

Примеры

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

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

Собственная метапроговская функция

Метапрог не только умеет вызывать сишные функции, но на нем можно и свои делать. Функция для открытия слушателя (listener) на нужном адресе и порте и ее схема:

https://i.postimg.cc/8kXBCX40/image.png

Зеленые линии - особенные. Они задают жесткую последовательность выполнения. Сначала bind и только потом уж listen. Сначала listen - и только потом уж сокет можно передать дальнейшим функциям (например, accept).

У функции есть своя пиктограмма.

Открытие окошка

Этот пример открывает окно. Там же есть асинхронный вызов (на завершение):

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

Инициализация (отдельная функция, инлайнится еще на уровне метапрога в главную диаграмму):

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

Асинхронная функция на завершение:

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

Все это генерирует такой код (опять же - не для эстетов, а для скармливания gcc):

https://pastebin.com/T3Bu5Qy6



Последнее исправление: CYB3R (всего исправлений: 9)

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

GtkLabel это Gtk, занимает он все окно потому что ты таким его создал %) Читай про контейнеры gtk. А cairo ты еще не пробовал, cairo это когда рисуют на DrawingArea.

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

А cairo ты еще не пробовал, cairo это когда рисуют на DrawingArea

Как думаешь, это самый оптимальный вариант?

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

Тут еще надо сообразить как делать лейблы с текстом в cairo. В Лабвью есть функция get text rectangle (то есть, какой прямоугольник будет занимать текст). Что-то такое есть в cairo?

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

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

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

Мы же хотим релиза побыстрее?

Это ты хочешь. Какой интерес людям тебе помогать? У тебя качества идеолога, проектировщика, разработчика и даже просто человека крайне паршивые. Платить ты не готов. Хочешь на всё готовое прийти, а сам умеешь только гаденько критиковать чужой труд.

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

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

Еще раз спасибо модераторам, что чистите тему от говна.

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

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

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

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

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

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

Мануалы смотри, будет нудно и долго примеры делать, а так ты сам быстро разберешься и сделаешь.

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

тащемто в gtk можно определить метрики шрифта и строки с текстом.

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

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

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

Нужен моноширинный шрифт. С немоноширинным непонятно как мерять ширину полученного текста.

Выбирая самое простое решение на каждом шаге, ничего хорошего не напишешь в итоге.

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

Спасибо что скинул. Гугл тоже порой такую чушь кинуть может, что хрен его поймешь. Хотя это не столько гугл виноват, сколько сами по себе текстовые языки. Как люди на них в 2019 году еще пишут? Неудивительно, что за этот ужас много платят)))

В текстовом коде копаться, конечно, то еще «удвольствие». Ладно, разберусь. Освоить самое необходимое для основных нужд - и дальше никакого текста:)

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

А если делать все самым слжным образом, релиз отложится на 2030-40 год. С другой стороны, что помешает потом поменять шрифты?

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

В текстовом коде копаться, конечно, то еще «удвольствие». Ладно, разберусь. Освоить самое необходимое для основных нужд - и дальше никакого текста:)

Присосался к уже готовому лабвью, который профи пишут более 30 лет, и думаешь, что сможешь повторить хоть 10% функционала? Грезишь ещё и улучшить? Ну попробуй.

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

А если делать все самым слжным образом, релиз отложится на 2030-40 год.

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

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

И главную фишку лабвью ты, конечно же, проглядел.

«Execution flow is determined by the structure of a graphical block diagram (the LabVIEW-source code) on which the programmer connects different function-nodes by drawing wires. These wires propagate variables and any node can execute as soon as all its input data become available. Since this might be the case for multiple nodes simultaneously, LabVIEW can execute inherently in parallel.»

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

Кстати да, меня печалит отсутствие этой фишки (параллельности по-умолчанию) в большинстве ленивых ФП-языков. Оно бы очень хорошо зашло.

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

Здрасьте, ее я как раз использую, прекрасно зная про палаллелизацию выполнения. А как ты предложишь реализовать это в Метапроге?

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

Здрасьте, ее я как раз использую, прекрасно зная про палаллелизацию выполнения. А как ты предложишь реализовать это в Метапроге?

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

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

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

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

Текстовые языки вообще параллелить куда сложнее, чем визуальые диаграммы. Тут просто вопрос как это делать: pthreads или что-то еще?

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

Меня это заботит, но на данный момент это не первоочередное.

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

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

Текстовые языки вообще параллелить куда сложнее

И там и там дерево строиться

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

Текстовые языки вообще параллелить куда сложнее, чем визуальые диаграммы. Тут просто вопрос как это делать: pthreads или что-то еще?

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

Под текстовые языки все средства уже сформированы за полста лет и используются миллионами людей. Из графических средств есть лабвью, который юзают школьники. И, к примеру, ненавидимые тобой blueprint'ы из UE, на которых делают годную автоматизацию для высокобюджетных игр. Это востребованные в своих нишах вещи, а какую задачу решает твой язычок, пока даже ты не смог объяснить.

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

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

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

По умолчанию такое в metaprog НИНУЖНО.

А в лабвью такое есть изначально. Значит готовый метапрог будет даже хуже лабвью с 30-летней историей?

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

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

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

Да конечно возможно - оба языка полны по Тьюрингу и обладают функциями работы с ФС. Вопрос в том, что быстрее и практичнее. Для меня практичнее перл и изредка питон, для многоразовых вещей - хаскел, на руби дольше приходится изголяться и он не настолько читаем (по сравнению с хаскелом). Почему вам так важна смерть перла? У вас какая-то личная ненависть?

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

В JavaScript есть строки, значит ли это что он лучше опкодов intel?

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

Полную безопасность я вроде как не заявлял. Указатели, прямое управление памятью - все как в сишечке, никаких сборщиков мусора. Отличие разве что в графических плюшках чтоб смотреть на какой из malloc нет free, например.

Сишечка, при всех ее недостатках, прельщает меня кроме простоты тем, что на ней написано почти все: ядра ОС, прошивки микроконтроллеров (большинство архитектур), утилиты, графические интерфейсы - словом, универсальность.

А знаете что больше всего меня бесит в Си? Нуль-терминированные строки, рудимент от PDP-11. Нет чтобы хранить отдельно размер строки - они решили отбросить 1/256 байтов (тот самый «0») со всеми вытекающими переполнениями и прочими «прелестями» (львиная доля недостатков Си именно из-за нуль-терминированных строк). Я от них буду отказываться везде где смогу.

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

с помощью ruby

Оно, руби это, примерно там же, где и перл. Скорее в прошлом. Запускалка для rails вряд ли долго протянет в другом амплуа. То ли дело python.

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

Отличие разве что в графических плюшках чтоб смотреть на какой из malloc нет free, например.

Если эти вещи вызываются в цикле, то найдет утечку?

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

А знаете что больше всего меня бесит в Си? Нуль-терминированные строки, рудимент от PDP-11. Нет чтобы хранить отдельно размер строки - они решили отбросить 1/256 байтов (тот самый «0») со всеми вытекающими переполнениями и прочими «прелестями» (львиная доля недостатков Си именно из-за нуль-терминированных строк). Я от них буду отказываться везде где смогу.

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

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

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

metaprog
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.