SlideShare a Scribd company logo
Dart	
                 {	
 Google’s  answer  to  Javascript	




Raoul-­‐‑Gabriel  Urma
What  is  Dart?	
Ñ    Dart  is  a  new  class-­‐‑based  programming  language  for  
      creating  structured  web  applications.  Developed  with  
      the  goals  of  simplicity,  efficiency,  and  scalability,  the  
      Dart  language  combines  powerful  new  language  
      features  with  familiar  language  constructs  into  a  clear,  
      readable  syntax.	



                    Compiles  to  Javascript	
                    Runs  on  VM
Design  goals	
Ñ  Create  a  structured  yet  flexible  programming  
    language  for  the  web.	
Ñ  Make  Dart  feel  familiar  and  natural  to  programmers  

    and  thus  easy  to  learn.	
Ñ  Ensure  that  all  Dart  language  constructs  allow  high  

    performance  and  fast  application  startup.	
Ñ  Make  Dart  appropriate  for  the  full  range  of  devices  
    on  the  web—including  phones,  tablets,  laptops,  and  
    servers.	
Ñ  Provide  tools  that  make  Dart  run  fast  across  all  

    major  modern  browsers.
In  a  nutshell…	
       Ñ    Class-­‐‑based	
       Ñ    Single  inheritance	
       Ñ    Pure  (everything  is  an  object)	
       Ñ    Optional  types	
       Ñ    First-­‐‑class  functions	
       Ñ    Java-­‐‑like  syntax  (shorter)	
       Ñ    Null!!	
       Ñ    Actor  model  (isolates  light  vs  heavy)	
       Ñ    Collections  classes  (Set,  Map,  List,  Queue)	
       Ñ    Named  constructors	

“The  type  system  is  unsound,  due  to  the  covariance  of  generic  types.  
This  is  a  deliberate  choice  (and  undoubtedly  controversial).  
Experience  has  shown  that  sound  type  rules  for  generics  	
fly  in  the  face  of  programmer  intuition.  It  is  easy  for  tools  to  provide  
a  sound  type  analysis  if  they  choose,  which  may  be  useful  for  tasks  
like  refactoring.”
Fun  with  Dart	
Ñ    h]p://try.dartlang.org/s/F-­‐‑MX	

Ñ  Variables  initialized  to  null	
Ñ  Generics  are  covariant
Ñ    main()  {	
Ñ        List<Banana>  listOfBananas  =  new  List<Banana>();	
Ñ        List<Fruit>  listOfFruits  =  listOfBananas;	
Ñ        listOfFruits.add(new  Apple());	
Ñ        print(listOfBananas[0]);  //  apple	
Ñ    }	

Ñ    class  Apple  extends  Fruit{	
Ñ        toString()  {  return  "ʺapple"ʺ;}	
Ñ    }	

Ñ    class  Banana  extends  Fruit{	
Ñ            toString()  {  return  "ʺbanana"ʺ;}	
Ñ    }	

Ñ    class  Fruit{	
Ñ        toString()  {  return  "ʺfruit"ʺ;}	
Ñ    }
Ñ  main()  {	
Ñ      num  i;	

Ñ      num  j  =  i  +  5;  //  NPE	

Ñ  }
Dart  vs  Newspeak  [1]	
  Ñ  Class-­‐‑based  ✓	
  Ñ  First-­‐‑class  modules  ✗	

  Ñ  Reflection  (coming  soon  -­‐‑  based  on  mirrors  [2])  ✓	

  Ñ  Mixins  ✗	

  Ñ  Names  as  method  invocation  ✗	

  Ñ  Immutability  enforcement  ✗	




[1]:  h]p://bracha.org/newspeak-­‐‑modules.pdf	
[2]:  h]p://bracha.org/mirrors.pdf
Dart  vs  CoffeeScript	
            Ñ  Pa]ern  matching  ✗ (coming  soon?  [1])

            Ñ  Prototype  Based  ✗


            Ñ  List  comprehension  ✗


            Ñ  Compiles  to  JS  ✓


            

            


            

            

[1]  Pa]ern  Matching  for  an  Object-­‐‑Oriented  and  	
            	
Dynamically  Typed  Programming  Language  –  Gilad  Bracha
Links	
Ñ  h]p://code.google.com/p/dart/issues/list	
Ñ  h]p://gototoday.dk/2011/10/10/lars-­‐‑bak-­‐‑on-­‐‑
    dart/	
Ñ  h]p://bracha.org/Site/Home.html	

Ñ  h]p://dartinside.com/2011/live-­‐‑from-­‐‑dart-­‐‑

    launch/

More Related Content

What's hot

Polygot Java EE on the GraalVM
Polygot Java EE on the GraalVMPolygot Java EE on the GraalVM
Polygot Java EE on the GraalVM
Ryan Cuprak
 
Getting started with flutter
Getting started with flutterGetting started with flutter
Getting started with flutter
rihannakedy
 
Flutter Festival - Intro Session
Flutter Festival - Intro SessionFlutter Festival - Intro Session
Flutter Festival - Intro Session
Google Developer Students Club NIT Silchar
 
Native mobile application development with Flutter (Dart)
Native mobile application development with Flutter (Dart)Native mobile application development with Flutter (Dart)
Native mobile application development with Flutter (Dart)
Randal Schwartz
 
Hello Flutter
Hello FlutterHello Flutter
Hello Flutter
rihannakedy
 
DevDay2017 ESGI Essential DDD
DevDay2017 ESGI Essential DDDDevDay2017 ESGI Essential DDD
DevDay2017 ESGI Essential DDD
Gregory Boissinot
 
React Workshop
React WorkshopReact Workshop
React Workshop
GDSC UofT Mississauga
 
Dart Programming.pptx
Dart Programming.pptxDart Programming.pptx
Dart Programming.pptx
AnanthalakshmiN4
 
TypeScript Overview
TypeScript OverviewTypeScript Overview
TypeScript Overview
Aniruddha Chakrabarti
 
F# for C# Programmers
F# for C# ProgrammersF# for C# Programmers
F# for C# Programmers
Scott Wlaschin
 
Dynamically Generate a CRUD Admin Panel with Java Annotations
Dynamically Generate a CRUD Admin Panel with Java AnnotationsDynamically Generate a CRUD Admin Panel with Java Annotations
Dynamically Generate a CRUD Admin Panel with Java Annotations
Broadleaf Commerce
 
React Context API
React Context APIReact Context API
React Context API
NodeXperts
 
TypeScript - An Introduction
TypeScript - An IntroductionTypeScript - An Introduction
TypeScript - An Introduction
NexThoughts Technologies
 
JSON Schema Design
JSON Schema DesignJSON Schema Design
JSON Schema Design
Octavian Nadolu
 
Introduction to Domain Driven Design
Introduction to Domain Driven DesignIntroduction to Domain Driven Design
Introduction to Domain Driven Design
Christos Tsakostas
 
Pune Flutter Presents - Flutter 101
Pune Flutter Presents - Flutter 101Pune Flutter Presents - Flutter 101
Pune Flutter Presents - Flutter 101
Arif Amirani
 
Flutter
FlutterFlutter
Access modifiers in java
Access modifiers in javaAccess modifiers in java
Access modifiers in java
Madishetty Prathibha
 
Google flutter and why does it matter
Google flutter and why does it matterGoogle flutter and why does it matter
Google flutter and why does it matter
Ahmed Abu Eldahab
 

What's hot (20)

Polygot Java EE on the GraalVM
Polygot Java EE on the GraalVMPolygot Java EE on the GraalVM
Polygot Java EE on the GraalVM
 
Getting started with flutter
Getting started with flutterGetting started with flutter
Getting started with flutter
 
Flutter Festival - Intro Session
Flutter Festival - Intro SessionFlutter Festival - Intro Session
Flutter Festival - Intro Session
 
Native mobile application development with Flutter (Dart)
Native mobile application development with Flutter (Dart)Native mobile application development with Flutter (Dart)
Native mobile application development with Flutter (Dart)
 
Hello Flutter
Hello FlutterHello Flutter
Hello Flutter
 
DevDay2017 ESGI Essential DDD
DevDay2017 ESGI Essential DDDDevDay2017 ESGI Essential DDD
DevDay2017 ESGI Essential DDD
 
React Workshop
React WorkshopReact Workshop
React Workshop
 
Dart Programming.pptx
Dart Programming.pptxDart Programming.pptx
Dart Programming.pptx
 
TypeScript Overview
TypeScript OverviewTypeScript Overview
TypeScript Overview
 
F# for C# Programmers
F# for C# ProgrammersF# for C# Programmers
F# for C# Programmers
 
Dynamically Generate a CRUD Admin Panel with Java Annotations
Dynamically Generate a CRUD Admin Panel with Java AnnotationsDynamically Generate a CRUD Admin Panel with Java Annotations
Dynamically Generate a CRUD Admin Panel with Java Annotations
 
React Context API
React Context APIReact Context API
React Context API
 
TypeScript - An Introduction
TypeScript - An IntroductionTypeScript - An Introduction
TypeScript - An Introduction
 
JSON Schema Design
JSON Schema DesignJSON Schema Design
JSON Schema Design
 
Introduction to Domain Driven Design
Introduction to Domain Driven DesignIntroduction to Domain Driven Design
Introduction to Domain Driven Design
 
History of java'
History of java'History of java'
History of java'
 
Pune Flutter Presents - Flutter 101
Pune Flutter Presents - Flutter 101Pune Flutter Presents - Flutter 101
Pune Flutter Presents - Flutter 101
 
Flutter
FlutterFlutter
Flutter
 
Access modifiers in java
Access modifiers in javaAccess modifiers in java
Access modifiers in java
 
Google flutter and why does it matter
Google flutter and why does it matterGoogle flutter and why does it matter
Google flutter and why does it matter
 

Viewers also liked

Introduction to Dart
Introduction to DartIntroduction to Dart
Introduction to Dart
Ramesh Nair
 
How to build a Dart and Firebase app in 30 mins
How to build a Dart and Firebase app in 30 minsHow to build a Dart and Firebase app in 30 mins
How to build a Dart and Firebase app in 30 mins
Jana Moudrá
 
JavaScript, Dart, TypeScript & CoffeeScript Comparison
JavaScript, Dart, TypeScript & CoffeeScript ComparisonJavaScript, Dart, TypeScript & CoffeeScript Comparison
JavaScript, Dart, TypeScript & CoffeeScript Comparison
Haim Michael
 
Introduction to Flutter - truly crossplatform, amazingly fast
Introduction to Flutter - truly crossplatform, amazingly fastIntroduction to Flutter - truly crossplatform, amazingly fast
Introduction to Flutter - truly crossplatform, amazingly fast
Bartosz Kosarzycki
 
TypeScript, Dart, CoffeeScript and JavaScript Comparison
TypeScript, Dart, CoffeeScript and JavaScript ComparisonTypeScript, Dart, CoffeeScript and JavaScript Comparison
TypeScript, Dart, CoffeeScript and JavaScript Comparison
Haim Michael
 
Structured Apps with Google Dart
Structured Apps with Google DartStructured Apps with Google Dart
Structured Apps with Google Dart
Jermaine Oppong
 
Dart como alternativa a TypeScript (Codemotion 2016)
Dart como alternativa a TypeScript (Codemotion 2016)Dart como alternativa a TypeScript (Codemotion 2016)
Dart como alternativa a TypeScript (Codemotion 2016)
Rafael Bermúdez Míguez
 

Viewers also liked (7)

Introduction to Dart
Introduction to DartIntroduction to Dart
Introduction to Dart
 
How to build a Dart and Firebase app in 30 mins
How to build a Dart and Firebase app in 30 minsHow to build a Dart and Firebase app in 30 mins
How to build a Dart and Firebase app in 30 mins
 
JavaScript, Dart, TypeScript & CoffeeScript Comparison
JavaScript, Dart, TypeScript & CoffeeScript ComparisonJavaScript, Dart, TypeScript & CoffeeScript Comparison
JavaScript, Dart, TypeScript & CoffeeScript Comparison
 
Introduction to Flutter - truly crossplatform, amazingly fast
Introduction to Flutter - truly crossplatform, amazingly fastIntroduction to Flutter - truly crossplatform, amazingly fast
Introduction to Flutter - truly crossplatform, amazingly fast
 
TypeScript, Dart, CoffeeScript and JavaScript Comparison
TypeScript, Dart, CoffeeScript and JavaScript ComparisonTypeScript, Dart, CoffeeScript and JavaScript Comparison
TypeScript, Dart, CoffeeScript and JavaScript Comparison
 
Structured Apps with Google Dart
Structured Apps with Google DartStructured Apps with Google Dart
Structured Apps with Google Dart
 
Dart como alternativa a TypeScript (Codemotion 2016)
Dart como alternativa a TypeScript (Codemotion 2016)Dart como alternativa a TypeScript (Codemotion 2016)
Dart como alternativa a TypeScript (Codemotion 2016)
 

Similar to Dart

OWF12/PAUG Conf Days Dart a new html5 technology, nicolas geoffray, softwar...
OWF12/PAUG Conf Days Dart   a new html5 technology, nicolas geoffray, softwar...OWF12/PAUG Conf Days Dart   a new html5 technology, nicolas geoffray, softwar...
OWF12/PAUG Conf Days Dart a new html5 technology, nicolas geoffray, softwar...Paris Open Source Summit
 
Exploring language classification with spark and the spark notebook
Exploring language classification with spark and the spark notebookExploring language classification with spark and the spark notebook
Exploring language classification with spark and the spark notebook
Gerard Maas
 
Enterprise Data Workflows with Cascading and Windows Azure HDInsight
Enterprise Data Workflows with Cascading and Windows Azure HDInsightEnterprise Data Workflows with Cascading and Windows Azure HDInsight
Enterprise Data Workflows with Cascading and Windows Azure HDInsight
Paco Nathan
 
Comparative Study of programming Languages
Comparative Study of programming LanguagesComparative Study of programming Languages
Comparative Study of programming Languages
Ishan Monga
 
R Introduction
R IntroductionR Introduction
R Introductionschamber
 
Dart
DartDart
Dart Jump Start
Dart Jump StartDart Jump Start
Dart Jump Start
Haim Michael
 
Introduction to r
Introduction to rIntroduction to r
Introduction to r
gslicraf
 
1.-Introduction-to-Dart.pdf
1.-Introduction-to-Dart.pdf1.-Introduction-to-Dart.pdf
1.-Introduction-to-Dart.pdf
SamySiddhan
 
R as supporting tool for analytics and simulation
R as supporting tool for analytics and simulationR as supporting tool for analytics and simulation
R as supporting tool for analytics and simulation
Alvaro Gil
 
Programming Paradigms
Programming ParadigmsProgramming Paradigms
Programming ParadigmsJaneve George
 
Groovy Update - JavaPolis 2007
Groovy Update - JavaPolis 2007Groovy Update - JavaPolis 2007
Groovy Update - JavaPolis 2007
Guillaume Laforge
 
Buildr - build like you code
Buildr -  build like you codeBuildr -  build like you code
Buildr - build like you code
Izzet Mustafaiev
 
Traits: A New Language Feature for PHP?
Traits: A New Language Feature for PHP?Traits: A New Language Feature for PHP?
Traits: A New Language Feature for PHP?Stefan Marr
 
R programming Language , Rahul Singh
R programming Language , Rahul SinghR programming Language , Rahul Singh
R programming Language , Rahul Singh
Ravi Basil
 
AestasIT - Internal DSLs in Scala
AestasIT - Internal DSLs in ScalaAestasIT - Internal DSLs in Scala
AestasIT - Internal DSLs in ScalaDmitry Buzdin
 
Programming Paradigms
Programming ParadigmsProgramming Paradigms
Programming Paradigms
Directi Group
 
Flutter alegria event gdsc pillai college of engineering
Flutter alegria event gdsc pillai college of engineeringFlutter alegria event gdsc pillai college of engineering
Flutter alegria event gdsc pillai college of engineering
AnandMenon54
 
