Google has introduced an early preview of Dart, which the company refers to as a class-based optionally typed programming language for building Web applications.
Google announced the Dart preview at the Goto Conference
in Aarhus, Denmark, where Google engineers Lars Bak and Gilad Bracha
were scheduled to present an opening keynote for the event on Oct. 10.
In an October 10 blog post, Bak said Dart’s design goals are:
-
Create a structured yet flexible language for web programming.
-
Make Dart feel familiar and natural to programmers and thus easy to learn.
-
Ensure that Dart delivers high performance on
all modern web browsers and environments ranging from small handheld
devices to server-side execution.
Moreover, Bak said “Dart targets a wide range of
development scenarios: from a one-person project without much structure
to a large-scale project needing formal types in the code to state
programmer intent. To support this wide range of projects, Dart has
optional types; this means you can start coding without types and add
them later as needed. We believe Dart will be great for writing large
web applications.”
In his post, Bak added:
“Dart code can be executed in two different ways:
either on a native virtual machine or on top of a JavaScript engine by
using a compiler that translates Dart code to JavaScript. This means
you can write a web application in Dart and have it compiled and run on
any modern browser. The Dart VM is not currently integrated in Chrome
but we plan to explore this option.”
The Dart language comes with a set of basic
libraries and tools for checking, compiling, and running Dart code, Bak
said. The language and some preliminary tools are available as open
source at dartlang.org, he said.
Inviting developers to kick Dart’s tires and help
Google evolve the language, Bak said, “We look forward to rapidly
evolving Dart into a solid platform for structured web programming.”
Google’s Bracha is the creator of the Newspeak
programming language and a software engineer at Google. Previously, he
was a vice president at SAP Labs, a distinguished engineer at Cadence,
and a computational theologist and distinguished engineer at Sun
Microsystems. He is co-author of the Java Language Specification, and a
researcher in the area of object-oriented programming languages. Prior
to joining Sun, he worked on Strongtalk, the Animorphic Smalltalk
System. He is often seen on panels of industry luminaries discussing
the future of languages and programming.
Meanwhile, Bak is known as “a veteran virtual
machinist.” He has designed and implemented object-oriented virtual
machines, and worked on such projects as: Beta, Self, Strongtalk, Sun's
HotSpot, OOVM Smalltalk and Google’s V8 engine for the Chrome browser.
A technical overview on the Dart language site, said,
"Dart programmers can optionally add static types
to their code. Depending on programmer preference and stage of
application development, the code can migrate from a simple, untyped
experimental prototype to a complex, modular application with typing.
Because types state programmer intent, less documentation is required
to explain what is happening in the code, and type-checking tools can
be used for debugging."
Moreover, Google notes that with existing
languages, the developer is forced to make a choice between static and
dynamic languages. Traditional static languages require heavyweight
tool chains and a coding style that can feel inflexible and overly
constrained.
In addition, Google further explained the design goals for Dart by describing the issues web developers face today:
- Small scripts often evolve into large web applications with no
apparent structure—they’re hard to debug and difficult to maintain. In
addition, these monolithic apps can’t be split up so that different
teams can work on them independently. It’s difficult to be productive
when a web application gets large.
- Scripting languages are popular because their lightweight nature
makes it easy to write code quickly. Generally, the contracts with
other parts of an application are conveyed in comments rather than in
the language structure itself. As a result, it’s difficult for someone
other than the author to read and maintain a particular piece of code.