Slide 1

Slide 1 text

HOW NOT WRITING PHP CAN MAKE YOU BETTER AT PHP

Slide 2

Slide 2 text

DANIEL COUSINEAU // FOLLOW ME : @DCOUSINEAU OR HTTP://DCOUSINEAU.COM @dcousineau

Slide 3

Slide 3 text

@croscon

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

HOW NOT WRITING PHP CAN MAKE YOU BETTER AT PHP

Slide 6

Slide 6 text

HOW TO LIFEHACK YOUR WAY INTO LEARNING PROGRAMMING

Slide 7

Slide 7 text

DANIEL COUSINEAU // FOLLOW ME : @DCOUSINEAU OR HTTP://DCOUSINEAU.COM Don’t do more work than you have to My middle school swim coach

Slide 8

Slide 8 text

DANIEL COUSINEAU // FOLLOW ME : @DCOUSINEAU OR HTTP://DCOUSINEAU.COM PROGRAMMING LANGUAGES

Slide 9

Slide 9 text

DANIEL COUSINEAU // FOLLOW ME : @DCOUSINEAU OR HTTP://DCOUSINEAU.COM TURING COMPLETE

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

DANIEL COUSINEAU // FOLLOW ME : @DCOUSINEAU OR HTTP://DCOUSINEAU.COM any real-world computation can be translated into an equivalent computation involving a Turing machine. CHURCH-TURING THESIS

Slide 13

Slide 13 text

DANIEL COUSINEAU // FOLLOW ME : @DCOUSINEAU OR HTTP://DCOUSINEAU.COM

Slide 14

Slide 14 text

DANIEL COUSINEAU // FOLLOW ME : @DCOUSINEAU OR HTTP://DCOUSINEAU.COM Turing Complete

Slide 15

Slide 15 text

DANIEL COUSINEAU // FOLLOW ME : @DCOUSINEAU OR HTTP://DCOUSINEAU.COM THE LANGUAGE IS A MEANS TO AN END A WAY TO EXPRESS ABSTRACT THOUGHT

Slide 16

Slide 16 text

DANIEL COUSINEAU // FOLLOW ME : @DCOUSINEAU OR HTTP://DCOUSINEAU.COM THE LANGUAGE IS A MEANS TO AN END A WAY TO EXPRESS ABSTRACT THOUGHT ALGORITHMS

Slide 17

Slide 17 text

DANIEL COUSINEAU // FOLLOW ME : @DCOUSINEAU OR HTTP://DCOUSINEAU.COM EXPLANATION

Slide 18

Slide 18 text

DANIEL COUSINEAU // FOLLOW ME : @DCOUSINEAU OR HTTP://DCOUSINEAU.COM In the beginning, there was Assembly

Slide 19

Slide 19 text

DANIEL COUSINEAU // FOLLOW ME : @DCOUSINEAU OR HTTP://DCOUSINEAU.COM …and it was not good

Slide 20

Slide 20 text

main: li $a0, 1 li $a1, 2 li $t0, 3 jal addthem add $t0, $t0, $v0 syscall addthem: addi $sp, $sp, -4 sw $ra, 0($sp) add $v0, $a0, $a1 lw $ra, 0($sp) addi $sp, $sp, 4 jr $ra

Slide 21

Slide 21 text

DANIEL COUSINEAU // FOLLOW ME : @DCOUSINEAU OR HTTP://DCOUSINEAU.COM And then there was C

Slide 22

Slide 22 text

DANIEL COUSINEAU // FOLLOW ME : @DCOUSINEAU OR HTTP://DCOUSINEAU.COM int main() { int t0 = 3; int v0 = addthem(1, 2); return v0 + t0; } int addthem(int a0, int a1){ int t0 = a0 + a1; return t0; }

Slide 23

Slide 23 text

DANIEL COUSINEAU // FOLLOW ME : @DCOUSINEAU OR HTTP://DCOUSINEAU.COM CONSTRUCT FUNCTION WHAT’S YOUR … FUNCTION

Slide 24

