From: beegee on
On Apr 20, 4:44 pm, Thomas 'PointedEars' Lahn <PointedE...(a)web.de>
wrote:
> beegee wrote:

> > Uh, no.  Do you understand what compilation is?
>
> Yes, do you?

Transforming an english-like higher level programming language coded
program into a lower-level programming language coded program for the
benefits of speed and size.


> > I mean, there are javascript compilers but as far as I've heard, none in
> > a browser yet.
>
> There are JIT-compilers.

And what lower level language or instruction set are these JIT-
compilers compiling Javascript into to? Setting up a symbol table and
transforming to more efficient Javascript in the pre-processing pass
of Javascript is not compiling. All modern interpreters do this.
Again, there are real compilers for Javascript (Rhino) but they are
not in browsers yet although it's possible that FF 3.0 has one.


> >> > I think you miss the point.  YUI is *supposedly* only "more like
> >> > 'Javascript'" (whatever that might be) than Prototype or jQuery in the sense
> >> > that its developers *supposedly* knew enough about the programming languages
> >> > to unleash their full potential without having to resort to inefficient and
> >> > error-prone detours of inventing "classes" and "initializers" where there
> >> > are already prototypes and constructors.
>
> > You certainly do like to argue, don't you.  It takes quite a talent to
> > obfuscate agreement to point of it sounding like disagreement.
>
> We don't have an agreement here.

Really? Are you saying the creators of YUI do not know enough about
javascript to avoid the pitfalls of JQuery and Prototype? I'm the
first to admit that YUI has some speed and object model problems but
I'm not sure that mocking the libary for only *supposedly* being
better than the others without some kind of specifics is really a
point view.

Bob
From: Zeroglif on
On 21 ÁÐÒ, 17:44, beegee <bgul...(a)gmail.com> wrote:
> On Apr 20, 4:44 pm, Thomas 'PointedEars' Lahn <PointedE...(a)web.de>
> wrote:
>
> > beegee wrote:
> > > Uh, no. Do you understand what compilation is?
>
> > Yes, do you?
>
> Transforming an english-like higher level programming language coded
> program into a lower-level programming language coded program for the
> benefits of speed and size.

Brendan Eich (JavaScript):
"Client JavaScript reads source from SCRIPT tag contents, but compiles
it into an internal bytecode for faster interpretation."

Eric Lippert (JScript):
"JScript Classic acts like a compiled language in the sense that
before any JScript Classic program runs, we fully syntax check the
code, generate a full parse tree, and generate a bytecode. We then run
the bytecode through a bytecode interpreter. In that sense, JScript is
every bit as "compiled" as Java. The difference is that JScript does
not allow you to persist or examine our proprietary bytecode. Also,
the bytecode is much higher-level than the JVM bytecode -- the JScript
Classic bytecode language is little more than a linearization of the
parse tree, whereas the JVM bytecode is clearly intended to operate on
a low-level stack machine."
From: Andrew Dupont on
On Apr 19, 11:07 pm, "Richard Cornford" <Rich...(a)litotes.demon.co.uk>
wrote:
> Who is going to be deciding what 'constructive' means in this context?

Each individual on his own. Or, in other words: say what you want to
say, and I'll brush off anything I think is unwarranted. I'm not
setting conditions for prior restraint here.

> You mean that if someone is in a 'minority' then they must be wrong?
> That is hardly an attitude that would allow progress through the
> adoption of new ideas.

I never said anything of the sort. I said the minority need to do more
_persuading_. You stated that these libraries were junk as though it
were common knowledge. Clearly it isn't common knowledge.

> You have not demonstrated that these are questions of taste. The last
> time we discussed the prototype.js code here in detail (which was
> version 1.6, in November last year) it demonstrated evidence of or its
> authors (collectively, as nobody had corrected the code) not
> understanding how the code they were writing was going to behave. Seeing
> that brings everything into question, form the original design concepts
> to every detail of its implementation. And those are not then questions
> of taste but the inevitable consequence of evident ignorance among its
> developers.

I hold that any technology decision is a question of taste. There is
no objective "better" in the sense of Ruby vs. Python, or vi vs.
emacs; there is only the subjective "better" — whichever best serves
the user's own needs.

Naturally, this does _not_ mean that everything is relative, or that
it's not worth having passionate arguments thereabout. I implied as
much in my music analogy: friends argue among themselves over which
band is "better," but they all realize that taste is the ultimate
arbiter. These arguments become tiresome only when people dig trenches
and start speaking in absolutes.

> How do you know that? It seems likely to me that Thomas was using his
> memory of the many (more or less detailed) discussions of Prototype.js
> code that have happened here over the past few years to inform a general
> assessment of the code.

