Модераторы: 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   Вверх
unicuum
  Дата 5.11.2009, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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




Цитата(diadiavova @  5.11.2009,  17:35 Найти цитируемый пост)
unicuum, так ты хочешь обсудить какие-то конкретные вопросы связанные с сабжем или просто рассказать народу что такое XML? 

Что такое xml наверное и без меня знают. Всякие отступы нужны лишь для формализации. Вот возьмём для примера программу "привет мир". На разных языка она будет выглядеть по разному:

C++
Код
#include <iostream>
using namespace std;
 
int main()
{
    cout << "Hello, World!" << endl;
    return 0;
}


C#
Код
public class ExampleClass
{
   public static void Main()
   {
       System.Console.WriteLine("Hello, world!");
   }
}


Java
Код
public class HelloWorld {
  public static void main(String[] args) {
    System.out.println("Hello, world!");
  }
}


Но с учётом генерации общая её особенность лишь в строке "Hello, world!". Это как бы самый примитивный пример использования. Далее углубляясь в процесс могли бы вывести, что существуют различные понятия, та же точка вхождения в программу (entry point) и так далее. В общем, размышляем...

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

Это сообщение отредактировал(а) unicuum - 5.11.2009, 17:53


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


Опытный
**


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




unicuum, я не совсем понял суть твоей идеи.
Ты хочешь разработать парсер xml, который будет преобразовывать написаный специальным образом xml-код в любой язык программирования?

PM MAIL   Вверх
sTa1kEr
Дата 5.11.2009, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


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




Код

<?xml version="1.0" encoding="UTF-8"?>
<program 
    xmlns="http://schemas.metaprogramming.org/metaxml"
    xmlns:system="http://schemas.metaprogramming.org/metaxml/system"
    xmlns:console="http://schemas.metaprogramming.org/metaxml/console"
    xmlns:my="http://vasya-kamushkin.tw/MyNamespace"
    description="Hello, World!" 
    entrypoint="my:main">
    <my:main entity="function">
        <variable name="str1" type="string"><![CDATA[Hello, World!]]></variable>
        <console:print><arg><variable name="str1" /></arg></console:print>
        <!-- Или так
        
        <console:print><arg><![CDATA[Hello, World!]]></arg></console:print>
        
        -->
    </my:main>
</program>


unicuum, ну что, зачет автоматом будет? smile 
PM MAIL   Вверх
Void
Дата 5.11.2009, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


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




Товарищ mkizub на RSDN носится со своей SymADE. Это к нему надо с идеей универсального семантического представления, транслируемого во что угодно.
Упрощает ли это представление формальные рассуждения о программе? Повышает ли уровень абстракции?
Если преобразования между гипотетическим универсальным представлением и «обычным языком» несимметричны, то мы имеем просто ещё один язык высокого уровня. Это само по себе не плохо, но пока я прозреваю рождение XML-представления для AST, от которого можно разве что проблеваться.
Цитата(Erik Naggum)
Robbery is not just another way of making a living, rape is not just another way of satisfying basic human needs, torture is not just another way of interrogation. And XML is not just another way of writing S-exps.


Метапрограммирование на практике — это code is data (рефлексия) и DSL, внешние и внутренние.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Lazin
Дата 5.11.2009, 20:10 (ссылка) |   (голосов:7) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re




unicuum узнал о существовании xslt smile
PM MAIL Skype GTalk   Вверх
diadiavova
Дата 7.11.2009, 13:03 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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




unicuum, не хочется тебя расстраивать, но такого языка как XML в природе не существует, а стало быть написать на нём что бы то ни было невозможно. XML - это просто свод синтаксических правил, являющихся основой для других языков(метаязык).


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


Чо?
****


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




Цитата(diadiavova @  7.11.2009,  13:03 Найти цитируемый пост)
но такого языка как XML в природе не существует

XML = eXtensible Markup Language ~ расширяемый язык разметки


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


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


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




Zloxa, может тогда напишешь что-нибудь на чистом XML? Так просто чтобы посмотреть как это должно выглядеть. Хэлоуворлд какой-нибудь что ли.


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


9/10 программиста
***


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




Цитата(diadiavova @  7.11.2009,  14:03 Найти цитируемый пост)
XML - это просто свод синтаксических правил, являющихся основой для других языков(метаязык). 

А unicuum под метапрограммированием по твоему что имел ввиду? smile 
PM MAIL   Вверх
diadiavova
Дата 7.11.2009, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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




Цитата(sTa1kEr @  7.11.2009,  17:27 Найти цитируемый пост)
А unicuum под метапрограммированием по твоему что имел ввиду?
Нельзя, конечно исключать, что под метапрограммированием он имел в виду именно использование метаязыков, но мне чойт кажется, что в прошлой "умной" теме это уже обсуждалось.


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


Чо?
****


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




Цитата(diadiavova @  7.11.2009,  15:30 Найти цитируемый пост)
Хэлоуворлд какой-нибудь что ли.

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

Ну а даже если на ХМЛ нельзя его сделать нельзя же ведь говорить что это не язык. Может не программирования, но таки язык. 

Если на SQL нельзя организовать диалога с пользователем, то что, ему тоже отказать в возможности именоваться языком?


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


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


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




Zloxa, нееееее. Ты не понял. Давай разберёмся что такое язык в принципе. Не компьютерный и даже не программирования, поскольку они являются частными случаями понятия языка.
Возьмём определние из википедии, оно хоть и не раскрывает понятие полностью но вполне корректно
Цитата

Язы́к — знаковая система, соотносящая понятийное содержание и типовое звучание (написание).
Вот мне интересно: какое в XML понятийное содержание?
И потом, почему XML нельзя считать языком программирования? Существуют языки программирования, основанные на синтаксисе XML. В частности - XSLT. Мало того, есть возможность создать полноценный язык программирования и даже не один на основе XML, но сам XML языком не является, в силу отсутствия в нём собственной семантики, а семантика - это основная составляющая любого языка. Синтаксис служит лишь для того, чтобы в потоке данных можно было безошибочно выявить все семантические единицы.
Вся проблема в том, что любой XML-документ фактически написан на другом языке, а XML-документом он называется только потому, что в нём соблюдены синтаксические нормы этого формата.


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


Опытный
**


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




Цитата(NLspieler @  5.11.2009,  18:15 Найти цитируемый пост)
unicuum, я не совсем понял суть твоей идеи.
Ты хочешь разработать парсер xml, который будет преобразовывать написаный специальным образом xml-код в любой язык программирования?

Парсеров уже много, одним из них я и воспользовался, и языки преобразования давно созданы. Как-то на форуме обсуждал тему про шаблоны проектирования. Взять хотя бы интерфейс, путём согласования были выведены два идеальных образца для языка C++. Однако то, что кто-то подразумевает идеальную сущность и знает как она выглядит для конкретного примера не гарантирует, что она будет правильно написана в коде. Чем сложнее согласование того о чём мы думаем и то что надо написать, тем больше код будет подвержен ошибкам. А в идеале нужно привязать собственное мышление к языку.

Цитата(Void @  5.11.2009,  19:08 Найти цитируемый пост)
Метапрограммирование на практике — это code is data (рефлексия) и DSL, внешние и внутренние. 

Рефлексия (от позднелат. reflexio — обращение назад) — обращение субъекта на себя самого, на свое знание или на свое собственное состояние.

Предметно-ориентированный язык программирования (англ. domain-specific programming language, domain-specific language, DSL) — язык программирования, специально разработанный для решения определённого круга задач, в отличие от языков программирования общего назначения, таких, как Си, или языков моделирования общего назначения наподобие UML, Postscript, SQL и др.


Цитата(Void @  5.11.2009,  19:08 Найти цитируемый пост)
Товарищ mkizub на RSDN носится со своей SymADE. Это к нему надо с идеей универсального семантического представления, транслируемого во что угодно.

http://symade.tigris.org/
http://mkizub.livejournal.com/

Цитата(sTa1kEr @  5.11.2009,  19:07 Найти цитируемый пост)

Код
<?xml version="1.0" encoding="UTF-8"?>
<program 
    xmlns="http://schemas.metaprogramming.org/metaxml"
    xmlns:system="http://schemas.metaprogramming.org/metaxml/system"
    xmlns:console="http://schemas.metaprogramming.org/metaxml/console"
    xmlns:my="http://vasya-kamushkin.tw/MyNamespace"
    description="Hello, World!" 
    entrypoint="my:main">
    <my:main entity="function">
        <variable name="str1" type="string"><![CDATA[Hello, World!]]></variable>
        <console:print><arg><variable name="str1" /></arg></console:print>
        <!-- Или так
        
        <console:print><arg><![CDATA[Hello, World!]]></arg></console:print>
        
        -->
    </my:main>
</program>


unicuum, ну что, зачет автоматом будет? user posted image

Хорошо, один вариант уже есть. Вероятно нужно попробовать вывести массу примеров для сравнения.

Цитата(diadiavova @  7.11.2009,  17:56 Найти цитируемый пост)
Zloxa, нееееее. Ты не понял. Давай разберёмся что такое язык в принципе. Не компьютерный и даже не программирования, поскольку они являются частными случаями понятия языка.

Алгоритм - это набор инструкций исполнителю на определённом языке для работы в некой среде.
Исполнитель - исполняющий набор инструкций (алгоритм) для некой среды.
Язык - формальная запись инструкций для описания среды (не обязательно исполнителю).
Среда - окружение в котором производятся видоизменения (не обязательно исполнителем).

XML это язык разметки, для него существуют исполнители. Они понимают данный язык, то есть как нужно производить разметку и могут выполнить по ней некие действия. Вот эта программа запросто может быть исполнена в современном браузере:

Код
<?xml version="1.0"?>
<!-- Hello World in XML -->
<text>
  <string>Hello, World!</string>
</text>


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


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


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


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




Цитата(unicuum @  7.11.2009,  20:43 Найти цитируемый пост)
XML это язык разметки, для него существуют исполнители. Они понимают данный язык, то есть как нужно производить разметку и могут выполнить по ней некие действия.

Вопрос только в том, что он размечает.
Цитата(unicuum @  7.11.2009,  20:43 Найти цитируемый пост)
Вот эта программа запросто может быть исполнена в современном браузере:

А ты уверен, что она написана на чистом XML? Что-то я не припомню, чтобы в спецификации XML были описаны элементы text или string
Цитата(unicuum @  7.11.2009,  20:43 Найти цитируемый пост)
По правилам программа "привет мир" должна с помощью исполнителя вывести это сообщение на устройство вывода (экран (консоль, графическая оболочка), принтер и т.д.). Иными словами исполнитель должен уметь считывать инструкции, потому что если он не соответствует программе ничего не получится.

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


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


Опытный
**


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




Цитата(diadiavova @  7.11.2009,  21:11 Найти цитируемый пост)
Вопрос только в том, что он размечает.

Цитата(unicuum @  7.11.2009,  20:43 Найти цитируемый пост)
Но повторюсь, синтаксис языка XML, это в первую очередь синтаксис разметки данных. 


Цитата(diadiavova @  7.11.2009,  21:11 Найти цитируемый пост)
А ты уверен, что она написана на чистом XML? Что-то я не припомню, чтобы в спецификации XML были описаны элементы text или string

smile


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


Чо?
****


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




Цитата(diadiavova @  7.11.2009,  17:56 Найти цитируемый пост)
Возьмём определние из википедии,

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

Если уж бермеся за определения, Ушаков языку дает аш 10 определений и первое из них "Орган в полости рта в виде подвижного мягкого выроста, являющийся органом вкуса, а у человека способствующий также образованию звуков речи". Из Ушаковского определения, даже С++ нельзя назвать языком. 



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


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


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




Zloxa, возможно у тебя есть собственное определение языка? Готов обсудить. А пример из вики я привёл, не как авторитетный, а ка вполне корректный, о чём и написал.


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


Опытный
**


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




Цитата(Zloxa @  8.11.2009,  01:07 Найти цитируемый пост)
Из Ушаковского определения, даже С++ нельзя назвать языком. 

А ещё некоторые считают, что язык C++ не является языком высокого уровня. Видимо раз он сам не программирует за них, то конечно. smile Хотя речь идёт о высоком уровне абстракций. Кому что удобно, тот то и думает, я сам поступаю точно так же. smile 


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


Опытный
**


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




ню...

Код

<?xml version="1.0" encoding="UTF-8"?>
<essences>
  <relation subtree="include">
    <programming russian="программирование">
      <association russian="включение" mind="содержит"/>
      <inheritance russian="наследование" mind="является"/>
    </programming>
    <set_theory rusian="теория множеств">
      <aggregation russian="объединение" mind="содержит"/>
      <generalization russian="обобщение" mind="является"/>
    </set_theory>
  </relation>
  <element english="essence" russian="сущность" synonym="object"/>
  <element english="action" russian="действие" synonym="method"/>
  <!-- болванки -->
  <object english="" russian=""></object>
  <method english="" russian=""></method>
  <object english="" russian=""/>
  <method english="" russian=""/>
  
  <object english="synonym" russian="подобие"/>
  <object english="antonym" russian="противоположность"/>
  
  <!-- ничто в мире не появляется из ниоткуда и не исчезает в никуда -->
  <object english="transfigurator" russian="видоизменитель">
    <object relation="antonym">
      <method english="create" russian="создать">
        <relation object="antonym" method="destroy"/>
      </method>
      <method english="destroy" russian="уничтожить">
        <relation object="antonym" method="create"/>
      </method>
    </object>
  </object>

  <concept>
    любое изменение значения это установка свойства,
    если значение установлено в то же самое, то
    оно не изменилось, однако учитывая, что есть подобие
    и равенство - тема философии, можно вывести
    некий новый интерфейс
  </concept>

  <concept>
    любое значение является свойством, но
    не любое свойство является значением
  </concept>
  
  <object english="value" russian="значение"/>
  
  <object english="property" russian="свойство">
    <object relation="antonym">
      <method english="get" russian="получить">
        <relation object="antonym" method="set"/>
      </method>
      <method english="set" russian="установить">
        <relation object="antonym" method="get"/>
      </method>
    </object>
  </object>

  <object english="tumbler" russian="тумблер">
    <object relation="antonym">
      <method english="on" russian="включен">
        <relation object="antonym" method="off"/>
      </method>
      <method english="off" russian="выключен">
        <relation object="antonym" method="on"/>
      </method>
    </object>
  </object>
  
  <object english="scribble" russian="переписчик">
    <object relation="antonym">
      <method english="read" russian="читать">
        <relation object="antonym" method="write"/>
      </method>
      <method english="write" russian="писать">
        <relation object="antonym" method="read"/>
      </method>
    </object>
  </object>

  <!-- сущность файла -->
  <object english="file" russian="файл">
  
    <object english="attribute" russian="атрибуты">
    
      <object english="directory" russian="направляющая">
        <object english="path" russian="путь">
          <object relation="property">
            <method english="get" russian="получить"/>
            <method english="set" russian="установить"/>
          </object>
        </object>

        <object english="name" russian="имя">
          <object relation="property">
            <method english="rename" russian="переименовать">
              <relation object="property" method="get"/>
            </method>
            <method english="set" russian="установить"/>
          </object>
        </object>

        <object english="extension" russian="расширение">
          <description language="english">filename extension</description>
          <description language="russian">расширение имени файла</description>
          <object relation="property">
            <method english="get" russian="получить"/>
            <method english="set" russian="установить"/>
          </object>
        </object>

        <object relation="property">
          <method english="get" russian="получить"/>
          <method english="set" russian="установить"/>
        </object>
      </object>
      
      <object english="content" russian="содержимое">
        <object english="size" russian="размер">
          <object relation="property">
            <method english="resize" russian="изменить размер">
              <relation object="property" method="get"/>
            </method>
            <method english="set" russian="установить"/>
          </object>
        </object>
        
        <object relation="tumbler">
          <method english="open" russian="открыть">
            <relation object="tumbler" method="on"/>
          </method>
          <method english="close" russian="закрыть">
            <relation object="tumbler" method="off"/>
          </method>
        </object>
    
        <object relation="scribble">
          <method english="read" russian="читать">
            <relation object="scribble" method="read"/>
          </method>
          <method english="write" russian="писать">
            <relation object="scribble" method="write"/>
          </method>
        </object>
    
        <object english="permissions" russian="разрешения">
          <object english="read only" russian="только чтение"/>
          <object english="write only" russian="только запись"/>
          <object english="read/write" russian="чтение/запись"/>
        </object>
      </object>
      
    </object> <!-- конец атрибутам -->
    
    <object english="transfigurator" russian="видоизменитель">
      <!-- методы -->
      <method english="create" russian="создать"/>
      <method english="remove" russian="удалить">
        <relation object="transfigurator" method="destroy"/>
      </method>
    </object>
    
    <!-- первый взгляд на проблему - пользователь -->
    <method english="copy" russian="копировать">
      <call name="copy"/>
      <call name="paste"/>
    </method>
    <method english="replace" russian="переместить">
      <call name="cut"/>
      <call name="paste"/>
    </method>
    <!-- второй взгляд на проблему - исполнитель -->
    <method english="copy" russian="копировать">
      <call name="copy"/>
    </method>
    <method english="replace" russian="переместить">
      <call name="copy"/>
      <call name="remove"/>
    </method>
    
    <!-- разные методы -->
    <method english="cut" russian="вырезать"/>
    <method english="paste" russian="вставить"/>
    <method english="is exist" russian="существует?"/>
    
  </object>

  <!-- буфер мысли -->
  <method english="multiply" russian="размножить"/>
  <method english="crash" russian="разрушить"/>
</essences>



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


Опытный
**


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




Код

<?xml version="1.0" encoding="UTF-8"?>
<essences>
  <!-- упрощённая модель -->
  <object english="mouses" russian="мышки">
    <!-- события -->
    <object english="mouse" russian="мышка">
      <object english="buttons" russian="кнопки">
        <method english="pressed" russian="нажата"> <!-- down - любая клавиша нажата-->
        <method english="depressed" russian="отжата"> <!-- up - любая клавиша отжата-->
      </object>
      <object english="wheel" russian="колёсико">
        <method english="rolling" russian="прокрутка"> <!-- wheel -->
      </object>
      <object english="pointer" russian="указатель">
        <method english="displacement" russian="смещение"> <!-- move - указатель сместился -->
      </object>
    </object>
  </object>
  <!-- размышления о gui элементах -->
  <object english="focus" russian="мышки">
    <method english="focus" russian="сосредотачивать">
    <method english="unfocus" russian="рассредоточить">
  </object>
  <object english="borders" russian="границы">
    <method english="inside" russian="внутри"><!-- hover - парит над элементом -->
    <method english="outside" russian="снаружи">
  </object>
</essences>



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


Опытный
**


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




Замечу, что по мнению некоторых, это "самый посещаемый форум рунета по программированию". smile


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


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re




Цитата(unicuum @  19.11.2009,  12:25 Найти цитируемый пост)
Замечу, что по мнению некоторых, это "самый посещаемый форум рунета по программированию". 
и что дальше? 

ты хочешь, что-бы кто-нибудь комментировал данные в формате XML? smile 
PM MAIL Skype GTalk   Вверх
unicuum
Дата 19.11.2009, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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




Цитата(Lazin @  19.11.2009,  14:11 Найти цитируемый пост)
ты хочешь, что-бы кто-нибудь комментировал данные в формате XML? 

Там кстати ошибки есть.


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


Кодофей
****


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




На дальняке почитаю smile 


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
diadiavova
Дата 19.11.2009, 18:49 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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




unicuum, это ты типа наметапрограммировал? smile 


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


Опытный
**


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




Цитата(diadiavova @  19.11.2009,  18:49 Найти цитируемый пост)
unicuum, это ты типа наметапрограммировал? user posted image

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


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


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


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




unicuum, ну и когда мы уже увидим твои метапрограммы? smile 


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


Опытный
**


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




Цитата(diadiavova @  21.11.2009,  15:43 Найти цитируемый пост)
unicuum, ну и когда мы уже увидим твои метапрограммы? user posted image

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


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


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


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




Цитата(unicuum @  21.11.2009,  18:37 Найти цитируемый пост)
а постить для себя я лучше на своём сайте буду. 
Лучше на метасайте запости smile 
А если серьёзно, то общение предполагает, что все собеседники понимают чего от них хотят, а когда топикастер сам не может сформулировать о чём тема и что означают ответы в его опросе, то диалога обычно не получается.


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


[хакер]
**


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




 smile 


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила раздела «Флейм»
Sneg0k

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

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

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

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

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

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


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


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


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

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


 




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


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

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