LINUX.ORG.RU

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

 , ,


1

2

Рейтинг пользователей тем про Метапрог или практический пример применения визульного программирования

Пока Метапрог не готов, продемонстрирую практическое применение LabVIEW. Скачать программу-демонстратор можно тут:

http://e2tilsgo5s44hqmlwb4epwrjnh7ynvsckj2tl5duwdqbxg67chqpelad.onion/file/9b...

Для перехода по ссылке нужен Tor Browser, для просмотра кода примера - LabVIEW начиная с 2013.

На данном графике - количество комментариев самых активных зарегистрированных пользователей в темах про Метапрог на момент 29.06.19 04:47:37

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

Всего две маленькие диаграмки на Лабвью. Для начала надо распарсить сообщения из сохраненных веб-страниц. Да, страницы пришлось сохранять вручную, так как в Лабвью проблемы с HTTPS (и многими другими сторонними библиотеками). На данный момент проще было сохранить страницы вручную через браузер, чем самостоятельно сделать лабвьюшную реализацию TLS.

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

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

Данная диаграмма берет 12 самых активных пользователей, строит их рейтинг и сохраняет его в картинку:

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

Почти все подписано, специально повключал названия лабвьюшных функций.

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

FAQ

0. Где отсутствующие примеры и пункты FAQ? Как вообще читать эти темы?

Чего нет в этой части - есть в прошлых. Для того, чтобы понять идею Метарпога, не обязательно читать тысячи комментариев из всех тем. Необходимый минимум собран в заголовках тем. Читайте заголовки и ссылки в них. Кстати, обновляется только заголовок последней темы, если эта тема уже не последняя - она не обновляется. В более новых темах пункты FAQ могут обновляться и в случае расхождения действительна более новая версия.

Примеры

Предыдущие см. в прошлых темах

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

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

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

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

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

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

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

Наконец-то нормально работают циклы!

https://pastebin.com/1duyPBMB

Это та самая диаграмма со старого скрина:

https://i.postimg.cc/65N2KMQz/image.png

Теперь тупиковые ветки (nk_end и «малювання SDL») тоже остаются в теле цикла. Теперь осталось внедрить тот же механизм управления тупиковыми ветками для условий (if, switch) и можно будет приниматься за разработку Метапрога на «самом себе».

Донат

Bitcoin:1AYoK2TScSpD5bhf67mv9AxHDJ2RidRvjD



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

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

желание упрекнуть

Бесполезное желание. А вот графики было бы интересно посмотреть. Просто сейчас самому лень их строить.

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

это ни разу не опровергает то, что я написал выше

Субъективные суждения в опровержении не нуждаются.

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

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

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

Ты не можешь утверждать, что этот крендель действительно не шизик

Не могу утверждать на основании чего? Я в ответе тебе лично ( Metaprog: универсальная графическая среда программирования [в разработке] часть 8 (комментарий)) фактически специально для тебя пересказал своими словами, что такое троллинг, причём упомянув именно то, что весь лор в этих восьми тредах смог пронаблюдать.

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

и просто исходишь из своих фантазий о том, что он тролль

It looks like a duck, swims like a duck, and quacks like a duck, только оказывается, внезапно, моей фантазией, ага.

В общем, уволь, мне не интересно обсуждать твои заблуждения.

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

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

очень заметным троллингом

Субъективное суждение детектед.

Не могу утверждать на основании чего?

На основании того, что у тебя нет никаких сведений о ТС. Равно как и у меня, да. Хотя у меня есть косвенные догадки на основе рассуждений ТС.

Есть подозрение

Когда кажется - креститься надо.

ты делаешь именно то, что от тебя хочет тролль

Это делаешь ты, а не я. Троллинг, дружок - это самоподдерживающийся срач между участниками БЕЗ участия тролля или с минимальным таковым. Запиши это определение к себе в словарик. Здесь у него участие не минимальное - он весьма активно срется с остальными. И то, что тут народ дружно кормит ТС и котечку говном - не троллинг, а балаган с шизиком в главной роли.

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

Как я и говорил - вагон заблуждений.

liksys ★★★★
()
Последнее исправление: liksys (всего исправлений: 2)
Ответ на: комментарий от i-rinat

А вот, кстати и задача из реального мира. @iluha16, нет желания сделать на Си или Си++ парсер тем и построитель графиков? Я если буду заниматься, возьму питон. Но мне очень хотелось бы посмотреть на реализацию на Си/Си++ и узнать, сколько времени на неё ушло и как быстро она отработала.

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

ты делаешь именно то, что от тебя хочет тролль

Есть такие люди, которым скажешь: «пошёл вон!», и они из комнаты не уйдут, даже если прямо сейчас собирались. Всё потому, что так же выходит, что они под дудку пляшут! А то, что их поймали реверсивной психологией, им как-бы не видно.

Я это к тому, что не всё ли равно, что там тролль хотел? Хотим — и обсуждаем.

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