And I submit that is a matter of taste. Bugs are bugs, of course, and
we welcome bug reports. But you've gone further than that; you've
inferred from "evidence" that code in Prototype does not do what its
author means for it to do.

> > I think it's far more constructive to say "Most of us
> > are not library fans, so you're unlikely to find useful
> > answers here,"
>
> That would not be a true statement (at least the second part of it, and
> the first part if you take the word 'library' in its most general
> sense).

Then write your own words. That way they'll be _from the heart_. You
know the point I'm trying to make.

>
> > then point the way to the jQuery mailing list.
>
> I have read enough of posts on the JQuery groups to be pretty sure
> nobody is likely to much understanding their either. There is too much
> of the blind leading the blind (and a huge proportion of questions never
> seem to get answered at all).



>
> > That'd accomplish the same goal with far less
> > drama.
>
> Accomplish which goal? Don't you think the OP, if he/she is still
> reading this, has not learnt a great deal from this discussion despite
> its initial response. There is a lot to be said for the uncensored
> exchange of ideas in public.

The word "censorship" doesn't come within miles of this thread. I do
not own a telecommunications company; I don't have the means or
authority to "censor" anyone.

I can only imagine the OP was interested in the free exchange of ideas
when he asked you why you thought jQuery and Prototype were junk. I'm
arguing that he'd have learned far more from a link to a page called
"Why I, Richard Cornford, Think Prototype and jQuery Are Junk" than
from this low-signal, high-noise snark-off.

> > Perhaps the comp.lang.javascript FAQ needs an entry for this,
> > then.
>
> It has been discussed, and a number of draft entries proposed. But there
> remains some dispute as to what an appropriate response to the question
> should be. From the point of view of someone wanting a better
> understanding of javascript or browser scripting who just happens to be
> using some 'popular' library then they really would get the best answers
> to their questions here, if they could present their questions in
> isolation (from all of the unrelated and irrelevant stuff that those
> libraries contain).

That last sentence is the answer to such a FAQ. Even a link to that
question and answer would be more helpful than what has happened in
this thread.

> > A large portion of those who post on this newsgroup aren't
> > participants or even lurkers;
>
> If they post questions then they are participants.

I mean that they weren't participants before their first post. Many
posters, I would venture, only come here when they need help, and
therefore aren't already familiar with the quirks of the community.

> > they come by only when they have problems. They can't
> > be expected to catch up on the backstory.
>
> They can. Expecting someone to do a few web searches before they ask to
> be spoon fed is not too unreasonable.

Please search this newsgroup for the terms "Prototype" and/or "jQuery"
and see how quickly you find a well-summarized critique of either
library.

> >> In this case we have a very obviously stupid use of user
> >> agent string based browser detection to make a decision that
> >> would be more logically made with feature detection.
>
> > Actually, no - no browser implements String#(un)escapeHTML,
> > so feature detection would be pointless. We define that
> > function earlier in the file,
>
> Yes, I noticed the other two assignments to the - String.prototype -
> later and realised that I was wrong about that.
>
> > but redefine them for WebKit and IE because the String#replace
> > approach is much, much faster in these two browsers (but much,
> > much slower in FF and Opera).
>
> Can you post a test-case that demonstrates that assertion? Historically
> IE has been  renowned for its lousy performance with string
> manipulation, while Mozilla outperformed everyone else in that area.

I don't have a test-case. The change was made one year ago by Thomas
Fuchs [1]. You're welcome to ask him, though I suspect he'll punch me
in the sternum for having dragged him into this.

>
> But I noticed that the other two escaping/unescaping methods are nothing
> like analogous to the two I posted. That is pretty bad in itself because
> it means that the same source code is going to have different outcomes
> depending on which browser it encounters, and the only way to avoid
> falling foul of that would be to explicitly test any application using
> the code on each and every browser and with a sufficiently divers set of
> data to expose the situations where those inconsistencies might be
> problematic. And that is something that is unlikely to actually happen
> even in organisations that do do formal QA. After all, you missed the
> fact that Safari/IE versions were defective yourselves so how could you
> expect web developers who know no more than how to use a library find
> the potential issues (or understand them if they did manifest
> themselves).

Nothing I say in our defense will satisfy you, because you seem to
want a level of certitude that I can't guarantee. I could say that we
have extensive unit tests, but clearly they were not extensive enough
to catch the bug that you pointed out — though that bug was noticed in
the wild, submitted to our tracker, and patched, and more unit tests
were added in the process. This is how open-source software works.

I can't guarantee that any of us will write bug-free code on the first
pass, any more than you can guarantee that you won't spell another
word incorrectly for the rest of your life. instead, we have a testing
process meant to ferret out as many self-introduced bugs as possible.
When that fails, we rely on the community to file tickets. No doubt
you have rolled your eyes by now, so I'll just move on.

