lars bak & gilad bracha
TRANSCRIPT
![Page 1: Lars Bak & Gilad Bracha](https://reader031.vdocuments.site/reader031/viewer/2022020702/61fb1e6d2e268c58cd5a5e2a/html5/thumbnails/1.jpg)
Lars Bak & Gilad BrachaMonday, October 10, 2011
![Page 2: Lars Bak & Gilad Bracha](https://reader031.vdocuments.site/reader031/viewer/2022020702/61fb1e6d2e268c58cd5a5e2a/html5/thumbnails/2.jpg)
DART: A STRUCTURED WEB PROGRAMMING LANGUAGE
• New programming language
• New programming tools
• New open source project
WARNING: THIS IS ONLY A TECHNOLOGY PREVIEW
Monday, October 10, 2011
![Page 3: Lars Bak & Gilad Bracha](https://reader031.vdocuments.site/reader031/viewer/2022020702/61fb1e6d2e268c58cd5a5e2a/html5/thumbnails/3.jpg)
SPEAKER INTRODUCTION
Self
Beta
OOVM
V8
Newspeak
Dart
JVMsStrongtalk
Text
Gilad BrachaLars Bak
JLS
25 years 25 years
Monday, October 10, 2011
![Page 4: Lars Bak & Gilad Bracha](https://reader031.vdocuments.site/reader031/viewer/2022020702/61fb1e6d2e268c58cd5a5e2a/html5/thumbnails/4.jpg)
DART AGENDA• The motivation
• The language
• Code samples
• Demos
• The open source project
Monday, October 10, 2011
![Page 5: Lars Bak & Gilad Bracha](https://reader031.vdocuments.site/reader031/viewer/2022020702/61fb1e6d2e268c58cd5a5e2a/html5/thumbnails/5.jpg)
CURRENT WEB: THE GOOD PARTS
• Developing small applications is easy
• Platform independence
• No installation of applications
• Supports incremental development
• ... and it is everywhere
Monday, October 10, 2011
![Page 6: Lars Bak & Gilad Bracha](https://reader031.vdocuments.site/reader031/viewer/2022020702/61fb1e6d2e268c58cd5a5e2a/html5/thumbnails/6.jpg)
CURRENT WEB: THE BAD PARTS
• Developing large scale applications is hard
• Hard to find the program structure
• Lack of static types
• No support for libraries
• Tools support is weak
• Startup performance is bad
Monday, October 10, 2011
![Page 7: Lars Bak & Gilad Bracha](https://reader031.vdocuments.site/reader031/viewer/2022020702/61fb1e6d2e268c58cd5a5e2a/html5/thumbnails/7.jpg)
INNOVATION IS ESSENTIAL• We believe Dart fills a vacuum
• The competition is NOT JavaScript
• ... but fragmented mobile platforms
Monday, October 10, 2011
![Page 8: Lars Bak & Gilad Bracha](https://reader031.vdocuments.site/reader031/viewer/2022020702/61fb1e6d2e268c58cd5a5e2a/html5/thumbnails/8.jpg)
HISTORY BEHIND DART• After several years working on V8 for Chrome
• Last year, Kasper Lund & I experimented with Spot
• a new simple language for the web
• based on the experiences from JavaScript
• Spot was the prelude for the Dart project
I’m Kasper
Monday, October 10, 2011
![Page 9: Lars Bak & Gilad Bracha](https://reader031.vdocuments.site/reader031/viewer/2022020702/61fb1e6d2e268c58cd5a5e2a/html5/thumbnails/9.jpg)
SO WHAT IS DART?
• A simple and unsurprising OO programming language
• Class-based single inheritance with interfaces
• Optional static types
• Real lexical scoping
• Single-threaded
• Familiar syntax
Monday, October 10, 2011
![Page 10: Lars Bak & Gilad Bracha](https://reader031.vdocuments.site/reader031/viewer/2022020702/61fb1e6d2e268c58cd5a5e2a/html5/thumbnails/10.jpg)
A DIFFERENT TYPE-CHECKER• A conventional type-checker is a lobotomized theorem prover
• Tries to prove program obeys type system
• If it can't construct a proof - program is considered invalid “Guilty until proven innocent”
• In Dart, you are innocent until proven guilty
Monday, October 10, 2011
![Page 11: Lars Bak & Gilad Bracha](https://reader031.vdocuments.site/reader031/viewer/2022020702/61fb1e6d2e268c58cd5a5e2a/html5/thumbnails/11.jpg)
DART TYPES AT RUNTIME• During development one can choose to validate types
• T x = o; assert(o === null || o is T);
• By default, type annotations have no effect and no cost
• Code runs free
Monday, October 10, 2011
![Page 12: Lars Bak & Gilad Bracha](https://reader031.vdocuments.site/reader031/viewer/2022020702/61fb1e6d2e268c58cd5a5e2a/html5/thumbnails/12.jpg)
OPTIONAL TYPES• Static checker provides warnings; tuned to be unobtrusive
• Type annotations have no effect except ...
• During development, you can check dynamic types against declarations
Monday, October 10, 2011
![Page 13: Lars Bak & Gilad Bracha](https://reader031.vdocuments.site/reader031/viewer/2022020702/61fb1e6d2e268c58cd5a5e2a/html5/thumbnails/13.jpg)
ISOLATES• Inspired by Erlang, Dart has isolates
• Lightweight units of execution
• Each isolate is conceptually a process
• Nothing is shared
• All communication takes place via message passing
• Isolates support concurrent execution
Monday, October 10, 2011
![Page 14: Lars Bak & Gilad Bracha](https://reader031.vdocuments.site/reader031/viewer/2022020702/61fb1e6d2e268c58cd5a5e2a/html5/thumbnails/14.jpg)
DART IS NOT DONE• Reflection support?
• Rest arguments and enums?
• Pattern matching for easy message decoding like in Erlang?
• What about Chrome?
• ... please give feedback by joining the discussions
Monday, October 10, 2011
![Page 15: Lars Bak & Gilad Bracha](https://reader031.vdocuments.site/reader031/viewer/2022020702/61fb1e6d2e268c58cd5a5e2a/html5/thumbnails/15.jpg)
DART EXECUTIONDart Source
JavaScript Engine
Dart VM
Tools
Snapshot
TextDartC
Monday, October 10, 2011
![Page 16: Lars Bak & Gilad Bracha](https://reader031.vdocuments.site/reader031/viewer/2022020702/61fb1e6d2e268c58cd5a5e2a/html5/thumbnails/16.jpg)
DART PERFORMANCERelative performance compared to JavaScript on V8
Benchmark VM DartCMandelbrot: 18.2% 88.7%DeltaBlue: 56.6% 52.2%Richards: 46.0% 70.9%NBody: 35.8% 63.6%BinaryTrees: 77.3% 104.3%Fannkuch: 53.8% 22.3%Meteor: 50.3% 42.1%
Details: - V8 revision 3.5.5. - DartC used with the -optimize flag
Monday, October 10, 2011
![Page 17: Lars Bak & Gilad Bracha](https://reader031.vdocuments.site/reader031/viewer/2022020702/61fb1e6d2e268c58cd5a5e2a/html5/thumbnails/17.jpg)
SNAPSHOTTING IN THE DART VM• Process of serializing the heap after loading the application
• Loading 54173 lines of Dart code takes 640 ms
• Loading same application from a snapshot takes 60 ms
• Startup > 10x faster
Monday, October 10, 2011
![Page 18: Lars Bak & Gilad Bracha](https://reader031.vdocuments.site/reader031/viewer/2022020702/61fb1e6d2e268c58cd5a5e2a/html5/thumbnails/18.jpg)
WEB APPLICATION IN DART• Newsreader completely written in Dart
• App code: 3210 LOC
• UI library code: 13200 LOC
• Animation yields 30 fps
• Code is part of the open source project
Monday, October 10, 2011
![Page 19: Lars Bak & Gilad Bracha](https://reader031.vdocuments.site/reader031/viewer/2022020702/61fb1e6d2e268c58cd5a5e2a/html5/thumbnails/19.jpg)
DART EDITOR• Editor for constructing and browsing Dart applications
• Lightweight editor based on Eclipse components
• Code is part of the open source project
Monday, October 10, 2011
![Page 20: Lars Bak & Gilad Bracha](https://reader031.vdocuments.site/reader031/viewer/2022020702/61fb1e6d2e268c58cd5a5e2a/html5/thumbnails/20.jpg)
DART OPEN SOURCE PROJECT• The Dart web site: http://dartlang.org
• Dart language specification
• Dart language tutorial
• The Dart project: http://dart.googlecode.com
• Libraries and code samples
• Dart virtual machine
• Dart to JavaScript compiler
Monday, October 10, 2011
![Page 21: Lars Bak & Gilad Bracha](https://reader031.vdocuments.site/reader031/viewer/2022020702/61fb1e6d2e268c58cd5a5e2a/html5/thumbnails/21.jpg)
DART IS A TECHNOLOGY PREVIEW• Dart: a programming language for the web
• Two execution modes, Dart VM or JS Engine
• Compatible with the current web
• Please try it out and participate
Monday, October 10, 2011
![Page 22: Lars Bak & Gilad Bracha](https://reader031.vdocuments.site/reader031/viewer/2022020702/61fb1e6d2e268c58cd5a5e2a/html5/thumbnails/22.jpg)
Q & AMonday, October 10, 2011