Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Метапрограммирование 
:(
    Опции темы
 
Метапрограммирование
Да [ 11 ]  [64.71%]
Нет [ 6 ]  [35.29%]
Всего проголосовавших: 17
В этом опросе возможен один вариант ответа
Гости не могут голосовать 
unicuum
  Дата 5.11.2009, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 16.3.2005
Где: Рашка




Сегодня речь пойдёт о метапрограммировании. Чтобы не мучаться с различными форматами и парсерами возьму xml. Читал где-то, когда его создали ему прочили большое будущее, вроде заменит другие языки, и так далее. Пока же он якобы не приживается в том объёме уготованной ему судьбой. Эта тема призвана разобраться, какое же оно реальное метапрограммирование, какое оно есть, какое будет. Ну и попутно надо разобрать ряд вопросов.


--------------------
user posted image
обычный день на винграде
PM   Вверх
NNaarreekk
Дата 5.11.2009, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 768
Регистрация: 23.6.2007
Где: Армения




Думаю вариант "никогда не слышал" занял бы первое место! smile 
PM MAIL WWW   Вверх
IKM2007
Дата 5.11.2009, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зима близко
**


Профиль
Группа: Участник
Сообщений: 702
Регистрация: 26.4.2008
Где: olmedreca




Очень интересует, жду дальнейших обсуждении. smile 


--------------------
"К чёрту обстоятельства, я создаю возможности."
Брюс Ли
PM MAIL Skype   Вверх
KelTron
Дата 5.11.2009, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 8.10.2006
Где: Красноярск




И при чём тут xml, с каких пор он стал языком программирования.





--------------------
Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог.
Эвенгар Салладорский, основатель Школы Тьмы.
PM MAIL   Вверх
unicuum
  Дата 5.11.2009, 16:09 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 16.3.2005
Где: Рашка




Цитата(IKM2007 @  5.11.2009,  15:49 Найти цитируемый пост)
Очень интересует, жду дальнейших обсуждении. user posted image  

Я, кстати, тоже жду, а то иногда монолог выходит.

Так вот, сам процесс работы с XML относительно не сложный. Пока буду использовать Kate, так как в нём существует синтаксическая подсветка, работа с командной строкой в режиме пайплайн и удобный доступ к файловой системе изнутри. Думаю скрин всё объяснит лучше слов.

user posted image

В целом я пока выделил в полезное сами xml файлы, схемы и преобразования.

Вот так выглядит xml файл в котором я могу написать что захочу, естественно следуя синтаксису:
Код
<?xml version="1.0" encoding="UTF-8"?>
<file>
  <include libname="iostream">потокового вывода</include>
  <include libname="mmedia">мультимедийного аналога</include>
  <include libname="xgraphics">графического анализатора</include>
  <include libname="morpha">морфологического разбора</include>
  <include libname="dublin">дублинское ядро</include>
  <include libname="axcore">атомное ядро</include>
</file>


Этот файл описывает преобразования xml файлов:
Код
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:template match="/">
    <xsl:for-each select="//include">
      <xsl:sort data-type="text" select="@libname"/>
        <xsl:text>#include "</xsl:text>
        <xsl:value-of select="@libname"/>
        <xsl:text>" // </xsl:text>
        <xsl:value-of select="."/>
        <xsl:text>
</xsl:text>
    </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>


Далее одна из множества программ:
xmlstarlet - Command Line XML Toolkit​                                                                                                                         
Command Line XML Toolkit to query/edit/transform/check XML documents
‎/usr/bin/xml

Использую опцию tr, чтобы сказать, что я преобразовываю, а не проверяю скажем на правильность синтаксиса и так далее:
Цитата
xml tr example01.xsl example01.xml


Получившийся результат, а именно отсортированный по названием библиотек список:
Код
#include "axcore" // атомное ядро
#include "dublin" // дублинское ядро
#include "iostream" // потокового вывода
#include "mmedia" // мультимедийного аналога
#include "morpha" // морфологического разбора
#include "xgraphics" // графического анализатора


Как-то так наверное всё и происходит. Вопрос не столько в преобразовании, сколько в том, как же должны выглядеть исходные для него структуры. Иными словами дело в собственных парадигмах.

Добавлено через 1 минуту и 12 секунд
Цитата(KelTron @  5.11.2009,  16:00 Найти цитируемый пост)
И при чём тут xml, с каких пор он стал языком программирования.

Вот и я думал, причём здесь xml и программирование на нём с использованием других языков, когда где-то давно про него читал.

Добавлено через 5 минут и 25 секунд
P.S. Вот ещё на скрин внимание обратите, там жёлтым символ юникода записан, а когда я текст скопировал он просто переносом поставился.


--------------------
user posted image
обычный день на винграде
PM   Вверх
KelTron
Дата 5.11.2009, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 8.10.2006
Где: Красноярск




Хм, интересно, а есть пример с какой нить логикой?


--------------------
Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог.
Эвенгар Салладорский, основатель Школы Тьмы.
PM MAIL   Вверх
diadiavova
Дата 5.11.2009, 16:39 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте




unicuum, У меня такой вопрос: Как можно ответить "да" или "нет" на вопрос, сформулированный словом "метапрограммирование"? Что должен означать тот и другой ответ?


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
IKM2007
Дата 5.11.2009, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зима близко
**


Профиль
Группа: Участник
Сообщений: 702
Регистрация: 26.4.2008
Где: olmedreca




unicuum, а почему обсуждение идет на базе XML? Речь ведь идет о метапрограммировании, почему не C++? Или я неправильно понял смысл метапрограммирования? smile 


--------------------
"К чёрту обстоятельства, я создаю возможности."
Брюс Ли
PM MAIL Skype   Вверх
KelTron
Дата 5.11.2009, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 8.10.2006
Где: Красноярск




Цитата(diadiavova @  5.11.2009,  16:39 Найти цитируемый пост)
Как можно ответить "да" или "нет" на вопрос, сформулированный словом "метапрограммирование"? Что должен означать тот и другой ответ?

Видать нужно вытащить из этого слова метаданные и всё станет ясно.



--------------------
Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог.
Эвенгар Салладорский, основатель Школы Тьмы.
PM MAIL   Вверх
unicuum
Дата 5.11.2009, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 16.3.2005
Где: Рашка




Цитата(KelTron @  5.11.2009,  16:33 Найти цитируемый пост)
Хм, интересно, а есть пример с какой нить логикой? 

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

У меня мысль есть, что метапрограммирование связано с реинженерингом ПО. Даже критерии сложности совпадают:

Цитата
Как правило утверждается, что "легче разработать новый программный продукт". Это связано со следующими проблемами:

   1. Обычному программисту сложно разобраться в чужом исходном коде
   2. Реинжиниринг чаще всего дороже разработки нового программного обеспечения, т.к. требуется убрать ограничения предыдущих версий, но при этом оставить совместимость с предыдущими версиями
   3. Реинжиниринг не может сделать программист низкой и средней квалификации. Даже профессионалы часто не могут качественно реализовать его. Поэтому требуется работа программистов с большим опытом переделки программ и знанием различных технологий.

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


Цитата(diadiavova @  5.11.2009,  16:39 Найти цитируемый пост)
unicuum, У меня такой вопрос: Как можно ответить "да" или "нет" на вопрос, сформулированный словом "метапрограммирование"? Что должен означать тот и другой ответ? 

А вот что хочешь, то и будет означать, это принцип метапрограммирования.

Цитата(IKM2007 @  5.11.2009,  16:41 Найти цитируемый пост)
unicuum, а почему обсуждение идет на базе XML? Речь ведь идет о метапрограммировании, почему не C++? Или я неправильно понял смысл метапрограммирования? smile  

Если речь о C++, то он является мультипарадигмальным языком программирования. Существует различные системы текстового разбора, парсеры. В том числе они могут преобразовывать его, взять хотя бы codeworker. Я уже вроде поднимал эту тему в связи с диаграммами Вирта и текстового их представления EBNF. В данном же случае для упрощения взял вхождение на xml с xml-парсером, а вывод какой захочешь. В целом же пока думаю надо попробовать выделить некие части программ, и попробовать создать различные примеры, даже без наглядного преобразования.


--------------------
user posted image
обычный день на винграде
PM   Вверх
Zloxa
Дата 5.11.2009, 16:57 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008




Цитата(unicuum @  5.11.2009,  16:09 Найти цитируемый пост)
Я, кстати, тоже жду, а то иногда монолог выходит.

Очень странные ожидания. 
Нас всех со школьной скамьи приучали, что после слов "Сегодня речь пойдёт о ...",  вякать с места нельзя, только подняв руку и получив разшерешние. smile



--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
unicuum
  Дата 5.11.2009, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 16.3.2005
Где: Рашка




Запишем предусловия: Итак, предположим мы продали душу xmlяволу smile . Теперь мы обязаны писать на нём и только на нём. Но в замен xmlявол наделил нас способностью преобразовывать наши мысли в его формате в любой текст каким угодно способом. Формат довольно прост:

Код
<?xml version="1.0" encoding="UTF-8"?>
<roottag>
  <subtag attribute="value of attribute">value of subtag</subtag>
  <subtag attribute="value of attribute">value of subtag</subtag>
  <subtag attribute="value of attribute"/>
  <subtag attribute="value of attribute"/>
</roottag>


Вначале идёт необязательный заголовок. Потом корневой элемент, он может быть только один. Корневой элемент это тег, и внутри тегов могут быть списки атрибутов с их значениями и значения самих тегов, по другому содержимое. Ну и естественно в теги можно вкладывать теги, а можно и не вкладывать. Если написать что-то вроде:
Цитата
xml val roottag.xml

будет произведена проверка
Цитата
roottag.xml - valid

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

Цитата(Zloxa @  5.11.2009,  16:57 Найти цитируемый пост)
Очень странные ожидания. 
Нас всех со школьной скамьи приучали, что после слов "Сегодня речь пойдёт о ...",  вякать с места нельзя, только подняв руку и получив разшерешние. smile

Значит буду писать монологи в стиле Шекспира:
user posted image


--------------------
user posted image
обычный день на винграде
PM   Вверх
Zloxa
Дата 5.11.2009, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008




Цитата(unicuum @  5.11.2009,  17:14 Найти цитируемый пост)
буду писать монологи

user posted image


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
unicuum
  Дата 5.11.2009, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 16.3.2005
Где: Рашка




И тишина, и мёртвые с косами стоят.


--------------------
user posted image
обычный день на винграде
PM   Вверх
diadiavova
Дата 5.11.2009, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте




unicuum, так ты хочешь обсудить какие-то конкретные вопросы связанные с сабжем или просто рассказать народу что такое XML?


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила раздела «Флейм»
Sneg0k

Добро пожаловать в «Флейм».

В разделе не действуют многие правила:

  • Можно оффтопить(умеренно)
  • Можно общаться на темы, не только связанные с программированием.

Строго запрещено:

  • Размещать рекламу
  • Обсуждать политику
  • Оскорблять друг-друга и переходить на личности
  • Наезжать, провоцировать других участников форума
  • Материться
  • Троллить

Напоминаем о существовании волшебной кнопочки "Репорт". Если вы увидели сообщение, несовместимое с жизнью, просьба подвести на нее курсор и клацнуть левой клавишей мышки. Тем самым вы сможете призвать злого, но жутко справедливого джина-модератора, который нашлет порчу на злостного нарушителя. Кстати - счётчик сообщений здесь не растёт.


Глас Винграда:


Глас Философии:


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Sneg0k

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Флейм | Следующая тема »


 




[ Время генерации скрипта: 0.1446 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.