Re[5]: (как примечание)
От: Гест Украина https://zverok.github.io
Дата: 17.07.15 19:32
Оценка: +1
Здравствуйте, alex_public, Вы писали:

Г>>Компиляцию (гарантированную проверку работоспособнсоти перед деплоем) нам заменяют тесты/спеки. Это, как ни странно, работает (*место для вашего флейма статика vs динамика*).


_>Всё верно, в динамике тесты вместо компиляции. И соответственно совершенно непонятно зачем конструировать некие специальные объекты в коде (DSL'и), если для проверки их правил всё равно придётся писать тесты. Т.е. для динамических языков введение DSL'а абсолютно ничего не привносит (во всяком случае на этапе "компиляции"/тестирования).


Тут, чтобы о чём-нибудь разговаривать, нужно бы согласовать словари.

1. Что такое DSL?
2. Зачем нужне DSL?
3. Может ли DSL быть определён без выхода за рамки «базового» языка?

Мои ответы (на единственность и непогрешимость которых я не претендую) таковы:
1. Это сущности и операции с ними, отражающие некую предметную область (domain)
2. Чтобы иметь возможность программировать некую логику в рамках заданной предметной области эффективно и выразительно
3. Да, в достаточно гибком и выскоуровневом языке

Тупой пример:
class User < ActiveRecord::Base
  # вот это, добрые люди, DSL:
  has_many :posts
  scope(:for_fetching){where(fetch_date < Time.now)}

  validations do
    validate_presence :name
  end
end


Какое «значение» имеет такой DSL? Да тупо меньше писать, чтобы добиться того же эффекта. Меньше писать — больше можно написать (или будет написано то, чего иначе не возникло бы, скажем валидации).
Несмотря на отсутствие стадии «компиляции», бОльшая часть этого кода, выполняемая на этапе «определения класса», если его неверно написать, упадёт при первой же загрузке (в т.ч. если скажем таблицы БД posts не существует в природе, или ты ошибся и написал pots).
То есть не надо даже сложные тесты писать — достаточно загрузить код, и DSL либо заработает, либо обломается.

Г>>Так уж вышло, что бОльшую часть прогрессивных фишек в мифический «мейнстрим» привносим мы. Выразительности проще проявляться в динамических языках, obviously.


_>А почему мейнстрим стал мифическим? ))) Кстати, к нему и куча динамики вполне себе относится: JavaScript, PHP, Python...


«Мифический мейнстрим» — это послание в соседний тред, где оказалось, что мейнстрим состоит из 4-5 языков
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.