Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Сторонние библиотеки - быть или не быть? (https://javascript.ru/forum/offtopic/2813-storonnie-biblioteki-byt-ili-ne-byt.html)

IIIEPJIOK 13.02.2009 14:07

Сторонние библиотеки - быть или не быть?
 
Коллеги с phpClub.ru подняли тему (читать тут)
Интересно стало, а что здесь народ думает

ЗЫ
Хотя наверное, многие и там и тут обитают :)

Андрей Параничев 13.02.2009 14:31

Зависит от задачи.

Добавлено:
Но вообще, использование jQuery ведет к использованию неправильных практик JavaScript программирования и работы с DOM-элементами. Человек, который разбирается в JavaScript, без проблем сможет писать, используя jQuery. Но обратное - не всегда верно.

Zeroglif 13.02.2009 15:04

Цитата:

кросс-браузерное программирование без использования чужих фреймворков типа jQuery, Prototype
Признак ума. ;)

Zeroglif 13.02.2009 15:04

Или умный признак.

Kolyaj 13.02.2009 15:17

Собственно, кроссбраузерность нужно уметь обеспечивать и без фреймворков. С фреймворками такая проблема: они обеспечивают не только кроссбраузерность, но и универсальность, за счет чего, зачастую, становятся монстрообразными.

Возьмем, например, jQuery. Для чего его используют?
1. Различные готовые виджеты -- оправданное использование, тут все нормально.
2. Выборка элементов CSS-селекторами -- при грамотной верстке достаточно getElementsBy(Class|Tag)Name. jQuery тут не нужен.
3. Кроссбраузерный XMLHttpRequest -- без всяких лишних вещей несколько килобайт.

Zeroglif 13.02.2009 15:30

jQuery - либа, которая почти 3 года определяла браузер по UA-строчке, это супер-мега-кросс-браузерно... ;)

Kolyaj 13.02.2009 16:48

typeof object == 'array' круче :)

Zeroglif 13.02.2009 17:16

Ну, да... косяков полно до сих пор...

korzhik 13.02.2009 19:05

Имхо, фреймворки это хорошо. И именно из-за jquery я решил учить javascript

Zeroglif 13.02.2009 19:34

korzhik,

Обоснуй, что хорошо. Интересно же.

Zibba 13.02.2009 19:52

Мое мнение на этот счет, что фреймворки (библиотеки) не вечны, все время придумываются какие то новые способы или техники, фреймворки дорабатываются с учетом этого (каких то специфичных, новых особенностей браузера и т.д.), а вот чистый js вечный (еще бы, фреймворки то на нем и делаются с этими новыми идеями и решениями).
+ Нельзя не принять во внимание тот факт, что фреймворков большое множество. Сегодня моден один, завтра другой, после завтра третий. А чистые решения на js употребляемые в этих самых фреймворках актуальны всегда (ну или будут актуальны с учетом некоторых доработок в виду изменения специфики работы браузера например).
Так что мое мнение, фреймворк приемлем в какой то конкретной ситуации, с конкретно поставленными задачами, конкретным предпочтением заказчика (включая выбор фреймворка, порой не понимая что можно обойтись и без него не в ущерб). Так, что как уже говорили:
Цитата:

Сообщение от Андрей Параничев
Но вообще, использование jQuery ведет к использованию неправильных практик JavaScript программирования и работы с DOM-элементами. Человек, который разбирается в JavaScript, без проблем сможет писать, используя jQuery. Но обратное - не всегда верно.


Андрей Параничев 13.02.2009 22:50

Я думаю тут даже предмета обсуждения быть не должно. Просто если поменять местами отношение к JavaScript и к PHP, то все встанет на свои места.

Вот взять и сравнить Smarty и jQuery - одного поля ягоды же. Тем не менее, Smarty, как и jQuery, часто используют для того, чтоб в проекте мог разобраться не один человек, который его написал, но и другие программисты. Это, если хотите, "общий язык" для нескольких исполнителей, в котором, при желании, можно быстро разобраться.

