the language of @anjanavakil programming · @anjanavakil - h. abelson, g.j. sussman, & j....

56
The Language of Programming @AnjanaVakil

Upload: others

Post on 27-Jul-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

The Language of

Programming

@AnjanaVakil

Page 2: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

what is code?

Page 3: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

language

Page 4: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

language

for machines?

Page 5: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

language

for machines?

Page 6: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

language

for machines?

Page 7: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

“a computer language is not just a

way of getting a computer to

perform operations…”

-Structure & Interpretation of Computer Programs

Page 8: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

“…it is a novel formal medium for

expressing ideas about

methodology.”

-Structure & Interpretation of Computer Programs

Page 9: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

“Thus, programs must be written

for people to read, and only

incidentally for machines to

execute.”

-Structure & Interpretation of Computer Programs

Page 10: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

language

for machines?

humans

Page 11: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

it's all about collaboration

Page 12: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

language is power

Page 13: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

language

with many faces

Page 14: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

every language matters

Page 15: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

every language matters

Gender distinctions in Independent Personal Pronouns

Page 16: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

deconstructing language

Page 17: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

deconstructing language

Page 18: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

deconstructing language

texts

words

syllables

phrases

morphemes

phones

turns

sentences

phonemes

…etc

Page 19: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

deconstructing programs

modules

expressions

statements

types

lines

bytes

functions

objects

instructions

…etc

Page 20: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

“There are no theory-neutral

structures in linguistics.”

-Michael Tomasello, Linguist

Page 21: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

deconstructing paradigms

Page 22: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

“Each paradigm supports a set of

concepts that make it the best for a

certain kind of problem.”

-Peter van Roy, Computer Scientist

Page 23: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

prescriptivism

Page 24: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

prescriptivism

“FORTRAN [is an] ‘infantile disorder’”

“BASIC [coders are] ‘mentally mutilated’”

“COBOL … cripples the mind”

“APL is a mistake”

-Edsger Dijkstra, Curmudgeon

Page 25: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

prescriptivism

“FORTRAN [is an] ‘infantile disorder’”

“BASIC [coders are] ‘mentally mutilated’”

“COBOL … cripples the mind”

“APL is a mistake”

-Edsger Dijkstra, Curmudgeon

NOPE

Page 26: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

APL ain't no mistake

Page 27: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

APL ain't no mistake

life←{↑1 ⍵∨.∧3 4=+/,¯1 0 1∘.⊖¯1 0 1∘.⌽⊂⍵}

Page 28: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

APL ain't no mistake

life←{↑1 ⍵∨.∧3 4=+/,¯1 0 1∘.⊖¯1 0 1∘.⌽⊂⍵}Conway's Game of Life in Dyalog APL

Page 29: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

APL ain't no mistake

MATLAB®

Page 30: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

APL ain't no mistake

Page 31: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

“Languages are cultural artifacts that

differ radically among different

cultures, and languages change in

important ways as the communicative

needs of their speakers evolve over time.”

-Michael Tomasello, Linguist

Page 32: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

language

in context

Page 33: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

language

Page 34: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

gender

nationality

power

family

status

oppression

politics

religion

economics

race

language

Page 35: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

gender

nationality

power

family

status

oppression

politics

--

--

--

--

religion

economics

----

---

race

--

--

--

--

-

--

--

-

----

------

--

-

language

Page 36: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

gender

nationality

power

family

status

oppression

politics

--

--

--

--

religion

economics

----

---

race

--

--

--

--

-

--

--

-

----

------

--

-

code

Page 37: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

words are actions

Page 38: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

words are actions

Page 39: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

words are actions

s/whitelist/safelist

s/blacklist/blocklist

s/master/leader

s/slave/follower

Page 40: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

“If we're going to teach programming

around the world, we have to be aware of

what the cultural biases are.”

-Ramsey Nasser, Creator of قلب

Page 41: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

teaching in context

Noor:

a beginner-friendly

Arabic programming

language

by Ahmed Abdallagithub.com/SimplyAhmazing/noor

Page 42: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

language

to be acquired

Page 43: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

we learn through context

Page 44: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

we learn through context

foo = bar('baz')

Page 45: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

we learn through context

result = analyze('data')

Page 46: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

we learn out loud

result = analyze('data')

Page 47: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

result = analyze('data')

“result equals analyze data” ?

“set result to analyze of data” ?

“analyze string data becomes result” ?

… ?

we learn out loud

Page 48: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

“… can we really comprehend and

communicate source code if we cannot

vocalise it?”

- Felienne Hermans, Computer Scientist

we learn out loud

Page 49: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

we can't learn alone

Page 50: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

we can't learn alone

The Recurse Center

recurse.com

Page 53: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

code is

languageis

collaborationis

power

Page 54: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

what will we

do with it?

Page 55: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

Thank you!

GOTO Chicago team

István "Flaki" Szmozsánszky, Perry Eising, Nicole

Orchard, Max Rabkin, John Sylak-Glassman &

everyone else who let me talk their ear off

The Recurse Center

Mapbox

Page 56: The Language of @AnjanaVakil Programming · @AnjanaVakil - H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via mitpress.mit.edu/sicp

@AnjanaVakil

- H. Abelson, G.J. Sussman, & J. Sussman, Structure and Interpretation of Computer Programs (1996), via

mitpress.mit.edu/sicp

- World Atlas of Language Structures, "Gender distinctions in Independent Personal Pronouns", via

wals.info/feature/44A

- M. Tomasello, "Language is Not an Instinct", in Cognitive Development 10 (1995)

- P. van Roy, "Programming Paradigms for Dummies: What Every Programmer Should Know", in New

Computational Paradigms for Computer Music (2009), via UCL

- E. Dijkstra, "How do we tell truths that might hurt?" (1975), cited in V. Chandra, Geek Sublime (2014)

- K.E. Iverson, "Notation as a tool of thought" (awarded 1979), in ACM Turing award lectures (2007), via ACM

- Conway's Game of Life in Dyalog APL, from "APL (programming language)", Wikipedia

- K. Thomas tweet (2015) via Twitter, via A. van Kesteren, "Avoid whitelist/blacklist" on Github

- R. Nasser, "Arabic Programming Language at Eyebeam" (2013) via nas.sr/قلب- A. Abdalla, "Creating an Arabic Programming Language!", !!Con 2018

- F. Hermans, "Code Phonology" (2018), via felienne.com/archives/5947

Image Credits

- Icons by EmojiOne

- "The Tower of Babel" painting by Pieter Bruegel the Elder (1563), via Wikimedia

- "Syntax tree diagram of a sentence from Syntactic Structures (1957) by N. Chomsky" by Gringer, via Wikipedia/Wikimedia

- Figure from Peter van Roy, "Programming Paradigms for Dummies: What Every Programmer Should Know"

- Image from "Conway's Game of Life" via Cornell Math Explorers' Club

- MATLAB logo image via MathWorks, R logo image via The R Foundation

- Poster for Tron ©1982 Disney, image via IMDb

References