Re[5]: Compiler As Service - зачем?
От: Nikolay_P_I  
Дата: 02.11.10 06:29
Оценка: +1
Добавлю — лучше бы этот инструментарий (в широком смысле) упрощали.

На код, потребный для работы Configuration Manager по сравнению с простой сериализацией конфиг-класса глядишь с содроганием, вместо Logging Application Block используешь log4net или nlog, при изменение схемы БД редактирование DataSet (а еще если он от VS2005) — сплошной мат, особенно если без работающей БД. В объекты от EF POCO Generator — поля добавляются через пересоздание таблицы целиком, анекдот про "продуктами от MS можно пользоваться только после SP1" перестал быть анекдотом после выхода VS2010 — лучше бы вместо новых фич — старые допиливали.
Re[5]: Compiler As Service - зачем?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 02.11.10 09:36
Оценка: +1
Здравствуйте, Nikolay_P_I, Вы писали:

N_P>При том, что С++ в плане "сложности инструментов" был далеко впереди.


Это только так кажется на первый взгляд.
... << RSDN@Home 1.2.0 alpha 4 rev. 1476 on Windows 7 6.1.7600.0>>
AVK Blog
Re[2]: Compiler As Service - зачем?
От: igor609  
Дата: 02.11.10 14:17
Оценка:
Здравствуйте, AndrewVK, Вы писали:

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


Tom>>1. Что значит Compiler As Service? Означает ли это что все елементы компилятора будет возможно реюзить.


AVK>Нет.


Tom>> Скажем просто парсер C# можно ли будет использовать?


AVK>В какой то мере.


Tom>>2. Собственно что это даёт


AVK>В основном возможность простого написания собственного не очень навороченного решарпера или сходного по потребным технологиям расширения студии.


Tom>> и в чём отличие от текущего компилятора который можно и сейчас прекрастно вызвать и получить сборку, которую затем можно прекрасно загрузить и выполнить нужный метод из нужного класса.


AVK>В том, что можно получить AST, причем которое еще и модифицировать удастся.


Tom>>В общем в чём праздник то?


AVK>Праздник в основном в managed языковых пакетах с богатыми и понятными внешними интерфейсами, что существенно упростит жизнь тем, кто разрабатывает поддержку собственных фреймворков и инструментов в рамкак студии.


Андрей, а почему бы вам не рассмотреть использование немерловского парсера в самом решарпере. Это бы вас избавило от головной боли самому поддерживать компилятор, с лёгкостью можно добавить парсер любого языка, такого как javascript, вы ведь сейчас именно над этим работаете в решарпере 6.
Re[3]: Compiler As Service - зачем?
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.11.10 15:41
Оценка: :)
Здравствуйте, igor609, Вы писали:

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


— Почему батарея не вела огонь.
— На это было несколько причин. Первая — не было патронов.
Бородатая хохма.

По поводу решарпера, Андрей вроде как в ДжетБрэйнсе на сегодня не работает. Так что вопрос не к нему.
Но ответ в общем-то известен. У этого парсера есть фатальный недостаток. А фатальный недостаток перечеркивает любые достоинства.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Compiler As Service - зачем?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 02.11.10 16:21
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>По поводу решарпера, Андрей вроде как в ДжетБрэйнсе на сегодня не работает. Так что вопрос не к нему.

VD>Но ответ в общем-то известен. У этого парсера есть фатальный недостаток. А фатальный недостаток перечеркивает любые достоинства.

Может чем обвинять других в необъективности сделал бы что полезное для потенциальных пользователей? Документация API, примеры использования не на Nemerle. У библиотеки действительно есть фатальный недостаток — я не знаю как её прикрутить к своему проекту.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[3]: Compiler As Service - зачем?
От: Алексей.  
Дата: 02.11.10 17:23
Оценка: 22 (2) +2 -1 :))
Здравствуйте, igor609, Вы писали:

I>... а почему бы вам не рассмотреть использование немерловского парсера в самом решарпере. Это бы вас избавило от головной боли самому поддерживать компилятор, с лёгкостью можно добавить парсер любого языка, такого как javascript, вы ведь сейчас именно над этим работаете в решарпере 6.


Подозреваю, что Немерле больше добавит проблем чем решит их.