Рациональное применение фреймворков, которое я вижу — использование в проектах, которые будут в будущем развиваться/переделываться, и есть большая вероятность того, что текущий исполнитель может смениться. Вот лично мне было бы легче разобраться в скриптах, которые написаны с помощью, пусть и далеко не идеальной, документированной библиотеки, чем в коде, написанным "кем-то" с нуля. Конечно, если проект ведет студия, или это собственная разработка - тут другое дело.

Если ко всему вышесказанному добавить то, как "качественно" обычно пишут скрипты на JavaScript, то я обоими руками за рациональное использование "полу-фабрикатных" решений, вроде jQuery.

Kolyaj 14.02.2009 20:15

Цитата:

Сообщение от Андрей Параничев
Вот лично мне было бы легче разобраться в скриптах, которые написаны с помощью, пусть и далеко не идеальной, документированной библиотеки, чем в коде, написанным "кем-то" с нуля.

Если код хреновый, то, в принципе, хоть на чем он написан, хоть на JavaScript, хоть на jQuery, хоть на С++, все равно хрен разберешь.

Цитата:

Сообщение от Андрей Параничев
Если ко всему вышесказанному добавить то, как "качественно" обычно пишут скрипты на JavaScript, то я обоими руками за рациональное использование "полу-фабрикатных" решений, вроде jQuery.

Уж как нынешние "программисты" на jQuery пишут, на чистом JavaScript такого не придумаешь.

Dmitry A. Soshnikov 14.02.2009 22:31

Философский вопрос.

(ниже получилось много текста, не касающегося конкретных языков, да, к тому же, являющегося прописными истинами, но, все же)

Ключевым моментом здесь является то, что обсуждается использование именно сторонних библиотек. И противопоставляются некий "чистый язык" (безотносительно конкретного JavaScript'a) и "кем-то написанная сторонняя библиотека".

Однако, что есть "чистый язык"? Это код, с использованием конструкций, идущих лишь с "коробкой"? Хорошо, пусть так. Будем писать на "чистом языке".

Но, можем ли мы, являясь программистами, оптимизировать наш код, улучшая его повторное использование и структуру? Т.е., вынося "рутинные", "каждодневные", "громоздкие и повторяющиеся", "часто использующиеся" конструкции в нечто, что можно будет вызвать одной строкой (например, в функции)? Можем, почему нет?

Можем ли мы логически объединить набор этих функций в нечто под общим именем, тем самым создавая "модули"? Конечно, можем, почему нет? Это удобно.

Можем ли мы собрать набор наших "модулей" воедино, тем самым создав систему? Систему, являющуюся кладезю решений от повседневных повторяющихся, монотонных "проблем". Естественно, можем. Назовем это (негласно) фреймворк. Почему негласно? Потому что мы просто оптимизируем код, вынося повторяющиеся куски кода в функции, чтобы вызывать их одной строкой, не более.

Поскольку, мы писали на "чистом языке", то и решения (наши решения!) из фреймворка являются решениями на "чистом языке". Поскольку фреймворк состоит из решений, то сам фреймворк - это решение на "чистом языке". Так? Так.

Далее, мы используем наши решения (иначе, зачем их писали?). Может ли кто-то сказать, что мы пишем уже не на "чистом языке". Нет, поскольку, это всего лишь наша оптимизация "повторяющихся кусков". Она написана нами, на "чистом языке".

Т.е. само использование библиотек абсолютно не "грешное" дело, поскольку мы сами эту библиотеку и написали.

Затем, мы хотим поделиться (альтруистски и энтузиастски :)) с другими программистами. Они (с благодарностью, что мы избавили их от рутины) начинают писать с использованием наших решений. Пишут ли они на "чистом языке"? Нет. :) И вот здесь начинается их "обвинение". Но в чем их "вина"? В том, что они не потратили столько же времени и сами не написали эти решения? Возможно, но не нам их судить, поскольку мы на полном альтруизме отдали наши решения в свободное пользование. Может быть, в том, что они не понимают, как это работает внутри? Возможно, но мы сами выдали им этот новый уровень абстракции, создав черный ящик с легкими и запоминающимися названиями снаружи.

