![]() |
Модераторы: LSD |
![]() ![]() ![]() |
|
||
|
unicuum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 830 Регистрация: 16.3.2005 Где: Рашка |
Сегодня речь пойдёт о метапрограммировании. Чтобы не мучаться с различными форматами и парсерами возьму xml. Читал где-то, когда его создали ему прочили большое будущее, вроде заменит другие языки, и так далее. Пока же он якобы не приживается в том объёме уготованной ему судьбой. Эта тема призвана разобраться, какое же оно реальное метапрограммирование, какое оно есть, какое будет. Ну и попутно надо разобрать ряд вопросов.
-------------------- ![]() обычный день на винграде |
|||
|
||||
NNaarreekk |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 768 Регистрация: 23.6.2007 Где: Армения |
Думаю вариант "никогда не слышал" занял бы первое место!
![]() |
|||
|
||||
IKM2007 |
|
|||
![]() Зима близко ![]() ![]() Профиль Группа: Участник Сообщений: 702 Регистрация: 26.4.2008 Где: olmedreca |
Очень интересует, жду дальнейших обсуждении.
![]() -------------------- "К чёрту обстоятельства, я создаю возможности." Брюс Ли |
|||
|
||||
KelTron |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 745 Регистрация: 8.10.2006 Где: Красноярск |
И при чём тут xml, с каких пор он стал языком программирования.
-------------------- Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог. Эвенгар Салладорский, основатель Школы Тьмы. |
|||
|
||||
unicuum |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 830 Регистрация: 16.3.2005 Где: Рашка |
Я, кстати, тоже жду, а то иногда монолог выходит. Так вот, сам процесс работы с XML относительно не сложный. Пока буду использовать Kate, так как в нём существует синтаксическая подсветка, работа с командной строкой в режиме пайплайн и удобный доступ к файловой системе изнутри. Думаю скрин всё объяснит лучше слов. ![]() В целом я пока выделил в полезное сами xml файлы, схемы и преобразования. Вот так выглядит xml файл в котором я могу написать что захочу, естественно следуя синтаксису:
Этот файл описывает преобразования xml файлов:
Далее одна из множества программ: xmlstarlet - Command Line XML Toolkit Command Line XML Toolkit to query/edit/transform/check XML documents /usr/bin/xml Использую опцию tr, чтобы сказать, что я преобразовываю, а не проверяю скажем на правильность синтаксиса и так далее:
Получившийся результат, а именно отсортированный по названием библиотек список:
Как-то так наверное всё и происходит. Вопрос не столько в преобразовании, сколько в том, как же должны выглядеть исходные для него структуры. Иными словами дело в собственных парадигмах. Добавлено через 1 минуту и 12 секунд Вот и я думал, причём здесь xml и программирование на нём с использованием других языков, когда где-то давно про него читал. Добавлено через 5 минут и 25 секунд P.S. Вот ещё на скрин внимание обратите, там жёлтым символ юникода записан, а когда я текст скопировал он просто переносом поставился. -------------------- ![]() обычный день на винграде |
||||||||
|
|||||||||
KelTron |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 745 Регистрация: 8.10.2006 Где: Красноярск |
Хм, интересно, а есть пример с какой нить логикой?
-------------------- Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог. Эвенгар Салладорский, основатель Школы Тьмы. |
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте |
unicuum, У меня такой вопрос: Как можно ответить "да" или "нет" на вопрос, сформулированный словом "метапрограммирование"? Что должен означать тот и другой ответ?
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
IKM2007 |
|
|||
![]() Зима близко ![]() ![]() Профиль Группа: Участник Сообщений: 702 Регистрация: 26.4.2008 Где: olmedreca |
unicuum, а почему обсуждение идет на базе XML? Речь ведь идет о метапрограммировании, почему не C++? Или я неправильно понял смысл метапрограммирования?
![]() -------------------- "К чёрту обстоятельства, я создаю возможности." Брюс Ли |
|||
|
||||
KelTron |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 745 Регистрация: 8.10.2006 Где: Красноярск |
Видать нужно вытащить из этого слова метаданные и всё станет ясно. -------------------- Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог. Эвенгар Салладорский, основатель Школы Тьмы. |
|||
|
||||
unicuum |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 830 Регистрация: 16.3.2005 Где: Рашка |
Если под логикой подразумевается преобразование в зависимости от неких условий, то да, это всё поддерживается. Меня же больше занимает вопрос, как же должна выглядеть программа, ведь сделать её на xml можно оптимальным образом, так как нет ограничений по генерации. Наверное не у одного меня возникало ощущение неправильности некоторых особенностей. И вот есть шанс писать абсолютно как захочешь, вопрос теперь в том как хочешь. У меня мысль есть, что метапрограммирование связано с реинженерингом ПО. Даже критерии сложности совпадают:
А вот что хочешь, то и будет означать, это принцип метапрограммирования.
Если речь о C++, то он является мультипарадигмальным языком программирования. Существует различные системы текстового разбора, парсеры. В том числе они могут преобразовывать его, взять хотя бы codeworker. Я уже вроде поднимал эту тему в связи с диаграммами Вирта и текстового их представления EBNF. В данном же случае для упрощения взял вхождение на xml с xml-парсером, а вывод какой захочешь. В целом же пока думаю надо попробовать выделить некие части программ, и попробовать создать различные примеры, даже без наглядного преобразования. -------------------- ![]() обычный день на винграде |
||||
|
|||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 |
Очень странные ожидания. Нас всех со школьной скамьи приучали, что после слов "Сегодня речь пойдёт о ...", вякать с места нельзя, только подняв руку и получив разшерешние. ![]() -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
unicuum |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 830 Регистрация: 16.3.2005 Где: Рашка |
Запишем предусловия: Итак, предположим мы продали душу xmlяволу
![]()
Вначале идёт необязательный заголовок. Потом корневой элемент, он может быть только один. Корневой элемент это тег, и внутри тегов могут быть списки атрибутов с их значениями и значения самих тегов, по другому содержимое. Ну и естественно в теги можно вкладывать теги, а можно и не вкладывать. Если написать что-то вроде:
будет произведена проверка
Теперь зная основы и пару других правил можно набирать своё приложение. Очевидно возникает проблема выбора, то есть когда применять теги, когда атрибуты, а когда значение выше обозначенных элементов. Значит буду писать монологи в стиле Шекспира: ![]() -------------------- ![]() обычный день на винграде |
||||||
|
|||||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 |
-------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
unicuum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 830 Регистрация: 16.3.2005 Где: Рашка |
И тишина, и мёртвые с косами стоят.
-------------------- ![]() обычный день на винграде |
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте |
unicuum, так ты хочешь обсудить какие-то конкретные вопросы связанные с сабжем или просто рассказать народу что такое XML?
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила раздела «Флейм» | |
|
Добро пожаловать в «Флейм». В разделе не действуют многие правила:
Строго запрещено:
Напоминаем о существовании волшебной кнопочки "Репорт". Если вы увидели сообщение, несовместимое с жизнью, просьба подвести на нее курсор и клацнуть левой клавишей мышки. Тем самым вы сможете призвать злого, но жутко справедливого джина-модератора, который нашлет порчу на злостного нарушителя. Кстати - счётчик сообщений здесь не растёт. Глас Винграда:
Глас Философии:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Sneg0k |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Флейм | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |