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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Метапрограммирование 
:(
    Опции темы
 
Метапрограммирование
Да [ 11 ]  [64.71%]
Нет [ 6 ]  [35.29%]
Всего проголосовавших: 17
В этом опросе возможен один вариант ответа
Гости не могут голосовать 
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   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила раздела «Флейм»
Sneg0k

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

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

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

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

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

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


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


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


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

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


 




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


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

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