SlideShare une entreprise Scribd logo
1  sur  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  )

Contenu connexe

Similaire à The Moby Scheme Compiler for Smartphones

用 OPENRNDR 將 Chatbot 訊息視覺化
用 OPENRNDR 將 Chatbot 訊息視覺化用 OPENRNDR 將 Chatbot 訊息視覺化
用 OPENRNDR 將 Chatbot 訊息視覺化Shengyou Fan
 
Clojure for Data Science
Clojure for Data ScienceClojure for Data Science
Clojure for Data Sciencehenrygarner
 
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 ProcessingMark Billinghurst
 
Gdc09 Minigames
Gdc09 MinigamesGdc09 Minigames
Gdc09 MinigamesSusan Gold
 
Introduction to Coding
Introduction to CodingIntroduction to Coding
Introduction to CodingFabio506452
 
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.jsMike Hagedorn
 
building_games_with_ruby_rubyconf
building_games_with_ruby_rubyconfbuilding_games_with_ruby_rubyconf
building_games_with_ruby_rubyconftutorialsruby
 
building_games_with_ruby_rubyconf
building_games_with_ruby_rubyconfbuilding_games_with_ruby_rubyconf
building_games_with_ruby_rubyconftutorialsruby
 
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 ScalaEnsar Basri Kahveci
 
Programming the cloud with Skywriting
Programming the cloud with SkywritingProgramming the cloud with Skywriting
Programming the cloud with SkywritingDerek Murray
 
MongoDB In Production At Sailthru
MongoDB In Production At SailthruMongoDB In Production At Sailthru
MongoDB In Production At Sailthruibwhite
 
HTML5 - Daha Flash bir web?
HTML5 - Daha Flash bir web?HTML5 - Daha Flash bir web?
HTML5 - Daha Flash bir web?Ankara JUG
 
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 HorizonAlex Payne
 
Guidelines to clean coding
Guidelines to clean codingGuidelines to clean coding
Guidelines to clean codingJanak Porwal
 
mobl - model-driven engineering lecture
mobl - model-driven engineering lecturemobl - model-driven engineering lecture
mobl - model-driven engineering lecturezefhemel
 
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?Patrick Chanezon
 
Intravert Server side processing for Cassandra
Intravert Server side processing for CassandraIntravert Server side processing for Cassandra
Intravert Server side processing for CassandraEdward Capriolo
 

Similaire à 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
 

Dernier

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...Neo4j
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
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 2024The Digital Insurer
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
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 textsMaria Levchenko
 
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 RobisonAnna Loughnan Colquhoun
 
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 AutomationSafe Software
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
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.pdfUK Journal
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 

Dernier (20)

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...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
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
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
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
 
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
 
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
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
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
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 

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.