Slide 24 text

DANIEL COUSINEAU // FOLLOW ME : @DCOUSINEAU OR HTTP://DCOUSINEAU.COM function recurse() { recurse(); } recurse(); RangeError: Maximum call stack size exceeded.

Slide 25

Slide 25 text

DANIEL COUSINEAU // FOLLOW ME : @DCOUSINEAU OR HTTP://DCOUSINEAU.COM REPETITION=LEARNING

Slide 26

Slide 26 text

DANIEL COUSINEAU // FOLLOW ME : @DCOUSINEAU OR HTTP://DCOUSINEAU.COM http://bit.ly/bk-js Linguistic Relativity in Programming Langauges

Slide 27

Slide 27 text

+ DANIEL COUSINEAU // FOLLOW ME : @DCOUSINEAU OR HTTP://DCOUSINEAU.COM SAPIR-WHORF HYPOTHESIS The languages you speak determine the way you think

Slide 28

Slide 28 text

+ DANIEL COUSINEAU // FOLLOW ME : @DCOUSINEAU OR HTTP://DCOUSINEAU.COM SAPIR-WHORF HYPOTHESIS The languages you speak influence the way you think

Slide 29

Slide 29 text

DANIEL COUSINEAU // FOLLOW ME : @DCOUSINEAU OR HTTP://DCOUSINEAU.COM Culture Language thought

Slide 30

Slide 30 text

DANIEL COUSINEAU // FOLLOW ME : @DCOUSINEAU OR HTTP://DCOUSINEAU.COM Culture Language thought

Slide 31

Slide 31 text

+ DANIEL COUSINEAU // FOLLOW ME : @DCOUSINEAU OR HTTP://DCOUSINEAU.COM BLUB PARADOX “Some programming languages are more powerful than others… I look at [Python, Java, C and Perl]. How can you get anything done in them, I think, without macros?” Paul Graham http://www.paulgraham.com/avg.html

Slide 32

Slide 32 text

+ DANIEL COUSINEAU // FOLLOW ME : @DCOUSINEAU OR HTTP://DCOUSINEAU.COM BLUB PARADOX “They're satisfied with whatever language they happen to use, because it dictates the way they think about programs.” Paul Graham http://www.paulgraham.com/avg.html

Slide 33

Slide 33 text

DANIEL COUSINEAU // FOLLOW ME : @DCOUSINEAU OR HTTP://DCOUSINEAU.COM IDIOMS

Slide 34

Slide 34 text

DANIEL COUSINEAU // FOLLOW ME : @DCOUSINEAU OR HTTP://DCOUSINEAU.COM Combination of words in common use that have a figurative, and sometimes literal, meaning

Slide 35

Slide 35 text

DANIEL COUSINEAU // FOLLOW ME : @DCOUSINEAU OR HTTP://DCOUSINEAU.COM In this case, it was routed straight to the Director of Central Intelligence and, because it evidently discussed the identity of a field spook, to the Deputy Director (Operations), since all the field spooks worked for her. The former was a busier person than the latter, but that didn’t matter, since the latter was married to the former Tom Clancy, Rainbow Six

Slide 36

Slide 36 text

DANIEL COUSINEAU // FOLLOW ME : @DCOUSINEAU OR HTTP://DCOUSINEAU.COM What beliefs or what wrong could motivate a man to do murder on a large scale? In the former case, Brightling was not a religious fanatic. In the latter, he had no overt dissatisfaction with his country. Tom Clancy, Rainbow Six

Slide 37

Slide 37 text

DANIEL COUSINEAU // FOLLOW ME : @DCOUSINEAU OR HTTP://DCOUSINEAU.COM His last through before closing his eyes on this sunny morning was that he hoped the contact number hadn’t been changed, or compromised. If the latter, then he’d have to do some explaining to the local police… Tom Clancy, Rainbow Six

Slide 38

Slide 38 text

