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

picasso bulls

1 / 123

hi my name is @ag_dubs

2 / 123

horse js

3 / 123

horse horse

4 / 123

hi my name is @ag_dubs

5 / 123

dorito

6 / 123

hi my name is @ag_dubs

7 / 123

404

8 / 123

i make mistakes

9 / 123

dorito

10 / 123

i make mistakes

11 / 123

let's talk about

cows in space

12 / 123

cows in space

13 / 123

let's talk about

art

14 / 123

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

15 / 123

let's talk about

javascript

16 / 123

cows in space

17 / 123

let's talk about

ES6/2015

18 / 123

cows in space

19 / 123

let's talk about

ABSTRACTION

20 / 123

picasso bulls

21 / 123

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)
22 / 123

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.
23 / 123

[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.
24 / 123

[I]mmaterial to the problem being solved.

danger

25 / 123

NYC web dev fellowship

I teach beginners, and beginners teach me.

26 / 123

Iteration is hard.

Ruby

array.each do |item|
# do something
end

Javascript

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

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

28 / 123

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.
29 / 123

ups

30 / 123

Iteration is hard.

Ruby

array.each do |item|
# do something
end

Javascript

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

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

32 / 123

feynman

33 / 123

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
34 / 123

picasso

35 / 123

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

Pablo Picasso

36 / 123

Where should we begin?

37 / 123

draw the owl

38 / 123

draw the owl

helmet

39 / 123

draw the owl

helmet

helmet

40 / 123

guns

41 / 123

journey

42 / 123

let's talk about

cows in space

43 / 123

picasso bulls

44 / 123

taurus constellation

45 / 123

Humans are awesome pattern identifiers.

taurus constellation

46 / 123

taurus constellation

47 / 123

Abstractions are patterns that we give names.

horoscope

48 / 123

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

let's talk about

javascript

49 / 123

cows in space

50 / 123

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

51 / 123

explode

That's all about to change.

52 / 123

September 28, 1980

53 / 123

cosmos

54 / 123

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

Carl Sagan

55 / 123

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

Carl Sagan

56 / 123

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

ag_dubs

57 / 123

let's talk about

ES6/2015

58 / 123

cows in space

59 / 123

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.
60 / 123

relax

61 / 123

[I]mmaterial to the problem being solved.

danger

62 / 123

What is JavaScript trying to solve?

63 / 123

What will be JavaScript's legacy?

64 / 123

javscript

65 / 123

ECMASCRIPT6/2015

Classes

danger

66 / 123

Sugar

makes me

sick

67 / 123

diabetepunk

68 / 123

Syntactic Sugar

makes me

nervous

69 / 123

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.
70 / 123

You might not need

class syntax

71 / 123

You might not need

JQuery

72 / 123

You might not need

class syntax

73 / 123

gepbox

74 / 123

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.
75 / 123

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.
76 / 123

raganwald

77 / 123

prototypes aren't classes

78 / 123

Javascript Classes are Model Homes

arrested dev

79 / 123

Javascript classes are... objects

80 / 123

Javascript classes are... objects

not classes. really.

81 / 123

drunk

go home TC39, you're drunk

82 / 123

drunk

go home TC39, you're drunk

TC39

83 / 123

drunk

go home TC39, you're drunk

TC39

abstraction

84 / 123

drunk

go home TC39, you're drunk

TC39

abstraction

no

85 / 123

This is NOT a hate talk

86 / 123

What even is a class?

87 / 123

simula

88 / 123

too many things

89 / 123

guidon

90 / 123

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

91 / 123

Teach Programming Concepts, Not Language Features

SICP

92 / 123

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

93 / 123

[I]mmaterial to the problem being solved.

danger

94 / 123

Peter Van Roy

95 / 123

Teach Programming as a Unified Discipline

CTM

96 / 123

Programming languages are tools

97 / 123

Problem-Solution Pairs => Paradigms

98 / 123

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.
99 / 123

We must invent the Universe

100 / 123

EVERY BEGINNER SHOULD WRITE A KERNAL LANGUAGE

101 / 123

EVERY BEGINNER SHOULD WRITE A KERNAL LANGUAGE

no

102 / 123

The Creative Extension Principle

103 / 123

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.
104 / 123

Prototypal inheritence is a big part of the JavaScript universe

105 / 123

It's how the apple pie gets made

106 / 123

It's how the apple pie gets made

#veganfriendlymetaphors

107 / 123

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
108 / 123

What do we even mean when we talk about programming?

109 / 123

heidegger what is called thinking

110 / 123

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)
111 / 123

Are we programming yet?

112 / 123

racket pyret

113 / 123

scratch

114 / 123

kuhn

115 / 123

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)
116 / 123

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

117 / 123

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

Carl Sagan

118 / 123

Let's reconsider our ontology.

119 / 123

Let's reconsider our ontology.

Let's reconsider it early and often.

120 / 123

Let's reconsider our ontology.

Let's reconsider it early and often.

Let's stay beginners.

121 / 123

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

122 / 123

#clapforashley ?

123 / 123

hi my name is @ag_dubs

2 / 123
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