Tales from the Workshops

Similar documents
Static Typing or Dynamic Typing: A Real Issue or a Simple Case of Tribalism

Closing the Case for Groovy (and Ruby, and Python)

Compiler Design Spring 2018

1. true / false By a compiler we mean a program that translates to code that will run natively on some machine.

A Tour of Language Implementation

COP4020 Programming Languages. Compilers and Interpreters Robert van Engelen & Chris Lacher

Systems I: Programming Abstractions

Scripted Components: Problem. Scripted Components. Problems with Components. Single-Language Assumption. Dr. James A. Bednar

Scripted Components Dr. James A. Bednar

Concepts in Programming Languages

Lecture 15: Iteration and Recursion

Programming Language Concepts 1982, 1987, Outline. Period

Topic I. Introduction and motivation References: Chapter 1 of Concepts in programming languages by J. C. Mitchell. CUP, 2003.

8/27/17. CS-3304 Introduction. What will you learn? Semester Outline. Websites INTRODUCTION TO PROGRAMMING LANGUAGES

Semantic Analysis. Outline. The role of semantic analysis in a compiler. Scope. Types. Where we are. The Compiler Front-End

General Concepts. Abstraction Computational Paradigms Implementation Application Domains Influence on Success Influences on Design

CS 3304 Comparative Languages. Lecture 1: Introduction

The Rise and Rise of Dataflow in the JavaVerse

Programming (Econometrics)

Seminar in Programming Languages

The role of semantic analysis in a compiler

Low-Level Languages. Computer Programs and Programming Languages

LECTURE 2. Compilers and Interpreters

Logic Programming II & Revision

Compilers. Prerequisites

CS 415 Midterm Exam Spring 2002

Programming Languages 2nd edition Tucker and Noonan"

SKILL AREA 304: Review Programming Language Concept. Computer Programming (YPG)

Programming (ERIM) Lecture 1: Introduction to programming paradigms and typing systems. Tommi Tervonen

Why are there so many programming languages? Why do we have programming languages? What is a language for? What makes a language successful?

All you need is fun. Cons T Åhs Keeper of The Code

Introduction to Scientific Computing Languages

Compilation I. Hwansoo Han

Introduction to Scientific Computing Languages

Semantic Analysis. Outline. The role of semantic analysis in a compiler. Scope. Types. Where we are. The Compiler so far

Lecture 4 Memory Management

What Is Computer Science? The Scientific Study of Computation. Expressing or Describing

A polyglot day: learning from language paradigms. Benson Joeris Kathleen Dollard


CS2303 C14 Systems Programming Concepts. Bob Kinicki

Topic 9: Type Checking

Topic 9: Type Checking

CS558 Programming Languages

Lecture 1. Introduction to course, Welcome to Engineering, What is Programming and Why is this the first thing being covered in Engineering?

Chapter 3:: Names, Scopes, and Bindings (cont.)

Python for Earth Scientists

Stop coding Pascal. Saturday, April 6, 13

Principles in Programming: Orientation & Lecture 1. SWE2004: Principles in Programming Spring 2014 Euiseong Seo

Lisp History. Lisp and Prolog Background. Lisp Use. Lisp Availability

Week 2: The Clojure Language. Background Basic structure A few of the most useful facilities. A modernized Lisp. An insider's opinion

LESSON 13: LANGUAGE TRANSLATION

Seminar on Languages for Scientific Computing Aachen, 6 Feb Navid Abbaszadeh.

CS 242. Fundamentals. Reading: See last slide

INSTITUTE OF AERONAUTICAL ENGINEERING

Chapter 9. Introduction to High-Level Language Programming. INVITATION TO Computer Science

Concepts of Programming Languages

CS558 Programming Languages

Programming Languages, Summary CSC419; Odelia Schwartz

Early computers (1940s) cost millions of dollars and were programmed in machine language. less error-prone method needed

CSc 372 Comparative Programming Languages

Introduction. CS 2210 Compiler Design Wonsun Ahn

From High Level to Machine Code. Compilation Overview. Computer Programs

9/5/17. The Design and Implementation of Programming Languages. Compilation. Interpretation. Compilation vs. Interpretation. Hybrid Implementation

Senthil Kumaran S

CS 11 Haskell track: lecture 1

Programming Language Concepts, cs2104 Lecture 01 ( )

Chapter 3:: Names, Scopes, and Bindings (cont.)

A Pragmatic Case For. Static Typing

Compiling and Interpreting Programming. Overview of Compilers and Interpreters

