Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Oslo, новая заморочка от хлебодарцев 
:(
    Опции темы
SKrivosein
Дата 19.3.2009, 05:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Идущий в даль
**


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

Репутация: 4
Всего: 8



Может кто слышал по подробней, что задумали учителя и наставники ->"Oslo"
А то ещё завтра учить надо будет smile  smile какой то М



Это сообщение отредактировал(а) SKrivosein - 19.3.2009, 06:02


--------------------
Оптимист - это плохо информированный человек.
user posted image

PM MAIL   Вверх
Partizan
Дата 19.3.2009, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



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


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
SKrivosein
Дата 19.3.2009, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Идущий в даль
**


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

Репутация: 4
Всего: 8



Я так понимаю, это они хотят cильно продвинутый UML от Microsofta сделать

Это сообщение отредактировал(а) SKrivosein - 19.3.2009, 16:18


--------------------
Оптимист - это плохо информированный человек.
user posted image

PM MAIL   Вверх
diadiavova
Дата 21.3.2009, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

Репутация: 31
Всего: 142



Посмотрел я это осло, немного почитал, и понял - ВЕСЧ. Скачал, сейчас разбираюсь. 

Цитата(Partizan @  19.3.2009,  10:01 Найти цитируемый пост)
Это, судя по всему, задумка для нового проблемно-ориентированного языка...

Насколько я понял, это платформа для создания таких языков. С асмим M я ещё не разбирался, но в SDK входит язык MGrammar. С ним я позанимался. Язык простой и понятный служит для описания грамматики языков. В SDK входят библиотеки, с помощью которых можно быстро построить дерево из кода написанного на языке, описанном при помощи MGrammar. 
Приведу пример того, что уже намутил smile 
Код написанный на самом MGrammar.
Код

module Math
{
 language Expression
 {
    token digits="0".."9"+;
    token exp = ("e"|"E")("-"|"+")? ("0".."9")#1..3;
    token opLevel1_left = "+" => "Sum"
    |"-" => "Def";
    token bracketOpen = "(" => null;
    token bracketClosed = ")"=>null; 
    token opLevel2_left = "*" => "Product"
    |"/" => "Devision";
    token identifer = ("a".."z"|"A".."Z")("a".."z"|"A".."Z"|"0".."9")*;
    token number = n:(digits ("." digits)? exp?) => Number[n];
    syntax argDelimeter = "," => null;
    
    syntax function = n:identifer args:argList
    => Function[Name[n], Arguments[args]];
    syntax variable = v:identifer => v ;

    syntax argList= bracketOpen f:Expr r:(argDelimeter Expr)* bracketClosed
    =>   [f, valuesof(r)];
    syntax Expr = e:(n:number => n
    |var:variable => Variable[var] 
    |function
    |l:Expr left(2) op:opLevel2_left r:Expr => 
        id(op)[Left[l],Right[r]]
        |l:Expr left(1) op:opLevel1_left r:Expr => 
        id(op)[Left[l],Right[r]]
        |bracketOpen Expr bracketClosed)=> e;
    
    syntax Main = Expr;
    interleave ws = ("\u0020"|"\u0009")+;
 }


}


Грамматика описывает математические выражения, включающие 4 арифметических оператора, числа, переменные и функции.
Для примра возьмём выражение AnyFunc(x + 3*cos(y), 2, 3.4e-5, sin(z)).
Грамматика генерирует из этого выражения следующее дерево
Код

Main[
  [
    Function[
      Name[
        "AnyFunc"
      ],
      Arguments[
        [
          Sum[
            Left[
              Variable[
                "x"
              ]
            ],
            Right[
              Product[
                Left[
                  Number[
                    "3"
                  ]
                ],
                Right[
                  [
                    Function[
                      Name[
                        "cos"
                      ],
                      Arguments[
                        [
                          Variable[
                            "y"
                          ]
                        ]
                      ]
                    ]
                  ]
                ]
              ]
            ]
          ],
          [
            Number[
              "2"
            ]
          ],
          [
            Number[
              "3.4e-5"
            ]
          ],
          [
            [
              Function[
                Name[
                  "sin"
                ],
                Arguments[
                  [
                    Variable[
                      "z"
                    ]
                  ]
                ]
              ]
            ]
          ]
        ]
      ]
    ]
  ]
]

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

По-моему  - совсем не дурственно.

Это сообщение отредактировал(а) diadiavova - 21.3.2009, 18:12


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


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



diadiavova, насколько я понял из этого всего - на входе задаём грамматику языка и выражение, а на выходе имеем дерево разбора?


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
diadiavova
Дата 21.3.2009, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

Репутация: 31
Всего: 142



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


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


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



diadiavova, довольно интересная вещица...


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
archeg
Дата 21.3.2009, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 11
Всего: 27



Расскажите по-подробней плз, где такую штуку можно применятьsmile А то я что-то не могу пример придумать  smile 


--------------------
ИМХО задница есть универсальный интерфейс. Ибо через задницу можно сделать абсолютно ВСЕ (bash.org.ru)

Дядька всегда можно спросить в аське, если не задалбывать - не откажет smile
И вообще, на самом деле я студент, и ненавижу обращение на "Вы") Тут все свои  ;)
PM MAIL ICQ Jabber   Вверх
diadiavova
Дата 21.3.2009, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