А, может, им даже и не нужно понимать, как оно работает внутри. Может, им достаточно абстрактного манипулирования объектами с нужными сообщениями. Кто они? Уже не программисты, если не понимают, как это работает внутри. Или может программисты следующего уровня абстракции? Или программисты, смотрящие на "мир" нашими "глазами". Не важно, но им нравится использовать наши быстрые, вызываемые одной строчкой, решения их повседневных проблем.

Нашими "глазами"... А потом, вдруг, выясняется, что мы сами не так поняли технологию (сами не под тем углом смотрели; возможно, в виду привычек к другой технологии, - не суть). И приходят люди, которые говорят нам об этом. Естественно, видя поголовное использование этой "ошибки" без, даже, желания задуматься, что это не в идеологии технологии, можно услышать, вполне понятные, высказывания о "недостаточном количестве ума" тех, кто использует эти решения (или наоборот, о присутствии достаточного количества ума у тех, кто не использует эти решения). Или, если не об ошибках, то можно говорить о жутких тормозах наших решений (т.к. для увеличения абстракции, нам пришлось пожертвовать ресурсами). И это тоже будет верным.

Но что было бы, если бы эту библиотеку (эти наши решения) написали те, кто указал нам на эти ошибки. Была бы она лучше? Да (т.к. мы согласились с тем, что все указания были верными). Но. Да - лишь до тех пор, пока не придут другие, которые не укажут уже на новые "ошибки".

Означает ли это, что писать библиотеки вообще не надо? Нет. - Поскольку мы в самом начале говорили об улучшении и оптимизации нашего кода. Что означает оптимизация и улучшение? Зачем она нам нужна? Язык плохо спроектирован? Может да, а может, нет. Но в большей мере, мы оптимизировали наши логические решения, не связанные с языком.

Получается, писать с использованием библиотек - это нормально и не подсудно, если ты сам ее написал (и здесь, как было сказано выше, мы пишем даже на "чистом языке", библиотека вливается в код "незаметно" и для нас не является библиотекой, а лишь - оптимизацией). Являются ли остальные случаи ненормальными и означающими отсутствие ума? Нет. - Поскольку, если бы библиотека была написана высшим профессионалом технологии, количество ее "ошибок" было бы сведено к минимуму.

Означает ли, что у тех, кто будет использовать эту библиотеку (не важно, какого уровня профессионалом написанную) будет меньший уровень знаний "чистого языка" (при условии, что они начинают писать на языке сразу с использованием нашей библиотеки)? Может да, а может, нет. - Все зависит от того, насколько сильно мы усилили (или лучше - изменили) абстракцию. Но, как правило - означает (и означает - 70%). Страшен ли этот факт для этих людей? Нет! Абсолютно нет! :) Просто они подключаются к программированию на новом уровне абстракции - придуманным нами. Интересует ли их то, как написано это внутри? Может да, а, может, нет. - Так же, как и нас - интересует или нет, на чем и как написан наш "чистый язык"? При этом, для тех, кто, все-таки, не захочет изучить "чистый язык", на котором написана библиотека, сама библиотека станет "чистым языком"!

А дальше... А дальше - они напишут новые языки и библиотеки, уже основанные на наших библиотеках. И так же - профи будут видеть недочёты, остальным - до этого мало будет дела, т.к. все будет вызываться в одну короткую, запоминающуюся строчку.

Поэтому, основным моментом внедрения библиотеки в массы, является то, кто стоял у руля этой библиотеки. И, если за ней стоят большие институты, которые спонсируют, документируют, сделают отличный PR и т.д., то она необратимо будет завоёвывать популярность. И т.д. И т.п. И т.д. И т.д.

И поэтому, использовать или нет библиотеки зависит от:

- уровня абстракции, на котором работает программист (ну не обязательно ему каждый раз писать на "чистом ассемблере" окна, если для этого есть API, который позволяет это делать одной строкой - ведь в его задаче будет 13212 окна);

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

Но в любом случае, библиотека, как набор, кладезь решений - есть применение ранее накопленного опыта. Своего, или чужого (возможно, синтезированного со своим).

P.S.> писал уже похожее - http://anton.shevchuk.name/javascrip...#comment-32944, и еще там же коммент - http://anton.shevchuk.name/javascrip...#comment-33055

Zibba 14.02.2009 22:46

Цитата:

Сообщение от Dmitry A. Soshnikov
Но в любом случае, библиотека, как набор, кладезь решений - есть применение ранее накопленного опыта. Своего, или чужого (возможно, синтезированного со своим).

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

Dmitry A. Soshnikov 14.02.2009 23:08

Цитата:

Сообщение от Zibba
(Но тут тоже зависит от уровня абстракции на котором построен конкретный модуль, потому что порой для того чтобы вытянуть один метод, может потребоваться потянуть за ним и еще много чего.)

Да, несомненно. Это тоже надо учитывать.

Кстати, вот сейчас, случайно, попал на сайт http://jquery.ru - и ключевой фразой определяющей смысл жизни технологии, является фраза:

Цитата:

Сообщение от http://jquery.ru
jQuery создана, чтобы изменить путь написания JavaScript

Изменить путь! Во как. Здесь явно заявляется, что "мы изменяем абстракцию в новую сторону". В новую, естественно, подразумевается - в лучшую. Но, как уже отмечалось - на любом уровне абстракции всегда будут такие профи, которые будут видеть, как минимум, недочёты и, как максимум, полное изменение пути (возможно, исходя из привычек, приобретённых в других технологиях) технологии.

Zeroglif 14.02.2009 23:14

Dmitry A. Soshnikov,
Цитата:

Поэтому, основным моментом внедрения библиотеки в массы, является то, кто стоял у руля этой библиотеки.
Смотри. У руля той же джиквери стоял плохой js-программист, сейчас не знаю, кто стоит, но код по-прежнему свидетельствует, что там "тёмные". Или ты говоришь не о навыках, а о способностях к продвижению? Тогда сдаюсь заранее.

Цитата:

И, если за ней стоят большие институты, которые спонсируют, документируют, сделают отличный PR и т.д., то она необратимо будет завоёвывать популярность.
Да большим институтам пофиг, ну включают они некие либы в свои продукты, привязывают к крупным сайтам, пропагандируют, это говорит о качестве? Нет.

Zibba 14.02.2009 23:21

Dmitry A. Soshnikov,
Прочитал, ваши комментарии приведенные в ссылках, особенно сильно задел (как хороший пример уровня абстракций и профессианалов на каждом уровне/уровнях):
Цитата:

Цитата:

Антон, вы навешиваете эвент JS-а используя селектор по классу, хотя по всем правилам логики class используется для элементов, когда их >1. И $(’EL.classA’).click(..)
это человек уже хорошо разбирается (ну, допустим ) на самом деле, я не знаю, на сколько хорошо) в jQuery, и он, скорей всего, будет сетовать на библиотеку superNewJQuery (которая будет весить 7Гб), написанную на jQuery, и говорить о ее недочетах.

Zeroglif 14.02.2009 23:26

Цитата:

Сообщение от Zibba
Поэтому например сугубо я собираю такие куски кода, в свой небольшой так сказать модуль. Но при решении конкретных задач использую не весь модуль, а только выборочно нужные функции/методы, объекты и т.д. и т.п.

Вы поступаете совершенно правильно. Профессионально и умнО.

Цитата:

профессианалов
В своём кругу мы так называем биржевых и проч. аналитиков. ;)

Dmitry A. Soshnikov 15.02.2009 00:44

Цитата:

