dart jump start

18

Click here to load reader

Upload: haim-michael

Post on 08-May-2015

996 views

Category:

Technology


2 download

DESCRIPTION

The slides I was using in my Dart Jump Start lecture, that took place in HIT on October 9th, 2013. You can watch my lecture at http://youtu.be/4g3U6MZc92Q.

TRANSCRIPT

Page 1: Dart Jump Start

Dart Jump Start

Haim MichaelOctober 9th, 2013

All logos, trade marks and brand names used in this presentation belong to the respective owners.

Watch the lecture at http://youtu.be/4g3U6MZc92Q

Li fe M

ic hae l .c o

m

Page 2: Dart Jump Start

Table of ContentLi fe M

ic hae l .c o

m● Introduction ● Optional Typing● Object Oriented Programming● Functional Programming● JavaScript Interoperability● Dart Packages Manager ● Dart Evolution ● Dart Criticism● Learning Resources● Questions & Answers

Page 3: Dart Jump Start

IntroductionLi fe M

ic hae l .c o

m● Dart is an open source class based, object oriented,

optionally typed programming language that assists us

with the development of browser based one page web

applications.

● We can execute the code that should run on the client

side either by using a web browser that supports Dart or

by compiling our code into JavaScript.

Page 4: Dart Jump Start

IntroductionLi fe M

ic hae l .c o

m● We can execute our code on the server side by using the

Dart virtual machine.

● The syntax seems familiar both to those who are used to

JavaScript and to those who are used to Java\PHP\C#.

Page 5: Dart Jump Start

Optional TypingLi fe M

ic hae l .c o

m● The Dart programming language bridges the gap between the

JavaScript dynamic type system and the Java\C# static one.

● The optional typing is available in variable declarations, function

parameters definitions and function return types.

void main()

{

int a = 4;

int b = 3;

var temp = a + b;

print("temp=$temp");

}

Page 6: Dart Jump Start

Object Oriented ProgrammingLi fe M

ic hae l .c o

m● The Dart programming language uses classes and interfaces

● similarly to Java, C# and PHP.

● Dart supports single inheritance similarly to Java, C# and PHP.

● Dart supports multiple interfaces implementation similarly to

Java, C# and PHP.

● Similarly to Java, PHP and C# every class inherits (either

directly or indirectly) from the Object class.

Page 7: Dart Jump Start

Object Oriented ProgrammingLi fe M

ic hae l .c o

m● The classes can have public and private members. The

public accessibility is the default one.

● Dart supports a special shorthand syntax for accessing

class properties, similarly to properties in C#

Page 8: Dart Jump Start

Object Oriented ProgrammingLi fe M

ic hae l .c o

m

class Rectangle {

double _width; double _height; Rectangle(double w,double h) { width = w; height = h; } get width => _width; set width(size) => (size>0)?_width=size:_width=10.0; get height => _height; set height(size) => (size>0)?_height=size:_height=10.0; area() => width * height; perimeter() => 2*(width+height);}

Page 9: Dart Jump Start

Object Oriented ProgrammingLi fe M

ic hae l .c o

m

main() { var ob = new Rectangle(3.2,4.4); ob.width = 20.2; ob.height = -4.1; var area = ob.area(); print("area is $area");}

Page 10: Dart Jump Start

Functional ProgrammingLi fe M

ic hae l .c o

m● We can pass a function as an argument to another

function and we can assign a function to a variable.

● The possibility to define anonymous functions and pass

them over as arguments to other functions simplifies the

code.

Page 11: Dart Jump Start

Functional ProgrammingLi fe M

ic hae l .c o

m

goodMorning(str) => print("Good Morning $str");goodEvening(str) => print("Good Evening $str");

loop(func,name){

for(var i=1;i<=3;i++) { func(name); }}

main() { var myFunc = goodEvening; loop(myFunc,"Danidin");}

Page 12: Dart Jump Start

JavaScript InteroperabilityLi fe M

ic hae l .c o

m● Dart allows us to interact with other parts of the web

document as the DOM and other code written in

JavaScript.

Page 13: Dart Jump Start

JavaScript InteroperabilityLi fe M

ic hae l .c o

m

import 'dart:html';

void main() { var ob = query("#sample_text_id"); ob.text = "Press Here"; ob.on.click.add(reverseText);}

void reverseText(Event event) { var text = query("#sample_text_id").text; var buffer = new StringBuffer(); for (int i = text.length - 1; i >= 0; i--) { buffer.add(text[i]); } query("#sample_text_id").text = buffer.toString();}

Page 14: Dart Jump Start

Dart Package ManagerLi fe M

ic hae l .c o

m● Pub is Dart package manager. Pub assists us reusing

existing Dart code.

● Pub handles versioning and dependency management

and ensures that our application runs on other machines

exactly as it runs on ours.

http://pub.dartlang.org

Page 15: Dart Jump Start

Dart EvolutionLi fe M

ic hae l .c o

mPolymer

● Dart was announced on October 12th 2011. The

developers of Dart seem to learn well from Java

mistakes (waiting with the production release, proper

development tools and neutralizing competitors).

● During the past two years its development goes side by

side with the development of new Google powered

JavaScript libraries, such as AngularJS and Polymer.

Page 16: Dart Jump Start

Dart CriticismLi fe M

ic hae l .c o

m“The growth of Dart might take us backward to the days

of proprietary vendor lock-in"

“There is a fragmentation risk in the evolution of a new

non standard programming language for the web"

“The optional typing damages the quality of the code"

Critics I Found on The Web

Page 17: Dart Jump Start

Learning ResourcesLi fe M

ic hae l .c o

m● Dart programming language official main website

https://www.dartlang.org

● You can find the 'Dart Fundamentals' online course

available for free personal use at

http://abelski.lifemichael.com

● Dart Developers Group on Facebook

https://www.facebook.com/groups/221793191216903/

Page 18: Dart Jump Start

Questions & AnswersLi fe M

ic hae l .c o

m● Two courses you might find interesting include

Software Engineering in PHP

more info

Android 4.4 Java Applications Development

more info

HTML5 Cross Platform Mobile Applications

more info

● If you enjoyed my lecture please leave me a comment

at http://speakerpedia.com/speakers/life-michael.

Thanks for your time!

Haim.