Re[13]: Сменяемые бэкэнды и разные языки
От: WolfHound  
Дата: 25.05.11 09:05
Оценка:
Здравствуйте, adontz, Вы писали:

A>http://en.wikipedia.org/wiki/High-level_programming_language

Блаблабла.

A>Неэффективность конечного результата, сложность разработки DSL превышающая сложность разработки программы старыми способами.

ЛОЛ! Ты сколько ДСЛ разработал то?
ДСЛ специфичные оптимизации могут оптимизировать так что
Попробуй, например руками оптимизировать конечный автомат, состоящий хотя бы из нескольких десятков состояний.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[14]: Сменяемые бэкэнды и разные языки
От: adontz Грузия http://adontz.wordpress.com/
Дата: 25.05.11 09:15
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>ДСЛ специфичные оптимизации могут оптимизировать так что

WH>Попробуй, например руками оптимизировать конечный автомат, состоящий хотя бы из нескольких десятков состояний.

ОМГ, ты правда не понимаешь разницы в платформах? Ты там пишешь даже не на ассемблере, а скорее на микрокоде. Оптимизацией так может быть замыкание какой-то ножек (аппаратно!).
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[15]: Сменяемые бэкэнды и разные языки
От: WolfHound  
Дата: 25.05.11 09:19
Оценка:
Здравствуйте, adontz, Вы писали:

A>ОМГ, ты правда не понимаешь разницы в платформах? Ты там пишешь даже не на ассемблере, а скорее на микрокоде. Оптимизацией так может быть замыкание какой-то ножек (аппаратно!).

Это ты нихрена не понимаешь.
ДСЛ может скомпилироваться во что угодно. В том числе в инструкцию, какие ножки замкнуть.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[10]: Framework для создания языков программирования
От: Ziaw Россия  
Дата: 25.05.11 10:41
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Не понимаю, зачем оно может быть надо.

WH>Только давай от задачи, а не от решения.

Есть такая задача, в ASP.NET MVC нужно передать некий набор данных. Набор формируется в методе контроллера, используется во вью.

public ActionResult Index()
{
   var blogs = from b in blogs
               orderby b.CreatedAt descendant
               select new { b.Id, b.Title, Author = b.Author.Name};
   return View(somemacro(blogs.ToList())) // IList<Анонимный тип с нужными полями>
}

//view

<ul>
  @foreach (var blog in Model)
    <li id="blog-@blog.Id">
      <span class="blog-author">@blog.Author</span>
      <span class="blog-title">@blog.Title</span>
    </li>
</ul>


Модель должна быть явно типизирована. Тип модели нужно задать динамически в макросе somemacro, компилятор вьюхи должен подхватить его и использовать. Писать ручками такие классы на каждый экшен очень накладно.
Re[11]: Framework для создания языков программирования
От: WolfHound  
Дата: 25.05.11 10:54
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>Модель должна быть явно типизирована. Тип модели нужно задать динамически в макросе somemacro, компилятор вьюхи должен подхватить его и использовать. Писать ручками такие классы на каждый экшен очень накладно.

Другими словами тип метода View должен быть выведен из использования этого метода, а не задан явно?
Тут макросы вообще не причем.
Нужно просто научить вывод типов выводить типы методов.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[16]: Сменяемые бэкэнды и разные языки
От: adontz Грузия http://adontz.wordpress.com/
Дата: 25.05.11 10:56
Оценка: +1
Здравствуйте, WolfHound, Вы писали:

A>>ОМГ, ты правда не понимаешь разницы в платформах? Ты там пишешь даже не на ассемблере, а скорее на микрокоде. Оптимизацией так может быть замыкание какой-то ножек (аппаратно!).

WH>Это ты нихрена не понимаешь.
WH>ДСЛ может скомпилироваться во что угодно. В том числе в инструкцию, какие ножки замкнуть.

То есть возвращаемся к тезису парой сообщений выше: создание DSL более трудоёмко, чем создание программы старыми методами.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[12]: Framework для создания языков программирования
От: Ziaw Россия  
Дата: 25.05.11 11:30
Оценка:
Здравствуйте, WolfHound, Вы писали:

Z>>Модель должна быть явно типизирована. Тип модели нужно задать динамически в макросе somemacro, компилятор вьюхи должен подхватить его и использовать. Писать ручками такие классы на каждый экшен очень накладно.

WH>Другими словами тип метода View должен быть выведен из использования этого метода, а не задан явно?
WH>Тут макросы вообще не причем.
WH>Нужно просто научить вывод типов выводить типы методов.

Нет, все сложнее. Вьюха это класс в другой сборке и типы нужны в нем (WebViewPage<TModel>). А метод View типизировать необязательно, он всего лишь передает объект, на типы ему положить.

В нрельсах я дожидаюсь конца типизации, генерю нужный тип для вьюхи. А компилятор вьюхи смотрит, есть ли такой тип и генерит типизированный класс если тип есть.
Re[17]: Сменяемые бэкэнды и разные языки
От: WolfHound  
Дата: 25.05.11 12:02
Оценка:
Здравствуйте, adontz, Вы писали:

A>То есть возвращаемся к тезису парой сообщений выше: создание DSL более трудоёмко, чем создание программы старыми методами.

Вот тебе правило:
      keyword = ("abstract"     / "as"          / "base"        / "bool"        / "break"
                / "byte"        / "case"        / "catch"       / "char"        / "checked"
                / "class"       / "const"       / "continue"    / "decimal"     / "default"
                / "delegate"    / "do"          / "double"      / "else"        / "enum"
                / "event"       / "explicit"    / "extern"      / "false"       / "finally"
                / "fixed"       / "float"       / "for"         / "foreach"     / "goto"
                / "if"          / "implicit"    / "in"          / "int"         / "interface"
                / "internal"    / "is"          / "lock"        / "long"        / "namespace"
                / "new"         / "null"        / "object"      / "operator"    / "out"
                / "override"    / "params"      / "private"     / "protected"   / "public"
                / "readonly"    / "ref"         / "return"      / "sbyte"       / "sealed"
                / "short"       / "sizeof"      / "stackalloc"  / "static"      / "string"
                / "struct"      / "switch"      / "this"        / "throw"       / "true"
                / "try"         / "typeof"      / "uint"        / "ulong"       / "unchecked"
                / "unsafe"      / "ushort"      / "using"       / "virtual"     / "void"
                / "volatile"    / "while"       ) !identifierPartCharacters;

Трансформируй это безобразие в минимальный конечный автомат руками.
/ означает или.
В результате получается лапша из 171ого состояния.
Удачи.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[13]: Framework для создания языков программирования
От: WolfHound  
Дата: 25.05.11 12:06
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>Нет, все сложнее. Вьюха это класс в другой сборке и типы нужны в нем (WebViewPage<TModel>). А метод View типизировать необязательно, он всего лишь передает объект, на типы ему положить.

Те ты в одной сборке генерируешь типы.
А в другой их используешь?
Те на начало компиляции въюхи у тебя все типы уже есть.
Я тогда вообще не понимаю в чем проблема и чем это отличается от простого описания типа в другой сборке.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[18]: Сменяемые бэкэнды и разные языки
От: adontz Грузия http://adontz.wordpress.com/
Дата: 25.05.11 12:10
Оценка:
Здравствуйте, WolfHound, Вы писали:

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


A>>То есть возвращаемся к тезису парой сообщений выше: создание DSL более трудоёмко, чем создание программы старыми методами.

WH>Вот тебе правило:

Ты не прыгай, мы про микропроцессоры говорим.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[19]: Сменяемые бэкэнды и разные языки
От: WolfHound  
Дата: 25.05.11 12:41
Оценка:
Здравствуйте, adontz, Вы писали:

A>Ты не прыгай, мы про микропроцессоры говорим.

А я не прыгаю.
Вполне себе задача. Загнать в микроконтроллер некий автомат который распознает на лету строки.
Удачи сделать ее руками.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[20]: Сменяемые бэкэнды и разные языки
От: adontz Грузия http://adontz.wordpress.com/
Дата: 25.05.11 12:43
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Вполне себе задача. Загнать в микроконтроллер некий автомат который распознает на лету строки.

WH>Удачи сделать ее руками.