Сообщение от Zeroglif
Смотри. У руля той же джиквери стоял плохой js-программист, сейчас не знаю, кто стоит, но код по-прежнему свидетельствует, что там "тёмные". Или ты говоришь не о навыках, а о способностях к продвижению? Тогда сдаюсь заранее.

Я и говорю: исходя из того, какого уровня профессионал стоял у создания библиотеки, такая библиотека и будет. При этом "претензии" профессионалов-"оценщиков" - обратно пропорциональны профессионализму создателя библиотеки. Это очевидно.

Но что обидно, так это, действительно, что в большинстве случаев большую роль будут играть продвижения. Без хорошего продвижения и "умения подать", самые хорошие библиотеки могут не стать популярными. В свою очередь, склеенные на скорую руку, неоптимальные решения - могут с лёгкостью попасть в массы. И в хорошей библиотеке, и в "тёмной" нужная функция будет называться .oneMethodToRuleThemAll(), и делать в одну строчку то, что на "чистом языке" делается в 500 строк, а что будет у нее внутри, уже мало кого будет волновать. Имеются в виду те люди, кто используют только этот новый уровень абстракции.

Можно провести аналогию с самим JS. Вернее, с реализациями. Любой, изучающий/знающий JS (ты, например, или я, или любой из участников форума) - все ли исходники реализаций ECMAScript он изучил? Определил ли, где было написано "по-светлому", а где "по-тёмному"? И даже, если да, всё равно больший интерес составляет эта новая абстракция JavaScript и ее новая идеология, а не Си-шная реализация метода. Тем не менее, там может быть очень "по-тёмному" написано внутри.

Цитата:

Сообщение от Zeroglif
Да большим институтам пофиг, ну включают они некие либы в свои продукты, привязывают к крупным сайтам, пропагандируют, это говорит о качестве? Нет.

Под "за этим стоят большие институты" я имею в виду, как раз-таки, целенаправленное продвижение. Я не имею в виду, что кто-то там использует библиотеку или нет. Имеется в виду, что масштабы спонсирования и подачи - большие. Качества это, естественно, не касается. Повторю, (и это естественно) - хорошая библиотека может не "увидать свет", в то время, как "тёмная" может вполне быть выдана за "спасение", за "путь". И, если это так, это, конечно, обидно. Вот и возникает эффект, когда профи оценивают такие библиотеки, указывая на недочёты. Это естественный и (вероятно) необратимый процесс (в любой технологии, на любом уровне абстракции).

Zeroglif 15.02.2009 09:34

Цитата:

Сообщение от Dmitry A. Soshnikov
В свою очередь, склеенные на скорую руку, неоптимальные решения - могут с лёгкостью попасть в массы.

Не могут, а так и происходит.
Цитата:

Сообщение от Dmitry A. Soshnikov
всё равно больший интерес составляет эта новая абстракция JavaScript и ее новая идеология, а не Си-шная реализация метода

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

Dmitry A. Soshnikov 15.02.2009 13:14

Цитата:

Сообщение от Zeroglif
а js-программист видит язык only, доки-спеки языка и фсё, ему исходники движков не нужны, пусть это заботит эксперта из соответствующей области (если только движок не написан на js).

Ну вот проведи параллель с JS -> jQuery и Реализация JS -> JS - получится примерно та же картина:

jquery-программист видит "язык" only, доки-спеки jquery и фсё, ему исходники "функций jquery (с легко запоминающимися названиями)" не нужны (ему нужны сами функции), пусть это заботит эксперта из соответствующей области - области JS"

При этом, если по большому счёту - новую библиотеку можно приравнять к новому языку (особенно, если библитека изменяет идеологию языка). И тех, кто подключился к программированию на "JS" (читай jquery) на этом уровне, сам JS может волновать мало. Но, не обязательно. Всё-таки, параллель приблизительная, а не точная, и библиотека, это не новый язык, а библиотека в рамках языка, поэтому какой-то процент jquery-программистов, всё же, будут изучать сам JS.

Цитата:

Сообщение от Zeroglif
Не могут, а так и происходит.

Тоже закономерно. Потом (допустим, гипотетически) эту библиотеку напишешь/перепишешь ты, и она уже не будет такой, так? Так (потому что ты видел недочёты и устранил их). Но и потом будут те, кто будет видеть недочёты. Только процент претензий уже будет меньшим (обратно пропорциональным к уровню профессионализма разработчика). Но все же будет. Будут судить, если не о моментах знания самого языка, а докапаются до того, как ты реализовал какой-нибудь алгоритм и т.д. (т.е. до чего-то субъективного, что нельзя будет описать объективно и однозначно).

Поэтому, я могу, субъективно (а, может, и объективно), выделить следующие моменты использования сторонних библиотек:

- играет роль уровень профессионализма программиста, использующего библиотеку. Программист может корректировать библиотеку, написать свою и т.д.

- играет роль уровень абстракции, на котором работает программист. И, если он (уровень) определён, то вполне можно использовать какой-нить ExtJS-фреймворк с однозначной докой-спекой - и "плевать, что он жутко тормозной" (эта фраза - не моя мысль, просто предполагаю объективную мысль программистов, работающих на этом уровне). Далее, если, всё-таки, производительность будет волновать, тут снова - первый пункт (зависит от уровня профессионализма программиста) - напишут свой фреймворк со своими виджетами.

Dmitry A. Soshnikov 15.02.2009 15:47

Вот, нашёл мой пост на подобную тему годичной давности - http://javascript.ru/forum/misc/1108....html#post1651. В принципе, то же самое. Однако, там я говорю, что "я может жалею". Хотя, я как тогда не использовал сторонние библиотеки (у меня вообще, еще до появления и prototype.js и jquery был написан свой фреймворк), так и сейчас не использую, т.к. сейчас, по долгу службы, занимаюсь хоть и JS, но не в плане web-программирования (а там эти библиотеки не нужны). А когда занимался именно программированием "для браузеров" - использовал свой легковесный фреймворк, который для меня являлся лишь кладезю решений (разработанных мной, а так же - заимствованных из сторонних библиотек).

Но в целом - я не против того, чтобы люди использовали сторонние фреймворки, поскольку, иначе - зачем они пишутся? А пишутся они именно для этого, потому что (тоже уже отмечал) - по большому счёту все задачи можно разделить на два больших раздела:

- задачи на инструментарий (написание языков, фреймворков, виджетов и т.д.);

- прикладные (повседневные), "высокоуровневые" задачи с использованием инструментария из первого пункта.

Естественно, задачи первого вида требуют более глубоких знаний, как в конкретных технологиях, так и в общих, фундаментальных.

Zeroglif 15.02.2009 19:32

Цитата:

"а jquery-программист видит "язык" only, доки-спеки jquery и фсё, ему исходники "функций jquery (с легко запоминающимися названиями)" не нужны (ему нужны сами функции), пусть это заботит эксперта из соответствующей области - области JS"
Вижу-вижу аццкое противоречие. ;) Область тут одна - javascript (в отличие от реализаций движков), по сему "jquery-программист" и его "jquery-язык" - это 2 инвалида, костыляющих прочь от js-программирования и browser-scripting в целом. Но надо отдать должное - костыляют шустро.

Dmitry A. Soshnikov 15.02.2009 20:22

Цитата:

Сообщение от Zeroglif
Вижу-вижу аццкое противоречие. ;)

Да какое противоречие? (да еще и аццкое) :) Этим самым я хочу показать, что для тех, кто программирует только на jquery, без желания знать JS, jquery становится "чистым языком", а сам JS уже может рассматриваться, как "другая область". И тем самым, сама функция .ruleThemAll() интересна, а вот её внутренняя реализация (на JS) - может и нет.

То, что область физически одна - JS - это понятно, это я сам отмечаю - "Всё-таки, параллель приблизительная, а не точная". Но вот если смотреть на это идеологически - библиотека может въесться в мозг, как "чистый язык". Сам же "чистый язык" может стать "другой областью".

