LINUX.ORG.RU

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

 , ,


3

5

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

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

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

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

Как психолух тебе пишу - тред уныл, не туда ты внимание направил. Лучше с детей начинай. Как им удобнее строить «будущее» в программировании. По реализации - ГОВНО.

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

4.1, 4.2, 4.3, 5.4.

Ещё предлагаю почистить предыдущие темы на предмет 5.1, 5.2, 5.3, 5.4.

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

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

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

Ещё миллионы и миллионы человекочасов придётся программистам вложить, чтобы изменив мир ПО, повернуть человечество немного в более плодородное направление деятельности и мышления.

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

А вы тут... блоки мышкой таскаете.

anonymous ()

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

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

Лябда исчесление выдумали только чтобы было на чем диссер защитить. Оно НЕ НУЖНО и нигде НЕ ИСПОЛЬЗУЕТЬСЯ. Поэтому ваш аргумент это пук в лужу. Впрочим как и всегда со стороны так называемых программистов. Вы просто боитесь за свое место

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

Да как вы смеете?! Мои любимые лябда вычисления используются в ядре, в браузерах, в движке лора!!! Во всем!!! Стоп, как не используется, не может этого быть, ведь они есть в хескеле!!! На хескеле же написанно много программ, квиксорт в строчку например!!!

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

Очевидно, что не нужен. Вообще ничего не нужно кроме C и metaprog, причём когда metaprog будет написан сам на себе и компилироваться в себя, от C мы тоже избавимся!

P.S. в движке ЛОРа тоже есть лямбды. Я удивлён!

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

Ради квиксорта в строчку уже можно было придумать лямбда-исчисление.

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

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

Нет, с современным GHC это - настоящий логарифмический квиксорт! Оверхеда почти нет, по времени разница с квиксортом на C почти константная.

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

Ради квиксорта в строчку уже можно было придумать лямбда-исчисление.

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

Ладно, это я свои субъективные впечатления описал. А ты вот понял лабвью-схему квиксорта, которую я давал? По-моему ее очень легко понять даже неспециалисту. По правде, я долго курил вики пытаясь понять алгоритм. Но найдя готовую функцию в лабвью быстро понял в чем суть.

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

Но не думаю, что это помешает мне сделать Метапрог!

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

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

1. Если отсортировать пустой список, получится пустой список.
2. Сортировка списка (x:xs) с первым элементом x и оставшейся частью xs: сначала отсортируем все элементы xs, меньшие x, потом добавим x, прибавляем в отсортированном виде все элементы xs, большие x.
balsoft ()
Ответ на: комментарий от metaprog

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

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

https://i.postimg.cc/wj9jcdgz/quicksort.png

Меряется размер массива, если он равен 1 или 0 - просто проходитна выход (проводок на другой поддиаграмме).

Если 2 и больше - размер нацело делится на 2 (чуток пришлось прочитать хелп, чтоб понять суть), удаляется элемент (фактически посередине) и потом цикл. Если что больше него - во второй массив, меньше - в первый. Дальше 2 массива подаются на рекурсию и после нее складываются.

Благодарю Лабвью и копирастов из NI, что я понял идею квиксорта:)

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

Что другое? Для того, чтобы язык или проект «использовал» лямбда-исчисление, достаточно трёх вещей:

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

Все три вещи используются в chromium, поэтому там используется лямбда-исчисление.

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

Из-за наличия кучи стрелочек, расходящихся в разные стороны, довольно сложно понять эту задумку. Даже после вашего объяснения я 5 минут сидел и вдумчиво разбирался, что, откуда и куда идёт.

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

Это нечитаемо. Я сомневаюсь, что даже если был бы лабвью, нашлось бы много контрибюторов. Лабвью знают в основном студенты и школьники, и они точно не смогут это читать.

Диаграммы хороши для высокоуровневых вещей (см. UML), так как делают архитекруру понятнее, а здесь даже квиксорт визуально больше того же квиксорта на C, не говоря уже про серьёзные вещи.

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

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

metaprog ()