CloudTalk: Programming with Search and Wikis Sean McDirmid - - PowerPoint PPT Presentation

cloudtalk programming
SMART_READER_LITE
LIVE PREVIEW

CloudTalk: Programming with Search and Wikis Sean McDirmid - - PowerPoint PPT Presentation

CloudTalk: Programming with Search and Wikis Sean McDirmid Microsoft Research Asia Beijing China Problem World of code keeps getting bigger More libraries and frameworks More code snippets and samples More complexity Niche


slide-1
SLIDE 1

CloudTalk: Programming with Search and Wikis

Sean McDirmid Microsoft Research Asia Beijing China

slide-2
SLIDE 2

Problem

  • World of code keeps getting bigger

–More libraries and frameworks –More code snippets and samples –More complexity

  • Niche (long tail) reuse difficult
slide-3
SLIDE 3

Cloud-specific Problems

  • Multitude of services

– E.g., REST social/location services like Facebook, Yelp, Foursquare, Flickr, Gowalla, Eventful, … – Which service provides what we want?

  • (Possibly multiple services)
  • Services have custom schemas

– user_name, user_first_name , user

slide-4
SLIDE 4

Mashups

slide-5
SLIDE 5

So what?

  • Claim: managing huge namespaces is
  • ne of the upcoming big challenges in PL

– The namespace for whatever is available

  • What can we do about it?
slide-6
SLIDE 6

Intellisense/Autocomplete

slide-7
SLIDE 7

Intellisense/Autocomplete

  • Useful for browsing

– Recalling what’s in a local scope

  • Very local

– Doesn’t apply to everything…like some library you don’t have yet.

slide-8
SLIDE 8

Search

slide-9
SLIDE 9

Search background

  • Find long-tail information

– Obscure, niche, but pervasive

  • Search-assisted “Google” Memory

–Not knowing something is less of a problem –Viable on-the-fly discovery and learning

  • Applied to PL?
slide-10
SLIDE 10

Search and Code

slide-11
SLIDE 11

Search and Code

slide-12
SLIDE 12

Going Farther with Search

Semantic Search

slide-13
SLIDE 13

Autocomplete + Search

slide-14
SLIDE 14

Limitations

  • External search disrupts flow
  • Context is valuable
  • Search as just a tool concern

– PL design not applied

  • How about search being more like a PL?

– WolframAlpha

slide-15
SLIDE 15
slide-16
SLIDE 16
slide-17
SLIDE 17
slide-18
SLIDE 18
slide-19
SLIDE 19
slide-20
SLIDE 20

WolframAlpha Limitations

  • Not much composition

– The time derivative of PRC population

  • Not much abstraction

– Lacks functions and variables

  • Very incomplete interface to Mathematica

– Not a PL, but still…

slide-21
SLIDE 21

Names vs. Identifiers

  • Identifiers

–Just strings, meaning only by convention –“f” vs. “integerToString

  • Names

– Has meaning – Has synonyms that can be resolved – Keyword searchable

  • First-class naming in PL design?
slide-22
SLIDE 22
slide-23
SLIDE 23

More PL-ish

Route to this conventions’ stalls that interest my pals

slide-24
SLIDE 24

Word Sense Resolution

route( this-convention.stalls.if (b => interest(my.pals, b) ) )

slide-25
SLIDE 25

More PL-ish

route( this-convention.stalls.if (b => interest(my.friends,b) ) )

slide-26
SLIDE 26

More PL-ish

route( this-convention.booths.if (b => interest(my.friends,b) ) )

slide-27
SLIDE 27

More PL-ish

map-route( this-convention.booths.if (b => show-interest(my.friends,b) ) )

slide-28
SLIDE 28

Types and Search

  • Beyond simple procedure calls

–Query results can have non-local consequences

  • Use types to track consequences

–Query then involves type info

slide-29
SLIDE 29

More PL-ish

p : ui-panel s : p.slider p.layout = canvas … s.position = (50, 0)

slide-30
SLIDE 30

More PL-ish

p : ui-panel s : p.slider p.layout = canvas … s.position = (50, 0) ui-panel.slider <: ui-panel.element point position in ui-panel (layout = canvas).element

slide-31
SLIDE 31

More PL-ish

p : ui-panel s : p.slider p.layout = canvas … s.position = (50, 0) s <: ui-panel (layout = canvas).element point position in ui-panel (layout = canvas).element

slide-32
SLIDE 32

More PL-ish

p : ui-panel s : p.slider p.layout = canvas … s.position = top

slide-33
SLIDE 33

More PL-ish

p : ui-panel s : p.slider p.layout = canvas … s.position = top placement in ui-panel (layout = dock).element top, bottom, left, right placement

slide-34
SLIDE 34

More PL-ish

p : ui-panel s : p.slider p.layout = canvas … s.position = top

ui-panel, slider, layout, canvas, position, top

slide-35
SLIDE 35

More PL-ish

p : ui-panel s : p.slider p.layout = canvas … s.position = top

ui-panel, slider, element, layout, canvas, position, top, placement

slide-36
SLIDE 36

More PL-ish

p : ui-panel s : p.slider p.layout = canvas … s.position = top

ui-panel, slider, element, layout, canvas, position, top, placement

position in ui-panel (layout = canvas).element

slide-37
SLIDE 37

More PL-ish

p : ui-panel s : p.slider p.layout = canvas … s.position = top

ui-panel, slider, element, layout, canvas, position, top, placement

position in ui-panel (layout = canvas).element

slide-38
SLIDE 38

More PL-ish

p : ui-panel s : p.slider p.layout = canvas … s.position = top

slide-39
SLIDE 39

More PL-ish

p : ui-panel s : p.slider p.layout = dock … s.placement = top

slide-40
SLIDE 40

More PL-ish

p : ui-panel s : p.slider p.layout = canvas … s.position = north

slide-41
SLIDE 41

More PL-ish

p : ui-panel s : p.slider p.layout = dock … s.placement = top

slide-42
SLIDE 42

More PL-ish

p : ui-panel s : p.slider p.layout = canvas … s.position.y = 0

slide-43
SLIDE 43

Searching with Types

  • Dependent typing

– Dependent classes (Gasiunas, Mezini, Ostermann)

slide-44
SLIDE 44

Next Step

  • Where to find things?

–General Internet is too volatile –Review and transparency

  • Community convergence required

–Diversity in naming and architecture makes reuse more difficult

slide-45
SLIDE 45

The Code Wiki

slide-46
SLIDE 46

Code wiki

  • Flat namespace

–All definitions at the top-level –Disambiguate through richer naming

  • Everyone shares the same namespace

–No separate libraries/modules/frameworks –No explicit import

slide-47
SLIDE 47

Code wiki

  • Namespace is editable by all

–Community reviewed, enhanced, refactored –Convergence of community vocabulary

  • Linking through pervasive search

–Linking as key to wiki’s success

slide-48
SLIDE 48

Eliminating Diversity

  • Consistent naming

–Name new stuff like existing stuff

  • High-level declarative abstractions

– Not expressive or powerful

  • Binding, non-recursive

– Just easy to use

slide-49
SLIDE 49

Conclusion

  • Programming Language Implementation (PLI)

–Compiler or interpreter –Libraries (lots of them) and services* –IDE –Community

  • Consider in PL design
slide-50
SLIDE 50

北京欢迎你!

WELCOME TO BEIJING!