Re[7]: Разработчики Scala выиграли грант Евросоюза
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.01.11 12:54
Оценка: :)
Здравствуйте, Аноним, Вы писали:

А>пример сильного распаралеливания в с++


А>матричные операции. последовательно ты оперируешь выражениями с сложением/обращением/умножением матриц. а сами операции распаралелены.


Вот скажи, зачем было этот шлак писать, да еще с таким объемом оверквотинга?

Причем тут С++? Это что DSL о которых говорит Одесски? И причем тут распараллеливание того что и так отлино распараллеливается кучей способов? Матричные вычисления — это примитивнейшая задача давно решенная (по много раз) в железе. Возьми любую библиотеку вычислений на GPU и твой С++ залюбится пыль глотать.

В общем, ответ вообще не "в кассу".
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Разработчики Scala выиграли грант Евросоюза
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.01.11 12:56
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>В принципе возможно, можно параллелить списки приоритетного выбора. Нужно парсить все его варианты параллельно, отбрасывая менее приоритетные при нахождении более приоритетного выбора. Таким образом при откате правила у нас уже будет либо полностью либо частично разобранная альтернатива.


Чёйсы почти всегда обламываются на первых же символах. Синхронизация сожрет весь выигрыш.

Z>Правда сомневаюсь, что переключение контекстов не съест весь профит, в большинстве случаев откаты совсем не глубокие и не затратные.


А я не сомневаюсь. Съест с потрохами.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Разработчики Scala выиграли грант Евросоюза
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.01.11 13:05
Оценка:
Здравствуйте, z00n, Вы писали:

VD>>>> Во первых скала тупо монолитный не расширяемый язык.

Z>Скала отлично расширяется через написание плагинов к компилятору, например так в нее (scala 2.8.0 ) добавляли континуации.

Ну, ты попробуй сам что-нить прикрутить такими методами, а потом уже делай заявления в стиле "хорошо". ОК?

Z>Writing Scala Compiler Plugins

Z>Continuations plugin for Scala 2.8 beta

Z>Принципиально это ничем не отличается от макросов, разве что макросы удобнее для мелочевки.


Принципиально очистка улицы детским совком ничем не отличается от очистки улицы бульдозером.

Z>Синтаксически (с точrи зрения DSL-ов etc.) Скала всегда было очень гибким языком.


Языком все гибко получается.

Z>Вообще, главный недостаток Scala — она не работает под .Net


Она таки работает под .Net (некоторые версии портированы), но как и любым портом сделанным для показухи пользоваться им очень не просто (если вообще возможно).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Отличный пример парсинг
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.01.11 13:06
Оценка:
Здравствуйте, para, Вы писали:

P>Кстати, можно попробовать сделать спекулятивный парсинг ветвей в правиле выбора


P>только не знаю, как там со Scope-ами будет...


http://www.rsdn.ru/forum/nemerle/4125475.1.aspx
Автор: VladD2
Дата: 21.01.11
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Разработчики Scala выиграли грант Евросоюза
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.01.11 14:37
Оценка: :)))
Здравствуйте, Кодёнок, Вы писали:

KK>>Одерский объясняет, что естественным способом параллелизации различных приложений является создание предметно-ориентированных языков программирования (domain-specific language, DSL) для каждой из сфер применения


Кё>Какая вообще связь между параллелизацией и DSL?


Думаю такая. В Скале с DSL сейчас очень хреново. А поиметь их хочется (на Немерл поглядывали не раз). А тут грант дают под параллельные вычисления. Остается только притянуть за уши DSL к параллелизации и получить грант.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Разработчики Scala выиграли грант Евросоюза
От: Аноним  
Дата: 21.01.11 20:40
Оценка:
Здравствуйте, VladD2, Вы писали:

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


KK>>>Одерский объясняет, что естественным способом параллелизации различных приложений является создание предметно-ориентированных языков программирования (domain-specific language, DSL) для каждой из сфер применения


Кё>>Какая вообще связь между параллелизацией и DSL?


VD>Думаю такая. В Скале с DSL сейчас очень хреново. А поиметь их хочется (на Немерл поглядывали не раз). А тут грант дают под параллельные вычисления. Остается только притянуть за уши DSL к параллелизации и получить грант.


parfor дает паралеллизм порядка 70% от возможного на тех задачах что я встречался....

если конкурент превзошел тебя значит надо превзойти конкурента (пиши под 2мя бутылками водки)

как минимум надо делать распаралеливание на уровне последовательности проходов
Re[8]: Разработчики Scala выиграли грант Евросоюза
От: z00n  
Дата: 21.01.11 22:21
Оценка: 1 (1)
Здравствуйте, VladD2, Вы писали:

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


VD>>>>> Во первых скала тупо монолитный не расширяемый язык.

Z>>Скала отлично расширяется через написание плагинов к компилятору, например так в нее (scala 2.8.0 ) добавляли континуации.