Principles of Programming Languages. Lecture Outline

Elements of Computers and Programming Dr. William C. Bulko. What is a Computer?

An Introduc+on to Computers and Java CSC 121 Spring 2017 Howard Rosenthal

Compilers and interpreters

Lecture 1: Course Introduction

Functional Languages. CSE 307 Principles of Programming Languages Stony Brook University

! Broaden your language horizons! Different programming languages! Different language features and tradeoffs. ! Study how languages are implemented

Principles in Programming: Orientation & Lecture 1. SWE2004: Principles in Programming Spring 2015 Euiseong Seo

Overview. Rationale Division of labour between script and C++ Choice of language(s) Interfacing to C++ Performance, memory

Chapter 5 Names, Binding, Type Checking and Scopes

Type Inference. Prof. Clarkson Fall Today s music: Cool, Calm, and Collected by The Rolling Stones

Comp 333: Concepts of Programming Languages Fall 2016

Compiler Construction

Lecture 1: Course Introduction

Chapter 11 Introduction to Programming in C

Kotlin for Android Developers

TYPES OF PROGRAMMING LANGUAGES

CSC 326H1F, Fall Programming Languages. What languages do you know? Instructor: Ali Juma. A survey of counted loops: FORTRAN

Outline. Programming Languages 1/16/18 PROGRAMMING LANGUAGE FOUNDATIONS AND HISTORY. Current

Types. Chapter Six Modern Programming Languages, 2nd ed. 1

Programming Paradigms

Chapter 5. Names, Bindings, and Scopes

CSc 520 Principles of Programming Languages. 26 : Control Structures Introduction

CS383 PROGRAMMING LANGUAGES. Kenny Q. Zhu Dept. of Computer Science Shanghai Jiao Tong University

Chapter 1. Preliminaries

The current topic: Python. Announcements. Python. Python

Why are there so many programming languages?

Lecture 16: Static Semantics Overview 1

Modern Stored Procedures Using GraalVM

15-411/ Compiler Design

Hi! My name is Sorin. Programming Languages. Why study PL? (discussion) Why study PL? Course Goals. CSE : Fall 2017

Transcription:

Tales from the Workshops Dr Russel Winder email: russel@winder.org.uk twitter: @russel_winder Web: http://www.russel.org.uk 1

Agile is the new black. 2

Aims, goals, objectives 3

Aims, goals, objectives Explore some experiences teaching new programming languages to programmers. Try and find some signposts to PPIG type things. 4

Agile is passé? 5

Structure Beginning Middle End 6

Personal Path FORTRAN Assembly language Algol-68 Pascal C Prolog Modula-2 Scheme Java C++ Python Miranda Clean Java Fortran Haskell Fortress X10 Chapel C# Clojure Groovy D Scala Go Ceylon Kotlin Rust Frege 7

The University Years 8

9

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

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

e.g. Python For: Bounded iteration While: Unbounded iteration Functions: Activity token Classes: Object factory. It's all about abstraction, tokens, and programming activity. 12

13

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

Undergraduates Polyglot approach: Scheme then C++ Miranda then C++ Monoculture: Java Wot no Python? The role of REPLs. 15

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

A Language War Functional Vs. Object-oriented 17

The Start-up Years 18

Languages Realizing a novel low-level machine. C, (C++), Java. Python for driving integration and system tests of the C codes. 19

Mentor not Manage Self-directing teams. Best thinkers/software designers not always the best programmers. Agile before Agile. 20

O 21

The Last 10 Years 22

23

24

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

Introduction to topic with relevant examples. Pair working on some related problems. Mob working or leader led live coding. 26

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? 27

Problems small enough to be completed; or small changes in a big code base. Development vs. Maintenance. 28

Programmers cannot seem to do as much as they think they can in 40mins. seem not to know as much as they (think should). 29

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? 30

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

Introduction to topic with relevant examples. Pair working on some related problems. Mob working or leader led live coding. 32

A Language War Statically typed Vs. Dynamically typed 33

Static languages compiler support for type checking. compiler generated, ahead of time optimized code. strong IDE support. 34

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

36

37

38

39

40

41

42

43

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

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

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

47

What is the value of π? 48

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

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

Programmers generally know less about concurrency and parallelism that they (think should). 51

IDEs make development much easier for some. definitely work better with static languages. appear to be enforcing static typing. 52

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

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

55

56

Tales from the Workshops Dr Russel Winder email: russel@winder.org.uk twitter: @russel_winder Web: http://www.russel.org.uk 57