Lars Bak & Gilad Bracha Monday, October 10, 2011 DART: A - - PowerPoint PPT Presentation

lars bak gilad bracha
SMART_READER_LITE
LIVE PREVIEW

Lars Bak & Gilad Bracha Monday, October 10, 2011 DART: A - - PowerPoint PPT Presentation

Lars Bak & Gilad Bracha Monday, October 10, 2011 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


slide-1
SLIDE 1

Lars Bak & Gilad Bracha

Monday, October 10, 2011
slide-2
SLIDE 2

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
slide-3
SLIDE 3

SPEAKER INTRODUCTION

Self Beta

OOVM

V8

Newspeak

Dart JVMs

Strongtalk

Text

Gilad Bracha Lars Bak

JLS

25 years 25 years

Monday, October 10, 2011
slide-4
SLIDE 4

DART AGENDA

  • The motivation
  • The language
  • Code samples
  • Demos
  • The open source project
Monday, October 10, 2011
slide-5
SLIDE 5

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
slide-6
SLIDE 6

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
slide-7
SLIDE 7

INNOVATION IS ESSENTIAL

  • We believe Dart fills a vacuum
  • The competition is NOT JavaScript
  • ... but fragmented mobile platforms
Monday, October 10, 2011
slide-8
SLIDE 8

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
slide-9
SLIDE 9

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
slide-10
SLIDE 10

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
slide-11
SLIDE 11

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
slide-12
SLIDE 12

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
slide-13
SLIDE 13

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
slide-14
SLIDE 14

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
slide-15
SLIDE 15

DART EXECUTION

Dart Source

JavaScript Engine Dart VM

Tools Snapshot

Text DartC

Monday, October 10, 2011
slide-16
SLIDE 16

DART PERFORMANCE

Relative performance compared to JavaScript on V8 Benchmark VM DartC Mandelbrot: 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
slide-17
SLIDE 17

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
slide-18
SLIDE 18

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
slide-19
SLIDE 19

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
slide-20
SLIDE 20

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
slide-21
SLIDE 21

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
slide-22
SLIDE 22

Q & A

Monday, October 10, 2011