DANIEL COUSINEAU // FOLLOW ME : @DCOUSINEAU OR HTTP://DCOUSINEAU.COM Yes, this could and would work. The only question was daylight or nighttime. The latter was the usual answer, but he’d learned the hard way that counter-terror teams loved the night… Tom Clancy, Rainbow Six

Slide 39

Slide 39 text

DANIEL COUSINEAU // FOLLOW ME : @DCOUSINEAU OR HTTP://DCOUSINEAU.COM “Language and economics.” The former had proven very useful. The latter had been totally valueless, since the Marxist idea of economics had not exactly proven to be an effective one. Tom Clancy, Rainbow Six

Slide 40

Slide 40 text

DANIEL COUSINEAU // FOLLOW ME : @DCOUSINEAU OR HTTP://DCOUSINEAU.COM Means of expressing a recurring construct or abstract idea, often across multiple languages

Slide 41

Slide 41 text

DANIEL COUSINEAU // FOLLOW ME : @DCOUSINEAU OR HTTP://DCOUSINEAU.COM i = 0 for line in text.split("\n"): print "#{0} {1}".format(i, line) i += 1

Slide 42

Slide 42 text

DANIEL COUSINEAU // FOLLOW ME : @DCOUSINEAU OR HTTP://DCOUSINEAU.COM for i, line in enumerate(text.split("\n")): print "#{0} {1}".format(i, line)

Slide 43

Slide 43 text

DANIEL COUSINEAU // FOLLOW ME : @DCOUSINEAU OR HTTP://DCOUSINEAU.COM def my_enumerate(iterable): i = 0 for item in iterable: yield i, item i += 1 for i, line in my_enumerate(text.split("\n")): print "#{0} {1}".format(i, line)

Slide 44

Slide 44 text

No content

Slide 45

Slide 45 text

No content

Slide 46

Slide 46 text

DANIEL COUSINEAU // FOLLOW ME : @DCOUSINEAU OR HTTP://DCOUSINEAU.COM function enumerate($iterable) { $i = 0; foreach ($iterable as $item) { yield [$i, $item]; $i++; } } foreach (enumerate(explode("\n", $text)) as list($i, $line)) { print "#$i $line\n"; }

Slide 47

Slide 47 text

DANIEL COUSINEAU // FOLLOW ME : @DCOUSINEAU OR HTTP://DCOUSINEAU.COM DECISIONS ARE LIKE WATER

Slide 48

Slide 48 text

DANIEL COUSINEAU // FOLLOW ME : @DCOUSINEAU OR HTTP://DCOUSINEAU.COM (defn manhattan-distance [piece board] "Find the manhattan distance between a piece and its goal" (let [pos (locate piece board) goal-pos (locate piece *goal-state*)] (abs (+ (- (floor (/ pos 3)) (floor (/ goal-pos 3))) (- (mod pos 3) (mod goal-pos 3)))))) (defn manhattan-distance-sum [board] "Find the sum of the manhattan distances" (reduce + (map #(manhattan-distance % board) board)))

Slide 49

Slide 49 text

DANIEL COUSINEAU // FOLLOW ME : @DCOUSINEAU OR HTTP://DCOUSINEAU.COM var sortedDict = _(someDict).chain() .map(function(v, k) { return [k,v]; }) .sortBy(function(a) { return a[0]; }) .reduce(function(s, v) { s[v[0]] = v[1]; return s; }, {}) .value();

Slide 50

Slide 50 text

DANIEL COUSINEAU // FOLLOW ME : @DCOUSINEAU OR HTTP://DCOUSINEAU.COM PHP MADE ME BETTER

Slide 51

Slide 51 text

+ DANIEL COUSINEAU // FOLLOW ME : @DCOUSINEAU OR HTTP://DCOUSINEAU.COM THE TAKEAWAY Other languages make certain ABSTRACT concepts easier to learn By making it easier to use said concept than not use it in a way that your current language does not

Slide 52

Slide 52 text

THANKS. FOR YOUR ATTENTION DANIEL COUSINEAU // FOLLOW ME : @DCOUSINEAU OR HTTP://DCOUSINEAU.COM