dart jump start
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
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
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
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.
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#.
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");
}
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.
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#
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);}
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");}
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.
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");}
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.
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();}
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
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.
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
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/
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.