Репутация: 31
Всего: 142



archeg, о какой штуке речь? О предметно-ориентированных языках, технологиях их создания или, конкретно, языках, описывающих грамматики?


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


Опытный
**


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

Репутация: 11
Всего: 27



Цитата(diadiavova @ 21.3.2009,  23:31)
archeg, о какой штуке речь? О предметно-ориентированных языках, технологиях их создания или, конкретно, языках, описывающих грамматики?

Вообще имел ввиду именно языки, которые описывают грамматику. Непонятно где было бы удобно его использовать)
Под проблемно-ориентированым языком я понял язык который просто ориентирован на конкретно решаемую задачу. Как например язык матЛаба или Хтмл. Вообще каждый язык можно считать ориентированым под конкретную задачу smile


--------------------
ИМХО задница есть универсальный интерфейс. Ибо через задницу можно сделать абсолютно ВСЕ (bash.org.ru)

Дядька всегда можно спросить в аське, если не задалбывать - не откажет smile
И вообще, на самом деле я студент, и ненавижу обращение на "Вы") Тут все свои  ;)
PM MAIL ICQ Jabber   Вверх
diadiavova
Дата 22.3.2009, 02:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

Репутация: 31
Всего: 142



Языки, описывающие грамматику, используются очень широко, как средство быстрой разработки компьютерных языков. Создание парсера "ручками" - задача достаточно трудоёмкая. Она включает в себя написание большого количества хоть и не особенно сложного, но при этом сильно запутанного кода. Написание изменение и отладка такого кода - жуткий геморрой. В то же время, структуру языка описать совсем не сложно, и мало того, код разбирающий текст в соответствии с определённой структурой - достаточно стандартен. Поэтому для создания программ, в которых реализуется разбор какого-нибудь языка, используются грамматики. По сути грамматика тоже язык программирования, только более высокого уровня чем то, к чему мы привыкли (декларативная модель).

Цитата(archeg @  22.3.2009,  02:11 Найти цитируемый пост)
Под проблемно-ориентированым языком я понял язык который просто ориентирован на конкретно решаемую задачу

Правильно понял, но там есть нюансы. Благодаря тому, что такие языки не пытаются охватить всё, они, обычно имеют простую структуру, кроме того, они , как правило, тоже декларативны, что позволяет описать конкретную задачу, а не способ её реализации. 
Это не обязательно полноценный язык. На самом деле с такими языками приходится иметь дело постоянно, даже когда запрос в гуголь вводишь, это уже язык, который разбирается и интерпретируется. Туда же можно отнести и язык регулярных выражений и ещё кучу всего.
В SDK для Visual Studio есть инструменты для разработки таких языков, встраиваимых в последствии в студию. Там есть специальный язык для их описания  и в самой студии такие языки присутствуют(диаграмма классов, например),  они в основном построены на XML. 


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


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


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

Репутация: 31
Всего: 142



Кстати в википедии(английской) по этому поводу хорошая статья с массой полезных ссылок по теме
http://en.wikipedia.org/wiki/Domain-specific_language.



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


Эксперт
***


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

Репутация: 13
Всего: 49



Кстати, вот статья в последнем выпуске MSDN Magazine: http://msdn.microsoft.com/ru-ru/magazine/dd419662.aspx. МС наконец-то сделал шаг от кодогенерации по модели до полноценных DSL smile


--------------------
PM MAIL WWW   Вверх
Partizan
Дата 23.3.2009, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



PashaPash, ссылка битая


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
PashaPash
Дата 23.3.2009, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 13
Всего: 49



Partizan, толкьо что кликнул - живая. иди через гугл :(


--------------------
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


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

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




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


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

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