>
> It would be safer to forget about performance in this respect and just
> use one set of escaping and unescaping methods. After all, these methods
> are not used by the library itself, and are unlikely to be that heavily
> used in applications.
>
> > To be sure, there are other UA sniffs in Prototype that
> > hard-liners would decry as unnecessary.
>
> It is not 'unnecessary' that is the questionable aspect of browser
> sniffing, but rather that it is technically baseless and demonstrably
> ineffective.

You haven't demonstrated that anything is baseless or ineffective;
you've only revealed a different set of priorities. You'd rather have
100% guaranteed behavior even if it meant a wildly-varying performance
graph across browsers. I'd rather have the reverse.

> But I suppose that you would not agree that being able to find an
> obvious rookie mistake in less then three seconds of looking (at a
> library that is already a good few years old) tends to support the
> "junk" assessment.

The check-in is only one year old. It is Thomas's bug, but he is no
rookie, so I can only surmise that we all make silly mistakes
sometimes. Bad luck for him that he managed to stumble upon your
Shibboleth Bug(TM).

> > A bug was filed on this not too long ago; I believe a
> > fix has been checked into trunk and will be in the
> > next release.
>
> Well, it is a pretty simple fix, and I notice that the subject of my
> last substantial criticism of the prototype's code has also been
> removed.

We listen to criticism, we read bug reports, and we constantly search
for ways to improve the feedback loop. So does John Resig, by the way,
so I'd suggest you file a bug on jQuery's Trac about the "makeArray"
mistake.

Cheers,
Andrew
From: Matt Kruse on
On Apr 19, 3:06 pm, "Richard Cornford" <Rich...(a)litotes.demon.co.uk>
wrote:
> Interestingly I observed Matt Kruse (who is the nearest thing to a
> supporter JQuery has among the regular contributors to this group, and
> someone who can easily outgun anyone directly involved in JQuery
> development when it comes to javascript)

Wow, given your view of the jQuery dev team, I'm not sure if that's
even close to a compliment ;)

> directly asked however was
> responsible for the - if ( typeof array != "array" ) - code to own up to
> it in a post on the JQuery development group. However, when I checked
> back a week later to see if anyone had the intellectual integrity to own
> up to their mistake I found that Matt's post had been deleted from the
> group.

If you're referring to this point:
http://groups.google.com/group/jquery-dev/msg/54b54712bd48ec83
then I can still find it.

Unfortunately, it hasn't generated any further discussion as I thought
it certainly warranted.
It's this kind of indifference about truly embarrassing code in the
jQuery source that I find most troubling.
They seem to be more interested in adding a new CSS3 selector or
saving 20 bytes by condensing some code than in correcting bad
programming practices.

I think John Resig loves Javascript and is probably learning more
about it as time goes on, but I suspect that his primary goal of
evangelizing jQuery is to enable the writing of more books and
attending more speaking engagements. Otherwise I can't comprehend why
some of these issues haven't gotten instant attention as I believe
they deserve.

Matt Kruse
From: Matt Kruse on
On Apr 21, 3:11 pm, Andrew Dupont <goo...(a)andrewdupont.net> wrote:
> We listen to criticism, we read bug reports, and we constantly search
> for ways to improve the feedback loop. So does John Resig, by the way,
> so I'd suggest you file a bug on jQuery's Trac about the "makeArray"
> mistake.

I know nothing about Prototype's "feedback loop" but I'll say that my
impression of the jQuery loop has been that it is very fond of praise
and quick to dismiss or ignore genuine critiques about its core code
or design decisions.

I've made a number of attempts to make suggestions that I consider to
be no-brainers... getting rid of unnecessary browser sniffs,
optimizing loops which are extremely inefficient, making the
isFunction() function work more more closely to how it was
(misguidedly) intended, removing some code that is completely
unnecessary (makeArray), and reporting some bugs.

I've gotten a lackluster response to most posts, even though I would
consider some of these issues to be extremely important in cleaning up
the jQuery code, making it faster, and improving its overall quality.

I'm quite fond of much of the API that jQuery offers, the coding style
that it often enables, and the ease with which it enables new/amateur
developers to create working code in the right environments. If I had
the time and interest, I would probably be inclined to branch the code
into something more solid, fix many of the issues that exist, and
remove some of the overloading that makes the API kind of a mess.

But since I lack both the time and interest, I'm still trying to push
the jquery dev team into improving the code and hopefully bringing
jQuery up to par as a library that can withstand the scrutiny of
experienced js developers. Even if they would still not choose to use
it.

Matt Kruse
First  |  Prev  |  Next  |  Last
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Prev: displaying a page from an iframe
Next: print scrollable div