+ - 0:00:00
Notes for current slide
Notes for next slide

picasso bulls

1 / 126

hi my name is @ag_dubs

3 / 126

dorito

4 / 126

hi my name is @ag_dubs

5 / 126

mozilla

6 / 126

Universal Open Web Literacy

7 / 126

i like to think about thinking

8 / 126

i like to think about thinking

...especially the type of thinking that happens when people write code

9 / 126

i make mistakes

10 / 126

dorito

11 / 126

i make mistakes

12 / 126

let's talk about

cows in space

13 / 126

cows in space

14 / 126

let's talk about

art

15 / 126

cows in space cows in space cows in space cows in space

16 / 126

let's talk about

javascript

17 / 126

cows in space

18 / 126

let's talk about

ES6/2015

19 / 126

cows in space

20 / 126

let's talk about

ABSTRACTION

21 / 126

picasso bulls

22 / 126

The effective exploitation of his powers of abstraction must be regarded as one of the most vital activities of a competent programmer.

Edsger W. Dijkstra

"The Humble Programmer" (1972)
23 / 126

The Abstraction Principle

Each significant piece of functionality in a program should be implemented in just one place in the source code. Where similar functions are carried out by distinct pieces of code, it is generally beneficial to combine them into one by abstracting out the varying parts.

Benjamin C. Pierce

Pierce, Benjamin (2002). Types and Programming Languages. MIT Press. p. 339. ISBN 0-262-16209-1.
24 / 126

[Abstraction] tries to factor out details from a common pattern so that programmers can work close to the level of human thought, leaving out details which matter in practice, but are immaterial to the problem being solved.

"Abstraction (computer science)", Wikipedia. http://en.wikipedia.org/wiki/Abstraction_(computer_science). Accessed 6 October 2014.
25 / 126

[I]mmaterial to the problem being solved.

danger

26 / 126

NYC web dev fellowship

I teach beginners, and beginners teach me.

27 / 126

Iteration is hard.

Ruby

array.each do |item|
# do something
end

Javascript

for(var i =0; i< array.length; i++){
// do something
}
28 / 126

Iteration is hard.

Ruby

array.each do |item|
# do something
end

Javascript

for(var i =0; i< array.length; i++){
// do something
}

cow in space

29 / 126

Programs must be written for people to read, and only incidentally for machines to execute.

Abelson and Sussman

Abelson Sussman

Abelson and Sussman. "Structure and Interpretation of Computer Programs" MIT Press, Second ed. 1996.
30 / 126

ups

31 / 126

Iteration is hard.

Ruby

array.each do |item|
# do something
end

Javascript

for(var i =0; i< array.length; i++){
// do something
}
32 / 126

Iteration is hard.

Ruby

array.each do |item|
# do something
end

Javascript

for(var i =0; i< array.length; i++){
// do something
}

cow in space

33 / 126

feynman

34 / 126

The real problem in speech is not precise language. The problem is clear language ... It is really quite impossible to say anything with absolute precision, unless that thing is so abstracted from the real world as to not represent any real thing.

Richard Feynman

"New Textbooks for the "New" Mathematics", Engineering and Science volume 28, number 6 (March 1965) p. 9-15 at p. 14
35 / 126

picasso

36 / 126

There is no abstract art. You must always start with something. Afterward you can remove all traces of reality.

Pablo Picasso

37 / 126

Where should we begin?

38 / 126

draw the owl

39 / 126

draw the owl

helmet

40 / 126

draw the owl

helmet

helmet

41 / 126

guns

42 / 126

journey

43 / 126

let's talk about

cows in space

44 / 126

picasso bulls

45 / 126

taurus constellation

46 / 126

Humans are awesome pattern identifiers.

taurus constellation

47 / 126

taurus constellation

48 / 126

Abstractions are patterns that we give names.

horoscope

49 / 126

But we need to be careful about the patterns we pave.

horoscope2

50 / 126

horoscope2

51 / 126

let's talk about

javascript

52 / 126

cows in space

53 / 126

Javascript has been a delightful beginner programming language because it has lacked abstractions...

54 / 126

explode

That's all about to change.

55 / 126

September 28, 1980

56 / 126

cosmos

57 / 126

If you wish to make an apple pie from scratch, you must first invent the universe

Carl Sagan

58 / 126

If you wish to learn ES6/2015 from scratch you must first invent the universe

Carl Sagan

59 / 126

If you wish to learn ES6/2015 from scratch you must first invent the universe

ag_dubs

60 / 126

let's talk about

ES6/2015

61 / 126

cows in space

62 / 126

ECMAScript syntax is relaxed to enable it to serve as an easy-to-use scripting language.

https://people.mozilla.org/~jorendorff/es6-draft.html. Accessed 12 May 2015.
63 / 126

relax

64 / 126

[I]mmaterial to the problem being solved.

danger

65 / 126

What is JavaScript trying to solve?

66 / 126

What will be JavaScript's legacy?

67 / 126

javscript

68 / 126

ECMASCRIPT6/2015

Classes

danger

69 / 126

Sugar

makes me

sick

70 / 126

diabetepunk

71 / 126

Syntactic Sugar

makes me

nervous

72 / 126

ECMASCRIPT6/2015: Classes

