dr russel winder - psychology of programming · copyright © 2015 russel winder 57 tales from the...

57
Copyright © 2015 Russel Winder 1 Tales from the Workshops Dr Russel Winder email: [email protected] twitter: @russel_winder Web: http://www.russel.org.uk

Upload: others

Post on 29-May-2020

17 views

Category:

Documents


0 download

TRANSCRIPT

Copyright © 2015 Russel Winder 1

Tales from the Workshops

Dr Russel Winder

email: [email protected]: @russel_winder

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

Copyright © 2015 Russel Winder 2

Agile is the new black.

Copyright © 2015 Russel Winder 3

Aims, goals, objectives…

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.

Copyright © 2015 Russel Winder 5

Agile is passé?

Copyright © 2015 Russel Winder 6

Structure

BeginningMiddleEnd

Copyright © 2015 Russel Winder 7

Personal Path

FORTRANAssembly languageAlgol-68PascalC

PrologSchemeC++MirandaJavaFortranHaskell

Modula-2JavaPythonClean

FortressX10Chapel

GroovyDScala

C#ClojureGoCeylonKotlinRustFrege

Copyright © 2015 Russel Winder 8

The University Years

Copyright © 2015 Russel Winder 9

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.

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.

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.

Copyright © 2015 Russel Winder 13

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.

Copyright © 2015 Russel Winder 15

Undergraduates● Polyglot approach:

– Scheme then C++– Miranda then C++

● Monoculture:– Java

The role of REPLs.

Wot no Python?

Copyright © 2015 Russel Winder 16

Postgraduates● Mentor do not supervise.● Philosophy matters.● Computational models, operational semantics, and declarative semantics are critical.

Copyright © 2015 Russel Winder 17

A Language War

FunctionalVs.

Object-oriented

Copyright © 2015 Russel Winder 18

The Start-up Years

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.

Copyright © 2015 Russel Winder 20

Mentor not Manage● Self-directing teams.

Agile before Agile.

Best thinkers/software designersnot always the best programmers.

Copyright © 2015 Russel Winder 21

O

Copyright © 2015 Russel Winder 22

The Last 10 Years

Copyright © 2015 Russel Winder 23

Copyright © 2015 Russel Winder 24

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.

Copyright © 2015 Russel Winder 26

Introduction to topic with relevant examples.

Pair working on some related problems.

Mob working or leader led live coding.

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?

Copyright © 2015 Russel Winder 28

Problems…● …small enough to be completed; or● …small changes in a big code base.

Developmentvs.

Maintenance.

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).

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?

Copyright © 2015 Russel Winder 31

Feedback…● …is crucial to learning.● …must be integral to workshop structure, both individual and group.

Copyright © 2015 Russel Winder 32

Introduction to topic with relevant examples.

Pair working on some related problems.

Mob working or leader led live coding.

Copyright © 2015 Russel Winder 33

A Language War

Statically typedVs.

Dynamically typed

Copyright © 2015 Russel Winder 34

Static languages…● …compiler support for type checking.● …compiler generated, ahead of time optimized code.

● …strong IDE support.

Copyright © 2015 Russel Winder 35

Dynamic Languages…● …interpreted or bytecode compiled.● …slower (but…).● …hard for IDE to give excellent support.● …generally use “duck typing”.

Copyright © 2015 Russel Winder 36

Copyright © 2015 Russel Winder 37

Copyright © 2015 Russel Winder 38

Copyright © 2015 Russel Winder 39

Copyright © 2015 Russel Winder 40

Copyright © 2015 Russel Winder 41

Copyright © 2015 Russel Winder 42

Copyright © 2015 Russel Winder 43

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.

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.

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.

Copyright © 2015 Russel Winder 47

Copyright © 2015 Russel Winder 48

What is the value of ? π

Copyright © 2015 Russel Winder 49

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

Copyright © 2015 Russel Winder 50

Programmers…● …generally do not know as much about floating point hardware as they (think | should).

Copyright © 2015 Russel Winder 51

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

Copyright © 2015 Russel Winder 52

IDEs…● …make development much easier for some.● …definitely work better with static languages.

● …appear to be enforcing static typing.

Copyright © 2015 Russel Winder 53

Python● Even the doyen of dynamic languages is investigating type hinting, cf. PEP 484 and MyPy.

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.

Copyright © 2015 Russel Winder 55

Copyright © 2015 Russel Winder 56

Copyright © 2015 Russel Winder 57

Tales from the Workshops

Dr Russel Winder

email: [email protected]: @russel_winder

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