Sunday, May 31, 2015

JavaScript Hands-on Training

JavaScript is one of the most popular languages in the world. It is the dominate language of the browser and is growing increasingly popular outside of it. It is used to create servers with Node.js, and to create mobile apps with frameworks such as Titanium and Ionic. It is even used to create levels in many popular computer games.

But inspite of its popularity most programmer never bother to study it. Partially it is because it looks familiar. If you program in C, C#, C++ or Java, JavaScript seems like a language you already know. But looks can be deceiving.

Unlike other object oriented languages, JavaScript lacks classes, so people waste valuable time trying to create them. Instead of class inheritance, JavaScript has prototypical inheritance. It is a strange but beautiful way of doing inheritance. Too bad most developers never learn to use it.

There is a trend in many imperative languages of late, adding functional programming features. A few years ago C# added lambdas and LINQ and recently Java 8 also adds lambdas. What is a lambda? It is a fancy way of saying anonymous function. JavaScript has had that ability since 1995. It also has first class functions, which means functions can be used almost anywhere a value can. They can be passed as parameters, returned from functions, stored in variables, arrays, and objects. This also means that JavaScript has high order functions. What are high order functions? It is when a language can both pass functions as parameters to functions and also return functions from functions.

I am going to be teaching hands-on JavaScript in the Los Angeles area later this summer 2015. Why should you study JavaScript? Because understanding JavaScript will give you the ability to unleash it. You will understand concepts that you may have only glossed over before.

  • What the "use strict" expression actually does
  • Why there are four different ways to call functions
  • How to remove nasty loops from your code by using recursion
  • How to write pure and compose-able functions
  • How write mutation free code
  • How to write code which is easier to unit test
  • and much, much more

I will have more information once the dates have been confirmed.