Сегодня я хочу продолжить описание процесса разработки новой версии Marmalade Framework. В этой части я расскажу о создании подсистемы загрузки конфигурации, поддерживающей формат описания, о котором я рассказывал ранее. Основной сложностью, с которой придется столкнуться на этом шаге, будет поддержка шаблонов (templates), в том числе и локальных.
Читать полностью »
Рубрика «dsl» - 6
Возрождение Framework-а (Загрузка)
2013-03-03 в 12:04, admin, рубрики: c++, dsl, json, marmalade, Разработка под android, разработка под iOS, метки: dsl, json, marmaladeBusiness Natural Languages
2013-02-17 в 18:17, admin, рубрики: bdd, coffeescript, DDD, dsl, KISS, YAGNI, архитектура, ооп, Программирование, Проектирование и рефакторинг, метки: bdd, coffeescript, DDD, dsl, kiss, yagni, архитектура, оопПоскольку идея данного поста родилась у меня независимо от эпопеи с хлебопекарней, хочу вставить и свои пять копеек.
Итак, суть проблемы — поставить программный код в соответствие с бизнес-требованиями. Существуют замечательные методологии и техники, например, Behavior Driven Development (BDD), которые позволяют в декларативном стиле описать требуемое поведение системы (тесты).
Возникает вопрос — зачем описывать как должен работать код, если можно и сам код написать в этих терминах. Почему user story не может быть самой программой.
не код должен генерироваться из модели — модель должна быть кодом
Чтобы не томить читателей сразу перейду от слов к делу. Представим себе язык для программирования вот такого робота:

