Re: "Плагины" C#
От: klopodav  
Дата: 01.07.09 06:26
Оценка: 7 (5) +5 :)
G>В связи с медленным развитием стандартов main stream языков возникла мысль о расширении синтаксиса языка с помощью некоторых дополнительных модулей, которые бы расширяли сиснтаксис языка, т.е. появлялись бы новые ключевые слова, операторы, выражения и т.д. Все holy wars потеряли бы всякий смысл! Если не хватает выразительности языка, ставь плагин(например плагин к C# который расширял бы синтаксис C# синтаксисом Немерле или наоборот!) и миксуй!

Вот насчет "Все holy wars потеряли бы всякий смысл" — это вряд ли. Наоборот, раскрылось бы поле непаханое для новых holy wars. Например:

— Плагин X — отстой, вот плагин Y — это наше все!
— Какой урод написал свой код с использованием плагина Y ? Он же платный, и кряка к нему найти никак не могу!
— Какой урод прислал нам код, написанный на плагине Z1 ? Z1 поддерживает извращенский диалект языка Z, вот Z2 — правильный плагин для языка Z!
— Какой урод использовал в своем C#-коде плагин M ? Он же существует только под Windows + VS, как мне теперь мой проект собрать под Linux + Mono?
— А это что еще за исходники нам прислали? Говорят, сами придумали свой язык и сами сварганили плагин для него? А спецификацию языка нам дать не удосужились? Ну, они козлы!
— А это что за абракадабра в коде C#-проекта? А, так это у тебя, гада, плагин для Brainfuck используется? А где я тебе Brainfuck-программиста найду твой код поддерживать?

и т.д. и т.п.
Re: "Плагины" C#
От: Pavel Dvorkin Россия  
Дата: 03.07.09 10:22
Оценка: 1 (1) +1 :)))
Здравствуйте, gmGreen, Вы писали:

G>В связи с медленным развитием стандартов main stream языков возникла мысль о расширении синтаксиса языка с помощью некоторых дополнительных модулей, которые бы расширяли сиснтаксис языка, т.е. появлялись бы новые ключевые слова, операторы, выражения и т.д. Все holy wars потеряли бы всякий смысл! Если не хватает выразительности языка, ставь плагин(например плагин к C# который расширял бы синтаксис C# синтаксисом Немерле или наоборот!) и миксуй!


G>Это реализуемо технически?


Уже реализовывалось в истории. Был такой язык — латынь. Потом на его базе одни "программисты" соорудили итальянский, другие — французский, третьи — испанский со всеми диалектами и т.д. Не скоро теперь без переводчиков они обойдутся.
With best regards
Pavel Dvorkin
Re: "Плагины" C#
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 01.07.09 06:17
Оценка: +4
Здравствуйте, gmGreen, Вы писали:

G>В связи с медленным развитием стандартов main stream языков возникла мысль о расширении синтаксиса языка с помощью некоторых дополнительных модулей, которые бы расширяли сиснтаксис языка, т.е. появлялись бы новые ключевые слова, операторы, выражения и т.д. Все holy wars потеряли бы всякий смысл! Если не хватает выразительности языка, ставь плагин(например плагин к C# который расширял бы синтаксис C# синтаксисом Немерле или наоборот!) и миксуй!


G>Это реализуемо технически?

Ага, уже реализовано и называется Nemerle
Re[2]: "Плагины" C#
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 01.07.09 07:19
Оценка: +2
Здравствуйте, klopodav, Вы писали:

G>>В связи с медленным развитием стандартов main stream языков возникла мысль о расширении синтаксиса языка с помощью некоторых дополнительных модулей, которые бы расширяли сиснтаксис языка, т.е. появлялись бы новые ключевые слова, операторы, выражения и т.д. Все holy wars потеряли бы всякий смысл! Если не хватает выразительности языка, ставь плагин(например плагин к C# который расширял бы синтаксис C# синтаксисом Немерле или наоборот!) и миксуй!


K>Вот насчет "Все holy wars потеряли бы всякий смысл" — это вряд ли. Наоборот, раскрылось бы поле непаханое для новых holy wars. Например:


K> — Плагин X — отстой, вот плагин Y — это наше все!

K> — Какой урод написал свой код с использованием плагина Y ? Он же платный, и кряка к нему найти никак не могу!
K> — Какой урод прислал нам код, написанный на плагине Z1 ? Z1 поддерживает извращенский диалект языка Z, вот Z2 — правильный плагин для языка Z!
K> — Какой урод использовал в своем C#-коде плагин M ? Он же существует только под Windows + VS, как мне теперь мой проект собрать под Linux + Mono?
K> — А это что еще за исходники нам прислали? Говорят, сами придумали свой язык и сами сварганили плагин для него? А спецификацию языка нам дать не удосужились? Ну, они козлы!
K> — А это что за абракадабра в коде C#-проекта? А, так это у тебя, гада, плагин для Brainfuck используется? А где я тебе Brainfuck-программиста найду твой код поддерживать?

K> и т.д. и т.п.


Высосано ихз пальца. Замени плагины на библиотеки и получи тоже самое.

В некоторых языках разница между языковыми плагинами и либами минимальна.
Re: "Плагины" C#
От: Воронков Василий Россия  
Дата: 01.07.09 09:40
Оценка: 2 (1)
Здравствуйте, gmGreen, Вы писали:

G>Это реализуемо технически?


Где-то я читал, что раньше собирались механизм, подобный ASP.NET build providers, добавить вообще в сам компилятор C#, но потом типа не шмогли, не успели и так далее. Так бы можно было писать свой код в файлах *.myDSL и определить собственный билд-провайдер, который бы умел их собирать. Красиво и удобно.
С другой стороны, если полагаться на возможности студии, то уже давно для таких целей можно использовать custom build tool — собственно, он и используется во многих подобных случаях. Разница с вышеописанным вариантом только в том, что поддержка со стороны среды, а не компилятора.

А вот если речь идет не о поддержке всякого рода DSL-ей, а о расширении синтаксиса самого языка — то тут красивого способа нет. Только препроцессор + даже непонятно, как его подключать при работе в той же студии. Вариант — нужен особый синтаксис, пиши в отдельном файлика кажется куда более прямым и простым технически.
"Плагины" C#
От: gmGreen  
Дата: 01.07.09 03:50
Оценка: :)
В связи с медленным развитием стандартов main stream языков возникла мысль о расширении синтаксиса языка с помощью некоторых дополнительных модулей, которые бы расширяли сиснтаксис языка, т.е. появлялись бы новые ключевые слова, операторы, выражения и т.д. Все holy wars потеряли бы всякий смысл! Если не хватает выразительности языка, ставь плагин(например плагин к C# который расширял бы синтаксис C# синтаксисом Немерле или наоборот!) и миксуй!

Это реализуемо технически?
Re: "Плагины" C#
От: Michael7 Россия  
Дата: 01.07.09 06:20
Оценка:
Здравствуйте, gmGreen, Вы писали:

G>Это реализуемо технически?


Не только реализуемо, но и давным-давно применяется на практике. Например, библиотека Qt использует своё расширение C++, обрабатываемое перед компилятором своим препроцессором.
Re: "Плагины" C#
От: Mr.Cat  
Дата: 01.07.09 06:26
Оценка:
Здравствуйте, gmGreen, Вы писали:
G>Это реализуемо технически?
Так макросы же. Примеры реализации — scheme, nemerle, boo.
Re[3]: "Плагины" C#
От: fixxer  
Дата: 01.07.09 07:49
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>Замени плагины на библиотеки и получи тоже самое.


Видимо о том и речь
Re: "Плагины" C#
От: kmmbvnr Россия http://kmmbvnr.livejournal.com
Дата: 01.07.09 09:29
Оценка:
Здравствуйте, gmGreen, Вы писали:

G>Это реализуемо технически?


А зачем?

Для С++ есть несколько реализаций garbage collector. Разве от это что-то сильно меняется?
Ядро языка это наибольший общий знаменатель для всех разработчиков. То где они пересекаются.
Все равно все библиотеки будут писаться на стандартном подмножестве C#.

Разве что DSEL могут стать более выразительными, и только.
-- Главное про деструктор копирования не забыть --
Re[2]: "Плагины" C#
От: gmGreen  
Дата: 01.07.09 09:42
Оценка:
Здравствуйте, kmmbvnr, Вы писали:

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


G>>Это реализуемо технически?


K>А зачем?


K>Для С++ есть несколько реализаций garbage collector. Разве от это что-то сильно меняется?

K>Ядро языка это наибольший общий знаменатель для всех разработчиков. То где они пересекаются.
K>Все равно все библиотеки будут писаться на стандартном подмножестве C#.

K>Разве что DSEL могут стать более выразительными, и только.



К примеру что бы все обещаные MS улучшения в C# появлялись не через 5-7 лет, а значительно быстрее в виде некоего тестового плагина, которое бы просто не объявлялось официальным. Разработчики C# получили бы очень хороший feed back, и ИМХО это бы ускорило и улучшило развитие C#. Во вторых появилась бы возможность написания кода одновременно на нескольких языках. Немало разработчиков знают и используют несколько языков для конкретных задач и это ИМХО было бы благом для них.
Re[3]: "Плагины" C#
От: Воронков Василий Россия  
Дата: 01.07.09 10:05
Оценка:
Здравствуйте, gmGreen, Вы писали:

G>К примеру что бы все обещаные MS улучшения в C# появлялись не через 5-7 лет...


Очень часто все обещанные улучшения в языке ограничиваются не только синтаксисом
Re: "Плагины" C#
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.07.09 13:33
Оценка:
Здравствуйте, gmGreen, Вы писали:

G>В связи с медленным развитием стандартов main stream языков возникла мысль о расширении синтаксиса языка с помощью некоторых дополнительных модулей, которые бы расширяли сиснтаксис языка, т.е. появлялись бы новые ключевые слова, операторы, выражения и т.д. Все holy wars потеряли бы всякий смысл! Если не хватает выразительности языка, ставь плагин(например плагин к C# который расширял бы синтаксис C# синтаксисом Немерле или наоборот!) и миксуй!


G>Это реализуемо технически?


Макры немерла и есть такие плагины. Но чтобы такое стало возможным нужно очень многое.

1. Нужно проектировать язык под расширяемость.
2. Нужно иметь очень удобные средства композиции (построения нового кода) и декомпозиции (распознавания старого).
3. Нужна инфраструктура, т.е. управляемый компилятор (а не написанный на С++), поддержка IDE, библиотеки стандартных макросов, обучающая литература и т.п.

Всего этого не и никогда не будет для шарпа.

Проект R# как раз и задумывался как создание эдакого синтаксического препроцессора, но потом я бросил его потому, что понял, что одного препроцессора мало. Один только пункт 2 из приведенного выше списка — это очень сложная задача.

Меж тем все что ты тут перечислил и даже намного больше уже есть в том самом Nemerle. Холи-варов, правда, от этого меньше не становится. Но если тебе нужно ехать, а не шашечки, то можно просто брать Nemerle и использовать уже сейчас. Он отлично интегрируется в любой дотнетный проект и отлично сочитается с другими языками.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.