SlideShare una empresa de Scribd logo
1 de 50
The Moby Scheme Compiler  for Smartphones (Is That a Parenthesis in Your Pocket? ) Danny Yoo Zhe Zhang Kathi Fisler Shriram Krishnamurthi
 
Vital Statistics ,[object Object],[object Object],[object Object],[object Object],[object Object]
 
Bad News ,[object Object]
 
Program = Design   + Programming System   + Execution Model
Program Execution Model
Pascal
[object Object],[object Object],[object Object],[object Object]
begin … end; begin … … end; begin … … … end; begin … … end; begin … … … … … … … … … … end; begin … … … … … … … … … … … … end. begin … end; .
flights from PVD to CDG list of flights the third outward flight restricted list of return flights the second return flight ok must remember  list of flights must remember  restricted list of return flights
user typed ‘(’ ok user moved mouse ok user clicked mouse button ok different kinds of handlers
user moved right 10 yards ok user tilted phone left ok user moved left 10 yards ok loc: (10,0) loc: (0,0) loc: (10,0) loc: (10,0) loc: (0,0) loc: (10,0)
void void void
database, memory store, remote Web service
database, hidden fields, cont’ns
Why is this Bad?
[object Object],[object Object]
[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object]
void void void Why  void ? The hostile operating system Why hostile? Because it’s neutral But neutrality    hostility Neutrals can cooperate (impartially)
User OS Callback “ World” “ World” “ World” “ World”
Current value of World New value  of World Might be  enriched with additional event information Phone example: World is current location Will invoke  event-specific functions (define (on-move w d)   (posn+ w d)) (define (on-tilt w o)   w)
on-tick  ::  w      w on-move  ::  w    dist      w on-tilt  ::  w    incl      w on-key  ::  w    key      w on-click  ::  w    btn      w on-redraw  ::  w      scene stop-when  ::  w      bool
 
[object Object],[object Object],[object Object],[object Object],(define (incr-time w) (add1 w)) (define (render-world w) (place-image PLANE (* w 10) (image-height PLANE) (empty-scene width height))) (big-bang width height 1/10 (on-tick incr-time) (on-redraw render-world))
World World Scene World World World
World World Scene World World Bool
Moby
What It’s Not ,[object Object]
What It Is ,[object Object],[object Object],[object Object],[object Object]
A Little More ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Baseline ,[object Object],[object Object]
Rolling Out of Time
 
 
[object Object],[object Object],[object Object],[object Object],(define-struct world (posn r vel)) (define initial-w  (make-world (make-posn …)   30 (make-vel 0 0))) ;; game-ends?: world -> boolean (define (game-ends? w) (or (<= (world-r w) 1) (collide? w)))
[object Object],[object Object],;; tilt: world number number number -> world (define (tilt w azimuth pitch roll) (make-world (world-posn w)   (world-r w)   (make-vel roll (- pitch)))) (big-bang WIDTH HEIGHT 1/20 initial-w   (on-redraw render)   (on-tick tick)   (on-tilt tilt)    (stop-when game-ends?)) (define (tilt w azimuth pitch roll)   (update-world-vel   w   (make-vel roll (- pitch))))
Minding the Store
 
[object Object],[object Object],[object Object],(big-bang ...   (on-redraw render)   (on-location-change update-loc)) ;; update-loc: world number number -> world (define (update-loc w lat long) (make-loc lat long))
[object Object],[object Object],;; description: world -> string (define (description w) (items->string (matching-items-nearby w))) ;; matching-items-nearby: world -> (listof item) (define (matching-items-nearby w) (places-matching-items   (nearby-places ALL-PLACES w)))
Homeward Bound
 
 
The World is Not Enough
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
On the Internet,  nobody knows you’re a Scheme program JavaScript Java Processing J2ME Flash/ActionScript Objective-C NXT NXC RobotC BricxCC Design Programming system Execution model {
[object Object],[object Object],Thanks : Danny Yoo Zhe Zhang Kathi Fisler Emmanuel Schanzer Matthias Felleisen (rest  )

Más contenido relacionado

Similar a The Moby Scheme Compiler for Smartphones

The Glass Class Lecture 5: Prototyping with Processing
The Glass Class Lecture 5: Prototyping with ProcessingThe Glass Class Lecture 5: Prototyping with Processing
The Glass Class Lecture 5: Prototyping with Processing
Mark Billinghurst
 
Gdc09 Minigames
Gdc09 MinigamesGdc09 Minigames
Gdc09 Minigames
Susan Gold
 
building_games_with_ruby_rubyconf
building_games_with_ruby_rubyconfbuilding_games_with_ruby_rubyconf
building_games_with_ruby_rubyconf
tutorialsruby
 
building_games_with_ruby_rubyconf
building_games_with_ruby_rubyconfbuilding_games_with_ruby_rubyconf
building_games_with_ruby_rubyconf
tutorialsruby
 
mobl - model-driven engineering lecture
mobl - model-driven engineering lecturemobl - model-driven engineering lecture
mobl - model-driven engineering lecture
zefhemel
 
Intravert Server side processing for Cassandra
Intravert Server side processing for CassandraIntravert Server side processing for Cassandra
Intravert Server side processing for Cassandra
Edward Capriolo
 

Similar a The Moby Scheme Compiler for Smartphones (20)

mobl
moblmobl
mobl
 
用 OPENRNDR 將 Chatbot 訊息視覺化
用 OPENRNDR 將 Chatbot 訊息視覺化用 OPENRNDR 將 Chatbot 訊息視覺化
用 OPENRNDR 將 Chatbot 訊息視覺化
 
Clojure for Data Science
Clojure for Data ScienceClojure for Data Science
Clojure for Data Science
 
A More Flash Like Web?
A More Flash Like Web?A More Flash Like Web?
A More Flash Like Web?
 
The Glass Class Lecture 5: Prototyping with Processing
The Glass Class Lecture 5: Prototyping with ProcessingThe Glass Class Lecture 5: Prototyping with Processing
The Glass Class Lecture 5: Prototyping with Processing
 
Gdc09 Minigames
Gdc09 MinigamesGdc09 Minigames
Gdc09 Minigames
 
Introduction to Coding
Introduction to CodingIntroduction to Coding
Introduction to Coding
 
Playing With Fire - An Introduction to Node.js
Playing With Fire - An Introduction to Node.jsPlaying With Fire - An Introduction to Node.js
Playing With Fire - An Introduction to Node.js
 
building_games_with_ruby_rubyconf
building_games_with_ruby_rubyconfbuilding_games_with_ruby_rubyconf
building_games_with_ruby_rubyconf
 
building_games_with_ruby_rubyconf
building_games_with_ruby_rubyconfbuilding_games_with_ruby_rubyconf
building_games_with_ruby_rubyconf
 
Ankara Jug - Practical Functional Programming with Scala
Ankara Jug - Practical Functional Programming with ScalaAnkara Jug - Practical Functional Programming with Scala
Ankara Jug - Practical Functional Programming with Scala
 
Programming the cloud with Skywriting
Programming the cloud with SkywritingProgramming the cloud with Skywriting
Programming the cloud with Skywriting
 
MongoDB In Production At Sailthru
MongoDB In Production At SailthruMongoDB In Production At Sailthru
MongoDB In Production At Sailthru
 
HTML5 - Daha Flash bir web?
HTML5 - Daha Flash bir web?HTML5 - Daha Flash bir web?
HTML5 - Daha Flash bir web?
 
Emerging Languages: A Tour of the Horizon
Emerging Languages: A Tour of the HorizonEmerging Languages: A Tour of the Horizon
Emerging Languages: A Tour of the Horizon
 
Guidelines to clean coding
Guidelines to clean codingGuidelines to clean coding
Guidelines to clean coding
 
mobl - model-driven engineering lecture
mobl - model-driven engineering lecturemobl - model-driven engineering lecture
mobl - model-driven engineering lecture
 
Google's HTML5 Work: what's next?
Google's HTML5 Work: what's next?Google's HTML5 Work: what's next?
Google's HTML5 Work: what's next?
 
My favorite slides
My favorite slidesMy favorite slides
My favorite slides
 
Intravert Server side processing for Cassandra
Intravert Server side processing for CassandraIntravert Server side processing for Cassandra
Intravert Server side processing for Cassandra
 

Último

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 

Último (20)

Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 

The Moby Scheme Compiler for Smartphones

  • 1. The Moby Scheme Compiler for Smartphones (Is That a Parenthesis in Your Pocket? ) Danny Yoo Zhe Zhang Kathi Fisler Shriram Krishnamurthi
  • 2.  
  • 3.
  • 4.  
  • 5.
  • 6.  
  • 7. Program = Design + Programming System + Execution Model
  • 10.
  • 11. begin … end; begin … … end; begin … … … end; begin … … end; begin … … … … … … … … … … end; begin … … … … … … … … … … … … end. begin … end; .
  • 12. flights from PVD to CDG list of flights the third outward flight restricted list of return flights the second return flight ok must remember list of flights must remember restricted list of return flights
  • 13. user typed ‘(’ ok user moved mouse ok user clicked mouse button ok different kinds of handlers
  • 14. user moved right 10 yards ok user tilted phone left ok user moved left 10 yards ok loc: (10,0) loc: (0,0) loc: (10,0) loc: (10,0) loc: (0,0) loc: (10,0)
  • 16. database, memory store, remote Web service
  • 18. Why is this Bad?
  • 19.
  • 20.
  • 21.
  • 22. void void void Why void ? The hostile operating system Why hostile? Because it’s neutral But neutrality  hostility Neutrals can cooperate (impartially)
  • 23. User OS Callback “ World” “ World” “ World” “ World”
  • 24. Current value of World New value of World Might be enriched with additional event information Phone example: World is current location Will invoke event-specific functions (define (on-move w d) (posn+ w d)) (define (on-tilt w o) w)
  • 25. on-tick :: w  w on-move :: w  dist  w on-tilt :: w  incl  w on-key :: w  key  w on-click :: w  btn  w on-redraw :: w  scene stop-when :: w  bool
  • 26.  
  • 27.
  • 28. World World Scene World World World
  • 29. World World Scene World World Bool
  • 30. Moby
  • 31.
  • 32.
  • 33.
  • 34.
  • 36.  
  • 37.  
  • 38.
  • 39.
  • 41.  
  • 42.
  • 43.
  • 45.  
  • 46.  
  • 47. The World is Not Enough
  • 48.
  • 49. On the Internet, nobody knows you’re a Scheme program JavaScript Java Processing J2ME Flash/ActionScript Objective-C NXT NXC RobotC BricxCC Design Programming system Execution model {
  • 50.