Всем привет, раз уж все говорят про C#5 то видимо и спрашивать про него можно
Вопроса собственно 2.
1. Что значит Compiler As Service? Означает ли это что все елементы компилятора будет возможно реюзить. Скажем просто парсер C# можно ли будет использовать?
2. Собственно что это даёт и в чём отличие от текущего компилятора который можно и сейчас прекрастно вызвать и получить сборку, которую затем можно прекрасно загрузить и выполнить нужный метод из нужного класса. Та же XML серилизация генерит себе сборки на лету.
Здравствуйте, Tom, Вы писали:
Tom>1. Что значит Compiler As Service? Означает ли это что все елементы компилятора будет возможно реюзить. Скажем просто парсер C# можно ли будет использовать?
Я этого жду
Tom>2. Собственно что это даёт и в чём отличие от текущего компилятора который можно и сейчас прекрастно вызвать и получить сборку, которую затем можно прекрасно загрузить и выполнить нужный метод из нужного класса. Та же XML серилизация генерит себе сборки на лету.
Я так понимаю можно сделать основанный на парсере компилятора инструмент рефакторинга или подсветку синтаксиса или ещё что-нибудь эдакое.
Здравствуйте, Tom, Вы писали:
Tom>Всем привет, раз уж все говорят про C#5 то видимо и спрашивать про него можно Tom>Вопроса собственно 2. Tom>1. Что значит Compiler As Service? Означает ли это что все елементы компилятора будет возможно реюзить. Скажем просто парсер C# можно ли будет использовать? Tom>2. Собственно что это даёт и в чём отличие от текущего компилятора который можно и сейчас прекрастно вызвать и получить сборку, которую затем можно прекрасно загрузить и выполнить нужный метод из нужного класса. …
Status of Compiler Services Project
Although no official announcements were made on this subject, Anders did show a demo that uses the current version of this project. In his demo he showed an extension to visual studio that uses the compiler services to copy code in C# to the clipboard and paste it as VB.NET code, the extension uses the compiler generated syntax tree for the code to do the conversion accurately.
Другой пример, с каким-то outlining regions для if statement не заработал.
Tom>…Та же XML серилизация генерит себе сборки на лету. Tom>В общем в чём праздник то?
Задачи метапрограммирования и даже написания макросов на C# так же решаются уже много лет с помощью разнообразных рерайтеров Да только это всё костыли, не натурально.
Help will always be given at Hogwarts to those who ask for it.
:
Finally Anders closed its talk on the Compiler As Service state. ... What Anders revealed yesterday is that a public fine-grained API will be made available to tweak the work of the compiler in any way you can think of.
Это он про 5й или про 6й шарп?
И да, никакого AOP изкоробки. Вот щас напилят велосипедов...
Здравствуйте, Tom, Вы писали:
Tom>Всем привет, раз уж все говорят про C#5 то видимо и спрашивать про него можно
Tom>Вопроса собственно 2. Tom>1. Что значит Compiler As Service? Означает ли это что все елементы компилятора будет возможно реюзить. Скажем просто парсер C# можно ли будет использовать?
Пример с C# -> VB вроде это и показал. Tom>2. Собственно что это даёт и в чём отличие от текущего компилятора который можно и сейчас прекрастно вызвать и получить сборку, которую затем можно прекрасно загрузить и выполнить нужный метод из нужного класса. Та же XML серилизация генерит себе сборки на лету.
А как с помощью текущего компилятора можно получить ast C#?
Tom>В общем в чём праздник то?
Раз Хейлсберг упоминал метапрограммирование, то я очень надеюсь что оно таки будет, например повесив атрибут
[Notify]
public int Value{get;set;}
Можно будет сгенерировать реализацию INotifyPropertyChanged.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Talk is cheap. Show me the code.
Re: Compiler As Service - зачем?
От:
Аноним
Дата:
01.11.10 07:18
Оценка:
Здравствуйте, Tom, Вы писали:
...
3. а зачем всем managed компилятор?
Re[2]: Compiler As Service - зачем?
От:
Аноним
Дата:
01.11.10 07:57
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Tom, Вы писали:
А>...
А>3. а зачем всем managed компилятор?
вообще, все это маразм людей, утонувших в своем болоте — "программирование ради программирования"...
_FR>Задачи метапрограммирования и даже написания макросов на C# так же решаются уже много лет с помощью разнообразных рерайтеров Да только это всё костыли, не натурально.
А может — ну его нафиг ? Я напоминаю, что "80% всего — говно" и, как представитель этого не-5000$-в-месяц говна скажу откровенно — мне не нравится тенденция, когда можно будет начинать проводить конкурсы "по невнятному С#". Оно уже сейчас — открываешь .cs весь в var`ах и лямбдах в текстовом редакторе — и думаешь — "что хотел сказать автор?".
Здравствуйте, Nikolay_P_I, Вы писали:
N_P>А может — ну его нафиг ? Я напоминаю, что "80% всего — говно" и, как представитель этого не-5000$-в-месяц говна скажу откровенно — мне не нравится тенденция, когда можно будет начинать проводить конкурсы "по невнятному С#". Оно уже сейчас — открываешь .cs весь в var`ах и лямбдах в текстовом редакторе — и думаешь — "что хотел сказать автор?".
Программирование из ремесла опять превращается в искусство, правда абстрактное.
Здравствуйте, Nikolay_P_I, Вы писали:
_FR>>Задачи метапрограммирования и даже написания макросов на C# так же решаются уже много лет с помощью разнообразных рерайтеров Да только это всё костыли, не натурально.
N_P>А может — ну его нафиг ? Я напоминаю, что "80% всего — говно" и, как представитель этого не-5000$-в-месяц говна скажу откровенно — мне не нравится тенденция, когда можно будет начинать проводить конкурсы "по невнятному С#". Оно уже сейчас — открываешь .cs весь в var`ах и лямбдах в текстовом редакторе — и думаешь — "что хотел сказать автор?".
Дык административно запретите у ся лямбды/var'ы, если не умеете их готовить. Делов то.
Здравствуйте, Tom, Вы писали:
Tom>1. Что значит Compiler As Service? Означает ли это что все елементы компилятора будет возможно реюзить.
Нет.
Tom> Скажем просто парсер C# можно ли будет использовать?
В какой то мере.
Tom>2. Собственно что это даёт
В основном возможность простого написания собственного не очень навороченного решарпера или сходного по потребным технологиям расширения студии.
Tom> и в чём отличие от текущего компилятора который можно и сейчас прекрастно вызвать и получить сборку, которую затем можно прекрасно загрузить и выполнить нужный метод из нужного класса.
В том, что можно получить AST, причем которое еще и модифицировать удастся.
Tom>В общем в чём праздник то?
Праздник в основном в managed языковых пакетах с богатыми и понятными внешними интерфейсами, что существенно упростит жизнь тем, кто разрабатывает поддержку собственных фреймворков и инструментов в рамкак студии.
... << RSDN@Home 1.2.0 alpha 4 rev. 1476 on Windows 7 6.1.7600.0>>
Здравствуйте, Nikolay_P_I, Вы писали:
N_P>А может — ну его нафиг ? Я напоминаю, что "80% всего — говно" и, как представитель этого не-5000$-в-месяц говна скажу откровенно — мне не нравится тенденция, когда можно будет начинать проводить конкурсы "по невнятному С#". Оно уже сейчас — открываешь .cs весь в var`ах и лямбдах в текстовом редакторе — и думаешь — "что хотел сказать автор?".
Тем не менее сложность инструментов будет расти и дальше. Придется либо работать головой, либо искать сектор, где нужно много "индусов", либо менять профессию.
... << RSDN@Home 1.2.0 alpha 4 rev. 1476 on Windows 7 6.1.7600.0>>
Здравствуйте, dotneter, Вы писали:
D>Раз Хейлсберг упоминал метапрограммирование, то я очень надеюсь что оно таки будет, например повесив атрибут D>[Notify] D>public int Value{get;set;} D>Можно будет сгенерировать реализацию INotifyPropertyChanged.
У Андерса довольно специфичное представление о МП, так что я бы не стал так далеко гадать на основании столь скудных данных.
... << RSDN@Home 1.2.0 alpha 4 rev. 1476 on Windows 7 6.1.7600.0>>
Здравствуйте, <Аноним>, Вы писали:
А>3. а зачем всем managed компилятор?
Код текущего компилятора ужасени крайне тяжело поддается модификации. Коме того, последние две версии основная задержка с выпуском релизов связана с поддержкой новых фич языка в языковых пакетах студии, которые тоже нифига не managed.
... << RSDN@Home 1.2.0 alpha 4 rev. 1476 on Windows 7 6.1.7600.0>>
Здравствуйте, Tom, Вы писали:
Tom>1. Что значит Compiler As Service?
Это очередной базворд для произнесения на презентациях.
Но под ним скрываются давно известные (некторые уже по 50 лет) технологии известные в узких кругах не мэйнстрима.
Сюда входят такие вещие как:
1. Метапрограммирование на базе транфсормации АСТ. Появилось в LISP где-то окола 45 лет назад. В шарпе этого пункта боятся. Плюс для его реализации работать надо много. Так что будет реализовано в очень ограниченной форме. Скорее всего в виде возможности во время компиляции получить код в виде чего-то вроде деревьев выражений и траформировать его с помощь паттерна Посетитель. В узких кругах не мэйнстрима такой подход принято назвать "закат солнца вручную". Расширения синтаксиса не придвитится, так что в лучшем случае фича должна позволить сделать нечто вроде макро-атрибутов Немерла.
2. REPL — выполнение кода из консоли с возможностью инкрементального добавления участков кода. Появилось в том же LISP примерно в то же время как и фича из п.
3. Возможность выполнить кусок кода переданный в виде строки. В не мэйнстрима известен как функция eval(). Появилась в LISP около 50 лет назад (когда ученики Маккарти написали интерпретатор Лиспа на Лиспе).
Здравствуйте, Tom, Вы писали:
Tom>Означает ли это что все елементы компилятора будет возможно реюзить. Скажем просто парсер C# можно ли будет использовать?
Если не в падлу использовать код не написанный в стенах МС, то тут лежит парсер 4.0. Лицензия MIT (т.е. даром). Можешь не ждать много лет, а использовать уже сейчас.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, dotneter, Вы писали:
D>Раз Хейлсберг упоминал метапрограммирование, то я очень надеюсь что оно таки будет, например повесив атрибут D>[Notify] D>public int Value{get;set;} D>Можно будет сгенерировать реализацию INotifyPropertyChanged.
Погоди! А что же будут говорить после этого все те кто с пеной у рта доказывал, что макросы — сакс, а рулят только T4 и какая-то матерь?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, adontz, Вы писали:
A>Здравствуйте, Nikolay_P_I, Вы писали:
N_P>>А может — ну его нафиг ? Я напоминаю, что "80% всего — говно" и, как представитель этого не-5000$-в-месяц говна скажу откровенно — мне не нравится тенденция, когда можно будет начинать проводить конкурсы "по невнятному С#". Оно уже сейчас — открываешь .cs весь в var`ах и лямбдах в текстовом редакторе — и думаешь — "что хотел сказать автор?".
A>Программирование из ремесла опять превращается в искусство, правда абстрактное.
Вот видите, люди не работают, а занимаются искусством, а какие-то "лохи" это оплачивают.. а потом целая индустрия напрягается и блюет, пытаясь избавится от очередной опухоли. Только избавившись, рак начинает снова развиваться в другом месте... Похоже это не излечимо, тем более в России, пока у нас сырьевая экономика...
Плохо то, что мальчики студентики клюют на это наживку, а потом некого брать на работу, все только и занимаются искусством "красоты высказывания", а не стройностью и гибкостью смысла...
Re[3]: Compiler As Service - зачем?
От:
Аноним
Дата:
02.11.10 05:37
Оценка:
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, dotneter, Вы писали:
D>>Раз Хейлсберг упоминал метапрограммирование, то я очень надеюсь что оно таки будет, например повесив атрибут D>>[Notify] D>>public int Value{get;set;} D>>Можно будет сгенерировать реализацию INotifyPropertyChanged.
AVK>У Андерса довольно специфичное представление о МП, так что я бы не стал так далеко гадать на основании столь скудных данных.
Сложность??????????? Расти?????????????
Что может быть сложнее того, что было уже давно придумано в 80-е...? СССР-овские мамы с папами не рассказали потому, что не знали какие бывают системы? ...причем сетевые, распределенные и очень гибко настраиваемые, не требующие перекодирования на очень искуссных и красивых языках? Чего не было — интернета и вэба? Было )))) Только другой формат отображения... Отображение интернет магазина через браузер — лажа, по сравнению со всей инфраструктурой решения. А зачем придумывать сложности в трех березах? Чтобы получать 5000$ в месяц на пустом месте и заниматься искусством?
Здравствуйте, AndrewVK, Вы писали:
N_P>>А может — ну его нафиг ? Я напоминаю, что "80% всего — говно" и, как представитель этого не-5000$-в-месяц говна скажу откровенно — мне не нравится тенденция, когда можно будет начинать проводить конкурсы "по невнятному С#". Оно уже сейчас — открываешь .cs весь в var`ах и лямбдах в текстовом редакторе — и думаешь — "что хотел сказать автор?".
AVK>Тем не менее сложность инструментов будет расти и дальше. Придется либо работать головой, либо искать сектор, где нужно много "индусов", либо менять профессию.
В исторической, так сказать, реальности мы имеем переход от С++ в пользу С#. При том, что С++ в плане "сложности инструментов" был далеко впереди. Ан нет — всякому метапрограммированию предпочли GC и строгую типизацию.
Добавлю — лучше бы этот инструментарий (в широком смысле) упрощали.
На код, потребный для работы Configuration Manager по сравнению с простой сериализацией конфиг-класса глядишь с содроганием, вместо Logging Application Block используешь log4net или nlog, при изменение схемы БД редактирование DataSet (а еще если он от VS2005) — сплошной мат, особенно если без работающей БД. В объекты от EF POCO Generator — поля добавляются через пересоздание таблицы целиком, анекдот про "продуктами от MS можно пользоваться только после SP1" перестал быть анекдотом после выхода VS2010 — лучше бы вместо новых фич — старые допиливали.
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, Tom, Вы писали:
Tom>>1. Что значит Compiler As Service? Означает ли это что все елементы компилятора будет возможно реюзить.
AVK>Нет.
Tom>> Скажем просто парсер C# можно ли будет использовать?
AVK>В какой то мере.
Tom>>2. Собственно что это даёт
AVK>В основном возможность простого написания собственного не очень навороченного решарпера или сходного по потребным технологиям расширения студии.
Tom>> и в чём отличие от текущего компилятора который можно и сейчас прекрастно вызвать и получить сборку, которую затем можно прекрасно загрузить и выполнить нужный метод из нужного класса.
AVK>В том, что можно получить AST, причем которое еще и модифицировать удастся.
Tom>>В общем в чём праздник то?
AVK>Праздник в основном в managed языковых пакетах с богатыми и понятными внешними интерфейсами, что существенно упростит жизнь тем, кто разрабатывает поддержку собственных фреймворков и инструментов в рамкак студии.
Андрей, а почему бы вам не рассмотреть использование немерловского парсера в самом решарпере. Это бы вас избавило от головной боли самому поддерживать компилятор, с лёгкостью можно добавить парсер любого языка, такого как javascript, вы ведь сейчас именно над этим работаете в решарпере 6.
Здравствуйте, igor609, Вы писали:
I>Андрей, а почему бы вам не рассмотреть использование немерловского парсера в самом решарпере.
— Почему батарея не вела огонь.
— На это было несколько причин. Первая — не было патронов.
Бородатая хохма.
По поводу решарпера, Андрей вроде как в ДжетБрэйнсе на сегодня не работает. Так что вопрос не к нему.
Но ответ в общем-то известен. У этого парсера есть фатальный недостаток. А фатальный недостаток перечеркивает любые достоинства.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>По поводу решарпера, Андрей вроде как в ДжетБрэйнсе на сегодня не работает. Так что вопрос не к нему. VD>Но ответ в общем-то известен. У этого парсера есть фатальный недостаток. А фатальный недостаток перечеркивает любые достоинства.
Может чем обвинять других в необъективности сделал бы что полезное для потенциальных пользователей? Документация API, примеры использования не на Nemerle. У библиотеки действительно есть фатальный недостаток — я не знаю как её прикрутить к своему проекту.
Здравствуйте, igor609, Вы писали:
I>... а почему бы вам не рассмотреть использование немерловского парсера в самом решарпере. Это бы вас избавило от головной боли самому поддерживать компилятор, с лёгкостью можно добавить парсер любого языка, такого как javascript, вы ведь сейчас именно над этим работаете в решарпере 6.
Подозреваю, что Немерле больше добавит проблем чем решит их.
1. У разработчик Решарпера и Немерле очень разные цели. Разработчики Решарпера занимаются созданием коммерчески успешного проекта. Их интересуют такие некрутые вещи как совместимость со спецификацией C# и компилятором Microsoft, поставка продукта вовремя (одновременно с новым релизом студии) и прочее. Разработчики Немерле хотят создать суперЯП, коммерческая сторона вопроса их пока мало интересует.
2. Парсер Немерле совместим с C# 4.0 только синтаксически (и то не на 100%), семантика сильно отличается. Корректная программа на C# 4.0 будет отвергнута компилятором Немерле, или ресолвинг метода укажет на другой метод. Т.е. парсер Немерле для разбора C# использовать нельзя. Можно только использовать Немерле для написания собственного парсера C#. Опять у разработчиков Решарпера есть свой парсер C#, который отлажен и хорошо совместим с C#, зачем его менять? Наличие собственного парсера — это не головная боль, а преимущество дающее стабильность и предсказуемость.
3. Переход на Немерле приведет к тому что разработчики Решарпера станут зависеть от прихоти разработчиков Немерле. Нет никаких гарантий того что новые версии Немерле будут обеспечивать высокий уровень совместимости со старыми версиями или что однажды что-то поломается при добавлении новой суперфичи. Опять же, где взять столько программистов знающих Немерле?
Здравствуйте, Алексей., Вы писали:
А>2. Парсер Немерле совместим с C# 4.0 только синтаксически (и то не на 100%), семантика сильно отличается. Корректная программа на C# 4.0 будет отвергнута компилятором Немерле, или ресолвинг метода укажет на другой метод. Т.е. парсер Немерле для разбора C# использовать нельзя.
Вот только не надо путать людей. Парсер Немерле совместим исключительно с Немерле. Парсер C# — с известной версией C#.
То, что он используется для автоконвертирования C# программ в программы на Nemerle лишь одна из его потенциальных областей применения.
Здравствуйте, hardcase, Вы писали:
H>Вот только не надо путать людей. Парсер Немерле совместим исключительно с Немерле. Парсер C# — с известной версией C#. H>То, что он используется для автоконвертирования C# программ в программы на Nemerle лишь одна из его потенциальных областей применения.
Т.е. ты хочешь сказать что парсер C# на Nemerle полностью (ну или хотя бы на 99,9%) семантически совместим с компилятором C# от Microsoft?
Здравствуйте, Алексей., Вы писали:
А>Т.е. ты хочешь сказать что парсер C# на Nemerle полностью (ну или хотя бы на 99,9%) семантически совместим с компилятором C# от Microsoft?
Как я понял, это просто парсер, он резолвом не занимается, и его семантика не волнует.
Здравствуйте, Алексей., Вы писали:
А>Здравствуйте, hardcase, Вы писали:
H>>Вот только не надо путать людей. Парсер Немерле совместим исключительно с Немерле. Парсер C# — с известной версией C#. H>>То, что он используется для автоконвертирования C# программ в программы на Nemerle лишь одна из его потенциальных областей применения.
А>Т.е. ты хочешь сказать что парсер C# на Nemerle полностью (ну или хотя бы на 99,9%) семантически совместим с компилятором C# от Microsoft?
Я не могу понять как парсер можеть быть семантически совместим с компилятором.
Парсер есть программа распознающая текст, и на выходе у нее дерево синтаксического разбора.
Всетаки компилятор это чуточку более сложная программа, она делает чуть больше чем парсер — помимо синтаксического разбора выполняется семантический анализ и генерируется исполняемый код.
Здравствуйте, hardcase, Вы писали:
H>Я не могу понять как парсер можеть быть семантически совместим с компилятором. H>Парсер есть программа распознающая текст, и на выходе у нее дерево синтаксического разбора. H>Всетаки компилятор это чуточку более сложная программа, она делает чуть больше чем парсер — помимо синтаксического разбора выполняется семантический анализ и генерируется исполняемый код.
Тогда он точно не сможет заинтересовать разработчиков Решарпера. Подозреваю что синтаксический анализ — это от силы 1% от всех трудозатрат.
Здравствуйте, Алексей., Вы писали:
А>Тогда он точно не сможет заинтересовать разработчиков Решарпера. Подозреваю что синтаксический анализ — это от силы 1% от всех трудозатрат.
Здравствуйте, 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();
}
}
}
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Алексей., Вы писали:
А>3. Переход на Немерле приведет к тому что разработчики Решарпера станут зависеть от прихоти разработчиков Немерле. Нет никаких гарантий того что новые версии Немерле будут обеспечивать высокий уровень совместимости со старыми версиями или что однажды что-то поломается при добавлении новой суперфичи.
У разработчиков Решарпера есть возможность не только поучаствовать в разработке Немерле, но и взять его под свою опеку и непосредственно влиять на все эти процессы.
А>Опять же, где взять столько программистов знающих Немерле?
Фигли его там знать. В JetBrains работают весьма толковые ребята и если что-то их и сдерживает от изучения Немерле, то это ни в коем случае не сложность языка.
А>Переход с C# на Немерле коммерчески невыгоден.
Доказательств и выкладок столь смелого утверждения, я так понимаю, можно не ждать?
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, IT, Вы писали:
А>>Переход с C# на Немерле коммерчески невыгоден.
IT>Доказательств и выкладок столь смелого утверждения, я так понимаю, можно не ждать?
Доказательств нет и не будет — это же не теорема, всего лишь субъективное мнение. Достаточно оглянуться вокруг и попытаться найти хоть один коммерческий продукт написанный на Немерле. А ведь Немерле в виде прототипа существует уже несколько лет. Т.е. люди голосующие деньгами пока Немерле не выбирают. С публичными некоммерческими программами пока тоже не очень. Есть компилятор и библиотека Немерле. Может есть еще проекты о которых я не знаю.
Можно встречный вопрос? Почему BLToolkit, на мой взгляд весьма интересная библиотека, по-прежнему на C#, а не на Немерле? Спрашиваю не ради подкола, а в плане узнать обоснование неперевода на Немерле.
Здравствуйте, VladD2, Вы писали:
A>>У библиотеки действительно есть фатальный недостаток — я не знаю как её прикрутить к своему проекту. VD>Тоже не вопрос. Здесь находится код формы GUI-теста парсера C#. Собственно он совсем небольшой, так что можно привести его здесь с комментариями:
И я должен был искать в репозитории? Ну можно же это как-то так оформить, чтобы можно было найти.
Здравствуйте, Алексей., Вы писали:
А>>>Переход с C# на Немерле коммерчески невыгоден. IT>>Доказательств и выкладок столь смелого утверждения, я так понимаю, можно не ждать?
А>Доказательств нет и не будет — это же не теорема, всего лишь субъективное мнение.
Я так и думал.
А>Достаточно оглянуться вокруг и попытаться найти хоть один коммерческий продукт написанный на Немерле.
Это тоже как я понимаю всего лишь субъективное мнение? Или под критерий "хоть один коммерческий продукт" подпадают только те продукты, создатели которых не тусуются на RSDN?
А>А ведь Немерле в виде прототипа существует уже несколько лет. Т.е. люди голосующие деньгами пока Немерле не выбирают. С публичными некоммерческими программами пока тоже не очень. Есть компилятор и библиотека Немерле. Может есть еще проекты о которых я не знаю.
Есть, которые ты не знаешь.
А>Можно встречный вопрос? Почему BLToolkit, на мой взгляд весьма интересная библиотека, по-прежнему на C#, а не на Немерле? Спрашиваю не ради подкола, а в плане узнать обоснование неперевода на Немерле.
В этом нет смысла. Работы много, а получится тоже самое. Другое дело используя идеи и наработки Булкита написать новую библиотеку работы с данными. С обновлённой архитектурой, использованием макросов, без рудиментов и атавизмов. Это задача интересная и многообещающая. Например, можно с определённой долей уверенности сказать, что использование такой библиотеки будет порождать код, работающий с той же производительностью или быстрее рукописного, что, изспользуя сегодняшние средства, недостижимо.
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, IT, Вы писали:
А>>Достаточно оглянуться вокруг и попытаться найти хоть один коммерческий продукт написанный на Немерле. IT>Это тоже как я понимаю всего лишь субъективное мнение? Или под критерий "хоть один коммерческий продукт" подпадают только те продукты, создатели которых не тусуются на RSDN?
А какие коммерческие продукты на Немерле создали у те, кто тусуется на РСДН? Я не подначиваю, просто ничего о них не слышал.
А>>Можно встречный вопрос? Почему BLToolkit, на мой взгляд весьма интересная библиотека, по-прежнему на C#, а не на Немерле? Спрашиваю не ради подкола, а в плане узнать обоснование неперевода на Немерле. IT>В этом нет смысла.
Здравствуйте, adontz, Вы писали:
А>>>Достаточно оглянуться вокруг и попытаться найти хоть один коммерческий продукт написанный на Немерле. IT>>Это тоже как я понимаю всего лишь субъективное мнение? Или под критерий "хоть один коммерческий продукт" подпадают только те продукты, создатели которых не тусуются на RSDN?
A>А какие коммерческие продукты на Немерле создали у те, кто тусуется на РСДН? Я не подначиваю, просто ничего о них не слышал.
Например, товарищ, который пилит рельсы, признался, что сам же их используе в своих коммерческих продуктах. Ещё несколько человек утверждали, что используют. Всех не помню. Где-то в форуме Немерле была ветка с несколькими такими признаниями
А>>>Можно встречный вопрос? Почему BLToolkit, на мой взгляд весьма интересная библиотека, по-прежнему на C#, а не на Немерле? Спрашиваю не ради подкола, а в плане узнать обоснование неперевода на Немерле. IT>>В этом нет смысла.
A>А вот теперь я подначиваю.
В чём подначка?
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, IT, Вы писали:
А>>>>Достаточно оглянуться вокруг и попытаться найти хоть один коммерческий продукт написанный на Немерле. IT>>>Это тоже как я понимаю всего лишь субъективное мнение? Или под критерий "хоть один коммерческий продукт" подпадают только те продукты, создатели которых не тусуются на RSDN? A>>А какие коммерческие продукты на Немерле создали у те, кто тусуется на РСДН? Я не подначиваю, просто ничего о них не слышал. IT>Например, товарищ, который пилит рельсы, признался, что сам же их используе в своих коммерческих продуктах. Ещё несколько человек утверждали, что используют. Всех не помню. Где-то в форуме Немерле была ветка с несколькими такими признаниями
Когда я спрашивал, я ожидал ссылку на сайт с описанием и ценником. Использую в продукте (для создания продукта?) и продукт сделан на Немерле весьма разные вещи.
А>>>>Можно встречный вопрос? Почему BLToolkit, на мой взгляд весьма интересная библиотека, по-прежнему на C#, а не на Немерле? Спрашиваю не ради подкола, а в плане узнать обоснование неперевода на Немерле. IT>>>В этом нет смысла. A>>А вот теперь я подначиваю. IT>В чём подначка?
Ну как бы Немерле крут, но в задаче с большим объёмом кодогенерации переходить на него не стоит. А когда же тогда стоит?
Здравствуйте, adontz, Вы писали:
IT>>Например, товарищ, который пилит рельсы, признался, что сам же их используе в своих коммерческих продуктах. Ещё несколько человек утверждали, что используют. Всех не помню. Где-то в форуме Немерле была ветка с несколькими такими признаниями A>Когда я спрашивал, я ожидал ссылку на сайт с описанием и ценником.
Ты имеешь ввиду какую-нибудь шараварку? Так их и на C# считанные единицы.
A>Использую в продукте (для создания продукта?) и продукт сделан на Немерле весьма разные вещи.
Рельсы представляют собой набор макросов, так что их можно использовать только из Немерле.
IT>>В чём подначка? A>Ну как бы Немерле крут, но в задаче с большим объёмом кодогенерации переходить на него не стоит. А когда же тогда стоит?
Я же разъяснил. Тупо перенести на Немерле всё, что писалось 8 лет ради собственно переноса не имеет особого смысла. Написать аналогичный новый продукт с новыми качествами можно.
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, IT, Вы писали:
A>>Когда я спрашивал, я ожидал ссылку на сайт с описанием и ценником. IT>Ты имеешь ввиду какую-нибудь шараварку? Так их и на C# считанные единицы.
Важен не способ получения прибыли, а то что это продукт, а не поделка для себя или кусок кода на codeplex.
IT>>>В чём подначка? A>>Ну как бы Немерле крут, но в задаче с большим объёмом кодогенерации переходить на него не стоит. А когда же тогда стоит? IT>Я же разъяснил. Тупо перенести на Немерле всё, что писалось 8 лет ради собственно переноса не имеет особого смысла. Написать аналогичный новый продукт с новыми качествами можно.
Ну не знаю, Влад вон большие выгоды обещает от перехода как такового. Я потому и спросил.
Здравствуйте, adontz, Вы писали:
A>>>Когда я спрашивал, я ожидал ссылку на сайт с описанием и ценником. IT>>Ты имеешь ввиду какую-нибудь шараварку? Так их и на C# считанные единицы. A>Важен не способ получения прибыли, а то что это продукт, а не поделка для себя или кусок кода на codeplex.
Так сайты с описанием и ценниками — это в основном шараварка. Энтерпрайзы — это тоже вроде коммерческие продукты, но вот ценников на них я что-то пока ещё не видел.
IT>>>>В чём подначка? A>>>Ну как бы Немерле крут, но в задаче с большим объёмом кодогенерации переходить на него не стоит. А когда же тогда стоит? IT>>Я же разъяснил. Тупо перенести на Немерле всё, что писалось 8 лет ради собственно переноса не имеет особого смысла. Написать аналогичный новый продукт с новыми качествами можно.
A>Ну не знаю, Влад вон большие выгоды обещает от перехода как такового. Я потому и спросил.
Я и сам эти выгоды могу понаобещать. Только для этого нужно не переносить тупо код, а по-новой дизайнить библиотеку и выгод будет хоть отбавляй. В частности, на ORM Battle даже рукописный нативный SQL станет отставать, в том числе и в сравнении с Linq запросами. Но это будет новый продукт, а не порт старого.
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, IT, Вы писали:
IT>Это тоже как я понимаю всего лишь субъективное мнение? Или под критерий "хоть один коммерческий продукт" подпадают только те продукты, создатели которых не тусуются на RSDN?
В данном случае скорее объективное. Ссылок на продукты так и не будет? Не обязательно продукты 100% написанные на Немерле, не обязательно shareware. Но это должны быть продукты которыми пользуются клиенты, а не только люди из Немерле-тусовки. Можно в пример привести какую-нибудь ERP-систему и сказать что вот такая-то часть написана на Немерле.
A>А какие коммерческие продукты на Немерле создали у те, кто тусуется на РСДН? Я не подначиваю, просто ничего о них не слышал.
Ну это как шутка прям. Открой любой флейм где обсуждается противостояние С++/C#. Обязательно найдёшь веский аргумент что коммерческих продуктов на C# или слишком мало, или нет совсем со скриншотами Process Explorer. В общем я даже затрудняюсь доказать что C# это мэйнстрим, особенно когда оппоненты кидаются примерами вроде Evernote.
Здравствуйте, Алексей., Вы писали:
IT>>Это тоже как я понимаю всего лишь субъективное мнение? Или под критерий "хоть один коммерческий продукт" подпадают только те продукты, создатели которых не тусуются на RSDN?
А>В данном случае скорее объективное. Ссылок на продукты так и не будет? Не обязательно продукты 100% написанные на Немерле, не обязательно shareware. Но это должны быть продукты которыми пользуются клиенты, а не только люди из Немерле-тусовки. Можно в пример привести какую-нибудь ERP-систему и сказать что вот такая-то часть написана на Немерле.
Я вообще не могу привести ссылку ни на одну ERP систему, кроме тех в которых я участвовал сам. А ты можешь привести хотя бы одну, в которой сам не участвовал, но тебе известен список всех используемых там технологий и архитектурных решений?
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, IT, Вы писали:
IT>Я вообще не могу привести ссылку ни на одну ERP систему, кроме тех в которых я участвовал сам. А ты можешь привести хотя бы одну, в которой сам не участвовал, но тебе известен список всех используемых там технологий и архитектурных решений?
1C написан на Си++. Exchange написан на C# и Си++.
Здравствуйте, adontz, Вы писали:
A>>>1C написан на Си++. Exchange написан на C# и Си++. H>>Вот только.... когда их начали писать?
A>По существу-то вопроса есть что сказать?
Есть. 1C и Exchange не ERP.
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, IT, Вы писали:
A>>1C не ERP? Ну приехали. IT>1C — инструмент. Системы ERP сделанные на 1C, внимание!, сделаны на 1C.
1C — платформа, типа .Net если уж быть столь скурпулёзным. И я всё ещё не увидел примера с Nemerle.
A>>Да я и не просил ERP, я просил коммерческий продукт. IT>Я и не тебе отвечал. Ты незаметно для себя вклинился в другую ветку.
Здравствуйте, adontz, Вы писали:
A>>>Да я и не просил ERP, я просил коммерческий продукт. IT>>Я и не тебе отвечал. Ты незаметно для себя вклинился в другую ветку.
A>Меня обуревала жажда знаний.
Кстати, вопрос. Вот здесь что они такое делают? http://cciast.codeplex.com/
Кто-нибудь подробно изучал это дело?
C CCI Metadata понятно.
А CCI Code, что такое? Они там AST делают с выражениями, стейтментами (for, switch ...) и прочими высокоуровневыми фичами.
Это получается компилятор и декомпилятор из IL , для какого то неизвстного в природе языка без спецификации, высокоуровневого, C#-подобного. Compiler as Service у них уже есть, нету только пока синтаксиса. И неизвестно какого качества.
Это игрушки, для приблизительных декомпиляторов типа Reflector, или что-то серьезное собираются делать?
Команда C#, сейчас получается примерно то-же самое пишет только по спецификации С# ?
Здравствуйте, IT, Вы писали:
IT>... В частности, на ORM Battle даже рукописный нативный SQL станет отставать, в том числе и в сравнении с Linq запросами. Но это будет новый продукт, а не порт старого.
Можно поподробнее, как это?
Здравствуйте, Alexander Polyakov, Вы писали:
IT>>... В частности, на ORM Battle даже рукописный нативный SQL станет отставать, в том числе и в сравнении с Linq запросами. Но это будет новый продукт, а не порт старого. AP>Можно поподробнее, как это?
Вот код из тестов ORMBattle
if (!dr.IsDBNull(0))
s.Id = dr.GetInt64(0);
Во-первых, в здравом уме так писать никто не будет. Как минимум будут использоваться имена полей, а не индексы. Во-вторых, проверку на IsDBNull можно опустить, если известно, что поле не может быть NULL. В-третьих, интерфейс IDataReader содержит метод GetValues, который тоже можно использовать для оптимизации выборки данных.
Макрос всё это может учитывать и создать наиболее оптимальный код для конкретного случая. В том числе можно даже Linq запрос полностью заменить на вызов готового SQL, если об этом запросе всё известно.
Если нам не помогут, то мы тоже никого не пощадим.