Re[10]: jQuery – Javascript нового поколения
От: Zeroglif  
Дата: 09.08.07 12:21
Оценка:
M>Ну я Javascript-программист. Я увидел, что у мнея появился инструмент, который позволяет мне без геморроя решать огромное количество задач.

Программирование на javascript — это геморрой? Понятно. Легче внедрять да инклюдить. Тот же копипаст, только вид сбоку. Без обид, это в философском смысле.

M>Зачем мне читать исходник? Исходник я читал два раза — когда дебагил Ajax + XML (оказалось, проблема не в jQuery, а на серваке была) и когда смотрел, как реализована jQuery.extend.


Ага, то есть если даже ты не читал исходники, тогда чего знают о jQuery не-javascript-программисты? Выходит, что знают они, как чегой-то-там-куда-то вызвать...

M>Рассказываю по порядку. Это истина жизни, странно, что ее не все понимают.


Истины жизни не бывает. На то она и жизнь.

Z>>Лично мои задачи решаются проще мною же лично, как ты говоришь, ручками. И масса людей со мной солидарны, благо jQuery и проч. пока ещё не захватили мир (не удалось это ни DHTML библиотекам, не выйдет это и у нынешних новомодных).


M>Не завоевывают именно из-за таких людей, которые готовы тратить уймы времени и писать тонны кода, когда можно в десятки раз увеличить свою производительность


Да, ты прав, из-за нас, мы тратим время, пишем код, учим других писать код, бизнесу не учим, виноваты.

Z>>Чтобы я головой отвечал за свою работу на базе чужого фреймворка, я должен знать досконально не только все эти детско-садовские туториалы про нанизывание вызовов и проч., а предназначение каждой из 2345 строк jQuery, что и зачем там делается (потому что это javascript, стеклянные замки на зыбучем песке).


M>


M>Посмотри на список сайтов, которые пользуются jQuery: http://docs.jquery.com/Sites_Using_jQuery По-моему, это — достаточный аргумент в пользу библиотеки.


Достаточный? Посмотри на миллионы сайтов, где нет jQuery, но есть (ты не поверишь) javascript. Это достаточный аргумент, чтобы не использовать этот фреймворк? Или только вам открылось...


M>Исходников там не так уж и много, их можно наискосок, не вдаваясь в детали, прочитать минут за 15, а то и меньше. Почитай, советую. Потом посмотри на тонны своего собственного кода и задайся вопросом: а почему у меня не так.


Что ж ты мне всё на мои тонны намекаешь. Если кто-то не умеет писать "не тонны", от этого страдает и вынужден искать фреймворки — это его неотъемлемое право.

M>Более того, цитирую
Автор: Sinclair
Дата: 21.07.06

M>

M>Из всего этого следуют Правила большого пальца:
M>1. Все, что можно купить, нужно покупать (cюда же входит подбор бесплатных компонентов, при их наличии)
M>2. Все, что нельзя купить, нужно аутсорсить
M>3. Нельзя аутсорсить "core" — то, за что тебе платят деньги.

M>Т.е., если ты продаешь программу для бухгалтерии:
M>1. СУБД, компилятор, визуальные компоненты, инсталлер, хелп вьювер и т.п. — приобретаются
M>2. Документация, саппорт, скины, кастомные кофигурации — аутсорсятся.
M>3. Ядро пишется твоей командой высококлассных специалистов, проверяется твоей командой профессионального QA.

M>Сейчас большинство народу, не принявшего п.1, уже вышли из бизнеса. Сейчас идет освоение п.2.


M>И это — так. Пока ты на каждый чих пишешь 10-20-30 строк "чистого JS", мы уже написали весь необходимый функционал и продаем свой продукт


M>Еще советую здесь: http://www.rsdn.ru/Forum/?mid=2027495
Автор: Sinclair
Дата: 27.07.06


Так это бизнес-форум, не знал. Тогда это из серии, эй, твой код хреновый, избыточный и не в кассу. Ну и что, зато я его за минуту подцепил и продаю, продаю, продаю...

Z>>К тому же мне нужно оттянуть время на изучение, потом на сопровождение развития всего этого дела, каждый фреймворк развивается и поддерживается по-разному, нужно следить, вычитывать, увольте. Мораль — не всем проще и удобнее с фреймворком.