pembelajaran tentang dart dalam bahasa inggris
pembelajaran tentang dart dalam bahasa inggrispembelajaran tentang dart dalam bahasa inggris
pembelajaran tentang dart dalam bahasa inggris
Reza120164
 
React Native VS Flutter - Which One is The Best.
React Native VS Flutter - Which One is The Best.React Native VS Flutter - Which One is The Best.
React Native VS Flutter - Which One is The Best.
Techugo
 

Similar to Dart (20)

OWF12/PAUG Conf Days Dart a new html5 technology, nicolas geoffray, softwar...
OWF12/PAUG Conf Days Dart   a new html5 technology, nicolas geoffray, softwar...OWF12/PAUG Conf Days Dart   a new html5 technology, nicolas geoffray, softwar...
OWF12/PAUG Conf Days Dart a new html5 technology, nicolas geoffray, softwar...
 
Exploring language classification with spark and the spark notebook
Exploring language classification with spark and the spark notebookExploring language classification with spark and the spark notebook
Exploring language classification with spark and the spark notebook
 
Enterprise Data Workflows with Cascading and Windows Azure HDInsight
Enterprise Data Workflows with Cascading and Windows Azure HDInsightEnterprise Data Workflows with Cascading and Windows Azure HDInsight
Enterprise Data Workflows with Cascading and Windows Azure HDInsight
 
Comparative Study of programming Languages
Comparative Study of programming LanguagesComparative Study of programming Languages
Comparative Study of programming Languages
 
R Introduction
R IntroductionR Introduction
R Introduction
 
Dart
DartDart
Dart
 
Dart Jump Start
Dart Jump StartDart Jump Start
Dart Jump Start
 
Introduction to r
Introduction to rIntroduction to r
Introduction to r
 
1.-Introduction-to-Dart.pdf
1.-Introduction-to-Dart.pdf1.-Introduction-to-Dart.pdf
1.-Introduction-to-Dart.pdf
 
R as supporting tool for analytics and simulation
R as supporting tool for analytics and simulationR as supporting tool for analytics and simulation
R as supporting tool for analytics and simulation
 
Programming Paradigms
Programming ParadigmsProgramming Paradigms
Programming Paradigms
 
Groovy Update - JavaPolis 2007
Groovy Update - JavaPolis 2007Groovy Update - JavaPolis 2007
Groovy Update - JavaPolis 2007
 
Buildr - build like you code
Buildr -  build like you codeBuildr -  build like you code
Buildr - build like you code
 
Traits: A New Language Feature for PHP?
Traits: A New Language Feature for PHP?Traits: A New Language Feature for PHP?
Traits: A New Language Feature for PHP?
 
R programming Language , Rahul Singh
R programming Language , Rahul SinghR programming Language , Rahul Singh
R programming Language , Rahul Singh
 
AestasIT - Internal DSLs in Scala
AestasIT - Internal DSLs in ScalaAestasIT - Internal DSLs in Scala
AestasIT - Internal DSLs in Scala
 
Programming Paradigms
Programming ParadigmsProgramming Paradigms
Programming Paradigms
 
Flutter alegria event gdsc pillai college of engineering
Flutter alegria event gdsc pillai college of engineeringFlutter alegria event gdsc pillai college of engineering
Flutter alegria event gdsc pillai college of engineering
 
pembelajaran tentang dart dalam bahasa inggris
pembelajaran tentang dart dalam bahasa inggrispembelajaran tentang dart dalam bahasa inggris
pembelajaran tentang dart dalam bahasa inggris
 
React Native VS Flutter - Which One is The Best.
React Native VS Flutter - Which One is The Best.React Native VS Flutter - Which One is The Best.
React Native VS Flutter - Which One is The Best.
 

Recently uploaded

GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
g2nightmarescribd
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
Product School
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
DianaGray10
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
DianaGray10
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 

Recently uploaded (20)

GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 

