Fuck you frameworks

Framework’и — это зло.

Обычно, все начинается с малого. Пара функций, которые часто используются, выделяют в отдельный файл. Потом туда начинают сливать прочую функциональность. Затем, появляется мудёрый чувак, который видит во всей этой каше единую идею, и рефакторит этот кал во framework. Так появляется Framework 1.0.

Потом framework выкладывают куда-нибудь на sourceforge, где им по недомыслию начинают пользоваться другие люди. Так образуется сообщество подсевших на framework (когда половина проекта уже сделана с использованием этого кала, очень сложно решиться отказаться от него). Если неосторожных оказалось слишком много, вскоре выйдет Framework 2.0. Это уже полная вешалка, потому что он будет использовать все последние технологии, содержать груду хэлпов, требовать инсталляции сопутствующих библиотек, содержать сэмплы и весить не менее 100 Мбайт.

Гики (geeks) — странный народ, и часто ради красоты архитектуры готовы на многое. Но они знают, на что идут. Следом за гиками несется орда индусов и прочих аутсорсеров, которые совершенно без разбора заглатывают в свои проекты модные фрэймворки, чтобы снять с заказчиков еще миллион баксов на красивое название в технологическом описании проекта.

Если framework не умер в зачатке 1.0, у него есть все шансы дорасти до третьей версии. Это уже полный трындец, потому что к этой стадии к проекту примыкают несколько крутых сообществ, спонсируемых крупными компаниями типа Sun или IBM или чего поменьше. Каждая компания старается протолкнуть во framework собственные идеи, из-за чего он превращается в огромное раздутое осиное гнездо, полное полудохлых пчел, у которых, тем не менее, хватает сил, чтобы выпустить жало с ядом в неосторожно запущенные во framework руки.

Каждый, кто рискнет использовать framework на этой стадии, получит конфетку с какашковой начинкой в симпатичной обертке. К счастью для создателей framework’а, когда вы почувствуете вкус дерьма, выплюнуть конфету будет слишком поздно.

Выводы:

  1. Использовать базовые возможности языков (которые обычно более чем достаточны для ЛЮБЫХ приложений).
  2. Жить своим умом, не копируя красивых решений, сулящих быстрый результат (вам все равно придется с ними трахаться — но уже потом, когда изменить что-либо будет невозможно).
  3. Если ваш четырехстраничный сайт требует 150 Мбайт библиотек, значит мои советы запоздали ;-).

Предлагаю организовать движение «Свободу от API!».

6 комментариев:

ynkulbyh комментирует...

Да, пора выбросить компьютеры и раздеться!

Jevgeni Holodkov комментирует...

Дабы немного уравновесить пост.. :)

>> Использовать базовые возможности
>> языков (которые обычно более
>> чем достаточны для ЛЮБЫХ
>> приложений)

В принципе, как правило фреймворки написаны на том же языке, что и софт, в котором они используются. Поэтому да, можно написать все самому используя базовые возможности языка. Только цель фреймворков - предоставить программистам готовый инфраструктурный уровень. Более того, компании обычно не получают никакого преимущества в бизнесе за счет уровня инфраструктуры, поэтому выгоднее распределить инвестиции в софт между несколькими компаниями. Использование фреймворков позволяет легче найти людей, знающих как с этим фреймворком работать.

>> Если ваш четырехстраничный сайт
>> требует 150 Мбайт библиотек,
>> значит мои советы запоздали

Это в первую очередь значит то, что неправильно выбран фреймворк и задачи четырехстраничного сайта можно было бы решить гораздо проще. Видимо, забили на принцип good enough is good enough.

И последнее, фреймворк это в первую очередь инструмент. Софт не состоит исключительно из фреймворка, должны быть еще другие слои, каждый выполняющий уникальную задачу. Как правило проблема именно в том, что код представляет из себя суп, а не четко разделенные компоненты. Если этого делается, то виноват совсем не фреймворк, а, в первую очередь, программист, который, правда, потом начинает ругаться, что это фреймворки его заставляют так писать код, прямо как строитель, который вместе молотка начал использовать микроскоп и потом заявляет, что когда пытаешься забивать окуляром, то удары должны быть очень нежными, иначе все можно сломаться;)

altmind комментирует...

абсолютно с вами согласен.
зависимость от API, паттернов и привычек - это то, что мы уже не замечаем.

Freeman комментирует...

> Использовать базовые возможности
> языков (которые обычно более чем
> достаточны для ЛЮБЫХ
приложений).

интересно, а вас не смущает что АПИ самих языков это тоже фреймворк который тоже частенько проходит все те же стадии версии 1.0, 2.0, ... ?


> Жить своим умом, не копируя
> красивых решений, сулящих
> быстрый результат (вам все равно
> придется с ними трахаться — но уже
> потом, когда изменить что-либо
> будет невозможно).

то есть каждый раз изобретать велосипед? И далеко так можно уехать? :)

Stas комментирует...

> интересно, а вас не смущает что
> АПИ самих языков это тоже
> фреймворк который тоже частенько
> проходит все те же стадии версии
> 1.0, 2.0, ... ?

Не смущает, потому что этот API первичен :)

> то есть каждый раз изобретать
> велосипед? И далеко так можно
> уехать? :)

Не совсем. Каждый раз брать от велосипеда то, что нужно именно в данном конкретном проекте - переднюю втулку, руль, звено из цепи, звонок, левую педаль и, мкасимум, заднее колесо в сборе.

В большинстве случаев для реализации проекта нам не нужен велосипед целиком. В случае использования готового фрэймворка приходится ради держателя для бутылочки покупать (и таскать за собой) целый велосипед.

Маркус комментирует...

Хороший, годный холивар. Фреймворки говно!