13.02.2009, 19:52
|
...
|
|
Регистрация: 13.10.2008
Сообщений: 225
|
|
Мое мнение на этот счет, что фреймворки (библиотеки) не вечны, все время придумываются какие то новые способы или техники, фреймворки дорабатываются с учетом этого (каких то специфичных, новых особенностей браузера и т.д.), а вот чистый js вечный (еще бы, фреймворки то на нем и делаются с этими новыми идеями и решениями).
+ Нельзя не принять во внимание тот факт, что фреймворков большое множество. Сегодня моден один, завтра другой, после завтра третий. А чистые решения на js употребляемые в этих самых фреймворках актуальны всегда (ну или будут актуальны с учетом некоторых доработок в виду изменения специфики работы браузера например).
Так что мое мнение, фреймворк приемлем в какой то конкретной ситуации, с конкретно поставленными задачами, конкретным предпочтением заказчика (включая выбор фреймворка, порой не понимая что можно обойтись и без него не в ущерб). Так, что как уже говорили:
Сообщение от Андрей Параничев
|
Но вообще, использование jQuery ведет к использованию неправильных практик JavaScript программирования и работы с DOM-элементами. Человек, который разбирается в JavaScript, без проблем сможет писать, используя jQuery. Но обратное - не всегда верно.
|
Последний раз редактировалось Zibba, 13.02.2009 в 19:54.
|
|
13.02.2009, 22:50
|
|
|
Регистрация: 21.02.2008
Сообщений: 1,250
|
|
Я думаю тут даже предмета обсуждения быть не должно. Просто если поменять местами отношение к JavaScript и к PHP, то все встанет на свои места.
Вот взять и сравнить Smarty и jQuery - одного поля ягоды же. Тем не менее, Smarty, как и jQuery, часто используют для того, чтоб в проекте мог разобраться не один человек, который его написал, но и другие программисты. Это, если хотите, "общий язык" для нескольких исполнителей, в котором, при желании, можно быстро разобраться.
Рациональное применение фреймворков, которое я вижу — использование в проектах, которые будут в будущем развиваться/переделываться, и есть большая вероятность того, что текущий исполнитель может смениться. Вот лично мне было бы легче разобраться в скриптах, которые написаны с помощью, пусть и далеко не идеальной, документированной библиотеки, чем в коде, написанным "кем-то" с нуля. Конечно, если проект ведет студия, или это собственная разработка - тут другое дело.
Если ко всему вышесказанному добавить то, как "качественно" обычно пишут скрипты на JavaScript, то я обоими руками за рациональное использование "полу-фабрикатных" решений, вроде jQuery.
Последний раз редактировалось Андрей Параничев, 13.02.2009 в 22:52.
|
|
14.02.2009, 20:15
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от Андрей Параничев
|
Вот лично мне было бы легче разобраться в скриптах, которые написаны с помощью, пусть и далеко не идеальной, документированной библиотеки, чем в коде, написанным "кем-то" с нуля.
|
Если код хреновый, то, в принципе, хоть на чем он написан, хоть на JavaScript, хоть на jQuery, хоть на С++, все равно хрен разберешь.
Сообщение от Андрей Параничев
|
Если ко всему вышесказанному добавить то, как "качественно" обычно пишут скрипты на JavaScript, то я обоими руками за рациональное использование "полу-фабрикатных" решений, вроде jQuery.
|
Уж как нынешние "программисты" на jQuery пишут, на чистом JavaScript такого не придумаешь.
|
|
14.02.2009, 22:31
|
Профессор
|
|
Регистрация: 25.02.2008
Сообщений: 707
|
|
Философский вопрос.
(ниже получилось много текста, не касающегося конкретных языков, да, к тому же, являющегося прописными истинами, но, все же)
Ключевым моментом здесь является то, что обсуждается использование именно сторонних библиотек. И противопоставляются некий "чистый язык" (безотносительно конкретного JavaScript'a) и "кем-то написанная сторонняя библиотека".
Однако, что есть "чистый язык"? Это код, с использованием конструкций, идущих лишь с "коробкой"? Хорошо, пусть так. Будем писать на "чистом языке".
Но, можем ли мы, являясь программистами, оптимизировать наш код, улучшая его повторное использование и структуру? Т.е., вынося "рутинные", "каждодневные", "громоздкие и повторяющиеся", "часто использующиеся" конструкции в нечто, что можно будет вызвать одной строкой (например, в функции)? Можем, почему нет?
Можем ли мы логически объединить набор этих функций в нечто под общим именем, тем самым создавая "модули"? Конечно, можем, почему нет? Это удобно.
Можем ли мы собрать набор наших "модулей" воедино, тем самым создав систему? Систему, являющуюся кладезю решений от повседневных повторяющихся, монотонных "проблем". Естественно, можем. Назовем это (негласно) фреймворк. Почему негласно? Потому что мы просто оптимизируем код, вынося повторяющиеся куски кода в функции, чтобы вызывать их одной строкой, не более.
Поскольку, мы писали на "чистом языке", то и решения (наши решения!) из фреймворка являются решениями на "чистом языке". Поскольку фреймворк состоит из решений, то сам фреймворк - это решение на "чистом языке". Так? Так.
Далее, мы используем наши решения (иначе, зачем их писали?). Может ли кто-то сказать, что мы пишем уже не на "чистом языке". Нет, поскольку, это всего лишь наша оптимизация "повторяющихся кусков". Она написана нами, на "чистом языке".
Т.е. само использование библиотек абсолютно не "грешное" дело, поскольку мы сами эту библиотеку и написали.
Затем, мы хотим поделиться (альтруистски и энтузиастски ) с другими программистами. Они (с благодарностью, что мы избавили их от рутины) начинают писать с использованием наших решений. Пишут ли они на "чистом языке"? Нет. И вот здесь начинается их "обвинение". Но в чем их "вина"? В том, что они не потратили столько же времени и сами не написали эти решения? Возможно, но не нам их судить, поскольку мы на полном альтруизме отдали наши решения в свободное пользование. Может быть, в том, что они не понимают, как это работает внутри? Возможно, но мы сами выдали им этот новый уровень абстракции, создав черный ящик с легкими и запоминающимися названиями снаружи.
А, может, им даже и не нужно понимать, как оно работает внутри. Может, им достаточно абстрактного манипулирования объектами с нужными сообщениями. Кто они? Уже не программисты, если не понимают, как это работает внутри. Или может программисты следующего уровня абстракции? Или программисты, смотрящие на "мир" нашими "глазами". Не важно, но им нравится использовать наши быстрые, вызываемые одной строчкой, решения их повседневных проблем.
Нашими "глазами"... А потом, вдруг, выясняется, что мы сами не так поняли технологию (сами не под тем углом смотрели; возможно, в виду привычек к другой технологии, - не суть). И приходят люди, которые говорят нам об этом. Естественно, видя поголовное использование этой "ошибки" без, даже, желания задуматься, что это не в идеологии технологии, можно услышать, вполне понятные, высказывания о "недостаточном количестве ума" тех, кто использует эти решения (или наоборот, о присутствии достаточного количества ума у тех, кто не использует эти решения). Или, если не об ошибках, то можно говорить о жутких тормозах наших решений (т.к. для увеличения абстракции, нам пришлось пожертвовать ресурсами). И это тоже будет верным.
Но что было бы, если бы эту библиотеку (эти наши решения) написали те, кто указал нам на эти ошибки. Была бы она лучше? Да (т.к. мы согласились с тем, что все указания были верными). Но. Да - лишь до тех пор, пока не придут другие, которые не укажут уже на новые "ошибки".
Означает ли это, что писать библиотеки вообще не надо? Нет. - Поскольку мы в самом начале говорили об улучшении и оптимизации нашего кода. Что означает оптимизация и улучшение? Зачем она нам нужна? Язык плохо спроектирован? Может да, а может, нет. Но в большей мере, мы оптимизировали наши логические решения, не связанные с языком.
Получается, писать с использованием библиотек - это нормально и не подсудно, если ты сам ее написал (и здесь, как было сказано выше, мы пишем даже на "чистом языке", библиотека вливается в код "незаметно" и для нас не является библиотекой, а лишь - оптимизацией). Являются ли остальные случаи ненормальными и означающими отсутствие ума? Нет. - Поскольку, если бы библиотека была написана высшим профессионалом технологии, количество ее "ошибок" было бы сведено к минимуму.
Означает ли, что у тех, кто будет использовать эту библиотеку (не важно, какого уровня профессионалом написанную) будет меньший уровень знаний "чистого языка" (при условии, что они начинают писать на языке сразу с использованием нашей библиотеки)? Может да, а может, нет. - Все зависит от того, насколько сильно мы усилили (или лучше - изменили) абстракцию. Но, как правило - означает (и означает - 70%). Страшен ли этот факт для этих людей? Нет! Абсолютно нет! Просто они подключаются к программированию на новом уровне абстракции - придуманным нами. Интересует ли их то, как написано это внутри? Может да, а, может, нет. - Так же, как и нас - интересует или нет, на чем и как написан наш "чистый язык"? При этом, для тех, кто, все-таки, не захочет изучить "чистый язык", на котором написана библиотека, сама библиотека станет "чистым языком"!
А дальше... А дальше - они напишут новые языки и библиотеки, уже основанные на наших библиотеках. И так же - профи будут видеть недочёты, остальным - до этого мало будет дела, т.к. все будет вызываться в одну короткую, запоминающуюся строчку.
Поэтому, основным моментом внедрения библиотеки в массы, является то, кто стоял у руля этой библиотеки. И, если за ней стоят большие институты, которые спонсируют, документируют, сделают отличный PR и т.д., то она необратимо будет завоёвывать популярность. И т.д. И т.п. И т.д. И т.д.
И поэтому, использовать или нет библиотеки зависит от:
- уровня абстракции, на котором работает программист (ну не обязательно ему каждый раз писать на "чистом ассемблере" окна, если для этого есть API, который позволяет это делать одной строкой - ведь в его задаче будет 13212 окна);
- от уровня профессионализма и, главнее, - энтузиастских притязаний программиста (в этом случае, он, либо оптимизирует, доработает существующие библиотеки (если будут уж слишком серьезные ошибки), либо напишет свою; и, возможно, начнет продвигать ее в массы).
Но в любом случае, библиотека, как набор, кладезь решений - есть применение ранее накопленного опыта. Своего, или чужого (возможно, синтезированного со своим).
P.S.> писал уже похожее - http://anton.shevchuk.name/javascrip...#comment-32944, и еще там же коммент - http://anton.shevchuk.name/javascrip...#comment-33055
Последний раз редактировалось Dmitry A. Soshnikov, 14.02.2009 в 22:35.
|
|
14.02.2009, 22:46
|
...
|
|
Регистрация: 13.10.2008
Сообщений: 225
|
|
Сообщение от Dmitry A. Soshnikov
|
Но в любом случае, библиотека, как набор, кладезь решений - есть применение ранее накопленного опыта. Своего, или чужого (возможно, синтезированного со своим).
|
Полностью согласен, как и с тем что приходят более опытные, находятся более компактные или изящные и менее ресурсоемкие решения конкретных задач. Поэтому например сугубо я собираю такие куски кода, в свой небольшой так сказать модуль. Но при решении конкретных задач использую не весь модуль, а только выборочно нужные функции/методы, объекты и т.д. и т.п.. (Но тут тоже зависит от уровня абстракции на котором построен конкретный модуль, потому что порой для того чтобы вытянуть один метод, может потребоваться потянуть за ним и еще много чего.)
|
|
14.02.2009, 23:08
|
Профессор
|
|
Регистрация: 25.02.2008
Сообщений: 707
|
|
Сообщение от Zibba
|
(Но тут тоже зависит от уровня абстракции на котором построен конкретный модуль, потому что порой для того чтобы вытянуть один метод, может потребоваться потянуть за ним и еще много чего.)
|
Да, несомненно. Это тоже надо учитывать.
Кстати, вот сейчас, случайно, попал на сайт http://jquery.ru - и ключевой фразой определяющей смысл жизни технологии, является фраза:
Сообщение от http://jquery.ru
|
jQuery создана, чтобы изменить путь написания JavaScript
|
Изменить путь! Во как. Здесь явно заявляется, что "мы изменяем абстракцию в новую сторону". В новую, естественно, подразумевается - в лучшую. Но, как уже отмечалось - на любом уровне абстракции всегда будут такие профи, которые будут видеть, как минимум, недочёты и, как максимум, полное изменение пути (возможно, исходя из привычек, приобретённых в других технологиях) технологии.
|
|
14.02.2009, 23:14
|
...
|
|
Регистрация: 09.03.2008
Сообщений: 216
|
|
Dmitry A. Soshnikov,
Цитата:
|
Поэтому, основным моментом внедрения библиотеки в массы, является то, кто стоял у руля этой библиотеки.
|
Смотри. У руля той же джиквери стоял плохой js-программист, сейчас не знаю, кто стоит, но код по-прежнему свидетельствует, что там "тёмные". Или ты говоришь не о навыках, а о способностях к продвижению? Тогда сдаюсь заранее.
Цитата:
|
И, если за ней стоят большие институты, которые спонсируют, документируют, сделают отличный PR и т.д., то она необратимо будет завоёвывать популярность.
|
Да большим институтам пофиг, ну включают они некие либы в свои продукты, привязывают к крупным сайтам, пропагандируют, это говорит о качестве? Нет.
|
|
14.02.2009, 23:21
|
...
|
|
Регистрация: 13.10.2008
Сообщений: 225
|
|
Dmitry A. Soshnikov,
Прочитал, ваши комментарии приведенные в ссылках, особенно сильно задел (как хороший пример уровня абстракций и профессианалов на каждом уровне/уровнях):
Цитата:
|
Цитата:
|
Антон, вы навешиваете эвент JS-а используя селектор по классу, хотя по всем правилам логики class используется для элементов, когда их >1. И $(’EL.classA’).click(..)
|
это человек уже хорошо разбирается (ну, допустим ) на самом деле, я не знаю, на сколько хорошо) в jQuery, и он, скорей всего, будет сетовать на библиотеку superNewJQuery (которая будет весить 7Гб), написанную на jQuery, и говорить о ее недочетах.
|
|
|
14.02.2009, 23:26
|
...
|
|
Регистрация: 09.03.2008
Сообщений: 216
|
|
Сообщение от Zibba
|
Поэтому например сугубо я собираю такие куски кода, в свой небольшой так сказать модуль. Но при решении конкретных задач использую не весь модуль, а только выборочно нужные функции/методы, объекты и т.д. и т.п.
|
Вы поступаете совершенно правильно. Профессионально и умнО.
В своём кругу мы так называем биржевых и проч. аналитиков.
Последний раз редактировалось Zeroglif, 14.02.2009 в 23:34.
|
|
15.02.2009, 00:44
|
Профессор
|
|
Регистрация: 25.02.2008
Сообщений: 707
|
|
Сообщение от Zeroglif
|
Смотри. У руля той же джиквери стоял плохой js-программист, сейчас не знаю, кто стоит, но код по-прежнему свидетельствует, что там "тёмные". Или ты говоришь не о навыках, а о способностях к продвижению? Тогда сдаюсь заранее.
|
Я и говорю: исходя из того, какого уровня профессионал стоял у создания библиотеки, такая библиотека и будет. При этом "претензии" профессионалов-"оценщиков" - обратно пропорциональны профессионализму создателя библиотеки. Это очевидно.
Но что обидно, так это, действительно, что в большинстве случаев б ольшую роль будут играть продвижения. Без хорошего продвижения и "умения подать", самые хорошие библиотеки могут не стать популярными. В свою очередь, склеенные на скорую руку, неоптимальные решения - могут с лёгкостью попасть в массы. И в хорошей библиотеке, и в "тёмной" нужная функция будет называться .oneMethodToRuleThemAll(), и делать в одну строчку то, что на "чистом языке" делается в 500 строк, а что будет у нее внутри, уже мало кого будет волновать. Имеются в виду те люди, кто используют только этот новый уровень абстракции.
Можно провести аналогию с самим JS. Вернее, с реализациями. Любой, изучающий/знающий JS (ты, например, или я, или любой из участников форума) - все ли исходники реализаций ECMAScript он изучил? Определил ли, где было написано "по-светлому", а где "по-тёмному"? И даже, если да, всё равно больший интерес составляет эта новая абстракция JavaScript и ее новая идеология, а не Си-шная реализация метода. Тем не менее, там может быть очень "по-тёмному" написано внутри.
Сообщение от Zeroglif
|
Да большим институтам пофиг, ну включают они некие либы в свои продукты, привязывают к крупным сайтам, пропагандируют, это говорит о качестве? Нет.
|
Под "за этим стоят большие институты" я имею в виду, как раз-таки, целенаправленное продвижение. Я не имею в виду, что кто-то там использует библиотеку или нет. Имеется в виду, что масштабы спонсирования и подачи - большие. Качества это, естественно, не касается. Повторю, (и это естественно) - хорошая библиотека может не "увидать свет", в то время, как "тёмная" может вполне быть выдана за "спасение", за "путь". И, если это так, это, конечно, обидно. Вот и возникает эффект, когда профи оценивают такие библиотеки, указывая на недочёты. Это естественный и (вероятно) необратимый процесс (в любой технологии, на любом уровне абстракции).
Последний раз редактировалось Dmitry A. Soshnikov, 15.02.2009 в 00:56.
|
|
|
|