ABONAMENTE VIDEO REDACȚIA
RO
EN
×
▼ LISTĂ EDIȚII ▼
Numărul 35
Abonament PDF

Keep Calm and Start playing Dart

Kuki Edina
Tester Senior Analyst
PROGRAMARE

Prezentul articol nu-i are ca țintă pe manageri - nu aș vrea să le dau idei despre optimizarea pauzelor recreaționale din birou asigurând un singur dart - și nici pe extremiștii jocului binecunoscut, pentru că nu am cunoștințe de împărtășit despre darts-ul rusesc. Tema acestui articol vine de la big-brotherul nostru celălalt, adică Don't-be-evil Google. Datorită expertizei acestuia în domeniul tehnologiilor web, în octombrie 2011, Aarhus, orașul lui Bjarne Stroustrup și Lars Bak, s-ar putea să fi fost martor la nașterea unui produs revoluționar al industriei IT, fiind locul unde Dart a fost dezvăluit prima oară în fața publicului larg.

Asemenea oricărui frate responsabil, el nu doar ne prezintă noul său gadget, ci ne invită și să-l încercăm. Am avut ocazia să aflăm "de ce, de unde și cum" să începem jocul cu Dart. Iar de la prima inițiere încoace - fără să îl acuzăm de aroganță - cum apare o versiune mai nouă, imediat suntem anunțați.

O prima afirmație importantă despre Dart ar fi că nu se referă doar la un limbaj de programare. Este o platformă completă incluzând un toolchain, obiectivul căreia fiind sprijinirea etapelor de dezvoltare și lansare a aplicațiilor web structurate, scalabile și care au totodată o performanță ridicată. Dacă ar trebui să numim experți în astfel de aplicații, fratele nostru cu singuranță ar face parte din ei. Probabil vă amintiți de browser-ul lui propriu, Chrome sau de motorul V8 de JavaScript, fiind un urmaș de onoare a versiunii asamblate pentru automobile în ceea ce privește accelerația și viteza dovedită în timpul navigărilor pe internet.

Ideea din spatele Dartului este de a neutraliza discrepanța dintre evoluția semnificativă a browser-elor și practicile de startup, dezvoltare sau mentenanță a aplicațiilor web ușor rămase în urmă.

Dart este all-inclusive și totuși simplu de folosit, avem parte de tutoriale practice, precum API și documentație extinse sau susținerea comunității - mulți dintre programatori au speranța de a-l opri pe JavaScript din monarhia singuratică a browser-elor.

Toate cele menționate mai sus, separat sau combinate, au ca rezultate realizarea mai multor aplicații web performante, fapt care impune și mai mult spațiu comercial și DoubleClick pentru Google.

Limbajul de programare, Dart, are următoarele caracteristici:

Putem opta pentru editorul nativ Dart Editor sau putem alege un plugin, pe care să-l integram în IDE-ul cu care suntem deja obisnuiți cum ar fi WebStorm, IntelliJ sau Eclipse.

În ambele cazuri vom avea acces la unelte folositoare din kit-ul de dezvoltare Dart care pot fi lansate de la linia de comandă:

Mașina virtuală Dart VM poate fi folosită pentru a rula aplicații de la linia de comandă, scriptur-i pe servere, servere sau alte aplicații Dart, care nu rulează neapărat în browser. Dart VM a fost extinsă recent pentru a folosi instrucțiuni SIMD(Single-Instruction Multiple-Data). Luând in considerare ca în ultimele procesoare apărute 30% din silicon este destinat instrucțiunilor SIMD, ca de exemplu NEON și vectori, mașina virtuală Dart profită de mai mult spațiu de execuție, reflectându-se ulterior în primul rând la performanța aplicației.

În fazele de dezvoltare este recomandată folosirea lui Dartium, o versiune specială de Chromium, având Dart VM integrat. Se poate reîncărca codul/pagina în loc de a-l recompila- este vorba despre încă un feature a lui Dart care ne ajută să obținem un timp mai scurt de dezvoltare, testare și debugging.

Lista este mult mai lungă, dar singurul lucru de care nu trebuie să uităm, e că Dart trece prin îmbunătățiri continue în ceea ce privește limbajul, uneltele, stabilitatea și rezultatele de benchmarking.

Sună puțin utopic? Don't be evil, citește mai departe.

Atâta vorbărie, unde este codul?

Orice aplicație scrisă în Dart va conține cel puțin:

Diferențiem două tipuri de aplicații Dart: cele pornite de la linia de comandă și cele rulate din browser.

