SlideShare una empresa de Scribd logo
1 de 17
Descargar para leer sin conexión
Structured web programming

  Created by Lars Bak & Gilad Bracha


        Come to the Dart side.
                  Gilad Bracha in an interview on Dart
What is DART?

 ● New programming language
 ● Open Source Project
 ● Simple OO programming language
 ● Class-based single inheritance with interfaces
 ● Optional static types
 ● Real lexical scoping
 ● Single-threaded
 ● Familiar Syntax
 ● It's still a Technology Preview
Hello World!
Dart is NOT the competition of
           JavaScript

● Dart is meant to fill a vacuum, not to replace
  JavaScript, but rather to fill the vacuum left by
  fragmented mobile platforms.

● It seems they are targeting the problem of
  programming in Java-like for android, Objective-C
  for iOS and so forth.

● It's not done.
Type-Checker
● Dart has a different type-checker.

● The conventional type-checker tries to prove a program
  obeys the type system.

● If it can't construct a proof - the program is considered
  invalid, "Guilty until proven innocent"

● In Dart, you are innocent until proven guilty.

● During development one can choose to validate types.
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
    ○ T x = o;        assert(o === null || o is T);

 ● By default, type annotations have no effect and no cost
    ○ Code runs free
Example
Classes
 ● Single class inheritance (Object is the default)
 ● Interfaces
 ● Constructor assign
   Greeter.withPrefix(this.prefix); //A constructor
   var greeter = new Greeter.withPrefix('Howdy');
 ● Setters and Getters
   class Greeter {
     String _prefix = 'Hello,'; // Hidden instance variable.
     String get prefix() => _prefix; // Getter for prefix.
     void set prefix(String value) {...} // Setter for prefix.
   }
   greeter.prefix = 'Howdy,'; // Set prefix.


Example
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
 ● Which gives us Actor based concurrency

Isolates
DART EXECUTION
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
How to use Dart?

One can run Dart code in several ways:
● Translate Dart code to JavaScript that can run in any
  modern browser:
   ○ Chrome
   ○ Safari 5+
   ○ Firefox 4+

● Execute Dart code directly in a VM on the server side
●
● Use Dartboard to write, modify, and execute small Dart
  programs within any browser window
Embedding Dart in HTML

● Using the HTML script tag with type='application/dart'.

● Like other script tags, the script contents can be inlined as the
  body of the script tag or specified by reference via a URL using the
  script tag’s src attribute.

● The Dart script can have optional #source and #import directives.
  It must have a visible top-level function called main(), either
  declared directly in the script or in a sourced/imported file. The
  browser will invoke main() when the page is loaded.
Fundamental differences from JavaScript


● Isolated script tags
    ○ Each script tag runs in isolation.
    ○ Use #import to use code from other URL
    ○ Each script tag requires a main() to be run.
● Delayed Execution
    ○ Each script's main() is called on DOMContentLoaded
      event
    ○ Ordering is not guaranteed
    ○ Dart code executes after page load.
    ○ We can assume the DOM is fully loaded.
● No inline event listeners
Improving the DOM
● Better Querying
                 Old                                New
 elem.getElementById('foo');           elem.query('#foo');

 elem.getElementsByTagName('div');     elem.queryAll('div');

 elem.getElementsByName('foo');        elem.queryAll('[name="foo"]');

 elem.getElementsByClassName('foo');   elem.queryAll('.foo');

 elem.querySelector('.foo .bar');      elem.query('.foo .bar');

 elem.querySelectorAll('.foo .bar');   elem.queryAll('.foo .bar');
Improving the DOM
● Use real collections
   ○ The queries return collections which are objects that implement the
     Dart core library's built-in collection interfaces.
   ○ This way we get rid of a lot of special methods & made attributes a
     map
                    Old                                   New
   elem.hasAttribute('name');            elem.attributes.contains('name');

   elem.getAttribute('name');            elem.attributes['name'];

   elem.setAttribute('name', 'value');   elem.attributes['name'] = 'value';

   elem.removeAttribute('name');         elem.attributes.remove('name');

   elem.hasChildNodes();                 elem.nodes.isEmpty();

   elem.firstChild();                    elem.nodes[0];

   elem.appendChild(child);              elem.nodes.add(child);
Improving the DOM
● Use constructors
   Old
        document.createElement('div')
   New
        new Element.tag('div')

   Or
        TableElement table = new Element.html(
          '<table><tr><td>Hello <em>Dart!</em></table>');
Improving the DOM
● Events
    ○ There are no inline events like 'onclick()'
    ○ New ElementEvents class. For each of the known event types, there is
      a property on that class: click, mouseDown, etc
    ○ There are event objects that can add and remove listeners and
      dispatch events.

                  Old                                        New