1. У разработчик Решарпера и Немерле очень разные цели. Разработчики Решарпера занимаются созданием коммерчески успешного проекта. Их интересуют такие некрутые вещи как совместимость со спецификацией C# и компилятором Microsoft, поставка продукта вовремя (одновременно с новым релизом студии) и прочее. Разработчики Немерле хотят создать суперЯП, коммерческая сторона вопроса их пока мало интересует.
2. Парсер Немерле совместим с C# 4.0 только синтаксически (и то не на 100%), семантика сильно отличается. Корректная программа на C# 4.0 будет отвергнута компилятором Немерле, или ресолвинг метода укажет на другой метод. Т.е. парсер Немерле для разбора C# использовать нельзя. Можно только использовать Немерле для написания собственного парсера C#. Опять у разработчиков Решарпера есть свой парсер C#, который отлажен и хорошо совместим с C#, зачем его менять? Наличие собственного парсера — это не головная боль, а преимущество дающее стабильность и предсказуемость.
3. Переход на Немерле приведет к тому что разработчики Решарпера станут зависеть от прихоти разработчиков Немерле. Нет никаких гарантий того что новые версии Немерле будут обеспечивать высокий уровень совместимости со старыми версиями или что однажды что-то поломается при добавлении новой суперфичи. Опять же, где взять столько программистов знающих Немерле?

Переход с C# на Немерле коммерчески невыгоден.
Re[4]: Compiler As Service - зачем?
От: hardcase Пират http://nemerle.org
Дата: 02.11.10 17:34
Оценка:
Здравствуйте, Алексей., Вы писали:

А>2. Парсер Немерле совместим с C# 4.0 только синтаксически (и то не на 100%), семантика сильно отличается. Корректная программа на C# 4.0 будет отвергнута компилятором Немерле, или ресолвинг метода укажет на другой метод. Т.е. парсер Немерле для разбора C# использовать нельзя.


Вот только не надо путать людей. Парсер Немерле совместим исключительно с Немерле. Парсер C# — с известной версией C#.
То, что он используется для автоконвертирования C# программ в программы на Nemerle лишь одна из его потенциальных областей применения.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[5]: Compiler As Service - зачем?
От: Алексей.  
Дата: 02.11.10 17:40
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Вот только не надо путать людей. Парсер Немерле совместим исключительно с Немерле. Парсер C# — с известной версией C#.

H>То, что он используется для автоконвертирования C# программ в программы на Nemerle лишь одна из его потенциальных областей применения.

Т.е. ты хочешь сказать что парсер C# на Nemerle полностью (ну или хотя бы на 99,9%) семантически совместим с компилятором C# от Microsoft?
Re[6]: Compiler As Service - зачем?
От: nikov США http://www.linkedin.com/in/nikov
Дата: 02.11.10 17:49
Оценка: +1
Здравствуйте, Алексей., Вы писали:

А>Т.е. ты хочешь сказать что парсер C# на Nemerle полностью (ну или хотя бы на 99,9%) семантически совместим с компилятором C# от Microsoft?


Как я понял, это просто парсер, он резолвом не занимается, и его семантика не волнует.
Re[6]: Compiler As Service - зачем?
От: hardcase Пират http://nemerle.org
Дата: 02.11.10 17:50
Оценка:
Здравствуйте, Алексей., Вы писали:

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


H>>Вот только не надо путать людей. Парсер Немерле совместим исключительно с Немерле. Парсер C# — с известной версией C#.

H>>То, что он используется для автоконвертирования C# программ в программы на Nemerle лишь одна из его потенциальных областей применения.

А>Т.е. ты хочешь сказать что парсер C# на Nemerle полностью (ну или хотя бы на 99,9%) семантически совместим с компилятором C# от Microsoft?


Я не могу понять как парсер можеть быть семантически совместим с компилятором.
Парсер есть программа распознающая текст, и на выходе у нее дерево синтаксического разбора.
Всетаки компилятор это чуточку более сложная программа, она делает чуть больше чем парсер — помимо синтаксического разбора выполняется семантический анализ и генерируется исполняемый код.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[7]: Compiler As Service - зачем?
От: Алексей.  
Дата: 02.11.10 18:03
Оценка:
Здравствуйте, hardcase, Вы писали:

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

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

Тогда он точно не сможет заинтересовать разработчиков Решарпера. Подозреваю что синтаксический анализ — это от силы 1% от всех трудозатрат.
Re[8]: Compiler As Service - зачем?
От: hardcase Пират http://nemerle.org
Дата: 02.11.10 18:08
Оценка:
Здравствуйте, Алексей., Вы писали:

А>Тогда он точно не сможет заинтересовать разработчиков Решарпера. Подозреваю что синтаксический анализ — это от силы 1% от всех трудозатрат.


Ну так я чтоли его продвигаю им?
/* иЗвиНите зА неРовнЫй поЧерК */
Re[5]: Compiler As Service - зачем?
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.11.10 18:13
Оценка: 57 (2)
Здравствуйте, adontz, Вы писали:

A>Может чем обвинять других в необъективности сделал бы что полезное для потенциальных пользователей?


1. Я никого не обвиняю. Я высмеиваю недостатки .
2. Я только и делаю, что "полезное для потенциальных пользователей".