P.S.> я замечу, я не говорю ни "да", ни "нет", ни "за", ни "против". Я лишь анализирую со стороны, как есть.

P.S[2].> это лишь моё видение.

Zeroglif 15.02.2009 20:49

Цитата:

Сообщение от Dmitry A. Soshnikov
я не говорю ни "да", ни "нет", ни "за", ни "против"

Тухлое API сожрёт мир. При твоём попустительстве. ;)

Dmitry A. Soshnikov 15.02.2009 21:38

Цитата:

Сообщение от Zeroglif
При твоём попустительстве.

О-о, поверь, я вовсе не безучастен. "Ни за, ни против" - имеется в виду моя позиция в текущей беседе. И имеется в виду, что моя позиция не принадлежит ни к лагерю "О, великий фреймворк! Программировать надо только обязательно с стобой!", ни к лагерю "Ни в коем случае нельзя использовать сторонние фреймворки".

По-моему, моя позиция достаточно чёткая? - Я говорю, что я использую, почему я это использую, почему я не использую другое, привожу причины, по которым другие используют это другое и, при этом, анализирую картину в целом (включая частные случаи).

Цитата:

Сообщение от Zeroglif
Тухлое API сожрёт мир.

Если принять во внимание, что так было всегда (всегда профи замечали некую "тухлость" некой абстракции), тогда всё может быть "тухлым". Включая JS. ;) Ведь вероятно же, что когда создавался JS, отмечалось (и не раз) о каких-нибудь идиотских моментах, которых не было в другой абстракции.

Ты рассматриваешь лишь одну из сторон - идеологическую. Не забывай, что есть еще и прагматические сенсорные потребители технологии. Их задача - сдать проект клиенту и, как можно быстрее, срубить бабла на этом. Идеология их вообще может не волновать в этот момент (ни jQuery, ни JS). Они-то, уж, тем более, не будут заглядывать внутрь никаких функций, терзаться сомнениями и обсуждать, "ой-ой... как это тухло создатели фреймворка, благодаря которому мы срубаем хорошенько бабло, написали эти функции. Ай-яй-яй...". Вот, кстати, холиворы на всякого рода форумов, часто возникают именно из-за этого - когда встречаются эти два типа программистов - прагматичные потребители и идеологические создатели. Это как истинные работники науки, которые у нас в России работают "за еду", и потребители продуктов этих учёных.

Также, ты не рассматриваешь уровень абстракции, на котором работает программист. Здесь не важно, сам он написал библиотеку или нет, но ему нужно работать с библиотекой, т.к. его программа целиком и полностью состоит из таких абстрактных сущностей, который нет в языке, и написание одной такой сущности - занимает 3000 строк кода. Естественно, её напишут один раз и дальше будут использовать 1000 таких сущностей, показывая окошки, лишь вызовом функции alert(...). Дальше, если сторонняя библиотека начнёт сильно тормозить, здесь уже зависит от уровня профессионализма программиста. Он, либо сядет и заплачет, т.к. не умеет программировать на более низком уровне (на более низкой абстракции), либо напишет свою библиотеку (или доработает существующую стороннюю). Кстати, этот пункт может тесно переплетаться с предыдущим - желанием наиболее эффективно устроить отдачу от того, что делает программист. Но здесь отдача может быть не только материальная, но и идеологическая.

Говорить же просто - "нет, не используйте никакие сторонние фреймворки" (чтобы не допустить "попустительств" :)) - нет, я не могу, потому что это означает, что я не учел другие факторы.