elem.addEventListener('click', (event) =>   elem.on.click.add( (event) => print
print('click!'), false);                    ('click!'));
elem.removeEventListener( 'click', elem.on.click.remove(listener);
listener);
A technology preview on




  dartlang.org
  dart.googlecode.com
  http://gototoday.dk/2011/10/10/lars-bak-on-dart/
  http://www.2ality.com/2011/10/dart-launch.html
  http://dartinside.com/
  @DartInside

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Dart
DartDart
Dart
 
Andy On Closures
Andy On ClosuresAndy On Closures
Andy On Closures
 
Let's Play Dart
Let's Play DartLet's Play Dart
Let's Play Dart
 
Dart, Darrt, Darrrt
Dart, Darrt, DarrrtDart, Darrt, Darrrt
Dart, Darrt, Darrrt
 
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...
 
Google Dart
Google DartGoogle Dart
Google Dart
 
TypeScript - Silver Bullet for the Full-stack Developers
TypeScript - Silver Bullet for the Full-stack DevelopersTypeScript - Silver Bullet for the Full-stack Developers
TypeScript - Silver Bullet for the Full-stack Developers
 
Typescript
TypescriptTypescript
Typescript
 
Introduction to the Dart language
Introduction to the Dart languageIntroduction to the Dart language
Introduction to the Dart language
 
Advanced PHP Simplified
Advanced PHP SimplifiedAdvanced PHP Simplified
Advanced PHP Simplified
 
Getting Started with TypeScript
Getting Started with TypeScriptGetting Started with TypeScript
Getting Started with TypeScript
 
TI1220 Lecture 14: Domain-Specific Languages
TI1220 Lecture 14: Domain-Specific LanguagesTI1220 Lecture 14: Domain-Specific Languages
TI1220 Lecture 14: Domain-Specific Languages
 
TypeScript Best Practices
TypeScript Best PracticesTypeScript Best Practices
TypeScript Best Practices
 
002. Introducere in type script
002. Introducere in type script002. Introducere in type script
002. Introducere in type script
 
AngularConf2015
AngularConf2015AngularConf2015
AngularConf2015
 
Generics
GenericsGenerics
Generics
 
8 introduction to_java_script
8 introduction to_java_script8 introduction to_java_script
8 introduction to_java_script
 
Getting started with typescript
Getting started with typescriptGetting started with typescript
Getting started with typescript
 
TypeScript
TypeScriptTypeScript
TypeScript
 
XKE - Programming Paradigms & Constructs
XKE - Programming Paradigms & ConstructsXKE - Programming Paradigms & Constructs
XKE - Programming Paradigms & Constructs
 

Destacado

Observatorio ambiental
Observatorio ambientalObservatorio ambiental
Observatorio ambientalsiralexander
 
4 Steps to Imaging your gel
4 Steps to Imaging your gel4 Steps to Imaging your gel
4 Steps to Imaging your gelTito Jankowski
 
elm-d3 @ NYC D3.js Meetup (30 June, 2014)
elm-d3 @ NYC D3.js Meetup (30 June, 2014)elm-d3 @ NYC D3.js Meetup (30 June, 2014)
elm-d3 @ NYC D3.js Meetup (30 June, 2014)Spiros
 
Manual sup sppbs thn 1-2011
Manual sup sppbs thn 1-2011Manual sup sppbs thn 1-2011
Manual sup sppbs thn 1-2011sabrisahir
 

Destacado (6)

Observatorio ambiental
Observatorio ambientalObservatorio ambiental
Observatorio ambiental
 
Magic shop
Magic shopMagic shop
Magic shop
 
4 Steps to Imaging your gel
4 Steps to Imaging your gel4 Steps to Imaging your gel
4 Steps to Imaging your gel
 
elm-d3 @ NYC D3.js Meetup (30 June, 2014)
elm-d3 @ NYC D3.js Meetup (30 June, 2014)elm-d3 @ NYC D3.js Meetup (30 June, 2014)
elm-d3 @ NYC D3.js Meetup (30 June, 2014)
 
What About Elm?
What About Elm?What About Elm?
What About Elm?
 
Manual sup sppbs thn 1-2011
Manual sup sppbs thn 1-2011Manual sup sppbs thn 1-2011
Manual sup sppbs thn 1-2011
 

Similar a Structured web programming

CSharp presentation and software developement
CSharp presentation and software developementCSharp presentation and software developement
CSharp presentation and software developementfrwebhelp
 
Sharable of qualities of clean code
Sharable of qualities of clean codeSharable of qualities of clean code
Sharable of qualities of clean codeEman Mohamed
 
The Theory Of The Dom
The Theory Of The DomThe Theory Of The Dom
The Theory Of The Domkaven yan
 
Flutter tutorial for Beginner Step by Step
Flutter tutorial for Beginner Step by StepFlutter tutorial for Beginner Step by Step
Flutter tutorial for Beginner Step by StepChandramouli Biyyala
 
