Re[5]: Способно ли метапрограммирование заменить отдельные я
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 01.02.11 19:37
Оценка:
Здравствуйте, VladD2, Вы писали:

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


G>>А что мешает сделать вызовы лаконичными без изменения синтаксиса?


VD>С C#-ом или ВБ знаком? Покажи как сделать объявление и использование зависимых свойств из WPF "лаконичными без изменения синтаксиса".


Я не про C# говорю.
Re[4]: Способно ли метапрограммирование заменить отдельные я
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.02.11 19:39
Оценка:
Здравствуйте, Mamut, Вы писали:

M>На примере Erlang'а. Erlang — это не только синтаксис. Это и легковесные потоки


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

M>, и асинхронные сообщения,


Это ни разу не проблема.

M>и архитектура shared-nothing и т.д.


Тоже самое. Запрещаем статические переменные и получаем shared-nothing. Хотя это как раз уже сказка, так как процессы эрланга таки могут содержать глобальные данные. А сам процесс эрланга удивительно похож на классы в ООП (так как инкапсулирует логику).

M> и т.п.


Нет никаких "и т.п.". Не выдумывай. Есть только те самые зеленые потоки.

M> Для того, чтобы реализовать этона Немерле, ндо писать рантайм (грубо говоря) эрланга на Нмерле


Рантайм ограничивается теми самыми потоками. Остальное выражается имеющимися средствами.

Другой вопрос — зачем вообще воспроизводить Эрланг на Немерле? Ведь можно воспроизвести только главное — зеленые потоки и изолированные "ссылочные пространства" общение между которыми ведется по средствам сообщений. При этом оставить язык типизированным. Мне видится — это куда более логичным и востребованным. Главные фичи эрланга в статически-типизированном виде и со скоростью близкой к С — это и правда очень приятная фишка.

Еще интересным расширением была бы — реализация логического (аля Пролог) ядра. Это тоже очень даже возможно, но требует не мало усилий.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Способно ли метапрограммирование заменить отдельные я
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.02.11 19:41
Оценка:
Здравствуйте, Chrome, Вы писали:

C>он будет работать. но потеряет свойства realtime


А их, кстати, никогда и не было. "Софт реалтайм" — это как почти беременная.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Способно ли метапрограммирование заменить отдельные я
От: Курилка Россия http://kirya.narod.ru/
Дата: 01.02.11 19:55
Оценка:
Здравствуйте, VladD2, Вы писали:

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


M>>и архитектура shared-nothing и т.д.


VD>Тоже самое. Запрещаем статические переменные и получаем shared-nothing. Хотя это как раз уже сказка, так как процессы эрланга таки могут содержать глобальные данные. А сам процесс эрланга удивительно похож на классы в ООП (так как инкапсулирует логику).


Расскажи, что за глобальные данные?
Re[11]: Способно ли метапрограммирование заменить отдельные
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.02.11 19:58
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Это просто библиотека. Вас смутило слово Runtime?


Дык при наличии вот таких "просто библиотек" реализация подобных языков становится тривиальным. А без оных очень не простой.

Я тебе больше скажу. Главная проблема макросов заключается в том, что их реализация не тривиальна. Причем проблемы не в сложности реализации самих макросов, а в сложности прикладной. Это ведь тоже код! И код, не простой. Наличие библиотек или даже понимания того как задачу нужно решать уже дает огромное преимущество.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Способно ли метапрограммирование заменить отдельные я
От: Курилка Россия http://kirya.narod.ru/
Дата: 01.02.11 20:07
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Другой вопрос — зачем вообще воспроизводить Эрланг на Немерле? Ведь можно воспроизвести только главное — зеленые потоки и изолированные "ссылочные пространства" общение между которыми ведется по средствам сообщений. При этом оставить язык типизированным. Мне видится — это куда более логичным и востребованным. Главные фичи эрланга в статически-типизированном виде и со скоростью близкой к С — это и правда очень приятная фишка.


Сорри, выше ответил, не дочитав, по поводу фич эрланга и статической типизации — для JVM (Java/Scala) есть по идее akka, если вдруг кому-то интересна тема.
Re[12]: Способно ли метапрограммирование заменить отдельные
От: Lloyd Россия  
Дата: 01.02.11 20:14
Оценка: +1
Здравствуйте, VladD2, Вы писали:

L>>Это просто библиотека. Вас смутило слово Runtime?


VD>Дык при наличии вот таких "просто библиотек" реализация подобных языков становится тривиальным. А без оных очень не простой.


Но это ни в коем случае не означает, что в CLR было что-то поменяно.
Re[4]: Способно ли метапрограммирование заменить отдельные я
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.02.11 20:54
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Нет — поведение скомпилированного кода не будет совпадать с поведением оригинальной программы. Фактически, там транслятор c# в AST немерла. Немерлисты! Если ошибаюсь — поправьте, ок?