Я говорю, это необратимый процесс (мне кажется). На каждом этапе есть люди, которые говорят - "не оптимально; тухло". И они правы. Только это мало, что решит, т.к. есть множество других факторов, нежели лишь идеологический взгляд. Поэтому, прогресс идёт дальше. Потребляя все больше ресурсов, но и, разрабатывая всё новую технику, которая будет выдерживать такое потребление. В итоге, эта "тухлая неоптимальность" сглаживается и дальше уже становится не заметной. Что бы изменилось, если бы эту библиотеку написал тот, кто говорил о неоптимальности? - Она бы, естественно, улучшилась в каких-то идеологических моментах и тоже бы создала прогресс. Но и это, относительно других факторов (не идеологических), было бы не заметно (да и, к тому же, были бы другие, кто говорил бы "неоптимально; тухло", но уже - меньше - обратно пропорционально уровню профессионализма).

Dmitry A. Soshnikov 16.02.2009 12:03

Да и, не дописал вчера. О роли профи-"оценщиков" (в моём видении).

Их роль видна и ясна - они снижают уровень "тухлости" в различных абстракциях. Советами, указаниями на недочёты и т.д. И, чем выше уровень (институт) обсуждения (это может быть обычный форум, где этот философский трёп мало, что решает, или же, это может быть конференция по разработки фреймворка jQuery, где эти же вопросы уже будут иметь совсем другой вес), тем выше процент снижения "тухлости" в абстракции.

Не было бы профи-"оценщиков", возможно, был бы регресс (либо, очень медленный прогресс).

korzhik 16.02.2009 22:37

Ну скажем так. Фреймворки хороши для решения определенных задач, например при написании большого веб-приложения, конечно, при условии понимания программистом принципов его работы:)
Безусловно, их использование совсем не оправдано, когда используется 2-3 основных функции.

x-yuri 23.02.2009 22:07

Zeroglif, так в чем заключается твоя позиция?

Zeroglif 24.02.2009 11:08

Цитата:

Сообщение от x-yuri
в чем заключается твоя позиция?

А твоя?

x-yuri 24.02.2009 19:41

Цитата:

А твоя?
что для 80% проектов фреймворки - самое то

Snipe 24.02.2009 19:48

Мне лень фреймворки изучать. Обхожусь же без них.
А с другой стороны смотрите сами, везде пишут, что если и требуются JSer'ы, то со знанием фреймворков... Это нечестно =)

Kolyaj 24.02.2009 20:07

Snipe,
если ты обходишься без фреймворков, то изучить их в случае надобности не составит труда.

Zeroglif 25.02.2009 11:38

Цитата:

Сообщение от x-yuri
для 80% проектов фреймворки - самое то

"Вынужденные js-программисты" вынуждены их использовать, вынуждает нехватка времени, нехватка знаний, нехватка специалистов, нехватка чего-то-там-ещё... Добавим к этому простоту изучения документированного и разжёванного API, маркетинг и рекламу про кроссбраузерность, мега-крутизну и вуаля.

ZoNT 25.02.2009 12:14

Цитата:

Сообщение от Snipe
А с другой стороны смотрите сами, везде пишут, что если и требуются JSer'ы, то со знанием фреймворков... Это нечестно =)

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

x-yuri 27.02.2009 16:47

Zeroglif, т.е. ты не столько о фреймворках говоришь, сколько о людях, которые ими пользуются?

Zeroglif 27.02.2009 18:05

x-yuri,

И о людях тоже. Без соответствующих людей и их проблем кому нужны были бы фреймворки. ;)

x-yuri 27.02.2009 18:48

Zeroglif, а твое мнение, что фреймворки использовать смысла нету никогда? Или когда их имеет смысл использовать?

Zeroglif 27.02.2009 20:08

Допрос продолжается? ;) В предпредыдущем ответе написано, почему (когда) их используют. Приблизительно так я себе это представляю. Так было 8-10 лет назад, когда пошла (и прошла) мода на dhtml-менюшки и dhtml-либы, так происходит и сейчас с универсальными фреймворками - нет знаний, нет времени, нет желания разбираться, лень, подгоняют сверху, некому, устраивает документация и т.д. При этом за уровнем конечного результата очень сложно уследить, работает и работает.


Часовой пояс GMT +3, время: 11:26.