tales from the workshops
TRANSCRIPT
![Page 1: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/1.jpg)
Copyright © 2015 Russel Winder 1
Tales from the Workshops
Dr Russel Winder
email: [email protected]: @russel_winder
Web: http://www.russel.org.uk
![Page 2: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/2.jpg)
Copyright © 2015 Russel Winder 2
Agile is the new black.
![Page 3: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/3.jpg)
Copyright © 2015 Russel Winder 3
Aims, goals, objectives…
![Page 4: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/4.jpg)
Copyright © 2015 Russel Winder 4
Aims, goals, objectives…● Explore some experiences teaching new programming languages to programmers.
● Try and find some signposts to PPIG type things.
![Page 5: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/5.jpg)
Copyright © 2015 Russel Winder 5
Agile is passé?
![Page 6: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/6.jpg)
Copyright © 2015 Russel Winder 6
Structure
BeginningMiddleEnd
![Page 7: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/7.jpg)
Copyright © 2015 Russel Winder 7
Personal Path
FORTRANAssembly languageAlgol-68PascalC
PrologSchemeC++MirandaJavaFortranHaskell
Modula-2JavaPythonClean
FortressX10Chapel
GroovyDScala
C#ClojureGoCeylonKotlinRustFrege
![Page 8: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/8.jpg)
Copyright © 2015 Russel Winder 8
The University Years
![Page 9: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/9.jpg)
Copyright © 2015 Russel Winder 9
![Page 10: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/10.jpg)
Copyright © 2015 Russel Winder 10
Dungeons and Dragons● AD&D obviously, not D&D.● Student projects often in C, not a good language for writing these games and tools.
Pascal past its “use by” date.Lisp might have been useful.Pascal past its “use by” date.Lisp might have been useful.
![Page 11: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/11.jpg)
Copyright © 2015 Russel Winder 11
MMORPG● MUD, and the like…● Game description languages…● Domain Specific Language (DSLs) especially internal rather than external.
It's all about abstraction, tokens,and programming activity.
![Page 12: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/12.jpg)
Copyright © 2015 Russel Winder 12
e.g. Python● For:
– Boundediteration
● While:– Unboundediteration
● Functions:– Activity token
● Classes:– Object factory.
It's all about abstraction, tokens,and programming activity.
![Page 13: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/13.jpg)
Copyright © 2015 Russel Winder 13
![Page 14: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/14.jpg)
Copyright © 2015 Russel Winder 14
BCS HCI SG● Humans as part of systems.● Creating good Uis, with good UX.● Software development tools and the coming of IDEs.
As opposed to UNIX philosophyof OS, shell, and tools.
![Page 15: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/15.jpg)
Copyright © 2015 Russel Winder 15
Undergraduates● Polyglot approach:
– Scheme then C++– Miranda then C++
● Monoculture:– Java
The role of REPLs.
Wot no Python?
![Page 16: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/16.jpg)
Copyright © 2015 Russel Winder 16
Postgraduates● Mentor do not supervise.● Philosophy matters.● Computational models, operational semantics, and declarative semantics are critical.
![Page 17: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/17.jpg)
Copyright © 2015 Russel Winder 17
A Language War
FunctionalVs.
Object-oriented
![Page 18: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/18.jpg)
Copyright © 2015 Russel Winder 18
The Start-up Years
![Page 19: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/19.jpg)
Copyright © 2015 Russel Winder 19
Languages● Realizing a novel low-level machine.● C, (C++), Java.● Python for driving integration and system tests of the C codes.
![Page 20: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/20.jpg)
Copyright © 2015 Russel Winder 20
Mentor not Manage● Self-directing teams.
Agile before Agile.
Best thinkers/software designersnot always the best programmers.
![Page 21: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/21.jpg)
Copyright © 2015 Russel Winder 21
O
![Page 22: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/22.jpg)
Copyright © 2015 Russel Winder 22
The Last 10 Years
![Page 23: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/23.jpg)
Copyright © 2015 Russel Winder 23
![Page 24: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/24.jpg)
Copyright © 2015 Russel Winder 24
![Page 25: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/25.jpg)
Copyright © 2015 Russel Winder 25
The Workshops● Introducing a programming language to programmers used to other programming languages.
● Taking programmers who “sort of” know a programming language much further into that programming language.
![Page 26: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/26.jpg)
Copyright © 2015 Russel Winder 26
Introduction to topic with relevant examples.
Pair working on some related problems.
Mob working or leader led live coding.
![Page 27: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/27.jpg)
Copyright © 2015 Russel Winder 27
Adults…● …do not feel playing with things is right.● …feel they have to construct without error rather than try and (fail | succeed).
● …worry they should not have fun.
Happy, smiling peopletend to learn more?
![Page 28: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/28.jpg)
Copyright © 2015 Russel Winder 28
Problems…● …small enough to be completed; or● …small changes in a big code base.
Developmentvs.
Maintenance.
![Page 29: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/29.jpg)
Copyright © 2015 Russel Winder 29
Programmers…● …cannot seem to do as much as they think they can in 40mins.
● …seem not to know as much as they (think | should).
![Page 30: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/30.jpg)
Copyright © 2015 Russel Winder 30
Pairing…● …can be hard to get programmers to do.● …increases the energy in workshops.● …leads to more fun, and less stress about getting things wrong.
Happy, smiling peopletend to learn more?
![Page 31: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/31.jpg)
Copyright © 2015 Russel Winder 31
Feedback…● …is crucial to learning.● …must be integral to workshop structure, both individual and group.
![Page 32: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/32.jpg)
Copyright © 2015 Russel Winder 32
Introduction to topic with relevant examples.
Pair working on some related problems.
Mob working or leader led live coding.
![Page 33: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/33.jpg)
Copyright © 2015 Russel Winder 33
A Language War
Statically typedVs.
Dynamically typed
![Page 34: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/34.jpg)
Copyright © 2015 Russel Winder 34
Static languages…● …compiler support for type checking.● …compiler generated, ahead of time optimized code.
● …strong IDE support.
![Page 35: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/35.jpg)
Copyright © 2015 Russel Winder 35
Dynamic Languages…● …interpreted or bytecode compiled.● …slower (but…).● …hard for IDE to give excellent support.● …generally use “duck typing”.
![Page 36: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/36.jpg)
Copyright © 2015 Russel Winder 36
![Page 37: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/37.jpg)
Copyright © 2015 Russel Winder 37
![Page 38: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/38.jpg)
Copyright © 2015 Russel Winder 38
![Page 39: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/39.jpg)
Copyright © 2015 Russel Winder 39
![Page 40: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/40.jpg)
Copyright © 2015 Russel Winder 40
![Page 41: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/41.jpg)
Copyright © 2015 Russel Winder 41
![Page 42: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/42.jpg)
Copyright © 2015 Russel Winder 42
![Page 43: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/43.jpg)
Copyright © 2015 Russel Winder 43
![Page 44: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/44.jpg)
Copyright © 2015 Russel Winder 44
Dynamic Objects● An object has no “defined for all runtime” interface.
● An object's interface can only be determed at run time, and may change immediately after being checked.
![Page 45: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/45.jpg)
Copyright © 2015 Russel Winder 45
Duck Typing● If an object has a particular method at the moment of being asked to execute that method, then the object must be of the right type.
![Page 46: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/46.jpg)
Copyright © 2015 Russel Winder 46
The Points…● …some programmers, used to statically typed languages, cannot cope with dynamically types ones.
● …IDEs have a hard time giving programmers the support expected from the statically type language experience.
![Page 47: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/47.jpg)
Copyright © 2015 Russel Winder 47
![Page 48: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/48.jpg)
Copyright © 2015 Russel Winder 48
What is the value of ? π
![Page 49: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/49.jpg)
Copyright © 2015 Russel Winder 49
It's simples. Александр Орлов 2009
![Page 50: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/50.jpg)
Copyright © 2015 Russel Winder 50
Programmers…● …generally do not know as much about floating point hardware as they (think | should).
![Page 51: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/51.jpg)
Copyright © 2015 Russel Winder 51
Programmers…● …generally know less about concurrency and parallelism that they (think | should).
![Page 52: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/52.jpg)
Copyright © 2015 Russel Winder 52
IDEs…● …make development much easier for some.● …definitely work better with static languages.
● …appear to be enforcing static typing.
![Page 53: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/53.jpg)
Copyright © 2015 Russel Winder 53
Python● Even the doyen of dynamic languages is investigating type hinting, cf. PEP 484 and MyPy.
![Page 54: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/54.jpg)
Copyright © 2015 Russel Winder 54
Groovy…● …is an optionally typed language.● Can use it fully dynamic or with run time checked types.
● Or with annotations, as a statically type checked, and even compiled, language.
![Page 55: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/55.jpg)
Copyright © 2015 Russel Winder 55
![Page 56: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/56.jpg)
Copyright © 2015 Russel Winder 56
![Page 57: Tales from the Workshops](https://reader030.vdocument.in/reader030/viewer/2022032506/55cc7352bb61eb2f538b4612/html5/thumbnails/57.jpg)
Copyright © 2015 Russel Winder 57
Tales from the Workshops
Dr Russel Winder
email: [email protected]: @russel_winder
Web: http://www.russel.org.uk