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