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.

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: [email protected] twitter: @russel_winder Web: http://www.russel.org.uk
  2. 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.
  3. 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
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. Copyright © 2015 Russel Winder 15 Undergraduates • Polyglot approach:

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

    not supervise. • Philosophy matters. • Computational models, operational semantics, and declarative semantics are critical.
  10. 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.
  11. Copyright © 2015 Russel Winder 20 Mentor not Manage •

    Self-directing teams. Agile before Agile. Best thinkers/software designers not always the best programmers.
  12. 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.
  13. Copyright © 2015 Russel Winder 26 Introduction to topic with

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

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

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

    relevant examples. Pair working on some related problems. Mob working or leader led live coding.
  20. Copyright © 2015 Russel Winder 34 Static languages… • …compiler

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

    or bytecode compiled. • …slower (but…). • …hard for IDE to give excellent support. • …generally use “duck typing”.
  22. 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.
  23. 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.
  24. 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.
  25. Copyright © 2015 Russel Winder 50 Programmers… • …generally do

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

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

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

    doyen of dynamic languages is investigating type hinting, cf. PEP 484 and MyPy.
  29. 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.
  30. Copyright © 2015 Russel Winder 57 Tales from the Workshops

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