ABONAMENTE VIDEO REDACȚIA
RO
EN
NOU
Numărul 150
Numărul 149 Numărul 148 Numărul 147 Numărul 146 Numărul 145 Numărul 144 Numărul 143 Numărul 142 Numărul 141 Numărul 140 Numărul 139 Numărul 138 Numărul 137 Numărul 136 Numărul 135 Numărul 134 Numărul 133 Numărul 132 Numărul 131 Numărul 130 Numărul 129 Numărul 128 Numărul 127 Numărul 126 Numărul 125 Numărul 124 Numărul 123 Numărul 122 Numărul 121 Numărul 120 Numărul 119 Numărul 118 Numărul 117 Numărul 116 Numărul 115 Numărul 114 Numărul 113 Numărul 112 Numărul 111 Numărul 110 Numărul 109 Numărul 108 Numărul 107 Numărul 106 Numărul 105 Numărul 104 Numărul 103 Numărul 102 Numărul 101 Numărul 100 Numărul 99 Numărul 98 Numărul 97 Numărul 96 Numărul 95 Numărul 94 Numărul 93 Numărul 92 Numărul 91 Numărul 90 Numărul 89 Numărul 88 Numărul 87 Numărul 86 Numărul 85 Numărul 84 Numărul 83 Numărul 82 Numărul 81 Numărul 80 Numărul 79 Numărul 78 Numărul 77 Numărul 76 Numărul 75 Numărul 74 Numărul 73 Numărul 72 Numărul 71 Numărul 70 Numărul 69 Numărul 68 Numărul 67 Numărul 66 Numărul 65 Numărul 64 Numărul 63 Numărul 62 Numărul 61 Numărul 60 Numărul 59 Numărul 58 Numărul 57 Numărul 56 Numărul 55 Numărul 54 Numărul 53 Numărul 52 Numărul 51 Numărul 50 Numărul 49 Numărul 48 Numărul 47 Numărul 46 Numărul 45 Numărul 44 Numărul 43 Numărul 42 Numărul 41 Numărul 40 Numărul 39 Numărul 38 Numărul 37 Numărul 36 Numărul 35 Numărul 34 Numărul 33 Numărul 32 Numărul 31 Numărul 30 Numărul 29 Numărul 28 Numărul 27 Numărul 26 Numărul 25 Numărul 24 Numărul 23 Numărul 22 Numărul 21 Numărul 20 Numărul 19 Numărul 18 Numărul 17 Numărul 16 Numărul 15 Numărul 14 Numărul 13 Numărul 12 Numărul 11 Numărul 10 Numărul 9 Numărul 8 Numărul 7 Numărul 6 Numărul 5 Numărul 4 Numărul 3 Numărul 2 Numărul 1
×
▼ 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

 

NUMĂRUL 149 - Development with AI

Sponsori

  • Accenture
  • BT Code Crafters
  • Accesa
  • Bosch
  • Betfair
  • MHP
  • BoatyardX
  • .msg systems
  • P3 group
  • Ing Hubs
  • Cognizant Softvision
  • Colors in projects