Table of Contents for Programming Languages: a survey
Because it is so well-known, Javascript gets its own chapter.
Tutorials/online books:
- http://dmitrysoshnikov.com/ecmascript/javascript-the-core-2nd-edition/
- https://github.com/getify/You-Dont-Know-JS
- http://eloquentjavascript.net/
- http://learnxinyminutes.com/docs/javascript/
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript
- note: "The article mentions an idiom for iterating over an array. It says 'an even nicer idiom is...' and then it shows it. I just wanted to say that the behaviour of this 'nicer' idiom may not be what's expected - it stops iterating once it hits the first falsy value. I was quite excited actually when I first saw them idiom, until I quickly realized its limitations " -- https://news.ycombinator.com/item?id=9516585
- https://leanpub.com/javascriptallongesix/read
- http://blog.ustunozgur.com/javascript/programming/books/videos/2015/06/17/how_to_be_a_great_javascript_software_developer.html recommends:
- books: JavaScript the Good Parts, JavaScript: the Definitive Guide (reference), Secrets of the JavaScript Ninja, JavaScript Allongé (freely available online), You Don’t Know JS (freely available online], Eloquent JavaScript (annotated version) (freely available online), Mozilla Developer Network's guide on JavaScript.
- libraries: "jQuery, Backbone, underscore and one of React, Angular or Ember"
- read the source code of Backbone and underscore
- also consider the libraries d3, highcharts, moment.js
- later, exercises eg katas. Mb use the book Pro JavaScript Design Patterns.
- "Try to answer questions such as: How does prototypal inheritance work? What defines a closure? How does the meaning of this keyword change? How does one use apply/bind/map/filter/call? Gather a list of common source points JavaScript? developers face and try to explain it in your own words. Explaining these concepts to another person in written or verbal form will help improve your skills immensely. While doing the exercises, try to go over those where you discover “What if?” scenarios. For example, “What is the meaning of “this” if I use bind twice? How does jQuery make sure that the this keyword refers to the jQuery object and not the global object? How does this library achieve a certain feature?” are some common questions you should be asking yourself."
- (some others recommend https://github.com/ramda/ramda too)
- https://duckduckgo.com/?q=es6+cheatsheet&ia=answer&iax=1
- https://github.com/getify/You-Dont-Know-JS
- https://github.com/bpesquet/thejsway/#
- http://superherojs.com/
- https://github.com/mbeaudru/modern-js-cheatsheet
- http://books.goalkicker.com/JavaScriptBook/ (from the discontinued Stack Overflow Documentation project)
- https://medium.freecodecamp.org/here-are-examples-of-everything-new-in-ecmascript-2016-2017-and-2018-d52fa3b5a70e
- https://github.com/leonardomso/33-js-concepts
- https://medium.com/the-node-js-collection/modern-javascript-explained-for-dinosaurs-f695e9747b70
- https://postlight.com/trackchanges/modern-javascript-for-ancient-web-developers
- http://exploringjs.com/
- https://learnjavascript.online/
- https://blog.bitsrc.io/understanding-call-bind-and-apply-methods-in-javascript-33dbf3217be
- https://threejsfundamentals.org/threejs/lessons/threejs-prerequisites.html
- https://javascript.info/
- https://turriate.com/articles/modern-javascript-everything-you-missed-over-10-years
- https://exploringjs.com/impatient-js/
- https://2ality.com/2021/06/temporal-api.html
- https://javascript.info/
Best practices and style guides:
Respected exemplar code:
Retrospectives:
Features
Variadic functions and reified arguments objects
Weak references
(as of this writing, a future feature)
And there is an option to be notified after the garbage-collection of weak references; see https://news.ycombinator.com/item?id=9735973 .
ES6 overview
Opinions
"I tried Javascript and found callbacks to be a crime against humanity, found a better concurrency model in Go, but found rather simple things that it couldn't express and Python could." -- [16]
- "JavaScript? is not particularily good language for supporting large code bases such as ours, mostly due to its dynamic nature. It requires a lot of attention, discipline and testing to maintain a code base and keep it stable. It also required to write quite a lot of run-time checking code to make sure things won't break because of some small programmer mistake (that actually become a performance problem for us at some point)." -- [17]
- "In Node, i was constantly worried about what is async or sync and the dynamic nature of it made my code feel like the wild wild west." [18]
- "Truth be told, I don’t think I miss Python all that much, at least not while I’m doing Clojure. JavaScript?