Матекатика + Немерле
От: Аноним  
Дата: 31.08.10 13:05
Оценка:
Прочил статьи с сайта о языке. Заинтересовал и вот этот тред http://rsdn.ru/forum/nemerle/3929250.flat.aspx
Автор: VladD2
Дата: 22.08.10
Пролог, это, конечно, круто, но может быть направить усилия в более мощное направление — Математика. Эту вещь используют чуть ли не во всех фин и начных проектах. Что уже больше компьюнити, чем у пролога. Я думаю, даже и Веба. Кусок не маленький, чтобы не привлекать его как потенциональных пользователей (я так понимаю, компьюнити — это сейчас ахилесова пята Немерле).

Что подрузомеваю под математикой. Естественно, не еще одно создание математической библиотеки в мире .NET, которых пруд пруди (те же адаптеры к МатЛаб очень даже все решают).

Я говорю о синтаксисе. Сейчас, для Нет программера фактически два пути: писать на спец. скриптовом языке формулы, или создавать мега страшные конструкции.

Взять к примеру нормальное распределение http://en.wikipedia.org/wiki/Normal_distribution

Как лаконично все записывается ввиде формулы:



Создать такое на C#, чтобы оно было понятно без названия метода человеку, который только пришел в проект, невозможно. Если человек знает математику — то он увидит сразу знакомые конструкции.

Такое на Немерле вообще возможно? Насколько можно далеко продвинуться в создании кастомного синтаксиса для математических выражений?
Re: Матекатика + Немерле
От: hardcase Пират http://nemerle.org
Дата: 31.08.10 13:21
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Такое на Немерле вообще возможно? Насколько можно далеко продвинуться в создании кастомного синтаксиса для математических выражений?


