Статьи

Что такое дартс, и почему вы должны заботиться?

В этом уроке я познакомлю вас с новым языком веб-программирования Google, Dart, и объясню, почему он вам нравится и что вам нужно о нем знать. Узнайте об этом новом языке и составьте несколько мнений о нем — действительно ли он заменит JavaScript?


Прямо изо рта лошади (которая находится здесь ):

Dart — это основанный на классах язык с единым наследованием и чисто объектно-ориентированный язык программирования. Дарт по желанию набирается… и поддерживает повторные шаблоны и интерфейсы.
Дарт программы могут быть статически проверены. Статическая проверка сообщит
некоторые нарушения правил типа, но такие нарушения не отменяют компиляцию
или исключить исполнение.

Если это отличная дымящаяся куча мумбо-юмбо, позвольте мне перефразировать вышесказанное.

На основе классов: Дарт ожидает, что вы будете использовать классы. Хотя JavaScript основан на классах своего рода, вы не можете писать Dart без написания классов.

Одиночное наследование: классы могут расширять другие классы, но только по одному за раз. Это общая структура в объектно-ориентированном программировании. Несколько редких языков поддерживают множественное наследование, но общий консенсус заключается в том, что это вызывает больше проблем, чем решает, поэтому большинство языков ООП идут на одиночное наследование.

Объектно-ориентированный язык программирования: этот оператор является немного избыточным, учитывая бит «основанный на классах» ранее. Но это важно: Дарт — это ООП насквозь. На самом деле, это скорее напоминает Java (не JavaScript; Java), который также основан на классах.

Опционально набирается: большинство языков либо типизированы, либо нет. JavaScript, к примеру, нет. Когда вы определяете переменную, она будет нетипизирована. Вы можете установить его в String , затем в Number , и никто не будет жаловаться (ну, я буду). Более того, вы можете вызывать методы Array для этой переменной, и у вас не возникнет никаких проблем, пока вы действительно не запустите эту строку кода. Напротив, Java является типизированным. Каждая переменная должна быть объявлена ​​с типом, таким как String или int . И когда переменная введена, вы не можете поместить в нее значение другого типа. И если вы попытались вызвать метод, который не существует для этого типа, компилятор выдаст ошибку, сообщив вам о вашей ошибке, прежде чем запускать код. C и его варианты являются другими типизированными языками, в то время как Ruby и Python являются другими нетипизированными языками.

Опционально типизированный означает, как вы теперь можете догадаться, что у вас есть опция, объявляющая тип для переменных. Это так просто: вы можете оставить тип выключенным, и компилятор не будет выполнять никакой дополнительной проверки. Если вы предоставите тип, то компилятор поможет вам с ошибками. ActionScript является примером другого необязательно типизированного языка.

Это довольно умный ход, который, вероятно, призван помочь ускорить принятие. Программисты Dart, скорее всего, будут программистами JavaScript, делающими скачок. Обеспечение поддержки нетипизированного языка упрощает изучение JavaScripters, в то же время предоставляя функцию, которая, как настаивают многие программисты, необходима для серьезного программирования, которое может быть использовано позже.

Reified generics: Generics — это языковая функция, которая позволяет вам печатать элементы коллекции. Например, Array в JavaScript не может гарантировать, что содержащиеся в нем объекты относятся к какому-либо конкретному типу (кроме того факта, что JavaScript не является типизированным языком). Тем не менее, дженерики позволяют вам указать, что каждый элемент в Array (или любом другом типе коллекции) должен иметь определенный тип, возможно, String . Таким образом, если вы попытаетесь вставить Number в Array , вы можете получить предупреждения. Rei & filig; ed generics делают дополнительный шаг и обеспечивают безопасность этого типа мимо компилятора. Целостность типа во время выполнения сохраняется.

Интерфейсы: Интерфейс — это удобная объектно-ориентированная техника. Он определяет тип без определения функциональности. Его использование сложно суммировать в предложении или десяти, достаточно сказать, что они являются неотъемлемой частью передовых (и чистых) методов объектно-ориентированного программирования (а именно шаблонов проектирования). Как только вы взялись за интерфейсы, вы будете жаловаться на их отсутствие на других языках.