Завязывай с демагогией, на контроллёре с 8К памяти писать парсер текста даже не смешно. Выглядишь несерьёзно.
A journey of a thousand miles must begin with a single step © Lau Tsu
й с демагг
Re[14]: Framework для создания языков программирования
От: Ziaw Россия  
Дата: 25.05.11 12:44
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Те ты в одной сборке генерируешь типы.

WH>А в другой их используешь?
WH>Те на начало компиляции въюхи у тебя все типы уже есть.
WH>Я тогда вообще не понимаю в чем проблема и чем это отличается от простого описания типа в другой сборке.

Для генерации типа макросу нужен типизированный АСТ. Ты же хочешь всю типизацию проводить после макросов и за один проход.
Re[6]: Framework для создания языков программирования
От: Ziaw Россия  
Дата: 25.05.11 12:52
Оценка:
Здравствуйте, cvetkov, Вы писали:

VD>>Не правильно. IDE имеет доступ ко всему.

C>понятно. значит для каждого языка весь код связи с IDE свой. весь код бекенда свой?

Для IDE, вероятно, понадобится некий код. Но идентификаторы, типы вызовы, ключевые слова будут преобразованы в AST с сохранением оригинальных локейшенов. Т.е. подсветку сделать проблем не составит. Для автокомплита тоже есть довольно много информации в грамматике.
Re[21]: Сменяемые бэкэнды и разные языки
От: WolfHound  
Дата: 25.05.11 12:59
Оценка:
Здравствуйте, adontz, Вы писали:

A>Завязывай с демагогией, на контроллёре с 8К памяти писать парсер текста даже не смешно. Выглядишь несерьёзно.

Как обычно пошло юление.
Слив засчитан.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[6]: Framework для создания языков программирования
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.05.11 12:59
Оценка:
Здравствуйте, cvetkov, Вы писали:

VD>>Не правильно. IDE имеет доступ ко всему.

C>понятно. значит для каждого языка весь код связи с IDE свой. весь код бекенда свой?

Не совсем. Есть общая часть. Она очень объемная. Это подсветка синтаксиса, фолдинг, навигация по коду, поиск использования, рефакторинги вроде переименования, автодополнение при вводе и кое что еще, короче почти весь интеллисенс. Но с одной стороны для конкретных языков информация будет универсальным образом извлекаться из SST, а с другой есть задачи которые нельзя решить универсально. Например, многие рефакторинги зависят от синтаксиса языка. Для этих целей будет возможность использовать SST напрямую. При этом можно будет использовать паттерн-матчинг и квази-цитирование, так как для каждого синтаксического макроса будет формироваться код обработки квази-цитат. С их помощью можно будет конструировать SST и производить его декомпозицию (с помощью паттерн-матчинга).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[15]: Framework для создания языков программирования
От: WolfHound  
Дата: 25.05.11 13:00
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>Для генерации типа макросу нужен типизированный АСТ. Ты же хочешь всю типизацию проводить после макросов и за один проход.

До маскросов, а не после.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[22]: Сменяемые бэкэнды и разные языки
От: adontz Грузия http://adontz.wordpress.com/
Дата: 25.05.11 13:01
Оценка: :)
Здравствуйте, WolfHound, Вы писали:

A>>Завязывай с демагогией, на контроллёре с 8К памяти писать парсер текста даже не смешно. Выглядишь несерьёзно.

WH>Как обычно пошло юление.
WH>Слив засчитан.

Кто первым скажет "слив засчитан", тот и победил, ага.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[16]: Framework для создания языков программирования
От: Ziaw Россия  
Дата: 25.05.11 13:57
Оценка:
Здравствуйте, WolfHound, Вы писали:

Z>>Для генерации типа макросу нужен типизированный АСТ. Ты же хочешь всю типизацию проводить после макросов и за один проход.

WH>До маскросов, а не после.

Тогда вообще ничего не понимаю, просил же, опиши по человечески.

Как компилятор будет типизировать код вроде этого?
def x = mymacro();
WriteLine($"x = $x");
Re[9]: Сменяемые бэкэнды и разные языки
От: Ziaw Россия  
Дата: 25.05.11 14:03
Оценка: :)
Здравствуйте, adontz, Вы писали:

WH>>Так зачем народ NHibernate писал?


A>Ну, например, потому что J# только 32битный.


Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.