Dart

  • 1. Dart { Google’s  answer  to  Javascript Raoul-­‐‑Gabriel  Urma
  • 2. What  is  Dart? Ñ  Dart  is  a  new  class-­‐‑based  programming  language  for   creating  structured  web  applications.  Developed  with   the  goals  of  simplicity,  efficiency,  and  scalability,  the   Dart  language  combines  powerful  new  language   features  with  familiar  language  constructs  into  a  clear,   readable  syntax. Compiles  to  Javascript Runs  on  VM
  • 3. Design  goals Ñ  Create  a  structured  yet  flexible  programming   language  for  the  web. Ñ  Make  Dart  feel  familiar  and  natural  to  programmers   and  thus  easy  to  learn. Ñ  Ensure  that  all  Dart  language  constructs  allow  high   performance  and  fast  application  startup. Ñ  Make  Dart  appropriate  for  the  full  range  of  devices   on  the  web—including  phones,  tablets,  laptops,  and   servers. Ñ  Provide  tools  that  make  Dart  run  fast  across  all   major  modern  browsers.
  • 4. In  a  nutshell… Ñ  Class-­‐‑based Ñ  Single  inheritance Ñ  Pure  (everything  is  an  object) Ñ  Optional  types Ñ  First-­‐‑class  functions Ñ  Java-­‐‑like  syntax  (shorter) Ñ  Null!! Ñ  Actor  model  (isolates  light  vs  heavy) Ñ  Collections  classes  (Set,  Map,  List,  Queue) Ñ  Named  constructors “The  type  system  is  unsound,  due  to  the  covariance  of  generic  types.   This  is  a  deliberate  choice  (and  undoubtedly  controversial).   Experience  has  shown  that  sound  type  rules  for  generics   fly  in  the  face  of  programmer  intuition.  It  is  easy  for  tools  to  provide   a  sound  type  analysis  if  they  choose,  which  may  be  useful  for  tasks   like  refactoring.”
  • 5. Fun  with  Dart Ñ  h]p://try.dartlang.org/s/F-­‐‑MX Ñ  Variables  initialized  to  null Ñ  Generics  are  covariant
  • 6. Ñ  main()  { Ñ     List<Banana>  listOfBananas  =  new  List<Banana>(); Ñ     List<Fruit>  listOfFruits  =  listOfBananas; Ñ     listOfFruits.add(new  Apple()); Ñ     print(listOfBananas[0]);  //  apple Ñ  } Ñ  class  Apple  extends  Fruit{ Ñ     toString()  {  return  "ʺapple"ʺ;} Ñ  } Ñ  class  Banana  extends  Fruit{ Ñ         toString()  {  return  "ʺbanana"ʺ;} Ñ  } Ñ  class  Fruit{ Ñ     toString()  {  return  "ʺfruit"ʺ;} Ñ  }
  • 7. Ñ  main()  { Ñ     num  i; Ñ     num  j  =  i  +  5;  //  NPE Ñ  }
  • 8. Dart  vs  Newspeak  [1] Ñ  Class-­‐‑based  ✓ Ñ  First-­‐‑class  modules  ✗ Ñ  Reflection  (coming  soon  -­‐‑  based  on  mirrors  [2])  ✓ Ñ  Mixins  ✗ Ñ  Names  as  method  invocation  ✗ Ñ  Immutability  enforcement  ✗ [1]:  h]p://bracha.org/newspeak-­‐‑modules.pdf [2]:  h]p://bracha.org/mirrors.pdf
  • 9. Dart  vs  CoffeeScript Ñ  Pa]ern  matching  ✗ (coming  soon?  [1]) Ñ  Prototype  Based  ✗ Ñ  List  comprehension  ✗ Ñ  Compiles  to  JS  ✓ [1]  Pa]ern  Matching  for  an  Object-­‐‑Oriented  and   Dynamically  Typed  Programming  Language  –  Gilad  Bracha
  • 10. Links Ñ  h]p://code.google.com/p/dart/issues/list Ñ  h]p://gototoday.dk/2011/10/10/lars-­‐‑bak-­‐‑on-­‐‑ dart/ Ñ  h]p://bracha.org/Site/Home.html Ñ  h]p://dartinside.com/2011/live-­‐‑from-­‐‑dart-­‐‑ launch/