Построитель в каком смысле? Чтоб в окошке нарисовало, или пофигу? Просто если взять какой-нибудь libcurl/libevent и либу с регекспами, а результат выводить в файл, чтобы потом скормить гнуплоту, то можно управиться за день-два. Если нужна честная рисовалка графиков, то уже больше. На Qt примерно столько же.

На питоне, ясен хер, задача на полвечера.

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

Чтоб в окошке нарисовало, или пофигу?

Думаю либо просто в картинку отрисовать, либо html-ку с canvas’ом сгенерить.

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

Ты что, никогда сталкингом в интернете не занимался и ни за кем не следил? Стандартные таблицы и графики. Как обычно.

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

Готово! Количество коммнтариев зарегистрированных пользователей в темах про Метапрог до этого сообщения:

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

Всего две маленькие диаграмки на Лабвью. Для начала надо распарсить сообщения из сохраненных веб-страниц. Да, страницы пришлось сохранять вручную, так как в Лабвью проблемы с HTTPS (и многими другими сторонними библиотеками). На данный момент проще было сохранить страницы вручную через браузер, чем самостоятельно сделать лабвьюшную реализацию TLS.

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

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

Данная диаграмма берет 12 самых активных пользователей, строит их рейтинг и сохраняет его в картинку:

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

Почти все подписано, специально повключал названия лабвьюшных функций.

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

А сколько времени на что-то подобное уйдет с текстовыми языками?

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

Готово!

Повелся на слабо...

Всего две маленькие диаграмки на Лабвью.

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

На эту работу ушло чуть больше часа...

«Свежо питание, но серится с трудом»

А сколько времени на что-то подобное уйдет с текстовыми языками?

А сколько бы времени на что-то подобное уйдет с метапрогой? Пока что бесконечно много, т.к. метапроги, на которой можно сделать подобное, не существует.

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

В нынешнем безумии в попытках создать «серебряный компилятор» стремятся к:
- упрощению синтаксиса;
- добавления «модных бантиков и кружев»;
- ...

Так вот одна из задач языка является возможность реализации readable алгоритма.
ИМХНО графическое представление алгоритма в LabView не приносит readable комфортности его понимания.
Внимание программиста все время отвлекается на понимание того, что же эта лапша реализует.
«На лицо» не упрощение, а усложнение реализации кода.
Это заметно даже на малом коде.
Как же тогда будет выглядеть сложный код и проект в целом?

Владимир

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

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

Ну насчёт «за неделю» анон, думаю, погорячился, а в остальном всё верно, я ТСу такой сценарий уже разрисовывал.

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

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

Добавочка.

А вот попытки в текстовом виде представить скажем электрическую
схему такие провальные как представление алгоритма в виде LabView «лапши».

PS: «Тяжело есть борщ китайскими палочками»

Владимир

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

Я прощёлкал начало 8 темы, список уже не на таком видном месте будет. Да, примеры потыкаю.

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

LabView действительно помогает программисту.
Почему?
Потому что он упрощает доступ к своему API и избавляет программиста от знаний своего «капота».

Вот если реализуете объектно ориентированный язык и предоставите
программисту возможность простоту использования объектов /избавите его от копания в «капоте»/, тогда еще куда ни шло.
Но не в виде LabView «лапши».

Владимир

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

Добавочка.

Нынешнею разработку можно было назвать NoodlesLang.

Владимир

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

Ну насчёт «за неделю» анон, думаю, погорячился

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

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

Шутка.

В одно рыло конечно невозможно даже прототип.

«Пожалуйста поподробнее. Я записываю.».

Владимир

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

Добавочка.

Шутка.

В одно рыло конечно невозможно даже прототип.

«Пожалуйста поподробнее. Я записываю. Отдай MetaРог ...».

Владимир

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

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

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

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

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

А можете расписать вкратце, что это за эпопея в 8 частях

Чел под метом пытается программировать.

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

Здесь проблема в другом.

Да я не о проблеме, а о содержании: ТС посылает всех в жопу также часто, как в сериале Джесси произносит слово «сука».

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

Вот не зря говорится - «С преподобным, преподобным будеши. А с развратником - развратишься.».
М-да /ну и «знаний» в этих тредах «нахватался»/.

Прости Господи.

Владимир

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

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

Владимир

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

абсолютно никакого, я бы на пыхе зделал питон не очень люблю/знаю. на C++ мне кажется тоже можно было бы без особого труда сделать имея соответствующие классы.

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

Вот скрипт для сбора мета-статистики


#
# use
#
# ruby metalorstat.rb        - to load meta stat from LOR
# ruby metalorstat.rb -s     - to use stored CSV meta stat
#

# don't forget 'sudo gem install nokogiri' before

require 'open-uri'
require 'nokogiri'
require 'csv'

LOR_URL = "https://www.linux.org.ru"
META_PFX = LOR_URL + "/forum/development/"
CVS_FILE = "metalorstat.csv"

META_1 = 14882171
META_2 = 14914210
META_3 = 14918675
META_4 = 14952346
META_5 = 14984692
META_6 = 15014770
META_7 = 15048486
META_8 = 15077884


