metaclass: (Default)
[personal profile] metaclass
Как известно, страшным грехом в современном программировании считаются синдром NIH, изобретение велосипедов и попытки решить уже решенные задачи, а уже нахождение новых задач - страшнейшее богохульство, на уровне осквернения могил и нежелания смотреть олимпиаду по телевизору.
В связи с этим, в своих дотнет-проектах я стараюсь использовать два стандарных инструмента: MSBuild для сборки и t4 для генерации повторяющегося кода.
Так вот, если первый всего лишь содержит мелкие странности (типа считает переменные окружения своими переменными, но не передает автоматически свои обычные переменные, если вызывает сам себя и не содержит внятных средств организации подпроцедур - т.е. области видимости переменных в нем - это ad-hoc ад писанный людьми, которые никогда не читали SICP), то второй - это теоретически правильное, но неудобное при разработке дичайшее безумие.
И я уверен, что аналогичный темплейтер, сделанный на clojure, был бы намного понятнее, нежели "готовое" решение.

Date: 2014-02-15 10:20 am (UTC)
From: [identity profile] jakobz.livejournal.com
99% шаблонизаторов - торжество фашизма. В стиле "а давайте дадим дизайнерам ущербный язык, чтобы они лямбд не нафигачили". Мышление одноклеточного менеджера про то как из человека сделать юнит.

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

Date: 2014-02-15 11:12 am (UTC)
From: [identity profile] bydl0coder.livejournal.com
Шаблонизаторы нужны для того, чтобы программа была похожа на то, что получается в итоге, т.е. текст. Это удобней, чем DSL, выдуманные любителями лямбд.

Date: 2014-02-15 11:33 am (UTC)
From: [identity profile] jakobz.livejournal.com
Шаблонизаторы не нужны. Написал про это постом: http://jakobz.livejournal.com/238066.html

Date: 2014-02-15 11:38 am (UTC)
From: [identity profile] bydl0coder.livejournal.com
Какие-то у вас другие шаблонизаторы. Обычные - это которые как похапэ, т.е. с удобным синтаксисом для `print(very_long_string)`. Бывает еще ад типа джанги, где все запрещено, и содомия с созданием DOM в хаскелях и прочем таком.

Date: 2014-02-15 11:44 am (UTC)
From: [identity profile] jakobz.livejournal.com
Да не нужны они любые. Джанго - совсем лютый фашизм. Razor тот же - вроде позволяет писать код, но там ад с переключением синтаксиса и полная жопа с передачей шаблона в хелпер.

По факту всегда образуется слой-обертка над этими всеми div-ами и span-ами, и зачем и что в шаблонах надо писать близко к тексту становится совсем непонятно.

Date: 2014-02-15 11:56 am (UTC)
From: [identity profile] bydl0coder.livejournal.com
Да когда как. Встречал и любителей текст писать и тех, у кого в шаблонах никаких дивов-классов не было, одни хелперы. Хорошо, когда шаблонизатор оба подхода поддерживает, как в рельсах, например.

Date: 2014-02-15 12:03 pm (UTC)
From: [identity profile] jakobz.livejournal.com
Моя позиция примерно такая: да, если обезьянам дать гранату - они могут покалечиться. Но я не обезьяна, и мне не нравится что мне по этой отмазке гранату не выдают. И мне не нравится что людей по-умолчанию считают обезьянами.

Date: 2014-02-15 12:06 pm (UTC)
From: [identity profile] bydl0coder.livejournal.com
Так сложно правильную гранату сделать. Я с ходу не представляю даже, какой в сишарпе может синтаксис, для передачи шаблона в хелпер.

Date: 2014-02-15 12:11 pm (UTC)
From: [identity profile] bydl0coder.livejournal.com
В руби передача шаблона в хелпер работает, потому что такой синтаксис, любому методу помимо аргументов из его декларации можно передать еще и функцию. Будет он ее использовать или нет - его дело, но передать можно. Типа такого:
def foo(x)
  # doing stuff
end

foo(10) do
  puts "Some stuff for foo to call"
end

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 10th, 2025 03:18 pm
Powered by Dreamwidth Studios