Статически проверено: это восходит к печатанию. Когда используется типизация, переменная с типом считается «статически типизированной», и поэтому тип не может быть изменен после ее объявления. Это позволяет компилятору (или «статическому контролеру») делать предположения о ваших намерениях с вашим кодом; то есть, если вы объявляете переменную как String , вам не следует пытаться вызвать для changeTimeZone . Если вы это сделали (возможно, вы ввели то, что, по вашему мнению, было этой переменной, содержащей объект Date ), то компилятор может предупредить вас об ошибке без необходимости запуска кода.


Да, я должен был предоставить «официальное» объяснение Дарту. Но это может или не может удовлетворить вас. Вот что такое Dart, имея в виду типичного веб-разработчика.

Дарт — это замена Google для JavaScript. Это было объявлено в октябре 2011 года, и общее намерение состоит в том, чтобы предоставить те же инструменты, что и в JavaScript, только в качестве мощных инструментов. Как объяснялось в предыдущем шаге, он имеет много объектно-ориентированных функций, которые типичный программист JavaScript будет незнакомым. Но большинство программистов, знакомых с этими функциями, с готовностью отстаивают их как важные для серьезного развития.

Короче говоря, Google считает, что JavaScript не подходит для того, чтобы стать «настоящим» языком программирования, учитывая тот большой объем работ, который он делал с тех пор, как iPhone пробил дыру в дирижабле Flash.

Google надеется, что Dart будет изначально поддерживаться всеми основными браузерами в долгосрочной перспективе. Это, очевидно, сейчас не происходит, учитывая, что сам Dart все еще находится в режиме раннего выпуска, и мы не можем ожидать, что Apple, Microsoft или Mozilla будут прыгать на борту. Однако то, на что стоит обратить внимание в Dart, это то, что Google предоставил компилятор для преобразования кода Dart в обычный JavaScript.

Лично это то, чего я так жаждал с тех пор, как обратился к JavaScript, пришедшему из ActionScript. Скажите, что вы будете о Flash (и будьте уверены, я, наверное, тоже это сказал), но ActionScript 3 — хороший язык. Доказано, что переход от продвинутой AS3 к JavaScript вызывает ругань. Я на самом деле играл с моим собственным JavaScript-компилятором (я не очень далеко продвинулся и очень рад отказаться от проекта), и я хотел что-то, что могло бы, по крайней мере, позволить мне развиваться с некоторыми тонкостями, такими как реальные классы, интерфейсы и типы , даже если он скомпилирован в нетипизированный прототип JavaScript. Процесс компиляции может обнаружить некоторые ошибки перед запуском проекта, что значительно экономит время.

Так что, независимо от того, доберется ли Google до конца, сегодня можно написать проекты Dart для Интернета, и мы сделаем это к концу этого урока. Надеюсь, по пути я убедлю вас, что Дарт на самом деле довольно многообещающий.


Теперь, когда вы все взволнованы по поводу «JavaScript 2.0», теперь о жесткой правде. Только Google планирует включить поддержку Dart в свой браузер. Никто не проявил интереса к этому. На самом деле, довольно много заявлений было сделано против Dart или, по крайней мере, идеи поддержки Dart от самих производителей браузеров .

И хотя проекты Dart могут компилироваться в JavaScript, в этом процессе обязательно есть некоторые накладные расходы. Компилятор Dart не совсем похож на компилятор CoffeeScript, который больше похож на один-к-одному. Dart — это собственный язык с библиотеками и тому подобным, и при компиляции в JavaScript он, следовательно, компилирует дополнительный библиотечный код в полученный JavaScript. В настоящее время это весит больше, чем библиотека, такая как jQuery. Это неизбежно изменится, поскольку команда Dart обдумывает процесс компиляции, но в основном это библиотека jQuery-ish, необходимая для нормализации различий в браузерах, а также некоторый дополнительный «сахар», чтобы сделать JavaScript немного более честным относительно его динамической природы. Этот вид лишнего веса не страшен, но если вы создаете простой виджет пользовательского интерфейса для мобильного сайта, то, возможно, Dart не лучший выбор. Он будет лучше освещаться крупномасштабными веб-приложениями, использующими значительный JavaScript.