META_IDS = [META_1, META_2, META_3, META_4, META_5, META_6, META_7, META_8]

meta_number = 1

class User
	attr_accessor :comments, :symbols

	def initialize()
		@comments = 0
		@symbols = 0
	end

	def add_comment(symbols)
		@comments += 1
		@symbols += symbols
	end

	def to_csv_row(name)
		return [name, @comments, @symbols]
	end
end

# name -> User
users = {}

reload = true

for arg in ARGV
   if arg == "-s" || arg == "-skip" then
   	reload = false
   end
end

if reload then

	puts "RELOAD META LOR"

	META_IDS.each do |meta_id|

		head = META_PFX + "#{meta_id}"

		puts "process meta #{meta_number}"
		meta_number += 1

		while head != "" do
			puts "GET #{head}"

			# TODO (kostyarin_): add timeout to avoid unnecessary
			#                    meta-LOR-pressure

			html = open(head) do |io|
	  			io.set_encoding(Encoding.default_external)
	  			io.read
			end

			doc = Nokogiri::HTML(html)
			doc.css("article.msg").each do |msg|

				symbols = 0
				symbols += msg.css("div.msg_body > h1").text.length
				symbols += msg.css("div.msg_body > p").text.length

				name = msg.css("div.sign > a").text
				name = "anonymous" if name == ""

				user = users[name]

				if user == nil then
					user = User.new()
					users[name] = user
				end

				user.add_comment symbols
			end

			next_page = doc.css("div.nav > a:last-child").first
			if next_page == nil || next_page.next != nil then 
				head = "" # next meat-page
				break
			end

			head = LOR_URL + next_page.attr("href")
		end

	end

	puts "WRITE TO META CSV"
	CSV.open(CVS_FILE, "wb") do |csv|
		users.each do |k, v|
			csv << v.to_csv_row(k)
		end
	end

end

unless reload then
 	puts "LOAD FROM META CSV"

 	CSV.foreach(CVS_FILE) do |csv|
 		user = User.new()
 		user.comments = csv[1].to_i
 		user.symbols = csv[2].to_i
 		users[csv[0]] = user
 	end

end

puts "SORT BY META COMMENTS"

puts "name | comments | symbols"
users.sort_by { |k, v| v.comments }.reverse.each do |user|
	puts "#{user[0].ljust(20)} #{user[1].comments.to_s.ljust(10)} #{user[1].symbols}"
end

puts "SORT BY META SYMBOLS"

puts "name | symbols | comments"
users.sort_by { |k, v| v.symbols }.reverse.each do |user|
	puts "#{user[0].ljust(20)} #{user[1].symbols.to_s.ljust(10)} #{user[1].comments}"
end

Если брать топ-12, то по комментариям

metaprog             3272       532137
anonymous            2305       444082
VarfolomeyKote4ka    1473       158347
iluha16              991        199566
balsoft              488        82404
rebforce             442        112908
liksys               405        83314
hobbit               379        132429
i-rinat              173        26363
arturianec100        170        84302
vq156                126        11827
ossa                 122        21490

А по символам

metaprog             532137     3272
anonymous            444082     2305
iluha16              199566     991
VarfolomeyKote4ka    158347     1473
hobbit               132429     379
rebforce             112908     442
arturianec100        84302      170
liksys               83314      405
balsoft              82404      488
i-rinat              26363      173
cluge                25068      91
ossa                 21490      122

Откуда видно, что @metaprog переплюнет любого анонимуса по писательским способностям.

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

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

А сколько времени на что-то подобное уйдет с текстовыми языками?

Если распарить твой файл и создать словарик всех юзеров то минут 5-6 на какомнить питоне.

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

Если распарить твой файл и создать словарик всех юзеров то минут 5-6 на какомнить питоне.

Да не, у него же сохранённые страницы. Достаточно катнуть, грепнуть и вцкнуть.

cat meta-page*.txt | grep user_name | wc -l
kostyarin_ ★★
()
Ответ на: комментарий от kostyarin_

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

anonymous
()

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

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

Ну так и я о том же. Будет прототип - допилим коллективно.

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

Ты взял готовые компоненты написанные дядей на текстовом языке и просто собрал их как конструктор

Какая разница? Если б они были не написаны на текстовых языках, а собраны из блоков, начиная с машинного кода, было бы то же самое. И, кстати, многие «библиотечные» блоки в Лабыью, особенно для работы с картинками, собраны уже на самом Лабвью.

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

Какая разница?

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

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

Разница в том что ты убил час на то что можно получить за секунды

Ну так получай за секунды. Подтверди свои слова делом. Или одна болтовня?

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

Нет. Исключительно из-за идиотской политики копирастов из NI, делающих все от них зависящее, чтобы ограничить распространение Лабвью.

Кстати, в 80х считалось, что Си - детская поделка, а настоящие программисты пишут только на ассемблере. MS-DOS, винда 1.0 и 2.0 сделаны на ассемблере. Сегодня визуальное программирование находится примерно в том же положении, в каком был Си в 1980.

питона, который вообще как псевдокод читается

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

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