Теория Задачи Инструменты Социум Интересно

Личный Кабинет

Войдите или зарегистрируйтесь
Лаборатория LMatrix
Лаборатория Lmatrix занимается оптимизацией транспортных задач. Сюда можно отнести задачи поиска кратчайшего пути в ориентированных графах, применимые как к масштабам города и страны, классическую задачу обхода (коммивояжера), задачи оптимизации доставки грузов, задачи трехмерной упаковки.
Новости проекта

31.05.2013 - Универсиада. Маршрут по России и Татарстану. Официально и математически.

Огонь Универсиады приближается к финишу в Казани, но прежде пройдет по 43 городам республики Татарстан. Все об маршрутах огня в нашем анонсе.

Тематические статьи

26.07.2013 - Монитор в автомобиле будет дублировать экран смартфона

Водители смогут увидеть точную копию экрана своего смартфона на мониторе бортовой системы автомобиля. О сотрудничестве в этом направлении договорились разработчик ПО для удаленного управления устройствами RealVNC и производитель процессоров Texas Instruments.

29.03.2013 - Facebook на днях анонсирует собственный смартфон на Android

На следующей неделе Facebook собирается представить собственный смартфон с кастомизированной версией Android, утверждают источники. Ранее глава компании Марк Цукерберг опровергал слухи о выпуске собственного смартфона.

29.03.2013 - Основатель Facebook М.Цукерберг создает политическую организацию

Основатель социальной сети Facebook Марк Цукерберг создает политическую организацию, которая займется такими вопросами, как реформа образования, иммиграция и научные исследования, передает Associated Press со ссылкой на анонимный источник.

Компания Google представила новый язык web-программирования Dart

11 октября 2011 года в 07:34   Просмотров: 586920

Компания Google анонсировала новый язык структурированного программирования для Web - Dart, который в долгосрочной перспективе позиционируется как более прогрессивная замена для языка JavaScript, решающая все имеющиеся в настоящее время проблемы с расширяемостью, производительностью и поддержкой разработки сложных приложений. Код нового языка доступен для свободной загрузки и распространяется под лицензией BSD. Кроме достаточно обширной стандартной библиотеки и интерфейсной библиотеки DOM, для Dart поставляется набор инструментов для компиляции, запуска кода в виртуальной машине, проверки кода и отладки.

Язык имеет достаточно привычный синтаксис (похож на Java и Си) и обладает нестрогой типизацией (не обязательно явно определять типы). Dart может использовать как для создания серверных, так и для клиентских приложений. Для запуска внутри браузера код на языке Dart может быть преобразован в JavaScript-представление (пока поддерживаются только браузеры Chrome, Safari 5+ и Firefox 4+) или запущен напрямую под управлением специального JavaScript-интерпретатора Dartboard. На стороне сервера приложение на языке Dart может быть выполнено внутри специальной виртуальной машины, которая обеспечивает производительность выполнения близкую к компилируемым в машинный код языкам. Виртуальную машину Dart планируется интегрировать в будущие версии браузера Chrome, что позволит выполнять приложения на языке Dart без компиляции в JavaScript. Дополнительно поддерживается встраивание Dart-кода в HTML, используя mime-тип "application/dart".

Язык подходит как для разработки одним программистом небольших скриптов без жесткой структуры, так и для создания высоко масштабируемых больших модульных проектов, поддерживаемых большим коллективом и требующих более явной типизации для того чтобы избежать неразберихи и ошибок. При этом явное задание типов не обязательно, например, можно начать разработку без указания типов, а в дальнейшем при необходимости добавить их (например, изначально написать "var x", а потом заменить на "num x"). Из поддерживаемых типов отмечаются различныхе виды хэшей, массивов и списков, очереди, числовые и строковые типы, типы для определения даты и времени, регулярные выражения (RegExp). Возможно создание своих типов.

Код Dart всегда выполняется только в рамках одного потока, для организации параллельного выполнения предлагается использовать классы с атрибутом isolate. Код, определенный в блоке isolate, выполняется полностью в изолированном пространстве в отдельной области памяти, взаимодействуя с основным процессом через отправку сообщений. В каждом скрипте используется собственное пространство имён, для использования внешних объектов, функций или переменных следует их явно импортировать при помощи конструкции "import". Все переменные по умолчанию действуют только в пределах текущего скрипта и не экспортируются глобально.

При проектировании языка преследовались следующие цели:
Структурированный, но гибкий язык для создания web-приложений;
Привычный и естественный для программистов, простой для изучения (кстати говоря, это отлично удалось, посмотрев примеры, возникает впечатление, что язык давно знаком);
Обеспечивающий быстрый запуск и высокую производительность для всех современных web-браузеров и различных типов окружений, от портативных устройств до мощных серверов.

Ключевые особенности:
Возможность определения классов и интерфейсов, позволяющих использовать инкапсуляцию и повторно использовать существующие методы и данные;
Необязательное указание типов, использовать или нет статические типы решает разработчик. Указание типов позволяет упростить отладку и выявление ошибок, делает код более ясным и читаемым;
Поддержка использования готовых и создания своих библиотек. Сторонние реализации фунуций могут подключаться в виде разделяемых библиотек;
Набор готовых инструментов для поддержки разработки на языке Dart, включая реализацию средств динамической разработки и отладки с исправлением кода на лету ("edit-and-continue").

Проблемы web-разработки, которые решены в Dart:
Небольшие скрипты, часто используемые в больших web-приложениях в неструктурированном виде, трудно поддерживать и отлаживать. Монолитные приложения проблематично разбить на части и поручить разработку каждой из частей отдельной команде программистов. Чем больше становится web-приложение, тем труднее его развивать и поддерживать;
Скриптовые языки популярны в основном в силу своей легковесной натуры и возможности очень быстро создать работающий код. Ценой такого подхода является проблема с восприятием логики работы по структуре самого кода, что требует написания комментариев для некоторых вещей, очевидных в строго типизированных языках. В итоге, сторонним разработчикам трудно разобраться с чужим кодом, обеспечить его поддержку и доработку;
Для существующих языков разработчик вынужден выбирать либо языки со статической типизацией, либо с динамической. Традиционные языки со статической типизацией требуют использования тяжелого инструментария и жесткого соблюдения стиля кодирования, из-за чего программист может чувствовать себя слишком ограниченным, а язык ощущаться как лишенный гибкости;
Разработчики не могли создавать однородные системы, охватывающие как клиентскую, так и серверную часть. Исключение составляют разве что Node.js и Google Web Toolkit (GWT);
Использование различных языков и форматов в проекте влечет за собой переключение контекста, что усложняет процесс кодирования и делает его громоздким.

Язык разработан при участии двух известных экспертов: Гилада Брача (Gilad Bracha), автора объектно-ориентированного функционального языка программирования Newspeak, и разработчика (в соавторстве с Джеймсом Гослингом и Билом Джоем) второй и третьей редакции спецификаций на язык Java, и Ларса Бака (Lars Bak), одного из основоположников использования виртуальных машин, руководившего разработкой виртуальных машин HotSpot и Java ME, а также возглавляющего разработку JavaScript-движка V8.

Оставить комментарий

Пожалуйста, введите символы, показанные на рисунке.

Примеры решений задачи коммивояжера (TSP)
design by lmatrix
О проекте | Написать письмо | Ссылки | Литература | Карта сайта