Programming across Paradigms - GOTO Conference · programming requires the continuing invention and...
Transcript of Programming across Paradigms - GOTO Conference · programming requires the continuing invention and...
![Page 1: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/1.jpg)
Programming across Paradigms@AnjanaVakil
GOTO Chicago 2017
![Page 2: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/2.jpg)
hi, I’m @AnjanaVakil!The Recurse Center
![Page 3: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/3.jpg)
1978 ACM Turing Award Lecture
![Page 4: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/4.jpg)
“I believe the best chance we have to improve the general practice of programming is to attend to our paradigms.”
Robert W. Floyd“The paradigms of programming.”, 1979. p. 456
![Page 5: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/5.jpg)
what is a paradigm?
![Page 6: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/6.jpg)
![Page 7: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/7.jpg)
a paradigm is a worldview
![Page 8: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/8.jpg)
![Page 9: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/9.jpg)
a paradigm is a model
![Page 10: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/10.jpg)
a paradigm enables progress
![Page 11: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/11.jpg)
“In learning a paradigm the scientist acquires theory, methods, and standards together, usually in an inextricable mixture.”
Thomas S. Kuhn The Structure of Scientific Revolutions, (2nd ed.) 1970. p. 109.
![Page 12: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/12.jpg)
theory
what entities make up the universe how they behave and interact
![Page 13: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/13.jpg)
methods & standards
which problems are worth solvingwhich solutions are legitimate
![Page 14: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/14.jpg)
“All models are wrong”
George E. P. Box"Robustness in the strategy of scientific model building", 1979, p. 202.
![Page 15: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/15.jpg)
paradigm
anomaly
crisis
shift
![Page 16: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/16.jpg)
Scenography of the Ptolemaic cosmography by Loon, J. van (Johannes), ca. 1611–1686. via Wikimedia
![Page 17: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/17.jpg)
Scenographia Systematis Copernicani (The Copernican System), 1686. via Wikimedia
![Page 18: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/18.jpg)
Portrait of Sir Isaac Newton, English School, [c.1715-1720] via Wikimedia
![Page 19: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/19.jpg)
“Einstein in 1947” by Orren Jack Turner via Wikimedia
![Page 20: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/20.jpg)
what are somemajor paradigms?
![Page 21: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/21.jpg)
imperativeprogramming
follow my commands
in the order I give them
remember state
![Page 22: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/22.jpg)
imperativeprogramming
“Clocks Gears Wallpaper” via Wallpoper
![Page 23: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/23.jpg)
C
![Page 24: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/24.jpg)
object-orientedprogramming
keep your state to yourself
receive my messages
respond as you see fit
![Page 25: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/25.jpg)
object-orientedprogramming
“Slide of the Week: Increased WBC, April 14, 2011” via Center for Genomic Pathology
![Page 26: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/26.jpg)
Python
![Page 27: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/27.jpg)
functionalprogramming
mutable state is dangerous
pure functions are safe
data goes indata comes out
![Page 28: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/28.jpg)
functionalprogramming
“2012 Chevrolet Cruze on the production line at Lordstown Assembly in Lordstown, Ohio” via GM
![Page 29: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/29.jpg)
Scheme (Lisp)
![Page 30: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/30.jpg)
declarativeprogramming
these are the facts
this is what I want
I don’t care how you do it
![Page 31: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/31.jpg)
declarativeprogramming
“Sudoku05” by Jelte (CC BY-SA 3.0) via Wikimedia
![Page 32: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/32.jpg)
SQLSELECT isbn, title, price, price * 0.06 AS sales_taxFROM BookWHERE price > 100.00ORDER BY title;
![Page 33: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/33.jpg)
Prologparent_child(juan, ana).parent_child(kim, ana).parent_child(kim, mai).
sibling(X,Y) :- parent_child(Z,X), parent_child(Z,Y).
?- sibling(ana, mai).Yes
![Page 34: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/34.jpg)
https://www.info.ucl.ac.be/~pvr/paradigms.html
![Page 35: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/35.jpg)
what do they havein common?
![Page 36: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/36.jpg)
sharedmutable state
![Page 37: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/37.jpg)
sharedmutable state
![Page 38: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/38.jpg)
shared mutable state
![Page 39: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/39.jpg)
shared mutable state
![Page 40: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/40.jpg)
“I'm sorry that I long ago coined the term "objects" for this topic because it gets many people to focus on the lesser idea. The big idea is "messaging".”
Alan Kay Message to Smalltalk/Squeak mailing list, 1998
![Page 41: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/41.jpg)
thing.do(some,stuff)
![Page 42: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/42.jpg)
recipient message
thing.do(some,stuff)
method name arguments
![Page 43: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/43.jpg)
Ruby
thing.do(some,stuff)
thing.send(:do,some,stuff)
![Page 44: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/44.jpg)
class Friend: def __init__(self, friends): self.friends = friendsdef is_friend_of(self, name):
return name in self.friends
buddy = Friend(['alan', 'alonzo'])buddy.is_friend_of('guy') # False
![Page 45: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/45.jpg)
buddy.is_friend_of('guy')
![Page 46: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/46.jpg)
buddy.is_friend_of('guy')
buddy.send(‘is_friend_of’, 'guy')
![Page 47: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/47.jpg)
buddy.is_friend_of('guy')
buddy.send(‘is_friend_of’, 'guy')
buddy('is_friend_of', 'guy')
![Page 48: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/48.jpg)
def Friend(friend_names):def is_my_friend(name): return name in friend_names
def instance(method, *args):if method == 'is_friend_of':
return is_my_friend(*args) return instance
buddy = Friend(['alan', 'alonzo'])buddy('is_friend_of','guy') # False
![Page 49: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/49.jpg)
class Friend: def __init__(self, friends): self.friends = friendsdef is_friend_of(self, name):
return name in self.friends
buddy = Friend(['alan', 'alonzo'])buddy.is_friend_of('guy') # False
![Page 50: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/50.jpg)
which paradigm isthe best?
![Page 51: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/51.jpg)
“All models are wrong…
George E. P. Box"Robustness in the strategy of scientific model building", 1979, p. 202.
![Page 52: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/52.jpg)
“All models are wrongbut some are useful”
George E. P. Box"Robustness in the strategy of scientific model building", 1979, p. 202.
![Page 53: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/53.jpg)
![Page 54: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/54.jpg)
Each paradigm supports a set of concepts that makes it the best for a certain kind of problem.
Peter Van Roy“Programming paradigms for dummies: What every programmer should know”, 2009, p. 10.
![Page 55: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/55.jpg)
“Is the model true?”“Is the model illuminating and useful?”
George E. P. Box"Robustness in the strategy of scientific model building", 1979, p. 202.
![Page 56: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/56.jpg)
what can a paradigmteach me?
![Page 57: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/57.jpg)
be explicitunderstand implementation
![Page 58: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/58.jpg)
1 # global.py2 for i in range(10**8):3 i
time: 9.185s
1 # in_fn.py2 def run_loop():3 for i in range(10**8):4 i5 run_loop()
time: 5.738s
Adapted from A. Vakil, “Exploring Python Bytecode”, 2015. https://youtu.be/GNPKBICTF2w
![Page 59: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/59.jpg)
1 # global.py2 for i in range(10**8):3 i
time: 9.185s
2 0 SETUP_LOOP 24 (to 27) … 16 STORE_NAME 1 (i)3 19 LOAD_NAME 1 (i) …
1 # in_fn.py2 def run_loop():3 for i in range(10**8):4 i5 run_loop()
time: 5.738s
3 0 SETUP_LOOP 24 (to 27) … 16 STORE_FAST 0 (i) 4 19 LOAD_FAST 0 (i)
…
Adapted from A. Vakil, “Exploring Python Bytecode”, 2015. https://youtu.be/GNPKBICTF2w
![Page 60: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/60.jpg)
be abstractunderstand domain
![Page 61: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/61.jpg)
Embedded DSL in Javacal = new Calendar(); cal.event("GOTO Chicago") .on(2017, 5, 2) .from("09:00") .to("17:00") .at("Swissôtel");
Adapted from M. Fowler & R. Parsons, Domain Specific Languages, 2011, p. 345.
![Page 62: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/62.jpg)
encapsulatecommunicate
![Page 63: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/63.jpg)
Context-aware API in F#module MyApi = let fnA dep1 dep2 dep3 arg1 = doAWith dep1 dep2 dep3 arg1 let fnB dep1 dep2 dep3 arg2 = doBWith dep1 dep2 dep3 arg2
type MyParametricApi(dep1, dep2, dep3) = member __.FnA arg1 = doAWith dep1 dep2 dep3 arg1 member __.FnB arg2 = doBWith dep1 dep2 dep3 arg2
Adapted from E. Tsarpalis, “Why OOP Matters (in F#)”, 2017.
![Page 64: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/64.jpg)
specializetransform data
![Page 65: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/65.jpg)
Adapted from J. Kerr, “Why Functional Matters: Your white board will never be the same”, 2012.
![Page 66: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/66.jpg)
Adapted from J. Kerr, “Why Functional Matters: Your white board will never be the same”, 2012.
![Page 67: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/67.jpg)
no paradigm is best absolutelyeach is best for a certain case
![Page 68: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/68.jpg)
“If the advancement of the general art of programming requires the continuing invention and elaboration of paradigms, ...
Robert W. Floyd“The paradigms of programming.”, 1979. p. 456
![Page 69: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/69.jpg)
“If the advancement of the general art of programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires that [t]he[y] expand [their] repertory of paradigms.”
Robert W. Floyd“The paradigms of programming.”, 1979. p. 456
![Page 70: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/70.jpg)
learn new paradigmstry multi-paradigm languages
![Page 71: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/71.jpg)
what’s the point?
![Page 72: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/72.jpg)
paradigms enable programming
![Page 73: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/73.jpg)
paradigms define programming
![Page 74: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/74.jpg)
don’t fight your paradigm,embrace it
![Page 75: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/75.jpg)
be open to shift
![Page 76: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/76.jpg)
attend to your paradigms
![Page 77: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/77.jpg)
David Albert, Darius Bacon, Julia Evans& the Recurse Center
GOTO Chicago organizers
thank you!@AnjanaVakil
![Page 78: Programming across Paradigms - GOTO Conference · programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires](https://reader034.fdocuments.net/reader034/viewer/2022042803/5f37db35f2980e44771cb15b/html5/thumbnails/78.jpg)
References & further reading/watchingBox, G. E. P. (1979), "Robustness in the strategy of scientific model building", in Launer, R. L.; Wilkinson, G. N., Robustness in Statistics, Academic Press, pp. 201–236.
Floyd, R. W. (1979). “The paradigms of programming.” Commun. ACM 22, 8, 455-460.
Fowler, Martin, with Parsons, Rebecca. (2011). Domain Specific Languages. Addison-Wesley.
Kay, Alan (1998). Message to Smalltalk/Squeak mailing list. wiki.c2.com/?AlanKayOnMessaging
Kerr, Jessica (2012). “Why Functional Matters: Your white board will never be the same”. blog.jessitron.com/2012/06/why-functional-matters-your-white-board.html
Kerr, Jessica (2014). “Functional Principles for Object-Oriented Development”, GOTO Chicago. https://youtu.be/GpXsQ-NIKXY
Kuhn, Thomas S. (1970). The Structure of Scientific Revolutions. (2nd ed.). University of Chicago Press.
Tsarpalis, Eirik. (2017). “Why OO matters (in F#)”. https://eiriktsarpalis.wordpress.com/2017/03/20/why-oo-matters-in-f/
Van Roy, Peter. (2009). “Programming paradigms for dummies: What every programmer should know.” In New computational paradigms for computer music, p. 104.
Williams, Ashley. (2015). “If you wish to learn ES6/2015 from scratch, you must first invent the universe”, JSConf. https://youtu.be/DN4yLZB1vUQ