|
|
I like the SAMS books as they start from the absolute beginning and work through a language using discrete lessons. Each lesson is supposed to take an hour -- which is probably accurate for a complete beginner -- however, anyone with any programming knowledge will buzz through the first 7 lessons in less than an hour.
SAMS Teach Yourself JavaScript in 24 Hours[^]
Each lesson has a quiz and exercises for practice, some of which are practical brain teasers. My learning style needs practical work to cement the lessons.
I had been out of programming professionally for a number of years and this book was a good introduction to JavaScript. [I have used 3 or 4 other SAMS books in the last 20 years with good results.] After finishing this book you'll want some of the other books that have been recommended, but for a beginner this one will help you develop basic knowledge which makes the other books easier to understand.
You can also look for free books. SyncFusion[^] has published a lot of books in their "Succinctly" series, including 8 that involve JavaScript. I downloaded JavaScript Succinctly but Cody Lindley, but haven't read it yet.
|
|
|
|
|
I'm going to go get JavaScript: The Definitive Guide next. I have read the JavaScript the Good Parts about 1.5 years ago and it was good. I have the JavaScript Pocket Reference from O'Reilly and it's good but not for a beginner. I have read the Sync-Fusion Free e-books on JS and they are ok but the last one had a different approach and I'm no JS expert. I'm hoping this Definitive Guide will push me along. I'm an experienced professional programmer with 20+ years experience. Mainly Turbo Pascal, C,& C++ in DOS days and all flavors of Basic and VB to VB 6 and VB.net up to 4.0 framework. C# from the beginning to now including XAML in WPF and Silverlight, etc... Some Java along the way with others like Gupta SQL Windows/CB. Everything, but, M$ is Java or JavaScript these days. I've even done some objective-c, swift and Android Java lately.
|
|
|
|
|
Finding a good "introduction" book can be difficult. A programmer experienced in a subject needs a good reference ... which isn't good for learning.
Which is, of course, the OP's point in posting.
|
|
|
|
|
|
I would advise against starting with "JavaScript: The Good Parts" by Douglas Crockford and Kyle Simpson's "You don't know JS" series for an total beginner. I think these are best read after already having a basic understanding of JavaScript as well having put some time in front of the keyboard using JavaScript. Both books/series, however, I *highly* recommend. Do read them, but after you've read another introductory book. I have read "Professional JavaScript for Web Developers" by Nicholas C. Zakas and I think it is a great book for learning ES5. But I haven't read "Speaking Javascript", "Eloquent JavaScript", or "JavaScript: the Definitive Guide". However, Eric Elliot, an experience JavaScript programmer who has written his own JS book, has written an article that may help:
12 Books Every JavaScript Developer Should Read – JavaScript Scene – Medium[^]
After you've learned the language fundamentals, you will be overwhelmed with all the other "stuff" you will need to know. For all that "other stuff", I think you will find this other article, also by Eric Elliot, to be *very* helpful:
Top JavaScript Frameworks & Topics to Learn in 2017[^]
I'd also recommending subscribing to JavaScript Weekly to keep up to date on things and find out some great articles:
JavaScript Weekly: A Free, Weekly Email Newsletter[^]
|
|
|
|
|
|
|
|
ALL ABOUT COUNTING RIGHT
In a dark room (so you can't actually recognize the coins, but feel and mover them only) there are 284 coins scattered on the floor. It is known that only 14 hast their tail upward.
Create two piles of coins - using all the coins in the room - with the same number of coins with their tails up...
Skipper: We'll fix it.
Alex: Fix it? How you gonna fix this?
Skipper: Grit, spit and a whole lotta duct tape.
modified 2-Mar-17 16:38pm.
|
|
|
|
|
Balance all of them on their edge.
Now none of the coins have their tails up.
|
|
|
|
|
Yeah! Good luck with that
Skipper: We'll fix it.
Alex: Fix it? How you gonna fix this?
Skipper: Grit, spit and a whole lotta duct tape.
|
|
|
|
|
Ok, then alternate solutions...
1) Turn on the lights.
2) Bring a flashlight. Seriously, this is 2017. Everyone has a flashlight on their cell phone.
3) Pick up the coins and move them to a room that isn't dark. You said the coins could be felt and MOVED, so move them out of the dark.
4) Split them into two piles and just assume it's fine. After all, it's dark... No one can tell if you're right or not.
5) Cut each coin in half without flipping any, and put half in each of the two piles. By definition, they now all have the same number of tails facing upward.
|
|
|
|
|
You came up 5 alternative options, all complicated (except the light, but you have to find it first), while there is a very simple and easy one out there - 15 seconds, most...
Skipper: We'll fix it.
Alex: Fix it? How you gonna fix this?
Skipper: Grit, spit and a whole lotta duct tape.
|
|
|
|
|
How is turning on the flashlight in my cell phone complicated? I can do that in about five seconds
Or are you suggesting just opening the door? Because you never said it was light OUTSIDE the room.
|
|
|
|
|
After you turned on the flashlight, you still have to scan all the coins, that will take some time...
See the comment from Nagy (he may had an extra gin) below...
Skipper: We'll fix it.
Alex: Fix it? How you gonna fix this?
Skipper: Grit, spit and a whole lotta duct tape.
|
|
|
|
|
Damn, and I was only one step away from suggesting burning down the room so all the coins would be so scorched that none of them would be showing heads OR tails.
And he had to go and post an actual answer...
How's a guy supposed to troll in this kind of environment?
|
|
|
|
|
That's the gin. No cure for it!
Skipper: We'll fix it.
Alex: Fix it? How you gonna fix this?
Skipper: Grit, spit and a whole lotta duct tape.
|
|
|
|
|
Soo... you can feel the coins (determine sides) and the only requirements are two piles with equal tails up coins? Just pick up all the coins, splitting them into two heads-up piles of 149 each. Or two piles of 142 heads-up, 7 tails-up, or any other combination that strikes your fancy. You can determine coin side by feel pretty easily for all coins I'm familiar with
|
|
|
|
|
Too much work for a lazy one like me... Call math to make it less...
Skipper: We'll fix it.
Alex: Fix it? How you gonna fix this?
Skipper: Grit, spit and a whole lotta duct tape.
|
|
|
|
|
Could also just feel around for the 14 tails, flip them over, and you're done. No matter what you decide is a "pile" it will have the same number of tails up - zero.
EDIT: Or even better. Pick two coins. If they're both heads you're done. If either is tails flip it over. Done. It never says you have to use all the coins.
|
|
|
|
|
But to find all the 14 tails you have to 'feel' all the coins - there is a much more easy way...
Skipper: We'll fix it.
Alex: Fix it? How you gonna fix this?
Skipper: Grit, spit and a whole lotta duct tape.
|
|
|
|
|
Did you see my edit? Do we have to use all the coins? Or can you simply pick two coins, if both heads you're done (two piles of 0 tails up each), both tails you're done (two piles of 1 tails up each), and in the case of 1 heads 1 tails simply flip one of them and you're done?
|
|
|
|
|
The two piles - together - should contains all the coins in the room...
Skipper: We'll fix it.
Alex: Fix it? How you gonna fix this?
Skipper: Grit, spit and a whole lotta duct tape.
|
|
|
|
|
I think I figured it out. My last guess (though it didn't account for all the coins) was on the right track. Take a simple example of TTTHHHHHHH (7 heads, 3 tails). If you take three coins you'll get either {TTT}, {TTH}, {THH}, or {HHH} leaving {HHHHHHH}, {THHHHHH}, {TTHHHHH}, or {TTTHHHH} respectively. Those don't match up, but if you notice, flipping what was taken yields equal tails (example: {TTH} -> {HHT}, {THHHHHHH} = 1T each).
This flipping works by removing coins equal to the number of tails. By subsequently flipping the coins, this set now contains a number of a heads equal to the number of tails removed from the original set and a number of tails equal to the number of heads removed from the original set. This naturally balances out the number of tails in each set.
An example: 10 tails {TTTTTTTTTT}. Let's remove 6 tails {TTTT}. Those 6 tails are now in the taken set {TTTTTT}. We need 10 total coins though, so we must have taken 4 heads as well {TTTTTTHHHH}. Because we removed the same number of total coins as the number of total tails, whatever amount left in the original set in tails must be represented as heads in the taken set. Thus after the flip we now have {HHHHHHTTTT} which has 4 Ts just like the original set {TTTT}.
So for your question: Pick 14 coins, any coins, and flip them. Done.
|
|
|
|