I denne opplæringen vil jeg introdusere deg til Googles nye webprogrammeringsspråk, Dart, og forklare hvorfor du bør like det og hva du trenger å vite om det. Lær om dette nye språket og form noen meninger om det - vil det virkelig erstatte JavaScript?
Rett fra hestens munn (som ligger her):
Dart er et klassebasert, enkelt arv, rent objektorientert programmeringsspråk. Dart er valgfritt skrevet ... og støtter reified generikk og grensesnitt.
Dartprogrammer kan kontrolleres statisk. Den statiske kontrolleren vil rapportere
noen brudd på type regler, men slike brudd avbryter ikke kompilering
eller utelukke utførelse.
Hvis det er en flott, dampende haug med mumbo-jumbo til deg, la meg omskrive ovenstående.
Klassebasert: Dart forventer at du skal bruke klasser. Mens JavaScript er ganske klassebasert, kan du ikke skrive Dart uten å skrive klasser.
Single-arv: Klasser kan utvide andre klasser, men bare en om gangen. Dette er en felles struktur i objektorientert programmering. Et sjeldent få språk støtter flere arv, men den generelle konsensus er at det fører til flere problemer enn det løser, så de fleste OOP-språk går for en arv.
Objektorientert programmeringsspråk: Denne utsagnet er litt overflødig, gitt den "klassebaserte" biten fra før. Men det er viktig: Dart er OOP gjennom og gjennom. Faktisk er det snarere minner om Java (ikke JavaScript; Java), som også er klassebasert.
Valgfritt skrevet: De fleste språk er enten skrevet eller ikke. JavaScript, for eksempel, er det ikke. Når du definerer en variabel, vil den bli untyped. Du kan sette den til en string
, så til en Nummer
, og ingen vil klage (vel, Jeg vil). Videre kan du ringe Array
metoder på den variabelen, og du vil ikke ha noen problemer før du faktisk kjører den aktuelle koden. I motsetning er Java skrevet. Hver variabel må deklareres med en type, for eksempel string
eller int
. Og når en variabel er skrevet, kan du ikke sette en annen type verdi inn i den. Og hvis du prøvde å ringe en metode som ikke eksisterer på den typen, vil kompilatoren opprette en feil, slik at du vet feilen din før du kjører koden din. C og dens varianter er andre typede språk, mens Ruby og Python er andre untyped språk.
Valgfritt skrevet betyr, som du kanskje gjetter, at du har muligheten til å erklære en type for variabler. Det er så enkelt som dette: du kan forlate typen, og kompilatoren vil ikke gjøre noen ekstra kontroll. Hvis du oppgir en type, vil kompilatoren hjelpe deg med feil. ActionScript er et eksempel på et annet valgfritt språk.
Dette er ganske smart flytting, en som sannsynligvis er ment å bidra til rask adopsjon. Dartprogrammerere vil mest sannsynlig være JavaScript-programmerere som gjør spranget. Å gi støtte til et untyped språk gir JavaScripters en lettere læringskurve, samtidig som en funksjon som mange programmerere insisterer er viktig for seriøs programmering, som kan hentes senere..
Reified generics: Generics er en språkfunksjon som lar deg skrive elementene i en samling. For eksempel, en Array
i JavaScript kan ikke garantere at objektene den inneholder, er noen spesifikk type (bortsett fra at JavaScript ikke er et skrevet språk). Men generiske lar deg spesifisere at hvert element i en Array
- eller annen samlingstype - må være av en bestemt type, kanskje a string
. Dermed hvis du prøver å sette inn en Nummer
inn i det Array
, Du kan få advarsler. Reified generics gå et ekstra skritt og la denne typen sikkerhet forbli kompilatoren. Type integritet ved kjøretid er bevart.
grensesnitt: Et grensesnitt er en praktisk objektorientert teknikk. Det definerer en type uten å definere funksjonalitet. Det er vanskelig å oppsummere i en setning eller ti, det er nok å si at de er integrert i avanserte (og rene) Objektorienterte Programmeringsteknikker (nemlig designmønstre). Når du grok grensesnitt, vil du beklage mangelen på dem på andre språk.
Statisk kontrollert: Dette går tilbake til å skrive ting. Når du skriver, brukes en variabel med en type som "statisk skrevet", og som sådan kan ikke typen endres når den er blitt erklært. Dette gjør at kompilatoren (eller "statisk kontrolløren") kan gjøre antagelser om dine intensjoner med koden din; det vil si hvis du erklærer en variabel som en string
, så bør du ikke prøve å ringe changeTimeZone
på den. Hvis du gjorde det (kanskje du skrev inn hva du tanken Var den variabelen å holde Dato
objekt), så kan kompilatoren varsle deg om feilen uten å måtte kjøre koden.
Ja, jeg måtte gi den "offisielle" forklaringen til Dart. Men det kan eller ikke tilfredsstille deg. Her er hva Dart er, med den typiske webutvikleren i tankene.
Dart er Googles erstatning for JavaScript. Det ble annonsert i oktober 2011, og den generelle hensikten er å gi de samme verktøyene som JavaScript gjør, bare som kraftverktøy. Som forklart i det forrige trinnet, har det mange objektorienterte funksjoner som den typiske JavaScript-programmereren ikke vil være kjent med. Men de fleste programmører som er kjent med disse funksjonene, vil lett forkaste dem som viktige for alvorlig utvikling.
Kort sagt, Google føler at JavaScript ikke er oppdraget for å være et "ekte" programmeringsspråk, gitt mengden tung løft det har gjort siden iPhone skutt et hull i Flashs zeppelin.
Googles håp er at Dart vil bli støttet innfødt av alle større nettlesere på lang sikt. Det åpenbart skjer ikke akkurat nå, da Dart selv er i tidlig utgivelsesmodus, og vi kan ikke forvente at Apple, Microsoft eller Mozilla hopper ombord ennå. Men det som gjør Dart verdt å se på nå er at Google har gitt en kompilator for å konvertere Dart-kode til vanlig JavaScript.
Personlig er dette noe jeg har lengtet etter siden jeg slår til JavaScript, som kommer fra ActionScript. Si hva du vil om Flash (og vær sikker, jeg har sikkert sagt det også), men ActionScript 3 er et godt språk. Å gå fra avansert AS3 til JavaScript har vist seg å føre til banne. Jeg har faktisk lært meg med min egen JavaScript-kompiler (jeg ble ikke veldig langt og er ganske glad for å forlate prosjektet), og jeg ønsket noe som i det minste kunne la meg utvikle seg med noen niceties, som ekte klasser, grensesnitt og typer , selv om den samlet seg i untyped, prototypisk JavaScript. Kompileringsprosessen kan ta noen feil før du kjører prosjektet, noe som er en stor tidsbesparende.
Så, om Google kommer i veien, er det sikkert mulig å skrive Dart-prosjekter på nettet i dag, og det vil vi bare gjøre ved slutten av denne opplæringen. Forhåpentligvis, underveis, vil jeg overbevise deg om at Dart er faktisk ganske lovende.
Nå som du er spent på "JavaScript 2.0", nå for den harde sannheten. Bare Google har planer om å inkludere støtte for Dart i nettleseren sin. Ingen andre har uttrykt interesse for det. Faktisk er det gjort en del uttalelser imot Dart, eller i det minste ideen om å støtte Dart innfødt, fra nettleserne selv.
Og mens Dart-prosjekter kan kompilere til JavaScript, er det nødvendigvis litt overhead i denne prosessen. Dart-kompilatoren er ikke akkurat som CoffeeScript-kompilatoren, noe som er mer en en-til-en-prosess. Dart er sitt eget språk, med biblioteker og slikt, og når du samler inn i JavaScript, samles det derfor ekstra bibliotekskode i det resulterende JavaScript. Dette veier i dag mer enn et bibliotek som jQuery. Dette må endres ettersom Dart-teamet har gjort kompilasjonen, men i utgangspunktet er det et jQuery-ish-bibliotek som er nødvendig for å normalisere nettleserforskjeller, og også litt ekstra "sukker" for å gjøre JavaScript litt mer ærlig om sin dynamiske natur. Denne typen ekstra vekt er ikke forferdelig, men hvis du bygger en enkel UI-widget for et mobilnettsted, så er kanskje Dart ikke det beste valget. Det vil skinne mer med større webapplikasjoner som er avhengige av betydelig JavaScript.
Til slutt er Dart for tiden i utvikling. Det er spennende, og det er ikke noe "feil" med Dart per se, men hvis du begynner å utvikle i Dart nå, er det en viss sjanse for at API'en vil endres, eller at ting ikke vil bli dokumentert helt eller riktig, og mengden av informasjon på nettet er mindre enn si mengden du finner om jQuery. Det er blødende kant, og det kan ikke være for deg, eller for et gitt prosjekt.
Samtidig er det blødende kant, og det er kjempebra. Investering i en liten stund nå for å lære Dart kunne sette et fint sted når Dart er mer stabil. Hvis du blir involvert nå, har du til og med mulighet til å forme språket. Dart-postlisten på Google Grupper har ofte noen frem og tilbake mellom folk som foreslår ideer og Google-ingeniører som svarer på den ideen. Ofte vurderes brukerbidragte ideer, og det er ikke uvanlig å se dem innlemmet.
Jeg har allerede diskutert fordelene ved et skrevet, objektorientert språk, og det er sikkert sagt at disse egenskapene også er kjempebra.
Dart er også rett og slett minner om Java, og det bør være fantastisk hvis du er mer av en Java (eller C) programmerer som ønsker å komme inn i webutvikling. Dart bør gi en bedre overgang til den verden enn JavaScript ville.
Til slutt, Dart handler ikke bare om en JavaScript-konkurrent. Det er et helt nytt språk, og det er klart å løpe hvor som helst. Den brukes på server siden, en la Node.js, og lover å være et annet utbredt verktøy, som Ruby eller Python.
Dette er selvsagt et lastet spørsmål, og jeg vil invitere en kommentarbasert inkvisisjon, uansett hvordan jeg svarer. Men svaret skal jeg.
Du vil sannsynligvis allerede vare, eller ikke bry deg, avhengig av hvor mye du er plaget av Darts problemer, eller opphisset av Darts fordeler. De to foregående trinnene gir deg rikelig med informasjon som fører deg til din egen konklusjon.
Hvis du er typen person hvis ide om programmering av JavaScript er å søke på nettet etter jQuery-plugins og installere dem på HTML-siden din, vil Dart sannsynligvis ikke gi deg mye spenning. Ta gjerne ikke med vare. Og la meg spare deg en masse tid og avsløre at jeg baserer resten av denne opplæringen på forutsetningen om at leseren bryr seg, minst nok til å utforske.
Men hvis du er typen utvikler av frontendene som faktisk tror på objektorientert JavaScript, prøver å bygge feiloppfanget i skriptene dine, og har en tendens til å skrive mer JavaScript enn HTML, så kan du være en redneck noen som bryr seg om god programmering, uavhengig av språk eller plattform, i så fall kan du bryr deg om Dart. Du skylder deg minst til deg selv for å prøve det.
Etter min mening viser Dart mye løfte og har et sted i webprogrammering. Men jeg tror ikke det kommer til å erstatte eller til og med virkelig kompensere for JavaScript's dominion over scripting på HTML-sider. Jeg tror det vil finne et sted med de mer seriøse nettapplikasjonene, men med mindre nettleserskapene (annet enn Google) er enige om å bygge inn en Dart VM - som jeg ikke tror sannsynlig - er Darts skjebne forvist til Chrome-eksperimenter og store- skala web apps. Enkle skriptoppgaver, som et dash av interaktivitet på en ellers statisk side, vil ikke ha stor nytte av Dart.
Når det er sagt, føler jeg at det alltid er verdt å lære om nye ting. Du kan lære at den nye tingen ikke er verdt tiden din, men du bør formulere den meningen selv, gjennom erfaring. Vi gir litt erfaring i denne opplæringen, så hvis du føler deg eventyrlystne, gjør deg klar for Dart.
Denne korte diskusjonen om Dart har forhåpentligvis utløst interessen for dette nye språket som kan eller ikke kan ta nettet med storm. Hvis du vil prøve det, ta en titt på min Facebook-eksklusive opplæring som vil få hendene dine skitne med et enkelt Dart-prosjekt.
(Hvis du ikke er på Facebook, ikke bekymre deg. Opplæringen vil være på de viktigste Activetuts + -plassen til slutt, og vi har nok mer Dart-innhold lined up in the mean time.)
Takk for at du leste! Del dine meninger om Dart i kommentarene.