О шаблонах проектирования - слышал, а о Flyweight - нет, пойду читать, спасибо за подсказку ) Поставил бы [+] в карму за совет, да кнопка не нажимабельна )
Я ж не утверждаю, что ООП это проблемы - просто иногда оно лучше, иногда проц-ый подход лучше. Раздражает то, что люди, в основном, видят только единственный вариант правильным (либо ООП, либо функции).
В случае уклонения от участия в добровольной акции "I love China" Великий Китайский Файрволл отключает Велкий Китайский Интернет. ))
На самом деле тоже не вижу ничего плохого в патриотизме. А вот представьте что в 2013 Западные СМИ начнут публиковать "Байкотируйте Сочи-2014, потому что Россия годами делает то-то и то-то" - сколько русских сердечко и Russia повесил бы?
Странное сравнение "есть процедурный подход, а теперь следующие 99% поговорим о том, почему ООП это круто!". ИМХО из опыта, я бы тут согласился с Nod, "когда код перевалит за 20-30 строк тогда придется переходить на ООП" (я бы правда сказал и раньше).
Но большинство использует всегда ООП (даже для программ из сотен строк) - вот этого я не понимаю. Зачем? Если та же программа на функциях пишется в два раза быстрее и в два раза короче. Потому что не нужны описания всех мыслимых аксессоров, а только методов (функций). Плохо, что те, кто начинает с ООП считает его чем-то вроде Программирование 2.0, а процедурный подход чем-то вроде атавизма.
Для подтверждения два примера из моей жизни где было что: 0. ООП плохо 1. Функции плохо
0. ООП плохо
Была у меня задумка сделать конвертер из SketchUp в формат 3D Crysis'а, в общем, как известно очень сколняет к ООП (вообще, замечательный язык, только почему-то его почтоянно путают с Ruby on Rails, ну не суть). В общем, на ООП был написан конвертер, сделана модель из 30 тыс. полигонов (здоровое советское здание) и конвертер пошел. Он тужился около 40 минут, пока мне не надоело ждать. А суть в том, что Руби постоянно создавал в памяти новые объекты (chunk'и, содержащие отдельные полигоны) и на каждый из них требовалось время, чтобы его создать, чтобы сменить структуру родительского объекта (счетчики, массивы и т.п.), естественно, перераспределение памяти и т.п. и т.п. и т.п. Я переделал проект - заставил Руби только выплюнуть список вершин и фейсов. А затем PHP читал этот список и тупо, без памяти - писал прямо в файл то, что нужно (никаких overhead'ов на создание объектов, просто fseek-fputs-fseek-fputs).
Разница? ООП подход более 40 минут на полу-сложную модель, процедурный подход - менее 1 секунды на ту же модель (время исполнения, время написания кода тоже разное - объектный раза в три длиннее код был за счет описания всех аксессоров).
1. Процедуры плохо
В каком-то далеком году я понял, что мне нужна своя CMS, потому что все существующие являются перевариванием одних и тех же идей (админка отдельно от сайта со всякими списками сущностей и т.п., при чем зачастую даже терминология одна и та же). Проект я сделал - отдельного от сайта интерфейса вообще нет - начинаем с белого листа и выстраиваем на нем сайт и редактируем все прямо на месте, естественно, поскольку это было игрушкой в моем понимании - это писалось на функциях. Постепенно на эту систему стало использовать несколько студий, ее поставили на более чем 300 коммерческих сайтов, в общем, годы разработки и разраслось это все ужас.
Честно говоря, сейчас что-то в ней переделать становится все сложнее, получается так, что я уже давно жалею, что не стал ее на объектах писать.
ООП это благо, но к этому я бы еще добавил, что когда проект переваливает за 1 разработчика - то ООП тоже благо.
История отличная, только может хватит уже Эйншейну приписывать все то, чего он не делал. В частности:
"Нет доказательств, что этот диалог имел место быть.
Этот е-слух ходил без имени Эйнштейна и кто-то добавил его летом 2004 года.
Также, маловероятно, что юный Эйнштен присутствовал бы при этом споре.
В собственной Автобиографии, он утверждает, что хотя его Еврейская семья не была религиозной, он развил "глубокую религиозность" как Еврейский ребенок, но она кончилась в возрасте 12 лет.
Но говорит, что развил скептический подход [в этом вопросе], который никогда не покидал его.
Он указывает на "Бога" во многих случаях, но также говорил, что не верит некоторым историям в Библии, как и в личного Бога."
Если интересно и digg не читаете - вот еще мифы - Эйнштен не был признан неспособным ребенком и не был изгнан из школы за неуспеваемость, Колумб не открывал, что Земля круглая, и т.п., но в английских буквах: http://www.cracked.com/article_16101_5-m…
"Не выгодно не-MSовсцам" Сильно! ) Но это при условии, что 1) винда не потеряет популярности )) а это уже сам по себе большой фактор - Linux наступает и там IE еще потрудится надо чтобы запустить 2) за это время (пока ИЕ не станет безопасным) их убедят друзья что IE это на данный момент того не стоит 3) ну и еще если Американская экономика к моменту безопасного IE не рухнет, а то разрабы IE и Mozilla на работу к скандинавам пойдут проситься )) Так что, как сказал автор топика - время покажет )
Будет то, что для того, чтобы переманить людей назад из FF нужны будут разрабы, которые эти плагины писать будут, а многие из тех, кто это хочет делать - делают уже это для FF и они не перейдут из принципа. ) А нас, Oper'цев вообще не заманишь поддержкой плагинов - у нас по дефолту есть почти все )) А тех, кто юзает Safari/Webkit - ну их вообще не переманить. ) Проще говоря, ничего не будет - IE станет ТАКИМ же, как альтернативы, а чтобы отвоевать назад альтернативщиков - нужны будут новые конкурентные преимущества.
Да дело в том, что я в то время разрабатывал как раз сайты. Тогда штуки типа "Best viewed in MSIE5.5+ 800*600" были нормой. То есть фактически все считали, что он один. Поэтому те, кто пользовался Netscape Navigator просто считались игнорируемой величиной и они сами понимали, что пользуясь не-IE были готовы к тому, что страницы не всегда будут супер-отображаться, хотя большей частью это касалось того, что MARQUEE летать не будет ) Тем более что то форматирование, что использовалось тогда почти все браузеры одинаково трактовали. <font color=red><blink>YAHOO!</blink></font> не много фантазии надо чтобы понять, также как и <tr><td><img src=dot.gif width=5></td><td><img src=narezan1.jpg> ... , а сейчас вот уже думай - эти 5 пикселей - это паддинг, маржин и включены ли они в суммарный width )
Тут есть положительные тенденции - во-первых, эта цифра все падает, во вторых, MSIE8 даже ACID2 проходит (если MS верить) - значит идут к стандартам.
> другие браузеры интерпретируют стандарты, как могут
Ну вспомните школьные-студенческие годы - решаешь по тому, как в учебнике написано - все правильно, да в нескольких местах не понятно что и в каком порядке сделать, а возьмешь правильно кем-то сделанный вариант и по-аналогии сделаешь - все верно даже для своих цифр ) Это я к тому, что 1 тест типа ACID'а во многом полезнее сотен страниц стандарта, а раньше этого не было - вот и один прочтет стандарт так, а другой иначе (да и откровенно говоря во времена IE6 значения стандартам вообще мало придавалось - он был один и какая была разница что там в бумажках пишут - смотреть-то все равно им будут).
Как-то уж среднезначимое событие (CSS3) превращено в предвестника апокалипсиса :)
Посмотрите - сейчас анимацию можно делать на Flash, можно на JavaScript - от этого "смуты в рядах разработчиков" не наступает. Каждый выбирает свое.
> в частности MSIE
MSIE прошел ACID2, стараются же идти к стандартам - откуда сразу такое убеждение что CSS3 MSIE не будет поддерживать, когда этот стандарт будет принят.
> исключительно для альтернативных браузеров (а не для людей)
Фраза сама по себе странная. Ну допустим моя любимая Опера в варианте 9.5beta поддерживает 3D Canvas, SVG-анимацию, приличную часть HTML5 (уже давно, кстати), но от этого же я не пишу сайты под только Оперу 9.51? Firefox наверное тоже поддерживает какие-то штуки, которые очень продвинуты и не доступны IE (и может Опере тоже), но все же надпись "Made for Firefox only" или "Made for Opera only" - не так уж распространены.
По мне - возможность использования переменных, анимаций и т.п. - это хорошо, ибо это "возможность". Если бы это было "обязанность" - это другой разговор, а так - чем больше гибкости - тем лучше. Так что CSS3: одни будут анимацию на Флеше делать, другие на Javascript, ну если к этому еще и CSS добавится - тем лучше.
Я перечитывал после срыва - не дало никакого толка. Первый раз, когда читаешь - это открытия и они поражают, второй раз читаешь то, что уже знаешь и что не мешает курить )
Курил 5 лет, бросил именно книгой Карра, 9 месяцев не курил. Закурил одну в нервный период. Курил еще год. Бросил методом В.Довганя ("Как расстаться с сигаретой") не курил еще год. Закурил одну в нервный период. Курю до сих пор. Так что товарищи бросившие - насчет того, что "одной сигареты не бывает" - это стоит ОЧЕНЬ внимательно читать.
P.S. Гамуччи уже заказал почти неделю назад по логике "Раз уж все равно курю - лучше уж курить то, что менее вредно".
Я ж не утверждаю, что ООП это проблемы - просто иногда оно лучше, иногда проц-ый подход лучше. Раздражает то, что люди, в основном, видят только единственный вариант правильным (либо ООП, либо функции).
На самом деле тоже не вижу ничего плохого в патриотизме. А вот представьте что в 2013 Западные СМИ начнут публиковать "Байкотируйте Сочи-2014, потому что Россия годами делает то-то и то-то" - сколько русских сердечко и Russia повесил бы?
Но большинство использует всегда ООП (даже для программ из сотен строк) - вот этого я не понимаю. Зачем? Если та же программа на функциях пишется в два раза быстрее и в два раза короче. Потому что не нужны описания всех мыслимых аксессоров, а только методов (функций). Плохо, что те, кто начинает с ООП считает его чем-то вроде Программирование 2.0, а процедурный подход чем-то вроде атавизма.
Для подтверждения два примера из моей жизни где было что: 0. ООП плохо 1. Функции плохо
0. ООП плохо
Была у меня задумка сделать конвертер из SketchUp в формат 3D Crysis'а, в общем, как известно очень сколняет к ООП (вообще, замечательный язык, только почему-то его почтоянно путают с Ruby on Rails, ну не суть). В общем, на ООП был написан конвертер, сделана модель из 30 тыс. полигонов (здоровое советское здание) и конвертер пошел. Он тужился около 40 минут, пока мне не надоело ждать. А суть в том, что Руби постоянно создавал в памяти новые объекты (chunk'и, содержащие отдельные полигоны) и на каждый из них требовалось время, чтобы его создать, чтобы сменить структуру родительского объекта (счетчики, массивы и т.п.), естественно, перераспределение памяти и т.п. и т.п. и т.п. Я переделал проект - заставил Руби только выплюнуть список вершин и фейсов. А затем PHP читал этот список и тупо, без памяти - писал прямо в файл то, что нужно (никаких overhead'ов на создание объектов, просто fseek-fputs-fseek-fputs).
Разница? ООП подход более 40 минут на полу-сложную модель, процедурный подход - менее 1 секунды на ту же модель (время исполнения, время написания кода тоже разное - объектный раза в три длиннее код был за счет описания всех аксессоров).
1. Процедуры плохо
В каком-то далеком году я понял, что мне нужна своя CMS, потому что все существующие являются перевариванием одних и тех же идей (админка отдельно от сайта со всякими списками сущностей и т.п., при чем зачастую даже терминология одна и та же). Проект я сделал - отдельного от сайта интерфейса вообще нет - начинаем с белого листа и выстраиваем на нем сайт и редактируем все прямо на месте, естественно, поскольку это было игрушкой в моем понимании - это писалось на функциях. Постепенно на эту систему стало использовать несколько студий, ее поставили на более чем 300 коммерческих сайтов, в общем, годы разработки и разраслось это все ужас.
Честно говоря, сейчас что-то в ней переделать становится все сложнее, получается так, что я уже давно жалею, что не стал ее на объектах писать.
ООП это благо, но к этому я бы еще добавил, что когда проект переваливает за 1 разработчика - то ООП тоже благо.
"Нет доказательств, что этот диалог имел место быть.
Этот е-слух ходил без имени Эйнштейна и кто-то добавил его летом 2004 года.
Также, маловероятно, что юный Эйнштен присутствовал бы при этом споре.
В собственной Автобиографии, он утверждает, что хотя его Еврейская семья не была религиозной, он развил "глубокую религиозность" как Еврейский ребенок, но она кончилась в возрасте 12 лет.
Но говорит, что развил скептический подход [в этом вопросе], который никогда не покидал его.
Он указывает на "Бога" во многих случаях, но также говорил, что не верит некоторым историям в Библии, как и в личного Бога."
Отсюда: http://www.truthorfiction.com/rumors/e/e…
Если интересно и digg не читаете - вот еще мифы - Эйнштен не был признан неспособным ребенком и не был изгнан из школы за неуспеваемость, Колумб не открывал, что Земля круглая, и т.п., но в английских буквах: http://www.cracked.com/article_16101_5-m…
Тут есть положительные тенденции - во-первых, эта цифра все падает, во вторых, MSIE8 даже ACID2 проходит (если MS верить) - значит идут к стандартам.
> другие браузеры интерпретируют стандарты, как могут
Ну вспомните школьные-студенческие годы - решаешь по тому, как в учебнике написано - все правильно, да в нескольких местах не понятно что и в каком порядке сделать, а возьмешь правильно кем-то сделанный вариант и по-аналогии сделаешь - все верно даже для своих цифр ) Это я к тому, что 1 тест типа ACID'а во многом полезнее сотен страниц стандарта, а раньше этого не было - вот и один прочтет стандарт так, а другой иначе (да и откровенно говоря во времена IE6 значения стандартам вообще мало придавалось - он был один и какая была разница что там в бумажках пишут - смотреть-то все равно им будут).
А чертовски верно подмечено. Только вот я бы обобщил, что "большинство людей боится что им что-то новое придется учить".
(Заметьте: "Большинство", а не "все", есть категории людей, которые с удовольствием все новое изучают
Посмотрите - сейчас анимацию можно делать на Flash, можно на JavaScript - от этого "смуты в рядах разработчиков" не наступает. Каждый выбирает свое.
> в частности MSIE
MSIE прошел ACID2, стараются же идти к стандартам - откуда сразу такое убеждение что CSS3 MSIE не будет поддерживать, когда этот стандарт будет принят.
> исключительно для альтернативных браузеров (а не для людей)
Фраза сама по себе странная. Ну допустим моя любимая Опера в варианте 9.5beta поддерживает 3D Canvas, SVG-анимацию, приличную часть HTML5 (уже давно, кстати), но от этого же я не пишу сайты под только Оперу 9.51? Firefox наверное тоже поддерживает какие-то штуки, которые очень продвинуты и не доступны IE (и может Опере тоже), но все же надпись "Made for Firefox only" или "Made for Opera only" - не так уж распространены.
По мне - возможность использования переменных, анимаций и т.п. - это хорошо, ибо это "возможность". Если бы это было "обязанность" - это другой разговор, а так - чем больше гибкости - тем лучше. Так что CSS3: одни будут анимацию на Флеше делать, другие на Javascript, ну если к этому еще и CSS добавится - тем лучше.
P.S. Гамуччи уже заказал почти неделю назад по логике "Раз уж все равно курю - лучше уж курить то, что менее вредно".