O aplicație Dart de tip command-line este un program independent care va fi rulat cu ajutorul mașinei virtuale Dart VM într-o fereastră de consolă. Aplicația Dart scrisă pentru web va fi găzduită în cadrul unui document HTML și rulată fie din browser-ul Dartium, având Dart VM integrat, fie din oricare alt browser modern după compilarea codului in JavaScript - numit în prezent și limbajul de asamblare a browser-elor.

Aspectele arhitecturale de bază pot fi așadar următoarele: Fig.1 Aplicație tip command-line executat din Dart VM

Fig.2 Aplicație tip web rulat din Dartium

Fig. 3 Aplicație Dart compilat în JS și rulat din orice alt browser modern

Să pătrundem mai detaliat într-un program Dart:

import 'dart:async';
import 'dart:io';

class Counter    // fiecare clasă este moștenită din Object, implicit
{
  var _toCount;    // dacă numele începe cu '_', va fi implicit privat
  num counted;

  // Funcțiile Get și Set(dacă este cazul) vor fi furnizate implicit

  // Zahăr sintactic pentru inițializarea variabilei _toCount
  // înainte de apelarea constructorului
  Counter (this._toCount);    

  // Un exemplu a unui Named-Constructor
  Counter.stave (String text, String s) {    
    for (var char in text.split('')) {
      if (char.toLowerCase() == s.toLowerCase())
        counted++;    
    }
  }

  // Definiția unei metode, în care - fiindcă returnează o expresie - 
  // return-ul poate fi înlocuit cu '=>'
  void printCounted() => print("$_toCount occurred $counted times.");
};                    

// Funcția top-level servește ca punct de pornire a aplicației
main() {

  // Declararea și inițializarea variabilelor
  var stave = "S";        
  File file = new File ("Keep_Calm.txt");

  // Calculele care pot dura mult timp 
  // vor fi gestionate în mod asincron, folosind Future
  Future future = file.readAsString();
  future.then((String content) {
    var sCounter = new Counter.stave(content, 'S');
    sCounter.printCounted();
    })
    .catchError((e) {
    print ('Counter encountered $e error!')
    });
} 

Dart are o sintaxă familiară. În cele câteva linii de mai sus se vede cum sunt puse în practică ideile unui viitor Dart.

Am folosit două biblioteci de bază, io si async, constructorul cu nume, sintaxa' fat-arrow' pentru a obține funcții mai suple, interpolare de string-uri și câteva lucruri interesante în jurul lui then. Procesarea de evenimente asincronă din Dart, se poate face în modul următor: declanșăm o operație, prin metoda then() ne înregistrăm la un callback care va fi apelat după terminarea operației și tot în cadrul funcției then() pregătim instrucțiunile care la rândul lor așteaptă rezultatul operației. Așadar, totul are loc într-un context lexical restrâns.

În afară de I/O și procesare asincronă alte biblioteci utile din SDK sunt: core, html, math, mirrors, isolate, indexed_db, collection, web_gl sau web_sql.

De asemenea, avem acces la pachete pentru testare și mocking, la Chrome pentru testare folosind linia de comandă. Recent a apărut suport nativ pentru integrare-continuă folosind drone.io.

O primă ediție a lui Dart de asociația Ecma International a fost acceptată în mai puțin de trei ani de la apariția acestuia. A obținut un loc în topul 20 al celor mai populare limbaje. Conform Tiobe Index, Dart a a ajuns încă în toamna anului trecut în fața lui F# de la Microsoft sau a Swift-ului de la Apple.

În scurt timp va avea loc primul Dart-Summit în San Francisco, unde vom putea afla știrile cele mai actuale referitoare la strategia de lungă durată, la angajamentul față de platforma Dart, precum și noutățile și ideile inovatoare despre cum putem să folosim Dart în producție.

Până atunci, lăsați deoparte cititul și începeți să jucați Dart! Singuri sau într-un hackathon împreună cu echipa, resursele disponibile on-line și comunitatea activă pe G+, github și stackoverflow, ne ajută să țintim și să înscriem cu un singur Dart. Nu ezitați, vizitați: dartlang.org, dartosphere.org, g.co/dartisans

 

Sponsori

  • comply advantage
  • ntt data
  • 3PillarGlobal
  • Betfair
  • Telenav
  • Accenture
  • Siemens
  • Bosch
  • FlowTraders
  • MHP
  • Connatix
  • MetroSystems
  • BoatyardX
  • Colors in projects

VIDEO: NUMĂRULUI 95