M>Знаешь среднее время выучивания jQuery? 2-5 дней Проверено на 11 людях, включая меня


Верю, вы ж в исходники не лезете.

M>Учти, что твой код тоже надо учить. Особенно, если ты, напимер, уволишься или перейдешь на другой проект, а твой код кому-то придется сопровождать и/или править.


Это правда, тут я согласен. Тогда контрвопрос. Работаете вы, 11 друзей Оушена, годами интенсивно с jQuery, потом вас неблагодарные бизнесмены увольняют и вы приходите, предположим, ко мне, где рай для javascript-программистов от сохи, чистых, стерильных. Внимание, вопрос, на кой ляд мне ваш jQuery-шный опыт?

Z>>>>Почему не пишешь ниже код всей т.н. фабрики рядом? А весь остальной код, что будет участвовать в решении задачи? Посмотри в профайлере, кто работает и рядышком их, рядышком, это и есть код, который можно справедливо противопоставлять 'чистому' javascript.


M>>>Зачем? Любой фреймворк — это всегда overhead. Цель люого фреймворка — упростить разработку, спрятав "чистый" код от разработчика. Кому надо, посмотрит в код фреймворка, благо в jQuery его не так уж и много. Заметь, что если ты будешь реализовывать ту же функциональность на чистом JS — то есть настолько же гибкую, легкую и т.п., то все равно ты придешь к тому же, если не большему, количеству кода и вызовов.


Z>>Кому надо посмотрит? И чего он там увидит? Если взгляд его будет осмыслен, то какого рожна он не потратил пару-тройку дней, чтобы этот смысл вложить в свой собственный код?


M>Ну-ну. Я очнеь хочу посмотреть на того человека, который с нуля ручками за 2-3 дня напишет функционал, равный jQuery. Кстати, я из jQuery уже выдирал куски кода (типа extend, например), для использования в "чистом JS". Ничего, не умер. Во всех остальных случаях, когда надо было использовать хотя бы три-четыре функции, аналогичные jQuery, легче (и оправданнее) использовать jQuery.


Подожди, средней руки javascript-программист написал jQuery, талантливый программист, но при этом плохой javascript-программист, написал Prototype.js, ты считаешь, что в мире нет людей, способных на такие "подвиги"? Есть. Только видимо это им не надо, у каждого свои смыслы жизни.

Z>>Ну, не идеализируй пожалуйста, своего любимца, не такой уж он и гибкий, не такой уж и лёгкий и т.д.


M>Аргументы, пожалуйста. Мой аргумент вот:

M>
M>$("a.ajax").click(
M>    function(){
M>        $.get(
M>            $(this).attr("href"),
M>            {},
M>            callback
M>        )
M>    }
M>);

M>function callback(result){
M>    $("#mydiv").append(result);
M>}
M>


M>Этот код понятен даже человеку, который jQuery в глаза не видел. Для того, чтобы написать такой код, надо прочитать статью — и все.


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

M>Аналог на JS я уже приводил: http://jqueryjs.googlecode.com/svn/trunk/jquery/src/ajax/ajax.js, функция ajax. Попрошу обратить внимание на такие строчки, как:

M>

M>// IE likes to send both get and post data, prevent this

M>// Create the request object; Microsoft failed to properly
M>// implement the XMLHttpRequest in IE7, so we use the ActiveXObject when it is available

M>// Set the correct header, if data is being sent
M>// Set the If-Modified-Since header, if ifModified mode.


M>и так далее. Ты уверен, что твой код будет все это делать и делать правильно?


Не уверен. А ты уверен в jQuery, не читая исходников? И эта уверенность зиждется видимо на том, что сотня сайтов не докладывает об ошибках. Что ж, тоже подход.

Z>>Если я буду реализовать такую же функциональность, то я приду совершенно к другому результату, он может быть и хуже, а может и лучше, who knows. Единственное, что меня раздражает в твоём посыле — это то, что jQuery позиционируется, как сгусток идеальных простых решений, дескать, проще уже не бывает. Рискну предположить обратное.


M>Аргументируй, плиз. На данный момент по соотношению размер/качество jQuery действительно является таковым.


Проще чистого javascript нет ничего. Вспоминаем пример с алертом.

M>>>Ключевое здесь — гибкое и легкое.

