The Programming Experience: Beyond Language Gilad Bracha Google - - PowerPoint PPT Presentation

the programming experience beyond language
SMART_READER_LITE
LIVE PREVIEW

The Programming Experience: Beyond Language Gilad Bracha Google - - PowerPoint PPT Presentation

The Programming Experience: Beyond Language Gilad Bracha Google What are Programming Languages for? What are Programming Languages for? For building programs How do you Build a Program? How do you Build a Program? With a Programming


slide-1
SLIDE 1

The Programming Experience: Beyond Language

Gilad Bracha Google

slide-2
SLIDE 2

What are Programming Languages for?

slide-3
SLIDE 3

What are Programming Languages for?

For building programs

slide-4
SLIDE 4

How do you Build a Program?

slide-5
SLIDE 5

How do you Build a Program?

With a Programming Language?

slide-6
SLIDE 6

How do you Build a Program?

No, with an Editor

slide-7
SLIDE 7

How do you Build a Program?

No, with an Editor & a Programming Language

slide-8
SLIDE 8

How do you Build a Program?

No, with an Editor & a Programming Language & a Compiler/Interpreter

slide-9
SLIDE 9

How do you Build a Program?

No, with an Editor & a Programming Language & a Compiler/Interpreter & a Debugger, a Profiler …

slide-10
SLIDE 10

How do you Build a Program?

With Tools

slide-11
SLIDE 11

Tools are no more “just engineering” than languages and compilers Tools enhance productivity Tools interact with language design There are real issues of performance and design

Tools are a Legitimate Research Area

slide-12
SLIDE 12

Foucault, referencing Derida

“Il n'y a rien en dehors du text”

A Literate Tradition

slide-13
SLIDE 13

Is There Nothing Outside the Text?

Actual programming is more than just text Languages do not exist in a vacuum. Languages are part of a broader experience, dependent on quality of implementation, libraries, tools and support Once upon a time, we knew this

slide-14
SLIDE 14

An Empirical Tradition (loop (print (eval (read))))

slide-15
SLIDE 15

BASIC Interactivity

slide-16
SLIDE 16

Beyond the REPL

REPLs still focus on text, but they are a first step moving from text to experience

slide-17
SLIDE 17

Smalltalk: The Alto

slide-18
SLIDE 18

Lisp Machines

slide-19
SLIDE 19

Integrating the Traditions

Experience requires more than mathematics; more than electrical engineering. It requires psychology, and even art

slide-20
SLIDE 20

Architecture & Programming Languages

Neither is science Neither is pure art Neither is pure engineering Each combines art & engineering.

slide-21
SLIDE 21

Novelty & Utility

New knowledge is the name of the game in science In engineering, utility is more important than novelty In art, novelty can be the incarnation of new knowledge, or mere fashion In PLs, as in architecture, both matter

slide-22
SLIDE 22

What are Programs for?

slide-23
SLIDE 23

What are Programs for?

For modeling real or imaginary worlds

slide-24
SLIDE 24

What are Programs for?

For modeling real or imaginary worlds

slide-25
SLIDE 25

Beyond Language: Snapshots and the Sea of Objects

What matters is the live process, not just the text One must be able to save the process and restore it Quickly and reliably The saved process should be portable and shareable

slide-26
SLIDE 26

Explore & Modify the Heap

Things you can’t do without the right primitives become: allInstances

slide-27
SLIDE 27

Language Still Matters

slide-28
SLIDE 28

Language Still Matters

The sea of objects is landlocked It is really hard to move an object from one sea to another Objects are hard to serialize - we need values If we want to share programs, language text is valuable

slide-29
SLIDE 29

Language & Snapshots can Cohabit

Smalltalk can be separated from the image model We did it in Strongtalk 20 years ago Even more so in Newspeak Images are good in as much as they provide a great experience http://gbracha.blogspot.com/2009/10/image- problem.html

slide-30
SLIDE 30

Language Still Matters

The sea of objects is landlocked There is no such thing as an “interpreted language”.

slide-31
SLIDE 31

Language Still Matters

Phrases like “interpreted language” make no sense. Ditto a “compiled language”.

slide-32
SLIDE 32

Language Still Matters

Phrases like “interpreted language” make no sense. Ditto a “compiled language”. Or even “dynamic language” or “static language”.

slide-33
SLIDE 33

A Static Language

slide-34
SLIDE 34

Experience Dominates

Interpreted language - a language whose main implementations are interpreted Compiled language - a language whose main implementations are compiled Dynamic language - a language whose program texts may be dynamic Static language - a language that isn’t dynamic

slide-35
SLIDE 35

Language Still Matters

The sea of objects is landlocked There is no such thing as an “interpreted language”. Types can be useful

slide-36
SLIDE 36

There is Work to be Done

slide-37
SLIDE 37

1

slide-38
SLIDE 38

Ampleforth : Live Literate Programming

Issues: namespaces and versions Better text processing tools See Eve

slide-39
SLIDE 39

2

slide-40
SLIDE 40

Code and Data

Editors, class browsers divorce code from data REPLs, workspaces, object inspectors, debuggers show data & code but code is de-emphasized. Idea: bring code & data together at all times

slide-41
SLIDE 41
slide-42
SLIDE 42

Debug Mode is the Only Mode

Live 2013 demo http://gbracha.blogspot.com/2013/04/making- methods-live.html

slide-43
SLIDE 43

Where to get Data?

Tests?

slide-44
SLIDE 44

Where to get Data?

Tests Type annotations?

slide-45
SLIDE 45

Where to get Data?

Tests Type annotations Type inference? Machine Learning?

slide-46
SLIDE 46

Where to get Data?

Tests Type annotations Type inference Machine Learning All of the above; they can re-enforce each other

slide-47
SLIDE 47

3

slide-48
SLIDE 48

Time Traveling Debugging

slide-49
SLIDE 49

Time Traveling Debuggers

A time traveling debugger is worth a thousand language features Query the history of the computation for events of interest and go back to the time of the event

slide-50
SLIDE 50

Liveness may be the killer feature for functional programming Reactive UIs Time traveling debugging becomes a lot easier See Elm, Clojure

Is FP going live?

slide-51
SLIDE 51

Programming Languages are more like Architecture than Civil Engineering Programmers are experimenters, empiricists engaged in modeling They need tools beyond text We must attend to their overall experience

Conclusions

slide-52
SLIDE 52

This file is licensed under the Creative Commons Attribution ShareAlike 3.0 License. In short: you are free to share and make derivative works of the file under the conditions that you appropriately attribute it, and that you distribute it only under a license identical to this one. Official license.