ailev.ru

14 января 2008 · Комментарий

Без заголовка

> А как вы различаете языкоориентированный подход и подход DSL? По смыслу DSL никак не подразумевает типа реализации, да и те типы реализации, что у вас помянуты, вполне укладываются в языкоориентированный подход -- как вырожденные случаи. Тут есть неточность в терминах. И DSL и ЯОП можно трактовать узко и широко. В широком смысле DSL и ЯОП эквивалентны: под задачу делаему удобный язык, что повышает эффективность на порядок. Концепция восходит еще к 4G языкам. Но в узком смысле DSL и ЯОП - противоположные концепци: ЯОП (в рамках реализации Сергея Дмитриева) - есть создание нового языка с помощью удобных тулзов, а DSL (иногда используется термин внутренний DSL) в частности употребляют для обозначения подхода, который состоит в том, чтобы домейн-специфичный язык делать сугубо в рамках некого расширяемого хост-языка типа Лисп или Хаскел. Т.е. новый синтаксис и семантика вводятся крайне осторожно. В этом узком смысле я и упоминал DSL и ЯОП. Опасность ЯОП в том, что новые конструкции очень тяжело сделать целостными, в плане семантики, отладка может проходить годами. В случае выражений аля c[i,k] = a[i,j] * b[j,k] все просто и понятно, это даже понятнее чем исходный синтаксис. Тут чистый выигрыш. Но сам по себе ЯОП толкает неуравновешенных программеров на создание новых шизофренических конструкций. В этом смысле, внутренний DSL гораздо реалистичнее.

К записи · К обсуждению