Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Tales from the Workshops

Tales from the Workshops

Keynote presentation at PPIG 2015, Bournemouth 2015-07-17.

Presenting experiences of running workshops for programmers to learn new programming languages, and programmers to improve knowledge of programming languages they already use, with an emphasis and feeding ideas and questions into the psychology of programming community.

Ca04455902d1b207348b6d406432718f?s=128

Russel Winder

July 17, 2015
Tweet

More Decks by Russel Winder

Other Decks in Science

Transcript

  1. Copyright © 2015 Russel Winder 1 Tales from the Workshops

    Dr Russel Winder email: russel@winder.org.uk twitter: @russel_winder Web: http://www.russel.org.uk
  2. Copyright © 2015 Russel Winder 2 Agile is the new

    black.
  3. Copyright © 2015 Russel Winder 3 Aims, goals, objectives…

  4. 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.
  5. Copyright © 2015 Russel Winder 5 Agile is passé?

  6. Copyright © 2015 Russel Winder 6 Structure Beginning Middle End

  7. Copyright © 2015 Russel Winder 7 Personal Path FORTRAN Assembly

    language Algol-68 Pascal C Prolog Scheme C++ Miranda Java Fortran Haskell Modula-2 Java Python Clean Fortress X10 Chapel Groovy D Scala C# Clojure Go Ceylon Kotlin Rust Frege
  8. Copyright © 2015 Russel Winder 8 The University Years

  9. Copyright © 2015 Russel Winder 9

  10. 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.
  11. 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.
  12. Copyright © 2015 Russel Winder 12 e.g. Python • For:

    – Bounded iteration • While: – Unbounded iteration • Functions: – Activity token • Classes: – Object factory. It's all about abstraction, tokens, and programming activity.
  13. Copyright © 2015 Russel Winder 13

  14. 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 philosophy of OS, shell, and tools.
  15. Copyright © 2015 Russel Winder 15 Undergraduates • Polyglot approach:

    – Scheme then C++ – Miranda then C++ • Monoculture: – Java The role of REPLs. Wot no Python?
  16. Copyright © 2015 Russel Winder 16 Postgraduates • Mentor do

    not supervise. • Philosophy matters. • Computational models, operational semantics, and declarative semantics are critical.
  17. Copyright © 2015 Russel Winder 17 A Language War Functional

    Vs. Object-oriented
  18. Copyright © 2015 Russel Winder 18 The Start-up Years

  19. 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.
  20. Copyright © 2015 Russel Winder 20 Mentor not Manage •

    Self-directing teams. Agile before Agile. Best thinkers/software designers not always the best programmers.
  21. Copyright © 2015 Russel Winder 21 O

  22. Copyright © 2015 Russel Winder 22 The Last 10 Years

  23. Copyright © 2015 Russel Winder 23

  24. Copyright © 2015 Russel Winder 24

  25. 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.
  26. Copyright © 2015 Russel Winder 26 Introduction to topic with

    relevant examples. Pair working on some related problems. Mob working or leader led live coding.
  27. 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 people tend to learn more?
  28. Copyright © 2015 Russel Winder 28 Problems… • …small enough

    to be completed; or • …small changes in a big code base. Development vs. Maintenance.
  29. 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).
  30. 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 people tend to learn more?
  31. Copyright © 2015 Russel Winder 31 Feedback… • …is crucial

    to learning. • …must be integral to workshop structure, both individual and group.
  32. Copyright © 2015 Russel Winder 32 Introduction to topic with

    relevant examples. Pair working on some related problems. Mob working or leader led live coding.
  33. Copyright © 2015 Russel Winder 33 A Language War Statically

    typed Vs. Dynamically typed
  34. Copyright © 2015 Russel Winder 34 Static languages… • …compiler

    support for type checking. • …compiler generated, ahead of time optimized code. • …strong IDE support.
  35. Copyright © 2015 Russel Winder 35 Dynamic Languages… • …interpreted

    or bytecode compiled. • …slower (but…). • …hard for IDE to give excellent support. • …generally use “duck typing”.
  36. Copyright © 2015 Russel Winder 36

  37. Copyright © 2015 Russel Winder 37

  38. Copyright © 2015 Russel Winder 38

  39. Copyright © 2015 Russel Winder 39

  40. Copyright © 2015 Russel Winder 40

  41. Copyright © 2015 Russel Winder 41

  42. Copyright © 2015 Russel Winder 42

  43. Copyright © 2015 Russel Winder 43

  44. 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.
  45. 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.
  46. 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.
  47. Copyright © 2015 Russel Winder 47

  48. Copyright © 2015 Russel Winder 48 What is the value

    of ? π
  49. Copyright © 2015 Russel Winder 49 It's simples. Александр Орлов

    2009
  50. Copyright © 2015 Russel Winder 50 Programmers… • …generally do

    not know as much about floating point hardware as they (think | should).
  51. Copyright © 2015 Russel Winder 51 Programmers… • …generally know

    less about concurrency and parallelism that they (think | should).
  52. Copyright © 2015 Russel Winder 52 IDEs… • …make development

    much easier for some. • …definitely work better with static languages. • …appear to be enforcing static typing.
  53. Copyright © 2015 Russel Winder 53 Python • Even the

    doyen of dynamic languages is investigating type hinting, cf. PEP 484 and MyPy.
  54. 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.
  55. Copyright © 2015 Russel Winder 55

  56. Copyright © 2015 Russel Winder 56

  57. Copyright © 2015 Russel Winder 57 Tales from the Workshops

    Dr Russel Winder email: russel@winder.org.uk twitter: @russel_winder Web: http://www.russel.org.uk