What’s new in Google Dart - Seth Ladd
What’s new in Google Dart - Seth LaddWhat’s new in Google Dart - Seth Ladd
What’s new in Google Dart - Seth Laddjaxconf
 
Robust C++ Task Systems Through Compile-time Checks
Robust C++ Task Systems Through Compile-time ChecksRobust C++ Task Systems Through Compile-time Checks
Robust C++ Task Systems Through Compile-time ChecksStoyan Nikolov
 
Productivity Enhencement with Visual Studio
Productivity Enhencement with Visual StudioProductivity Enhencement with Visual Studio
Productivity Enhencement with Visual StudioAhasan Habib
 
SharePoint Cincy 2012 - jQuery essentials
SharePoint Cincy 2012 - jQuery essentialsSharePoint Cincy 2012 - jQuery essentials
SharePoint Cincy 2012 - jQuery essentialsMark Rackley
 
Dart, unicorns and rainbows
Dart, unicorns and rainbowsDart, unicorns and rainbows
Dart, unicorns and rainbowschrisbuckett
 
Angular JS2 Training Session #1
Angular JS2 Training Session #1Angular JS2 Training Session #1
Angular JS2 Training Session #1Paras Mendiratta
 
Dart structured web apps
Dart   structured web appsDart   structured web apps
Dart structured web appschrisbuckett
 
Andriy Shalaenko - GO security tips
Andriy Shalaenko - GO security tipsAndriy Shalaenko - GO security tips
Andriy Shalaenko - GO security tipsOWASP Kyiv
 
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...Sang Don Kim
 
Learn Dart And Angular, Get Your Web Development Wings With Kevin Moore
Learn Dart And Angular, Get Your Web Development Wings With Kevin MooreLearn Dart And Angular, Get Your Web Development Wings With Kevin Moore
Learn Dart And Angular, Get Your Web Development Wings With Kevin MooreCodeCore
 

Similar a Structured web programming (20)

CSharp presentation and software developement
CSharp presentation and software developementCSharp presentation and software developement
CSharp presentation and software developement
 
Sharable of qualities of clean code
Sharable of qualities of clean codeSharable of qualities of clean code
Sharable of qualities of clean code
 
Dartprogramming
DartprogrammingDartprogramming
Dartprogramming
 
The Theory Of The Dom
The Theory Of The DomThe Theory Of The Dom
The Theory Of The Dom
 
Flutter tutorial for Beginner Step by Step
Flutter tutorial for Beginner Step by StepFlutter tutorial for Beginner Step by Step
Flutter tutorial for Beginner Step by Step
 
What’s new in Google Dart - Seth Ladd
What’s new in Google Dart - Seth LaddWhat’s new in Google Dart - Seth Ladd
What’s new in Google Dart - Seth Ladd
 
Robust C++ Task Systems Through Compile-time Checks
Robust C++ Task Systems Through Compile-time ChecksRobust C++ Task Systems Through Compile-time Checks
Robust C++ Task Systems Through Compile-time Checks
 
Productivity Enhencement with Visual Studio
Productivity Enhencement with Visual StudioProductivity Enhencement with Visual Studio
Productivity Enhencement with Visual Studio
 
Oops lecture 1
Oops lecture 1Oops lecture 1
Oops lecture 1
 
SharePoint Cincy 2012 - jQuery essentials
SharePoint Cincy 2012 - jQuery essentialsSharePoint Cincy 2012 - jQuery essentials
SharePoint Cincy 2012 - jQuery essentials
 
Dart Workshop
Dart WorkshopDart Workshop
Dart Workshop
 
jQuery
jQueryjQuery
jQuery
 
Dart, unicorns and rainbows
Dart, unicorns and rainbowsDart, unicorns and rainbows
Dart, unicorns and rainbows
 
Angular JS2 Training Session #1
Angular JS2 Training Session #1Angular JS2 Training Session #1
Angular JS2 Training Session #1
 
Dart structured web apps
Dart   structured web appsDart   structured web apps
Dart structured web apps
 
Andriy Shalaenko - GO security tips
Andriy Shalaenko - GO security tipsAndriy Shalaenko - GO security tips
Andriy Shalaenko - GO security tips
 
Clean Code 2
Clean Code 2Clean Code 2
Clean Code 2
 
UNIT 1 (7).pptx
UNIT 1 (7).pptxUNIT 1 (7).pptx
UNIT 1 (7).pptx
 
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...
 
Learn Dart And Angular, Get Your Web Development Wings With Kevin Moore
Learn Dart And Angular, Get Your Web Development Wings With Kevin MooreLearn Dart And Angular, Get Your Web Development Wings With Kevin Moore
Learn Dart And Angular, Get Your Web Development Wings With Kevin Moore
 

Último

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 

Último (20)

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 