VD>Ну, ты попробуй сам что-нить прикрутить такими методами, а потом уже делай заявления в стиле "хорошо". ОК?


Я таким методом прикрутил алгебраический паттерн-матчинг (Sestoft) к луа и на всех стадиях работы был совершенно счастлив.
Я, разумеется, не использовал plugin API, а просто брал AST(lua) и паттерн-матчингом по нему ходил. Код генерировал тоже длинным образом, типа

val clauses = Clause(ConPat(CTop(n), ps), None, BlockNil, src)::Nil



Ну вот посмотрим пример с сайта скалы:
package localhost

import scala.tools.nsc
import nsc.Global
import nsc.Phase
import nsc.plugins.Plugin
import nsc.plugins.PluginComponent

class DivByZero(val global: Global) extends Plugin {
  import global._

  val name = "divbyzero"
  val description = "checks for division by zero"
  val components = List[PluginComponent](Component)
  
  private object Component extends PluginComponent {
    val global: DivByZero.this.global.type = DivByZero.this.global
    val runsAfter = "refchecks"
    // Using the Scala Compiler 2.8.x the runsAfter should be written as below
    // val runsAfter = List[String]("refchecks");
    val phaseName = DivByZero.this.name
    def newPhase(_prev: Phase) = new DivByZeroPhase(_prev)    
    
    class DivByZeroPhase(prev: Phase) extends StdPhase(prev) {
      override def name = DivByZero.this.name
      def apply(unit: CompilationUnit) {
        for ( tree @ Apply(Select(rcvr, nme.DIV), List(Literal(Constant(0)))) <- unit.body;
             if rcvr.tpe <:< definitions.IntClass.tpe) 
          {
            unit.error(tree.pos, "definitely division by zero")
          }
      }
    }
  }
}


Чем это отличается от макросов? Прежде всего отсутсвием квазицитирования — поэтому нужно знать API и представлять что делаешь. Boilerplate кой-какой (на сайте скалы лежит темплейт). Так вот мое личное мнение (я его тут неоднократно озвучивал) — что человеку готовому расширять компилятор пофиг чем пользоваться, а большинству (99%+) пофиг то, что у макросов несколько ниже порог вхождения — они все равно не будут этого делать.


Z>>Writing Scala Compiler Plugins

Z>>Continuations plugin for Scala 2.8 beta


Z>>Принципиально это ничем не отличается от макросов, разве что макросы удобнее для мелочевки.


VD>Принципиально очистка улицы детским совком ничем не отличается от очистки улицы бульдозером.


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


Z>>Синтаксически (с точrи зрения DSL-ов etc.) Скала всегда было очень гибким языком.


VD>Языком все гибко получается.

C-

Z>>Вообще, главный недостаток Scala — она не работает под .Net


VD>Она таки работает под .Net (некоторые версии портированы), но как и любым портом сделанным для показухи пользоваться им очень не просто (если вообще возможно).


Я в курсе, извраты с IKVM не в счет
Re[9]: Разработчики Scala выиграли грант Евросоюза
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.01.11 22:30
Оценка:
Здравствуйте, z00n, Вы писали:

Z>Ну вот посмотрим пример с сайта скалы:

Z>
Z>package localhost

Z>import scala.tools.nsc
Z>import nsc.Global
Z>import nsc.Phase
Z>import nsc.plugins.Plugin
Z>import nsc.plugins.PluginComponent

Z>class DivByZero(val global: Global) extends Plugin {
Z>  import global._

Z>  val name = "divbyzero"
Z>  val description = "checks for division by zero"
Z>  val components = List[PluginComponent](Component)
  
Z>  private object Component extends PluginComponent {
Z>    val global: DivByZero.this.global.type = DivByZero.this.global
Z>    val runsAfter = "refchecks"
Z>    // Using the Scala Compiler 2.8.x the runsAfter should be written as below
Z>    // val runsAfter = List[String]("refchecks");
Z>    val phaseName = DivByZero.this.name
Z>    def newPhase(_prev: Phase) = new DivByZeroPhase(_prev)    
    
Z>    class DivByZeroPhase(prev: Phase) extends StdPhase(prev) {
Z>      override def name = DivByZero.this.name
Z>      def apply(unit: CompilationUnit) {
Z>        for ( tree @ Apply(Select(rcvr, nme.DIV), List(Literal(Constant(0)))) <- unit.body;
Z>             if rcvr.tpe <:< definitions.IntClass.tpe) 
Z>          {
Z>            unit.error(tree.pos, "definitely division by zero")
Z>          }
Z>      }
Z>    }
Z>  }
Z>}
Z>


Z>Чем это отличается от макросов? Прежде всего отсутсвием квазицитирования — поэтому нужно знать API и представлять что делаешь.


Ага. И еще тем, что это спагети-код решает примитивную и высосанную из пальца задачу. А когда ты начнешь делать новый синтаксис, то окажется что у компилятора куча ограничений которые невозможно преодолеть.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.