Warning! Данный пример служит только для иллюстрации идеи и не предназначен для приготовления пищи в реальной жизни. Автор не несет ответственности за вред здоровью нанесенный в результате употребления пищи, приготовленной с помощью данного примера.
Вычисление рекуррентных соотношений на Perl
2013-02-15 в 14:23, admin, рубрики: dsl, perl, ненормальное программирование, метки: dsl, perl Привет,
в этом посте я расскажу рецепт добавления функциональности в Перл.
Как уже стало понятно из названия, мы будем вычислять рекуррентные соотношения.
Например, формулы для вычисления факториала выглядят вот так:
f(0) = 1 f(n) = n * f(n-1)
Функциональные языки программирования позволяют определять такие функции достаточно просто, в Erlang это делается следующим образом:
factorial(0) ->
1;
factorial(N) ->
N * factorial(N-1).
А теперь попробуем сделать нечто похожее, что позволяло бы нам писать код вида:
#!/usr/bin/perl -I./lib
use strict;
use bigint;
use Recurrent;
recurrent fib => {
arg(0) => lambda { my($n) = @_; return 0 },
arg(1) => lambda { my($n) = @_; return 1 },
arg(n) => lambda { my($n) = @_; return fib($n-1) + fib($n-2) },
};
print fib(1000);
Из примера видно, что у нас появились новые функции recurrent, arg, n и lambda. На самом деле, практическая польза есть только у recurrent, все остальные нужны лишь для получения более «красивого» кода.
Давайте напишем модуль Recurrent.pm
Читать полностью »
DSL по оптоволокну от ОАО «Ростелеком»
2013-01-10 в 14:42, admin, рубрики: ADSL, dsl, кабель, мошенничество, оптоволокно, подключение, Ростелеком, Сетевые технологии, тарифный план, тарифы, Телекомы, метки: ADSL, dsl, кабель, мошенничество, оптоволокно, подключение, Ростелеком, тарифный план, тарифы С недавнего времени ОАО «Ростелеком» г. Благовещенска, Амурской области стал предоставлять услуги по новой революционной технологии – услуги доступа в Интернет по технологии DSL на оптоволокне. Услуга не дешевая – месяц неспешного пользования на скорости 1 Мегабит в секунду обходится примерно в 19 тысяч рублей. Под катом описание преимуществ данной технологии…
Читать полностью »
Linux растёт! Новые Mint 14 для OEM; легковесные DSL, Core и Puppy, и всё больше Linux-вакансий в новой инфографике «State of Linux»
2012-12-13 в 16:11, admin, рубрики: Core, dsl, Linux для всех, mint, Ubuntu, метки: Core, dsl, linux для всех, mint, Ubuntu 
К европейской конференции LinuxCon Europe, прошедшей в Барселоне, в Pingdom создали интересную инфографику «Как дела у Линукс» (инфографика внутри поста).
Невооружённым глазом видно, что Linux снова привлекает всё больше внимания, как в отраслевой прессе, так и среди обычных пользователей. Регулярно встречаются любопытные топики вроде такого: Dec 4: «Been a Windows head. Looking for change», или такого: «First time Linux experience — extremely disappointed».
Тем не менее, в продаже сложно встретить ноутбук или десктоп на Linux. Конфигурации «без ОС» встречаются — так почему бы не установить туда, к примеру, Linux Mint (раз это самый популярный дистрибутив, согласно DistroWatch), пусть и на правах «as is», без какой-либо поддержки?
Читать полностью »
Validation DSL на Groovy
2012-12-02 в 20:02, admin, рубрики: dsl, groovy, Rule Engine, я пиарюсь, метки: dsl, groovy, Rule Engine, я пиарюсь Одна из часто встречающихся проблем императивных языков программирования это отсутствие выражений для декларативных структур, таких как, к примеру, древовидные разметки или набор правил для обработки данных. В Groovy эта проблема решена с помощью классов типа Builder и мета-программированием на уровне абстрактного синтаксического дерева.
Читать полностью »
Пример использования fluent interface в java для описания объектов предметной области
2012-11-09 в 0:00, admin, рубрики: dsl, java, Программирование, метки: dsl, javaDisclaimer: нашел статью у себя в черновиках. Писал года полтора-два назад, почему не опубликовал — не помню. Просмотрел, вроде, не совсем бесполезная, пусть будет в открытом доступе.
В последнее время стало достаточно актуальным использование domain specific languages (DSL) — языков «заточенных» под конкретную предметную область. Слово «язык» в данном контексте не обязательно подразумевает именно новый язык программирования, зачастую можно обойтись и старым добрым.
На хабре не замечено ни одной статьи про fluent interface в контексте джавы, так что хотел бы поделиться своим опытом применения. Читать полностью »
Экосистемный подход к сборке веб-проекта с TeaCSS
2012-06-29 в 16:50, admin, рубрики: css, dsl, html, javascript, less, require, requirejs, sass, Веб-разработка, велосипед на ракетном топливе, метки: css, dsl, html, javascript, less, parser, require, requirejs, sass, Веб-разработка, велосипед на ракетном топливеВ этой статье я расскажу как можно организовать процесс сборки фронтэнда «от и до».
Советую начать со вводной статьи, если кто не читал.
Там я рассказывал про TeaCSS как про надмножество CSS, и это была неправда. Точнее – полуправда. И таким он был во времена своего создания (откуда и название).
Сейчас – это декларативный метаязык для генерации контента, во многом черпающий вдохновение из QML, Lisp, Clojure, Nemerle.Читать полностью »
Groovy как скриптовый язык и DSL для Java
2012-06-05 в 7:04, admin, рубрики: dsl, groovy, java, script, метки: dsl, groovy, java, scriptЗачем?
При разработке разного рода ПО, например, задач мониторинга или обслуживания, я сталкиваюсь с необходимостью поддержки в программе выполнения сценариев, описывающих или выполняющих некоторый набор действий. И специфика такова, что добавление или изменение таких сценариев в ПО не должно требовать пересборки или перезапуска ПО.
Наверное, самыми простыми примерами таких сценариев, с которыми все сталкивались в том или ином виде, могут служить обычные пакетные файлы — bat или sh.
Читать полностью »
Ruby / Поём вместе с Sinatra. Часть первая. Первое знакомство
2012-02-20 в 13:34, admin, рубрики: dsl, framework, ruby, sinatra, метки: dsl, framework, ruby, sinatra
Доброго времени суток!
Что такое Sinatra
Sinatra — маленький, но довольно интересный DSL (Domain-specific language) фреймворк, написанный на Ruby. В отличие от Ruby on Rails он не следует типичному паттерну MVC (Model — View — Controlller). Sinatra создавался для того, чтобы «программист смог быстро создать веб приложение, написанное на Ruby с минимальными усилиями.
Для того, чтобы воспользоваться Sinatra нам неорбходимо его установить. Сделать это можно следующей командой в RubyGems:
gem install sinatra
Также нам понадобится гем под названием Shotgun. Нужен он нам для того, чтобы лишний раз не перезагружать сервер вручную. Shotgun сделает это за нас. Давайте установимЧитать полностью »