A> Документация API, примеры использования не на Nemerle.


Где-то Х лет назад я слышал подобные слова (чуть ли не от тебя же). По наивности я было даже подумал, что "лед тронулся" (с) и пошел конструктивный интерес, но быстро оказалось, что все это была попытка найти оправданию фатальному недостатку.

OK, попробуем еще раз.
Описание PegGrammar в .doc-формате (того самого макроса который позволяет генерировать парсеры).
Пример — парсер C# 4.0.
Грамматика из этого примера.
Пример, по проще — строчный калькулятор.
Пример по проще первого, но посложнее второго — парсер ДжаваСктипта.
Тоже не сложный пример — грамматика для XML-литералов. XML-литералы — это макра немерла позволяющая использовать в код на немерле литералы ХМЛ-я поддерживающие квазци-фитироание. Вот пример использования (точнее тесты) этого макроса.

A>У библиотеки действительно есть фатальный недостаток — я не знаю как её прикрутить к своему проекту.

Тоже не вопрос. Здесь находится код формы GUI-теста парсера C#. Собственно он совсем небольшой, так что можно привести его здесь с комментариями:
using Nemerle.Collections;
using Nemerle.Text;
using Nemerle.Utility;

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using CSharpParser;

namespace CSharpParser.GUI
{
  /// <summary>
  /// Description of MainForm.
  /// </summary>
  public partial class MainForm : Form
  {
    public this()
    {
      InitializeComponent();
    }
  
    mutable _parser : Parser;
  
    private btn_parse_Click(_sender : object, _e : System.EventArgs) : void
    {
      _parser = CSharpParser.Parser(); // создаем парсер
      def source = Nemerle.Peg.SourceSnapshot(txt_input.Text); // создаем обертку для кода
      def timer = Diagnostics.Stopwatch.StartNew();
      def (pos, result) = _parser.TryParse(source); // парсим код
      if(pos > 0) // если разбор прошел успешно...
      {
        btn_show_error.Visible = false;
        def errors = result.GetPrseErrors(); // ...все равно берем список ошибок, так как могли встретиться не фатальные ошибки. Да, да наш парсер поддерживает востановление после обнаружения ошибок! :)
        txt_output.Text = $"Parsing took $(timer.Elapsed) $(txt_input.Text.Length / timer.Elapsed.TotalSeconds / 1024)KB/S\nErrors: $(errors.Count)\n..$errors\n" + result.ToString(); // выводим сообщение об ошибках
      }
      else // произошел фатальный сбой. Парсер не смог продолжить назбор.
      {
        btn_show_error.Visible = true;
        def (_, ids) = _parser.GetMaxRollbackPosAndIds(); // получаем место где это произошло
        txt_output.Text = $"Parsing took $(timer.Elapsed) $(txt_input.Text.Length / timer.Elapsed.TotalSeconds / 1024)KB/S\r\nError in inpute.\r\nExpected:\n"
                        + $<#    ..$(ids; "\r\n    "; id => _parser.GetRuleName(id))#>; // формируем сообщение об ошибке
      }
    }
  
    private btn_show_error_Click (_sender : object,  _e : System.EventArgs) : void
    {
      def (pos, _) = _parser.GetMaxRollbackPosAndIds(); //
      txt_input.SelectionStart = pos;
      
      txt_input.ScrollToCaret();
      txt_input.SelectionLength = 1;
      txt_input.Select();
    }
  }
}
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: Compiler As Service - зачем?
От: Алексей.  
Дата: 02.11.10 18:22
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Ну так я чтоли его продвигаю им?


Так я изначально ответ не тебе писал.
Re[4]: Compiler As Service - зачем?
От: IT Россия linq2db.com
Дата: 02.11.10 18:39
Оценка: 57 (3)
Здравствуйте, Алексей., Вы писали:

А>3. Переход на Немерле приведет к тому что разработчики Решарпера станут зависеть от прихоти разработчиков Немерле. Нет никаких гарантий того что новые версии Немерле будут обеспечивать высокий уровень совместимости со старыми версиями или что однажды что-то поломается при добавлении новой суперфичи.


У разработчиков Решарпера есть возможность не только поучаствовать в разработке Немерле, но и взять его под свою опеку и непосредственно влиять на все эти процессы.

А>Опять же, где взять столько программистов знающих Немерле?


Фигли его там знать. В JetBrains работают весьма толковые ребята и если что-то их и сдерживает от изучения Немерле, то это ни в коем случае не сложность языка.

А>Переход с C# на Немерле коммерчески невыгоден.


Доказательств и выкладок столь смелого утверждения, я так понимаю, можно не ждать?
Если нам не помогут, то мы тоже никого не пощадим.
Re[5]: Compiler As Service - зачем?
От: Алексей.  
Дата: 02.11.10 18:58
Оценка:
Здравствуйте, IT, Вы писали:

А>>Переход с C# на Немерле коммерчески невыгоден.


IT>Доказательств и выкладок столь смелого утверждения, я так понимаю, можно не ждать?


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

Можно встречный вопрос? Почему BLToolkit, на мой взгляд весьма интересная библиотека, по-прежнему на C#, а не на Немерле? Спрашиваю не ради подкола, а в плане узнать обоснование неперевода на Немерле.
Re[6]: Compiler As Service - зачем?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 02.11.10 19:26
Оценка:
Здравствуйте, VladD2, Вы писали:

A>>У библиотеки действительно есть фатальный недостаток — я не знаю как её прикрутить к своему проекту.

VD>Тоже не вопрос. Здесь находится код формы GUI-теста парсера C#. Собственно он совсем небольшой, так что можно привести его здесь с комментариями:

И я должен был искать в репозитории? Ну можно же это как-то так оформить, чтобы можно было найти.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[6]: Compiler As Service - зачем?
От: IT Россия linq2db.com
Дата: 02.11.10 21:49
Оценка:
Здравствуйте, Алексей., Вы писали:

А>>>Переход с C# на Немерле коммерчески невыгоден.

IT>>Доказательств и выкладок столь смелого утверждения, я так понимаю, можно не ждать?

А>Доказательств нет и не будет — это же не теорема, всего лишь субъективное мнение.


Я так и думал.

А>Достаточно оглянуться вокруг и попытаться найти хоть один коммерческий продукт написанный на Немерле.


Это тоже как я понимаю всего лишь субъективное мнение? Или под критерий "хоть один коммерческий продукт" подпадают только те продукты, создатели которых не тусуются на RSDN?

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


Есть, которые ты не знаешь.

А>Можно встречный вопрос? Почему BLToolkit, на мой взгляд весьма интересная библиотека, по-прежнему на C#, а не на Немерле? Спрашиваю не ради подкола, а в плане узнать обоснование неперевода на Немерле.


В этом нет смысла. Работы много, а получится тоже самое. Другое дело используя идеи и наработки Булкита написать новую библиотеку работы с данными. С обновлённой архитектурой, использованием макросов, без рудиментов и атавизмов. Это задача интересная и многообещающая. Например, можно с определённой долей уверенности сказать, что использование такой библиотеки будет порождать код, работающий с той же производительностью или быстрее рукописного, что, изспользуя сегодняшние средства, недостижимо.
Если нам не помогут, то мы тоже никого не пощадим.
Re[7]: Compiler As Service - зачем?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 02.11.10 21:51
Оценка:
Здравствуйте, IT, Вы писали:

А>>Достаточно оглянуться вокруг и попытаться найти хоть один коммерческий продукт написанный на Немерле.

IT>Это тоже как я понимаю всего лишь субъективное мнение? Или под критерий "хоть один коммерческий продукт" подпадают только те продукты, создатели которых не тусуются на RSDN?

А какие коммерческие продукты на Немерле создали у те, кто тусуется на РСДН? Я не подначиваю, просто ничего о них не слышал.

А>>Можно встречный вопрос? Почему BLToolkit, на мой взгляд весьма интересная библиотека, по-прежнему на C#, а не на Немерле? Спрашиваю не ради подкола, а в плане узнать обоснование неперевода на Немерле.

IT>В этом нет смысла.

А вот теперь я подначиваю.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[8]: Compiler As Service - зачем?
От: IT Россия linq2db.com
Дата: 02.11.10 22:26
Оценка: +1
Здравствуйте, adontz, Вы писали:

А>>>Достаточно оглянуться вокруг и попытаться найти хоть один коммерческий продукт написанный на Немерле.

IT>>Это тоже как я понимаю всего лишь субъективное мнение? Или под критерий "хоть один коммерческий продукт" подпадают только те продукты, создатели которых не тусуются на RSDN?

A>А какие коммерческие продукты на Немерле создали у те, кто тусуется на РСДН? Я не подначиваю, просто ничего о них не слышал.


Например, товарищ, который пилит рельсы, признался, что сам же их используе в своих коммерческих продуктах. Ещё несколько человек утверждали, что используют. Всех не помню. Где-то в форуме Немерле была ветка с несколькими такими признаниями

А>>>Можно встречный вопрос? Почему BLToolkit, на мой взгляд весьма интересная библиотека, по-прежнему на C#, а не на Немерле? Спрашиваю не ради подкола, а в плане узнать обоснование неперевода на Немерле.

IT>>В этом нет смысла.

A>А вот теперь я подначиваю.


В чём подначка?
Если нам не помогут, то мы тоже никого не пощадим.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.