Возможно (правда придется парсер сделать на PEG-е для строк <# ... #>), но только нужен будет юзер-интерфейс для просмотра и редактирования таких математических выражений. Как это совместить с редактором кода — уже большой вопрос.
/* иЗвиНите зА неРовнЫй поЧерК */
Re: Матекатика + Немерле
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 31.08.10 13:35
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Создать такое на C#, чтобы оно было понятно без названия метода человеку, который только пришел в проект, невозможно. Если человек знает математику — то он увидит сразу знакомые конструкции.


По-моему, проблема надуманная. Математики спокойно пользуются своими Матлабами и Мейплами без спец-синтаксиса и не жалуются.
Ce n'est que pour vous dire ce que je vous dis.
Re[2]: Матекатика + Немерле
От: Аноним  
Дата: 31.08.10 14:04
Оценка:
Здравствуйте, Don Reba, Вы писали:

DR>Здравствуйте, Аноним, Вы писали:


А>>Создать такое на C#, чтобы оно было понятно без названия метода человеку, который только пришел в проект, невозможно. Если человек знает математику — то он увидит сразу знакомые конструкции.


DR>По-моему, проблема надуманная. Математики спокойно пользуются своими Матлабами и Мейплами без спец-синтаксиса и не жалуются.


Проблема не надуманная. В том то и дело, что это нужно не для математиков. У нас они, как Вы правильно заметили, сидят в своих программах. Но, как бы это помягче сказать, плевать на то, на чем они там сидят. Я говорю про программистов, которые C#. Требования такие, что должны знать на уровне математику. Сами понимаете, грааля нет, и сильное знание математики (или физики) снижает способности писать код хорошо (и чисто). Получается, что они и программисты, но так как очень много математической логики, уровень качества кода снижается (выбор между ездой и шашечками).

Вот сейчас и рассматривается вариант с применением некоего интегрированного Math linq (кстати, о его потребностях в начале так же думали — проблема надуманная ). Но только не для работы с коллекциями, а именно построением формул.

Я сам из фин области. Но до этого занимался как раз проганием в науч области. Везде связки уровня еж-уж. И это при том, что у нас все мега шустро передается по сети, отображается в вебе. Но как только начинается мал логика — все, приехали. Каждый реализует формулу на свой лад.

Парсер ввиде <##> — это не то. Нужно вычисление в компайл тайме. По максимуму. Плюс контроль выражений. Чтобы процентную ставку с прибылью случайно не умножить.
Re[3]: Матекатика + Немерле
От: hardcase Пират http://nemerle.org
Дата: 31.08.10 14:08
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Вот сейчас и рассматривается вариант с применением некоего интегрированного Math linq (кстати, о его потребностях в начале так же думали — проблема надуманная ). Но только не для работы с коллекциями, а именно построением формул.


А>Парсер ввиде <##> — это не то. Нужно вычисление в компайл тайме. По максимуму. Плюс контроль выражений. Чтобы процентную ставку с прибылью случайно не умножить.


Он и работает в компайл тайме. LINQ в Немерле так сделан.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[4]: Матекатика + Немерле
От: Аноним  
Дата: 31.08.10 14:24
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Он и работает в компайл тайме. LINQ в Немерле так сделан.


Почитал... Вполне, вполне. А можно расписать, какого максимально плиближенного синтаксима к формулам можно добиться через такую конструкцию?
Re[5]: Матекатика + Немерле
От: hardcase Пират http://nemerle.org
Дата: 31.08.10 14:36
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, hardcase, Вы писали:


H>>Он и работает в компайл тайме. LINQ в Немерле так сделан.


А>Почитал... Вполне, вполне. А можно расписать, какого максимально плиближенного синтаксима к формулам можно добиться через такую конструкцию?


Мощность генератора парсеров (LRPEGCC) позволяет разбирать языки типа C# (в данный момент я разрабатываю обновленный транслятор C# -> Nemerle).
Вопрос в том, какой синтаксис был бы приемлемым для записи математических формул?
Полноценная запись формул (как в учебниках) возможна только с помощью специальных редакторов. Если использовать какую-то вариацию MathML, то встает вопрос об отображении этой красотищи.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[6]: Матекатика + Немерле
От: Аноним  
Дата: 31.08.10 14:47
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Мощность генератора парсеров (LRPEGCC) позволяет разбирать языки типа C# (в данный момент я разрабатываю обновленный транслятор C# -> Nemerle).

H>Вопрос в том, какой синтаксис был бы приемлемым для записи математических формул?

В идеале, такой же, как и в математике. Потому как такие вещи можно просто копировать из мат редакторов, с последующей правкой в коде на предмет названия переменных и конвертации типов. Но тут есть одно но — спец сиволы. Но, мое мнение, удобство в просмотре спец символов будет превышать их недостаток напечатать с клавы. Да и такие вещи легко решаются макросами студии. Спец комбинация — и вот оно квадратичное выражение... Думаю, те же code snippets решают эту проблема на ура... Была бы поддержка со стороны компилятора.

H>Полноценная запись формул (как в учебниках) возможна только с помощью специальных редакторов. Если использовать какую-то вариацию MathML, то встает вопрос об отображении этой красотищи.


Интеллисенс, на самом деле, не особо требуется. Это та часть кода, которая больше думается, чем кодируется. Главное, чтобы студия не подсвечивала красным. Это будет раздражать.
Re[7]: Матекатика + Немерле
От: hardcase Пират http://nemerle.org
Дата: 31.08.10 15:21
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, hardcase, Вы писали:


H>>Мощность генератора парсеров (LRPEGCC) позволяет разбирать языки типа C# (в данный момент я разрабатываю обновленный транслятор C# -> Nemerle).

H>>Вопрос в том, какой синтаксис был бы приемлемым для записи математических формул?

А>В идеале, такой же, как и в математике.


Т.е. как? Покажите пример.
А то из первого поста создается впечатление, что нужна запись, идентичная выкладкам из учебника матанализа.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[8]: Матекатика + Немерле
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 31.08.10 15:25
Оценка:
Здравствуйте, hardcase, Вы писали:

А>>В идеале, такой же, как и в математике.


H>Т.е. как? Покажите пример.

H>А то из первого поста создается впечатление, что нужна запись, идентичная выкладкам из учебника матанализа.

Насколько я понимаю, имется в виду скрипт из Mathematica:

http://reference.wolfram.com/mathematica/guide/LanguageOverview.html
Ce n'est que pour vous dire ce que je vous dis.
Re[9]: Матекатика + Немерле
От: hardcase Пират http://nemerle.org
Дата: 31.08.10 15:30
Оценка: +1
Здравствуйте, Don Reba, Вы писали:

DR>Насколько я понимаю, имется в виду скрипт из Mathematica:


DR>http://reference.wolfram.com/mathematica/guide/LanguageOverview.html


В принципе сделать собственный парсер и компилятор этого дела в AST Nemerle не так сложно, вопрос в том, насколько это будет востребовано.
/* иЗвиНите зА неРовнЫй поЧерК */
Re: Матекатика + Немерле
От: VladD2 Российская Империя www.nemerle.org
Дата: 31.08.10 17:55
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Как лаконично все записывается ввиде формулы:


А>

http://www.rsdn.ru/forum/NewMsg.aspx?mid=3940518
Автор:
Дата: 31.08.10

Пользоваться разными греческими символами (если кому-то они вставляют) можно и сейчас (причем даже шарпе).

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

По сему или нужно смериться с записью вида 1 / √ π Square(σ) ..., или нужно использовать натацию вроде Текса, но при этом текст будет еще менее читабельным и потребуются некие средства визуализации. В принципе в рамках Visual Studio 2010 такие визуализаторы можно будет сотварить, но пока что Немрел не поддерживает ее. Ну, и это не малая работа.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Матекатика + Немерле
От: Аноним  
Дата: 01.09.10 09:19
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Пользоваться разными греческими символами (если кому-то они вставляют) можно и сейчас (причем даже шарпе).


Да, действительно, работает. Сила юникода.

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


Согласен. Но в этот то вся и прелесть. Согласитесь, сейчас ни одни мейн стрим язык даже близко не предлагает такое. А то, что потребность в науч вычисления, становиться все больше, думаю со мной согласяться. У нас даже математики, и то рады перепрыкнуть на шарп (да хоть на ВБ, лишь бы все мощь НЕТА юзать). Я когда им показываю среду свою, 2010, с Intellitrace включеным, так они слюни чуть не до пола пускают. Но как только я им покажу, класс Math, и что мы с ним творим Вообщем, и рады, да не могут. Потому и такое есть мнение, что МатЛаб (и всякие математики) рулят, а .NET для этого пока не приспособлен. А это не так. Да все он приспособлен. Просто выбора нету. Нету.

А C# до этого дойдет, когда я уже на пенсии буду сидеть. Эх, такой был язык, первые версии чуть ли не через год клепали. А сейчас, из-за громадной комьюнити, начали пятилетку ваять. Понаехали, блин, программисты.

Вообщем, если заниматься этим, то я готов не просто потрындеть. Был бы вектор.
Re[3]: Матекатика + Немерле
От: hardcase Пират http://nemerle.org
Дата: 01.09.10 10:22
Оценка: +1
Здравствуйте, Аноним, Вы писали:

А>Согласен. Но в этот то вся и прелесть. Согласитесь, сейчас ни одни мейн стрим язык даже близко не предлагает такое. А то, что потребность в науч вычисления, становиться все больше, думаю со мной согласяться. У нас даже математики, и то рады перепрыкнуть на шарп (да хоть на ВБ, лишь бы все мощь НЕТА юзать). Я когда им показываю среду свою, 2010, с Intellitrace включеным, так они слюни чуть не до пола пускают. Но как только я им покажу, класс Math, и что мы с ним творим Вообщем, и рады, да не могут. Потому и такое есть мнение, что МатЛаб (и всякие математики) рулят, а .NET для этого пока не приспособлен. А это не так. Да все он приспособлен. Просто выбора нету. Нету.



Я вижу пожалуй лишь одну проблему — редактор формул, так как в коде сейчас абсолютно любой сторонний DSL можно выразить через рекурсивные строки (и парсер, который их обработает в компайл-тайме, — это не сложно):
math <# \[Integral] k[x] \[DifferentialD]x // FullForm #>  // интеграл k[x] dx


С другой стороны, если использовать синтаксис Mathematica, который есть ни что иное как набор операторов и параметров в квадратных скобках, то можно даже без парсера обойтись — Nemerle позволяет записывать выражения типа Integrate[x[k], x]. Весь вопрос — визуализация подобных выражений, которую нельзя сделать без поддержки IDE.
/* иЗвиНите зА неРовнЫй поЧерК */
Re: Матекатика + Немерле
От: hardcase Пират http://nemerle.org
Дата: 05.09.10 11:35
Оценка: 42 (1)
Здравствуйте, Аноним, Вы писали:

А>Такое на Немерле вообще возможно? Насколько можно далеко продвинуться в создании кастомного синтаксиса для математических выражений?


А вот что было сделано на C#.
/* иЗвиНите зА неРовнЫй поЧерК */
Re: Матекатика + Немерле
От: para  
Дата: 05.09.10 15:50
Оценка: +1
Здравствуйте, Аноним, Вы писали:

А>Такое на Немерле вообще возможно? Насколько можно далеко продвинуться в создании кастомного синтаксиса для математических выражений?


На Nemerle почти всё возможно!.
Можно например сделать, так:
написать макрос, который будет проверять и генерировать код по файлу MathML в компайл-тайме. (например, используя http://www.rsdn.ru/forum/nemerle/3946704.1.aspx
Автор: hardcase
Дата: 05.09.10
)
сам файл можно редактировать и во внешнем редакторе.
в принципе наверное этого может быть достаточно, но накручивать фичи можно еще и ещё.

в общем, как всегда проще сказать чем сделать, но сделать можно и не очень сложно- было бы желение.
Re[2]: Матекатика + Немерле
От: hardcase Пират http://nemerle.org
Дата: 05.09.10 20:10
Оценка:
Здравствуйте, para, Вы писали:

P>сам файл можно редактировать и во внешнем редакторе.


У меня была мысль следующая, разметка типа MathML/Mathematica хранится в виде рекурсивной строки.
Когда подобная строка появляется в редакторе на экране, всплывает некое полупрозрачное окно "с ниточкой" -как при показе возникшего исключения в VisualStudio — для отображения и редактирования этой формулы.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[3]: Матекатика + Немерле
От: Аноним  
Дата: 06.09.10 09:45
Оценка:
Здравствуйте, hardcase, Вы писали:

H>У меня была мысль следующая, разметка типа MathML/Mathematica хранится в виде рекурсивной строки.

H>Когда подобная строка появляется в редакторе на экране, всплывает некое полупрозрачное окно "с ниточкой" -как при показе возникшего исключения в VisualStudio — для отображения и редактирования этой формулы.

Самым элегантным и удобным решением, на мой взгляд, было бы просто вставлять картинку. И тултип при наведении, как с теми же исключениями. Насколько я понял, студия уже такое позволяет. Те же иконки в ошибками, просмотр значения переменной — это все картинки.
Re[4]: Матекатика + Немерле
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.09.10 16:58
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Самым элегантным и удобным решением, на мой взгляд, было бы просто вставлять картинку. И тултип при наведении, как с теми же исключениями. Насколько я понял, студия уже такое позволяет. Те же иконки в ошибками, просмотр значения переменной — это все картинки.


В VS 2010 редактор кода сделан на основе WPF, что делает его очень расширяемым. Так что когда мы реализуем поддержку VS 2010, можно будет сделать прямо встраеваемые формулы редактируемые по месту. Но в VS 2008 это сделать проблематично.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Матекатика + Немерле
От: Аноним  
Дата: 07.09.10 09:55
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>В VS 2010 редактор кода сделан на основе WPF, что делает его очень расширяемым. Так что когда мы реализуем поддержку VS 2010, можно будет сделать прямо встраеваемые формулы редактируемые по месту. Но в VS 2008 это сделать проблематично.


Хм, у нас как бы нет особой проблемы перейти на 2010. По крайней мере, не видно пробле. Сейчас пока на 2008 сидим, но переход будет в этом году в лобом случае... А интеграция Немерле сейчас есть для 2008? Когда планируете закончить? И может и не стоит продолжать доделывать? Все равно переход на новую уже начался.

Насчет того, что на WPF, я уже заметил. Пришлось для теста заказать новую машинку. Парни из другой команды сказали, что теперь, если R# юзать, то 4 гига минимум нужно.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.