11.07.2015 Views

Выпуск 1 - Российский государственный профессионально ...

Выпуск 1 - Российский государственный профессионально ...

Выпуск 1 - Российский государственный профессионально ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Семинар40январь 2012 / ИНФорматикаЧто же это за зверь?Настало время вплотную подойти к описаниюпредмета нашего разговора — второй стратегииразвития веба, языка программирования Dart.Как я уже говорил ранее, Google имеет страстьк “коллекционированию” лучших умов computerscience, используя их наработки в собственныхэкспериментах. Dart в этом плане не стал исключением:его проектированием занималасьбольшая команда специалистов, среди которыхдвое — Гилад Брача и Ларс Бэк — являются поистинемастерами в вопросах создания динамическихязыков программирования. Оба они связаныс сообществом Smalltalk — языка, положившегоосновы объектно ориентированного программированияв его современном виде. Создателемэтого языка и ключевой фигурой в этом сообществеявляется уже упомянутый мной Алан Кэй. Посвоей динамической природе Smalltalk являетсясравнительно медленным языком, что всегда считалосьодним из его ключевых минусов. ОднакоГилад и Ларс в свое время уже провели эксперимент,подобный описываемому мной, — экспериментпо устранению фундаментальных недостатковSmalltalk. Так родились два языка: Strongtalkи Self, — которые при дальнейшем развитиипредопределили появление высокопроизводительныхобъектно ориентированных технологий.Брача и Бэк сыграли в этом далеко не последнююроль. Уже в середине девяностых годов Бэк принималучастие в разработке очень быстрой Javaмашины— Hotspot, которая и по сей день являетсяосновной виртуальной машиной Java. Можносделать вывод, что Dart уже изначально был в хорошихруках.Каковы же основные принципы, лежащие в основеDart? Сами разработчики выделяют три ключевыхперспективы:• Производительность — Dart проектировалсяс оглядкой на скорость выполнения программ,столь низкую для всех современных реализацийJavascript. Виртуальные Dart-машины могут бытьочень быстрыми за счет таких особенностей языка,как, например, необязательная статическая типизация.• Удобство использования — Dart является языком,сравнимым по простоте с Javascript, посколькуусложнение языка могло бы оттолкнуть от негоначинающих и даже бывалых веб-разработчиковот области, традиционно считающейся простой.В этом также помогает необязательная статическаятипизация и динамическая природа языка вцелом.• Легкая поддержка дополнительных инструментов— таких, как “умные” среды разработкии многочисленные фреймворки. Плохая поддержкасо стороны IDE — один из важнейших минусовJavascript. Dart же был спроектирован таким образом,чтобы комплексные среды разработки моглиосуществлять такие действия, как простой рефакторингкода и поиск мест, откуда вызываются методы.В упрощении этого важную роль играет заменапрототипной объектной системы на классовую.Также выделяется пять основных целей разработкиDart:• Dart должен быть структурированным и в тоже время гибким языком программирования длявеба. Часто сильная структурированность и ортогональностьязыка мешают его гибкому использованию,однако можно найти золотую середину гдетона пути между статическими и динамическимиязыками. Как раз в этой нише находится Dart.• Dart должен быть особенно легким и естественнымязыком для людей, которые уже программировалидо этого на чем-либо. К сожалению, естественнеевсего он выглядит для C-, Java- и Javascriptпрограммистов.Люди же, предпочитающие языкисемейства Pascal или вообще функциональное программирование,сочтут это утверждение Googleголо словным.• Спроектировать Dart так, чтобы код на немвыполнялся быстро и время запуска приложениябыло минимальным. По поводу этого пункта покамало что можно сказать, поскольку единственнымспособом запуска Dart-кода является кросскомпиляцияв Javascript.• Создать возможность запуска приложенийна Dart на самых разных, в том числе мобильныхустройствах. Для поддержки устаревших илинеобычных устройств можно использовать кросскомпиляторв Javascript (правда, при этом Google неучитывает, что JS поддерживается тоже далеко невсеми устройствами. Возможно, с развитием Dartпоявятся его кросс-компиляторы в другие языки).• Разработать средства для запуска Dart во всехсовременных веб-браузерах. К сожалению, в этомнаправлении пока наблюдается самый незначительныйпрогресс — разработчики браузеров,кроме Chrome, не спешат поддерживать начинаниеконкурента. Разработчики браузера InternetExplorer от Microsoft даже напрямую высказалисьо своем неудовлетворении языком Dart и идеямиGoogle. Вероятно, на этом пути будет еще немалопрепятствий.Безопасность в Dart не является краеугольнымкамнем разработки, однако ей уделено достаточновнимания в тех местах, где это не входит в противоречиес тремя вышеупомянутыми принципами.Dart создавался как чрезвычайно гибкий и переносимыйязык, который мог бы работать не толькобок о бок или вместо Javascript, но и на стороне серверавместе с приложениями на Java, Python, Ruby,PHP. Планируется, что будет четыре основных вариантаисполнения кода, написанного на Dart:• Клиентская Dart-машина, встроенная в веббраузер.Специалисты Google надеются, что в ближайшембудущем разработчики наиболее популяр-

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!