Even though ECMAScript includes syntax for class definitions, ECMAScript objects are not fundamentally class-based such as those in C++, Smalltalk, or Java.

https://people.mozilla.org/~jorendorff/es6-draft.html. Accessed 12 May 2015.
73 / 126

You might not need

class syntax

74 / 126

You might not need

JQuery

75 / 126

You might not need

class syntax

76 / 126

gepbox

77 / 126

Remember that all models are wrong; the practical question is how wrong do they have to be to not be useful.

George E. P. Box

Box, G. E. P., and Draper, N. R., (1987), Empirical Model Building and Response Surfaces, John Wiley & Sons, New York, NY. p74.
78 / 126

ECMASCRIPT6/2015: Classes

In a class-based object-oriented language, in general, state is carried by instances, methods are carried by classes, and inheritance is only of structure and behaviour. In ECMAScript, the state and methods are carried by objects, while structure, behaviour, and state are all inherited.

https://people.mozilla.org/~jorendorff/es6-draft.html. Accessed 12 May 2015.
79 / 126

raganwald

80 / 126

prototypes aren't classes

81 / 126

Javascript Classes are Model Homes

arrested dev

82 / 126

Javascript classes are... objects

83 / 126

Javascript classes are... objects

not classes. really.

84 / 126

drunk

go home TC39, you're drunk

85 / 126

drunk

go home TC39, you're drunk

TC39

86 / 126

drunk

go home TC39, you're drunk

TC39

abstraction

87 / 126

drunk

go home TC39, you're drunk

TC39

abstraction

no

88 / 126

This is NOT a hate talk

89 / 126

What even is a class?

90 / 126

simula

91 / 126

too many things

92 / 126

guidon

93 / 126

Teaching is nature's way of letting you know how sloppy your understanding is

94 / 126

Teach Programming Concepts, Not Language Features

SICP

95 / 126

Javascript WILL BE the introduction to programming concepts for an entire generation of developers

96 / 126

[I]mmaterial to the problem being solved.

danger

97 / 126

Peter Van Roy

98 / 126

Teach Programming as a Unified Discipline

CTM

99 / 126

Programming languages are tools

100 / 126

Problem-Solution Pairs => Paradigms

101 / 126

The Kernel Teaching Method

A good way to organize a programming course is to start with a simple language and then to extend this language gradually.

Peter Van Roy

"Convergence in Language Design: A Case of Lightning Striking Four Times in the Same Place", FLOPS 2006, LNCS 3945, pp. 2-12, 2006.
102 / 126

We must invent the Universe

103 / 126

EVERY BEGINNER SHOULD WRITE A KERNAL LANGUAGE

104 / 126

EVERY BEGINNER SHOULD WRITE A KERNAL LANGUAGE

no

105 / 126

The Creative Extension Principle

106 / 126

You Aren't Going to Need It (YAGNI)

Always implement things when you actually need them, never when you just foresee that you need them.

Ron Jeffries, co-founder XP

Ron Jeffries. "You’re NOT gonna need it!". Practices. X Programming. Retrieved 2007-11-07.
107 / 126

Prototypal inheritence is a big part of the JavaScript universe

108 / 126

It's how the apple pie gets made

109 / 126

It's how the apple pie gets made

#veganfriendlymetaphors

110 / 126

tl;dr

  • Abstraction: it's what programming is at it's most essential
  • Abstraction: beginners struggle with it
  • Abstraction: it will drive your culture and community
  • ES6 Classes: an abstraction, a problem
  • We should be teaching concepts not syntax
  • Syntax that obfuscates concepts is problematic
  • When we teach, we have to start at the beginning
111 / 126

What do we even mean when we talk about programming?

112 / 126

heidegger what is called thinking

113 / 126

The most thought-provoking thing in our thought-provoking time is that we are still not thinking.

Martin Heidegger

What is Called Thinking? [Was heisst Denken?] (1951–1952), as translated by Fred D. Wieck and J. Glenn Gray (1968)
114 / 126

Are we programming yet?

115 / 126

racket pyret

116 / 126

scratch

117 / 126

kuhn

118 / 126

Scientists work from models acquired through education and through subsequent exposure to the literature often without quite knowing or needing to know what characteristics have given these models the status of community paradigms.

Thomas Kuhn

Kuhn, Thomas. "The Structure of Scientific Revolutions", pg 46 (1962)
119 / 126

We have an awesome opportunity to think more radically about how we extend JavaScript

120 / 126

It is far better to grasp the universe as it really is than to persist in delusion, however satisfying and reassuring.

Carl Sagan

121 / 126

Let's reconsider our ontology.

122 / 126

Let's reconsider our ontology.

Let's reconsider it early and often.

123 / 126

Let's reconsider our ontology.

Let's reconsider it early and often.

Let's stay beginners.

124 / 126

you're awesome you're awesome you're awesome you're awesome

125 / 126

#clapforashley ?

126 / 126
Paused

Help

Keyboard shortcuts

, , Pg Up, k Go to previous slide
, , Pg Dn, Space, j Go to next slide
Home Go to first slide
End Go to last slide
b / m / f Toggle blackout / mirrored / fullscreen mode
c Clone slideshow
p Toggle presenter mode
t Restart the presentation timer
?, h Toggle this help
Esc Back to slideshow