Structured web programming

  • 1. Structured web programming Created by Lars Bak & Gilad Bracha Come to the Dart side. Gilad Bracha in an interview on Dart
  • 2. What is DART? ● New programming language ● Open Source Project ● Simple OO programming language ● Class-based single inheritance with interfaces ● Optional static types ● Real lexical scoping ● Single-threaded ● Familiar Syntax ● It's still a Technology Preview Hello World!
  • 3. Dart is NOT the competition of JavaScript ● Dart is meant to fill a vacuum, not to replace JavaScript, but rather to fill the vacuum left by fragmented mobile platforms. ● It seems they are targeting the problem of programming in Java-like for android, Objective-C for iOS and so forth. ● It's not done.
  • 4. Type-Checker ● Dart has a different type-checker. ● The conventional type-checker tries to prove a program obeys the type system. ● If it can't construct a proof - the program is considered invalid, "Guilty until proven innocent" ● In Dart, you are innocent until proven guilty. ● During development one can choose to validate types.
  • 5. 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 ○ T x = o; assert(o === null || o is T); ● By default, type annotations have no effect and no cost ○ Code runs free Example
  • 6. Classes ● Single class inheritance (Object is the default) ● Interfaces ● Constructor assign Greeter.withPrefix(this.prefix); //A constructor var greeter = new Greeter.withPrefix('Howdy'); ● Setters and Getters class Greeter { String _prefix = 'Hello,'; // Hidden instance variable. String get prefix() => _prefix; // Getter for prefix. void set prefix(String value) {...} // Setter for prefix. } greeter.prefix = 'Howdy,'; // Set prefix. Example
  • 7. 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 ● Which gives us Actor based concurrency Isolates
  • 9. 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
  • 10. How to use Dart? One can run Dart code in several ways: ● Translate Dart code to JavaScript that can run in any modern browser: ○ Chrome ○ Safari 5+ ○ Firefox 4+ ● Execute Dart code directly in a VM on the server side ● ● Use Dartboard to write, modify, and execute small Dart programs within any browser window
  • 11. Embedding Dart in HTML ● Using the HTML script tag with type='application/dart'. ● Like other script tags, the script contents can be inlined as the body of the script tag or specified by reference via a URL using the script tag’s src attribute. ● The Dart script can have optional #source and #import directives. It must have a visible top-level function called main(), either declared directly in the script or in a sourced/imported file. The browser will invoke main() when the page is loaded.
  • 12. Fundamental differences from JavaScript ● Isolated script tags ○ Each script tag runs in isolation. ○ Use #import to use code from other URL ○ Each script tag requires a main() to be run. ● Delayed Execution ○ Each script's main() is called on DOMContentLoaded event ○ Ordering is not guaranteed ○ Dart code executes after page load. ○ We can assume the DOM is fully loaded. ● No inline event listeners
  • 13. Improving the DOM ● Better Querying Old New elem.getElementById('foo'); elem.query('#foo'); elem.getElementsByTagName('div'); elem.queryAll('div'); elem.getElementsByName('foo'); elem.queryAll('[name="foo"]'); elem.getElementsByClassName('foo'); elem.queryAll('.foo'); elem.querySelector('.foo .bar'); elem.query('.foo .bar'); elem.querySelectorAll('.foo .bar'); elem.queryAll('.foo .bar');
  • 14. Improving the DOM ● Use real collections ○ The queries return collections which are objects that implement the Dart core library's built-in collection interfaces. ○ This way we get rid of a lot of special methods & made attributes a map Old New elem.hasAttribute('name'); elem.attributes.contains('name'); elem.getAttribute('name'); elem.attributes['name']; elem.setAttribute('name', 'value'); elem.attributes['name'] = 'value'; elem.removeAttribute('name'); elem.attributes.remove('name'); elem.hasChildNodes(); elem.nodes.isEmpty(); elem.firstChild(); elem.nodes[0]; elem.appendChild(child); elem.nodes.add(child);
  • 15. Improving the DOM ● Use constructors Old document.createElement('div') New new Element.tag('div') Or TableElement table = new Element.html( '<table><tr><td>Hello <em>Dart!</em></table>');
  • 16. Improving the DOM ● Events ○ There are no inline events like 'onclick()' ○ New ElementEvents class. For each of the known event types, there is a property on that class: click, mouseDown, etc ○ There are event objects that can add and remove listeners and dispatch events. Old New elem.addEventListener('click', (event) => elem.on.click.add( (event) => print print('click!'), false); ('click!')); elem.removeEventListener( 'click', elem.on.click.remove(listener); listener);
  • 17. A technology preview on dartlang.org dart.googlecode.com http://gototoday.dk/2011/10/10/lars-bak-on-dart/ http://www.2ality.com/2011/10/dart-launch.html http://dartinside.com/ @DartInside