Ты не ошибаешься, но таки в 99% случаев семантика шарпа выдержана. Компилируется почти весь код который мы пробовали.

Потом поведение скомпилированного то кода как раз почти всегда совпадает. Вот поведение компилятора может отличаться. Например, могут быть ворнинги которых не было в шарпе, например.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: Способно ли метапрограммирование заменить отдельные
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 01.02.11 20:54
Оценка:
Здравствуйте, FR, Вы писали:

FR>Не поменяли а добавили Dynamic Language Runtime


Это просто библиотека. Точнее даже стандарт для интероперабельности разных динамических языков. Никакого отношения к CLR он не имеет.
С натяжкой можно отнести к изменениям рантайма связанные с DLR доработки маршаллера. Но эти доработки, в свою очередь, не имеют никакого отношения к питону или руби.
... << RSDN@Home 1.2.0 alpha 4 rev. 1490 on Windows 7 6.1.7600.0>>
AVK Blog
Re[12]: Способно ли метапрограммирование заменить отдельные
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 01.02.11 20:54
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Дык при наличии вот таких "просто библиотек" реализация подобных языков становится тривиальным. А без оных очень не простой.


Сам по себе DLR ничего особо не упрошает, он лишь обеспечивает интероперабельность динамики. Вот стандартные биндеры, те могут кое что упростить. Но это все не имеет никакого отношения к возможности CLR хостить разные языки.
... << RSDN@Home 1.2.0 alpha 4 rev. 1490 on Windows 7 6.1.7600.0>>
AVK Blog
Re[5]: Способно ли метапрограммирование заменить отдельные я
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.02.11 21:00
Оценка:
Здравствуйте, Chrome, Вы писали:

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

C>даже если такой пример найдется, останется только занести его в баг лист и зафиксить.

Будут различаться:
1. Разрешение перегрузок. Многие Никовские этюды на Немерле будут вести себя так как предполагает человек, а не каким-то странным образом описанном в стандарте шарпа.
2. Несколько иначе ведет себя переопределение виртуальных методов.
3. Кое где появятся ворнинги которых не должно быть с точки зрения шапра.
4. Кое где компилятор будет дозволять вольности (вывод типов сильно круче).

Но в целом все это проявляется только в пограничных случаях. На реальном C#-коде все работает не плохо.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Предлагаю обсудить в таком ключе
От: Wolverrum Ниоткуда  
Дата: 01.02.11 21:07
Оценка:
Здравствуйте, Chrome, Вы писали:

Давайте условимся,
что из нижеперечисленных продуктов:
— Lisp
— JetBrains MPS
— Template Haskell
— Nemerle
(добавь свой вариант)

"вздетело" — "не взлетело" на текущий момент,
и на основании полученного соглашения продолжим обсуждать тему?
Re[8]: Способно ли метапрограммирование заменить отдельные я
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.02.11 21:26
Оценка: 2 (1)
Здравствуйте, FR, Вы писали:

FR>Те кто писали говорят, например тот же Дмитрий, что очень существенно (http://fprog.ru/2009/issue2/dmitry-zuikov-one-compiler-story/):


Я это читал. Там сравнивается только вывод типов.
Но я еще и писал сам. Это дает возможность говорить о проблеме более компетентно. Так вот уверяю тебя, что использование макро-системы (в купе с ПМ и ФВП) дает значительно (в разы) бльший выигряшь. Компилятор немерла меньше Бушного во много раз. А ты ведь знаешь насколько больше он делает.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Способно ли метапрограммирование заменить отдельные я
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.02.11 21:35
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>>>А что мешает сделать вызовы лаконичными без изменения синтаксиса?


VD>>С C#-ом или ВБ знаком? Покажи как сделать объявление и использование зависимых свойств из WPF "лаконичными без изменения синтаксиса".


G>Я не про C# говорю.


А ты не уходи от ответа. Ответь на вопрос и получишь ответ на свой вопрос.

ЗЫ

Ответ то очевиден. Язык не позволяет. Но ты честно на этот вопрос никогда не ответишь. Потому и от вопроса уходишь.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Способно ли метапрограммирование заменить отдельные я
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.02.11 21:36
Оценка:
Здравствуйте, Курилка, Вы писали:

VD>>Тоже самое. Запрещаем статические переменные и получаем shared-nothing. Хотя это как раз уже сказка, так как процессы эрланга таки могут содержать глобальные данные. А сам процесс эрланга удивительно похож на классы в ООП (так как инкапсулирует логику).


К>Расскажи, что за глобальные данные?


У процессов есть свои словари. Данные в них помещаются и удерживаеются точно так же как в статических переменных. Таким образом в Эрнанке процессы могут капсулировать состояние.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: Способно ли метапрограммирование заменить отдельные
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.02.11 21:38
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Но это ни в коем случае не означает, что в CLR было что-то поменяно.


"Плменяно" тоже было. Но раньше. Насколько мне известно для повышения эффективности использовалась динамическая компиляция деревьев выражений. А это уже не просто библиотека. Хотя по сути весь дотнет — просто библиотека.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: Способно ли метапрограммирование заменить отдельные
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.02.11 21:47
Оценка: 8 (1)
Здравствуйте, AndrewVK, Вы писали:

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


Да, наверное. Но у CLR и других проблем хватает. Классы в IL загнали, а замыкания нужно эмулировать. Для ленивого выполнения никакой поддержки нет. Гарантировать неизменяемость данных CLR тоже не может. Есть делегаты, но нет более общего функционального типа. Объеденений тоже нет. И сделать кроме как через ООП нельзя, так как это связано с реализацией GC. В общем, проблем хватает.

Но объем работ — это не меньшая проблема. Рантайм вроде CLR снимает море работы с компиляторщиков. Но если бы он был спроектирован более правильно, то снимал бы еще больше работы и не создавал бы при это проблем.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Способно ли метапрограммирование заменить отдельные я
От: Курилка Россия http://kirya.narod.ru/
Дата: 01.02.11 21:49
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Курилка, Вы писали:


VD>>>Тоже самое. Запрещаем статические переменные и получаем shared-nothing. Хотя это как раз уже сказка, так как процессы эрланга таки могут содержать глобальные данные. А сам процесс эрланга удивительно похож на классы в ООП (так как инкапсулирует логику).


К>>Расскажи, что за глобальные данные?


VD>У процессов есть свои словари. Данные в них помещаются и удерживаеются точно так же как в статических переменных. Таким образом в Эрнанке процессы могут капсулировать состояние.


Чот, Влад, путаешься местами в последнее время. Поясни мне, как mutable словари процессов (которые, насколько я понимаю, используются реже чем unsafe на платформе, под которую ты пишешь) стали вдруг глобальными? Ну не надо так-то уж явно
Re[2]: Способно ли метапрограммирование заменить отдельные я
От: night beast СССР  
Дата: 02.02.11 04:55
Оценка:
Здравствуйте, VladD2, Вы писали:

C>>Если сроки реально такого порядка — стоит ли ожидать в будущем отдельный диалект языка программирования на каждую программерскую контору или крупный проект?


VD>Не стоит. На самом деле опыт Лиспа и Немерла показал, что в 99% случаев используется базовый язык или стандартные макросы. Хорошие идеи воплощенные в макросах быстро попадают в стандартную библиотеку и становятся практически частью языка.


VD>В прикладных же проектах обычно используются специализированные расширения которые позволяют упростить решение именно этих задач. Это опять же не создает новый язык. Обычно все ограничиваенся созданием DSL-я который позволяет описать задачу близко к ее декларации.


VD>Так что в будущем стоит ожидать введения в обиход большинства программистов механизмов расширения языков и основанную на этом целую парадигму языко-ориентированного (или DSL-ориентированного) программирования. Но вот сколько времени займет процесс перехода к нему не ясно. На сегодня конкурентов немерлу не много. Народ латентен, привычки сильны, а пиар (со стороны монополий вроде MS и IBM) старых подходов только осложняет обстановку. Но, лично у меня, нет сомнений, что за этим подходом будущее.


ты все таки найди время на tex посмотреть.
думаю, не малую роль в его популярности сыграло наличие в свободном доступе Texbook'a, на пальцах описывающего весь язык.
Сможете подобное для немерла сделать?
Re[5]: Способно ли метапрограммирование заменить отдельные я
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 02.02.11 09:48
Оценка:
Здравствуйте, VladD2, Вы писали:

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


M>>Смотря каких паттернов. В общем случае, мне кажется, игра не стоит свеч: на изучение более абстрактной настройки понадобится время, а используется раз в год, два раза на пасху.


VD>Ключевое слово здесь — "кажется".


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

VD>Паттерны заполоняют код обычных ОО-проектов. Инкапсуляция их в языковые конструкции позволяет сделать код во много раз чище и проще. Одно это упрощает разработку сложных проектов. А мы еще и не заикались о ДСЛ-ях...


Чище не значит проще для понимания. Это значит, что под тем, что я вижу, находится еще некоторая скрытая логика, которую надо хорошо понимать. Это увеличивает порог вхождения, требуемую квалификацию и т. д. и т. п.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.