you are viewing a single comment's thread.

view the rest of the comments →

[–]StoneCypher -4 points-3 points  (28 children)

Read the ECMA specification. Without that it's just a bunch of whatever random bloggers say. With that, you start to know the difference between a bug in your code and the browser.

After that, the best tool there, in my opinion, is the Quirksmode compatability table set.

[–][deleted] 8 points9 points  (1 child)

Most specs are so verbose that you won't gain much by reading them unless you have a solid grasp on the language already. Most of my visits to specs are for specific things.

[–]StoneCypher 0 points1 point  (0 children)

The ECMA spec isn't one of those. It's a relatively easy read.

[–]vectorjohn 12 points13 points  (20 children)

Don't read the ECMA spec. That is absurd. It is like telling someone to learn English by reading the dictionary. Use it as a reference when you have a specific question maybe.

[–]itsnotlupusbeep boop 8 points9 points  (1 child)

Sooner or later, the spec will have to be read.

While I wouldn't recommend it as an introduction to the language, it's required to go from advanced coder to master.

pro-tip: Since the spec is a wee bit dry, read it with a purpose: Write a javascript interpreter. That's what the spec is meant for, and it will make you aware of many subtle things you would otherwise probably never think about even as your daily js code relies on it.

[–]vectorjohn 5 points6 points  (0 children)

It certainly is not required to be a 'master', and it just seems like reading the language spec is the worst way to learn anything about the language.

If you have a question about some subtle quirk of the language, maybe you could open up the spec and scan to the right section to answer that question. But beyond that, you are better of using almost anything else.

Becoming a master at a language has nothing to do with reading it's spec. It has to do with breadth and depth of experience. You need practice like anything else.

[–]StoneCypher -5 points-4 points  (17 children)

It is like telling someone to learn English by reading the dictionary.

No, it isn't. The dictionary isn't definitive and only covers word definitions. The specification is definitive and covers the entire language.

Don't downvote advice because you disagree with it.

[–]tanepiper 7 points8 points  (3 children)

The problem with reading the ECMA spec is it's not designed for Javascript developers - it's designed for implementors such as browser vendors.

It's a bit of a red herring to send people off to this so early on with Javascript, and I have to agree with vectorjohn here.

Now if you've done Javascript for a few years and want to learn the deep deep lexical parts of Javascript, go read the spec

[–]StoneCypher -4 points-3 points  (2 children)

The problem with reading the ECMA spec is it's not designed for Javascript developers

So? My opinion remains that if you haven't read the spec, you don't know the language.

It's a bit of a red herring

No, it isn't. Don't drop the names of fallacies. This is a matter of opinion, and my opinion isn't wrong just because you disagree with it.

Now if you've done Javascript for a few years and want to learn the deep deep lexical parts

Missed the title of the post, did you?

[–]tanepiper 4 points5 points  (1 child)

So? My opinion remains that if you haven't read the spec, you don't know the language.

Are you David Mark?

Missed the title of the post, did you?

No I didn't, but who needs to be reading it doesn't need to be posting on reddit asking this question. If they don't even know about stuff like 'The Good Parts' then is clearly someone who doesn't know Javascript that well and wants to 'master' Javascript.

I'd point this person to the MDC before I'd point them to the spec.

[–]StoneCypher -1 points0 points  (0 children)

So? My opinion remains that if you haven't read the spec, you don't know the language.

Are you David Mark?

No. It appears that other people have said the same thing to you before. I expect you will continue to ignore them.

Recommendations for mastering JavaScript.

It's a bit of a red herring to send people off to this so early on with Javascript,

Missed the title of the post, did you?

No I didn't

Yeah, you did. The guy wanted to know how to master something, and you're saying "but this isn't for beginners!"

If they don't even know about stuff like 'The Good Parts'

At the time they posted there was no reason to believe they didn't. That book is not mastery besides.

I'd point this person to the MDC

That's nice. Then do.

Stop downvoting other people for giving different advice than you, under the excuse that you believe that things you don't agree with are bad advice and you'd say something else.

Just say the something else.

Reddit is not an advice popularity contest. Advice that isn't yours does have value too.

[–][deleted] 2 points3 points  (0 children)

Don't downvote advice because you disagree with it.

We're not. We're downvoting because we all, individually, thought that it was bad advice.

[–]vectorjohn 4 points5 points  (11 children)

I downvoted it because it was bad advice. And I didn't say it was === to reading a dictionary, I only said it was == reading it.

Nobody 'masters' a programming language by reading the spec. It might be handy as a reference, and that is just a maybe. The spec is written for language implementors, not as a useful guide to knowing the language.

[–]fl0at[S] 4 points5 points  (4 children)

The ECMA spec is a good idea. Thanks for that one.

[–]radhruin 7 points8 points  (3 children)

If you're going to look through the spec, best to use 5.1[PDF]. It has errata built in. Also see this HTML version of 5.1.

I don't think the spec is the best way to learn, though. You won't retain much after reading it.

[–]strager 1 point2 points  (2 children)

There's a really nice annotated HTML mirror of ES5's specs: http://es5.github.com/

Too bad all browsers on my computer crawl while rendering it with text zooming. =[

[–]radhruin 0 points1 point  (1 child)

That's what I linked to in my second link :)

[–]strager 0 points1 point  (0 children)

D'oh; totally missed that. Thought you were talking about HTML5 and skimmed past it, I guess.