Наконец, Дарт в настоящее время находится в разработке. Это захватывающе, и это не является чем-то «неправильным» с Dart как таковым, но если вы начнете разрабатывать в Dart сейчас, есть определенный шанс, что API изменится, или что вещи не будут документированы полностью или правильно, и количество информация в Интернете меньше, чем, скажем, сумма, которую вы можете найти о jQuery. Это крайний край, и это может быть не для вас или для данного проекта.


В то же время, это крутой край, и это потрясающе. Теперь, потратив немного времени на изучение Дарт, можно найти хорошее место, когда Дарт станет более стабильным. Если вы сейчас участвуете, у вас даже есть возможность помочь сформировать язык. В списке рассылки Dart в группах Google часто встречаются люди, предлагающие идеи, и инженеры Google, отвечающие на эту идею. Часто учитываются идеи, представленные пользователями, и нередко их объединяют.

Я уже обсуждал преимущества типизированного объектно-ориентированного языка, и само собой разумеется, что эти черты также удивительны.

Дарт также довольно напоминает Java, и это должно быть здорово, если вы больше программист на Java (или C), который хочет заняться веб-разработкой. Дарт должен обеспечить лучший переход в этот мир, чем JavaScript.

Наконец, Dart — это не просто конкурент JavaScript. Это совершенно новый язык, и он готов к работе где угодно. Он используется на стороне сервера в виде Node.js и обещает стать еще одним распространенным инструментом, таким как Ruby или Python.


Это, конечно, загруженный вопрос, и я буду приглашать инквизицию на основе комментариев, независимо от того, как я отвечу. Но я отвечу.

Вы, вероятно, уже заботитесь или не заботитесь, в зависимости от того, насколько вы обеспокоены проблемами Дартса или взволнованы преимуществами Дартса. Предыдущие два шага дают вам много информации, которая приведет вас к собственному выводу.

Если вы тот тип людей, чья идея программирования JavaScript состоит в том, чтобы искать в Интернете плагины jQuery и устанавливать их на свою HTML-страницу, то Дарт, вероятно, не собирается вас сильно волновать. Не стесняйтесь, чтобы не заботиться. И позвольте мне сэкономить вам кучу времени и показать, что я основываю оставшуюся часть этого урока на предположении, что читателю все равно, по крайней мере, достаточно для изучения.

Однако, если вы тот тип разработчиков, который действительно верит в объектно-ориентированный JavaScript, пытается встроить в свои сценарии обнаружение ошибок и стремится писать больше JavaScript, чем HTML, то вы, возможно, обыденный человек, которому небезразлично о хорошем программировании, независимо от языка или платформы, в этом случае вы можете заботиться о Дарт. Вы по крайней мере должны сделать это сами.

На мой взгляд, Дарт многообещающий и имеет место в веб-программировании. Но я не думаю, что это заменит или даже сместит доминирование JavaScript над сценариями на HTML-страницах. Я думаю, что он найдет место с более серьезными веб-приложениями, но если производители браузеров (кроме Google) не согласятся построить Dart VM — что, я не думаю, вероятно — судьба Dart отводится экспериментам Chrome и большим масштабировать веб-приложения. Простые задачи сценариев, такие как черта интерактивности на статической странице, вряд ли принесут пользу Dart.

Сказав это, я чувствую, что всегда стоит узнавать о новых вещах. Вы можете узнать, что новая вещь не стоит вашего времени, но вы должны сформулировать это мнение самостоятельно, на основе опыта. Мы предоставим некоторый опыт в этом уроке, поэтому, если вы чувствуете себя предприимчивым, будьте готовы к Дарту.


Надеемся, что это краткое обсуждение Дарт вызвало у вас интерес к этому новому языку, который может или не может захватить сеть штурмом. Если вы хотите попробовать это, взгляните на мой эксклюзивный учебник на Facebook , который запачкает ваши руки простым проектом Dart.

(Если вы не в Facebook, не волнуйтесь. В конечном итоге учебник появится на главном сайте Activetuts +, и в то же время у нас будет гораздо больше контента о дартс.)

Спасибо за прочтение! Поделитесь своим мнением о Дарт в комментариях.