From Wikipedia, the free encyclopedia
Дарт (енгл. ) је програмски језик опште намене који је оригинално развио Гугл, а касније прихваћен као стандард од стране ЕЦМА(EЦMA-480). Користи се за израду веб, сервер апликација, апликација за мобилни телефон, као и за Интернет Ствари уређаје[2]. Представља софтвер отвореног кода под BSD лиценцом.
Дарт | |
---|---|
Оригинални назив | енгл. |
Изговара се | дарт |
Модел | скриптни, објектно-оријентисани, императивни |
Појавио се | 10. октобар 2011.[1] |
Аутор(и) | Ларс Бак, Каспер Лунд |
Дизајнер(и) | Гугл |
Актуелна верзија | 1,18 / 28. јул 2016. |
Оперативни системи | сви значајнији |
Лиценца | BSD |
Веб-сајт | http://www.dartlang.org |
Дарт је објектно-оријентисан програмски језик, ради са класама које су хијерархијски организоване, базиран на синтакси језика C, који може опционо да се преведе у ЈаваСкрипт. Подржава интерфејсе, Миксине (енгл. ), апстрактне класе, реифиране генерике (енгл. ), и опционо типизирање.
Дарт је приказан на ГОТО конференцији у Орхусу, у Данској, 10-12. октобра 2011.[3] Пројекат су основали Ларс Бак и Каспер Лунд.
Стандардизација
Екма Интернешнл (енгл. ) је формирала технички одбор TC52 [4] ради стандардизације програмског језика Дарт, и пошто Дарт може да се преведе у ЈаваСкрипт стандард, ради у практично сваком модерном претраживачу. Екма Интернешнл је одобрила прво издање спецификације језика Дарт у јулу 2014. на свом 107. Генералном састанку[5], а друго издање у децембру 2014. године[6].
Постоји четири главна начина за извршавање Дарт кода:
Преведен као ЈаваСкрипт
У Дартијум претраживачу
Самостално
Унапред комајлиран
Дарт програми раде на један од два начина. У провереном режиму, који није претпоставњени режим и мора бити укључен, тврђења динамичког типа су омогућена. Ови типови тврдње се могу укључити ако има статичних типова у коду и може ухватити неке грешке када се типови не поклапају. На пример, ако метод треба да врати ниску, али уместо тога врати цео број, тврђења динамичког типа ће то ухватити (енгл. ) и бацити (енгл. ) изузетак. Рад у провереном режиму се препоручује за развој и тестирање.
Дарт програми се покрећу подразумевано у продукцијском режиму, који ради са искљученим тврђењима динамичког типа. Ово је подразумевани режим јер је то најбржи начин за покретање Дарт програма.
Да би се постигло конкурентно програмирање, Дарт користи изолате, који су независни воркери који не деле меморију, али уместо тога користе прослеђивање порука. Сваки Дарт програм користи најмање један, који је главни изолат. Када се преведе у ЈаваСкрипт, изолати се трансформишу у Веб воркере.
Снимци су кључни део Дарт ВМ. Снимци су фајлови који чувају објекте и друге податке покретања.
Скрипт снимци
Цели снимци
Снимци објекта
Први преводилац за генерисање ЈаваСкрипта од Дарт кода је био дартц, али је избачен из употребе. Други Дарт-у-ЈаваСкрипт компилатор је био . Био је написан на Дарту, али никада није имплементирана комплетна семантика језика. Од 2015. године, трећи Дарт-у-ЈаваСкрипт компилатор је дарт2јс од Гугла. Као еволуција ранијих компајлера, написаних је у Дарту и намера је била да се имплементира комплетна спецификација и семантика Дарт језика.
Дана 28. марта 2013. године, тим иза Дарта поставио је информацију на свом блогу у вези Дарт кода преведеног на ЈаваСкрипт дарт2јс компајлером[11], наводећи да сада ради брже него ручно писан ЈаваСкрипт код на Кроум-V8 ЈаваСкрипт машини за ДелтаБлу тестер[12].
Дана 18. новембра 2011. Гугл је објавио Дарт Едитор, програм отвореног кода заснован на Еклипс компонентама, за Мек OS X, Windows и Линукс оперативне системе. Едитор подржава истицање синтаксе, комплетност кода, ЈаваСкрипт компилацију, покренуте веб и сервер Дарт апликације, као и дебаговање.
Дана 13. августа 2012, Гугл је најавио излазак Еклипсе додатка за развој Дарта.[13]
Дана 18. априла 2015. године, Гугл је најавио да ће Дарт едитор бити повучен у корист ЈетБраинс интегрисаног развојног окружења(ИРО)[14], које је сада препоручено ИРО за језик. Дарт додатак[15] је доступан за ИнтеллиЈ ИДЕА, PyCharm, ПхпСторм и ВебСторм. Овај додатак подржава многа својства као што су истицање синтаксе, комплетирање кода, анализа, дебаговање итд. Остали додаци су доступни за едиторе као што су Сублиме Текст, Атом, Емакс, Вим и Визуал Студио Код.[16]
Познато је од новембра 2013.[17] да Кроумиум тим ради на развојном окружењу отвореног кода, заснованом на Кроуму са вишекратно употребљивом библиотеком ГУИ додатака, под кодним именом Спарк, касније преименована у Кроум Дев Едитор[18]. Изграђен је у Дарту, и садржи Спарк који се напаја преко Полимера[19]. Преглед програмерске верзије је доступан у Кроум веб продавници[мртва веза].
Дарт тим је створио ДартПад на почетку 2015. године, како би обезбедили лакши начин за почетак коришћења Дарта. То је потпуно онлајн едитор из којих корисници могу да експериментишу са Дарт апликационим програмским интерфејсом(АПИ), и покренути Дарт код. Омогућава синтаксно обележавање, комплетирање кода, анализу кода, читање документације као и HTML и CSS уређивање.[20]
У 2013. Џон МакКучан саопштио је да је створио перформативни интерфејс ка „једнострука инструкција, вишеструки подаци”( СИМД) сету инструкција за Дарт, чиме су предности СИМД-а по први пут коришћене за веб програме - за кориснике који користе Гуглов експериментални Дартиум претраживач.[21]. Интерфејс се састоји од два типа:
Инстанце ових типова су непроменљиве и код оптимизованог кода су мапиране директно на СИМД регистре. Тестирања на множењу 4×4 матрица, трансформацијама 3Д тачака и визуализација Манделбротовог скупа показују убрзање од скоро 400% у поређењу са скаларним кодом написаним у Дарту.
Пример 'Hello World' програма:
main() {
print('Hello World!');
}
Функција за рачунање н-тог броја Фибоначијевог низа:
int fib(int n) => (n > 2) ? (fib(n - 1) + fib(n - 2)) : 1;
void main() {
print('fib(20) = ${fib(20)}');
}
Проста класа:
// Импортујемо "math" библиотеку ради приступа "sqrt" функцији.
import 'dart:math' as math;
// Правимо класу за Тачку.
class Tacka {
// "final" променљиве не могу бити промењене након доделе.
// Правимо две инстанцне променљиве.
final num x, y;
// Конструктор за постављање инстанцних променљивих.
Tacka(this.x, this.y);
// Именовани конструктор са листом за иницијализацију.
Tacka.koordinate()
: x = 0,
y = 0;
// Метод.
num udaljenostDo(Tacka druga) {
var dx = x - druga.x;
var dy = y - druga.y;
return math.sqrt(dx * dx + dy * dy);
}
// Пример преоптерећивања оператора.
Tacka operator +(Tacka druga) => new Tacka(x + druga.x, y + druga.y);
}
// Сви Дарт програми почињу са "main()" функцијом.
void main() {
// инстанцирање тачка објеката.
var p1 = new Tacka(10, 10);
var p2 = new Tacka.koordinate();
var udaljenost = p1.udaljenostDo(p2);
print(udaljenost);
}
Дарт је као и Јава, C, ЈаваСкрипт, C# и други језици потомак АЛГОЛ породице језика.
Синтакса каскаде метода, која пружа синтаксну пречицу за позивање неколико метода једног за другим на исти објекат, усвојена је од стране Smalltalk-a.
Дарт користи изолате као власничке и заштитне јединице при структурисању апликација[22]. Концепт Изолата надограђује се на модел Актора, који је најпознатији у језику Ерланг.
Коришћење Mirror АПИ-ја за контролисану и сигурну рефлексију је први пут предложен у раду Жилада Браха[23] (члан Дарт тима) и Дејвида Унгара, и оригинално имплементиран у Селфу
Дарт је у почетку имао помешане утиске и иницијатива Дарта је критикована због фрагментације веба, услед првобитних планова за укључивање Дарт ВМ у Кроум. Ти планови одбачени у корист фокусирања компилације Дарта у ЈаваСкрипт.[9]
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.