Top Banner
Copyright © 2015 Russel Winder 1 Tales from the Workshops Dr Russel Winder email: [email protected] twitter: @russel_winder Web: http://www.russel.org.uk
57
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Tales from the Workshops

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

Copyright © 2015 Russel Winder 2

Agile is the new black.

Page 3: Tales from the Workshops

Copyright © 2015 Russel Winder 3

Aims, goals, objectives…

Page 4: Tales from the Workshops

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

Copyright © 2015 Russel Winder 5

Agile is passé?

Page 6: Tales from the Workshops

Copyright © 2015 Russel Winder 6

Structure

BeginningMiddleEnd

Page 7: Tales from the Workshops

Copyright © 2015 Russel Winder 7

Personal Path

FORTRANAssembly languageAlgol-68PascalC

PrologSchemeC++MirandaJavaFortranHaskell

Modula-2JavaPythonClean

FortressX10Chapel

GroovyDScala

C#ClojureGoCeylonKotlinRustFrege

Page 8: Tales from the Workshops

Copyright © 2015 Russel Winder 8

The University Years

Page 9: Tales from the Workshops

Copyright © 2015 Russel Winder 9

Page 10: Tales from the Workshops

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

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

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

Copyright © 2015 Russel Winder 13

Page 14: Tales from the Workshops

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

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

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

Copyright © 2015 Russel Winder 17

A Language War

FunctionalVs.

Object-oriented

Page 18: Tales from the Workshops

Copyright © 2015 Russel Winder 18

The Start-up Years

Page 19: Tales from the Workshops

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

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

Copyright © 2015 Russel Winder 21

O

Page 22: Tales from the Workshops

Copyright © 2015 Russel Winder 22

The Last 10 Years

Page 23: Tales from the Workshops

Copyright © 2015 Russel Winder 23

Page 24: Tales from the Workshops

Copyright © 2015 Russel Winder 24

Page 25: Tales from the Workshops

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

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

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

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

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

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

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

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

Copyright © 2015 Russel Winder 33

A Language War

Statically typedVs.

Dynamically typed

Page 34: Tales from the Workshops

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

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

Copyright © 2015 Russel Winder 36

Page 37: Tales from the Workshops

Copyright © 2015 Russel Winder 37

Page 38: Tales from the Workshops

Copyright © 2015 Russel Winder 38

Page 39: Tales from the Workshops

Copyright © 2015 Russel Winder 39

Page 40: Tales from the Workshops

Copyright © 2015 Russel Winder 40

Page 41: Tales from the Workshops

Copyright © 2015 Russel Winder 41

Page 42: Tales from the Workshops

Copyright © 2015 Russel Winder 42

Page 43: Tales from the Workshops

Copyright © 2015 Russel Winder 43

Page 44: Tales from the Workshops

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

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

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

Copyright © 2015 Russel Winder 47

Page 48: Tales from the Workshops

Copyright © 2015 Russel Winder 48

What is the value of ? π

Page 49: Tales from the Workshops

Copyright © 2015 Russel Winder 49

It's simples. Александр Орлов 2009

Page 50: Tales from the Workshops

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

Copyright © 2015 Russel Winder 51

Programmers…● …generally know less about concurrency and parallelism that they (think | should).

Page 52: Tales from the Workshops

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

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

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

Copyright © 2015 Russel Winder 55

Page 56: Tales from the Workshops

Copyright © 2015 Russel Winder 56

Page 57: Tales from the Workshops

Copyright © 2015 Russel Winder 57

Tales from the Workshops

Dr Russel Winder

email: [email protected]: @russel_winder

Web: http://www.russel.org.uk