M>>>При этом "ручками" мы теряем гибкость. Как только мы добавляем в код гибкость, мы получаем что? Правильно — jQuery, prototype.js, mochikit, dojo или какую иную библиотеку.

Z>>Неправильно. Если подразумевается re-use, то нормальный программист всегда будет писать в таком ключе, ничего в этом нет революционного, он сделает себе пакет, под себя, без мусора и избыточной функциональности. И то, что он сделает, просто останется вне зоны твоего/моего/мирового внимания, что никак не говорит о том, что этот код хоть чем-то проигрывает в гибкости и т.п. фреймворкам.


M>Правильно. И нанаписание и отладку такого кода у него уйдет сколько? Месяц? Два? А работать в это время кто будет?


Отлаживать 2 месяца пару-тройку функций, раскрашивающих строки у таблицы???

M>>>Нет такого понятия, как "отдельно взятая задача". Есть такое понятие, как "отдельно взятый проект". Прикажешь для каждой страницы писатьотдельно ручками с нуля? Это ж сколько кода ты понапишешь? Намного больше, чем 20 килобайт. И намного менее гибкого. И намного менее "reusable" (ключевое слово, кстати).


Z>>Дружище, я же тебя не уговариваю писать код, завязанный на страницу, смешно право. У каждого, кто пишет много на javascript-е, есть свой собственный типа-фреймворк, он может быть в виде проверенных сниппетов, в виде алгоритмов внутри головы, в виде библиотеки и т.п. Вот где гибкость, взял, что нужно и используешь, и будет этого кода точно меньше, и будешь ты его точно знать, и не будешь лишний раз учить язык фреймворков, и не будешь рабом чужих кривых идей и т.д. и т.п.


M>Так вот. jQuery — это точно такой же "типа-фреймворк". Только его предложили использовать не только внутри отдельно взятой компании, а всему миру. Это — плохо? Учитывая, что этот фреймворк — компактный и быстрый.


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

M>>>Покажи мне ньюба, который сможет без подсказки написать приведенный в самом начале аналог $('a.ajax'). Или ньюба, который сможет написать кроссбраузерный Ajax. А если делать его грамотно, то меньше кода, чем здесь особо и не напишешь. Ты готов весь этот код писать сам, ручками? Я — нет. Мне достаточно того, что он есть в jQuery, и я им могу пользоваться.


Z>>Что же за пренебрежение к ручкам-то? Я готов ко всему, было бы желание. Про "меньше кода не напишешь" повторюсь — сие нам не ведомо.


M>А у тебя что за пренебрежение к фреймворкам? :

M>

M>Лично мои задачи решаются проще мною же лично, как ты говоришь, ручками. И масса людей со мной солидарны, благо jQuery и проч. пока ещё не захватили мир (не удалось это ни DHTML библиотекам, не выйдет это и у нынешних новомодных)


Это не пренебрежение, это сопротивление.

M>Чем твой собственный фреймворк лучше, чем jQuery? Я тебе сразу скажу, чем он хуже:

M>- У тебя нет возможности протестировать его на всех комбинациях популярных браузераов

Есть.

M>- У тебя нет возможности проводить интенсивное выявление ошибок: http://dev.jquery.com/report/16, потому что у тебя просто нет такого количества пользователей (например, у тебя есть закрытый баг репорт типа такого: http://dev.jquery.com/ticket/1341 ). Под пользователями я имею в виду не посетителей сайта, а разработчиков, использующих твой код.


Это верное замечание. Как jQuery пытается втащить в себя отутюженные решения, так и я при сомнениях оценю и воспользуюсь тем подходом в jas-сообществе, который считается наиболее безопасным, не вижу сложности.

M>- У тебя нет возможности привлечь к разработке других разработчиков: http://groups.google.com/group/jquery-dev


Не аргумент.

M>Чувствую, что что-то еще упустил.


M>ЗЫ. Разработчики всегда будут пользоваться сторонними библиотеками. Потому что это повышает производительность. Потому что обычно нет времени на разработку аналогичного функционала. Потому что проекты надо здавать завтра, а не через полгода. Потому что велосипеды интересно писать, когда только изучаешь технологию, потом велосипеды просто не оправдывают себя.


Тема велосипедов не раскрыта. Если ты в своих проектах пользуешься jQuery, которая абсолютно всё для тебя изобрела, то что тогда остаётся для твоего javascript-программирование? Что интересного осталось?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.