写点什么

Dart 准备好了吗

  • 2012-10-18
  • 本文字数:2511 字

    阅读完需:约 8 分钟

一年前,Google 发布了一门新的编程语言——Dart,试图弥补 Javascript 的不足,Google 希望 Dart 最终能够取代 JavaScript 成为 Web 开发的主流语言。当时,Google 只是提供了一些技术预览,大家的关注主要集中在 Dart 语言本身,而不是如何用它来做实际开发。原因在于想要成为一门主流的编程语言,Dart 需要有一套完成的开发工具包。在 Dart 一周岁生日之际,Google 发布了面向开发人员的 Dart SDK 第一版,对于 Web 开发人员来说值得关注。

Dart SDK 提供的关键特性包括:

  • 更快的 Dart 虚拟机,甚至在某些测试上超过 V8
  • 新的 Dart-JavaScript 的转换器,可以生成快速、压缩的代码
  • 能够透明的运行在现代浏览器上的 HTML 库
  • 与 Javascript 代码的交互库
  • 易用的编辑器
  • 新的打包工具——Pub
  • Dartium——原生支持 Dart 的 Chromium 构建(Dartium 是集成 Dart 虚拟机的 Chromium 浏览器,过去要想在浏览器中运行 Dart 代码,只能将 Dart 代码编译为 Javascript,但是现在有了 Dartium, Dart 代码可以真正地在浏览器里的 Dart 虚拟机中运行了。 Dartium 支持一些的基本开发工具,如调试等。如果你对 Dartium 开发工具感兴趣,可以观看 Seth Ladd 博客中关于 Dartium 中的开发工具的视频演示。)
  • 服务器端 IO 库
  • 描述 Dart 语法和新特性的语言规范

Dart 语言存在许多出色的特性,其中包括模块化和可选类型:

  • 模块化——Dart 中的命名空间采用了库机制,它不同于 Java 中仅能使用类名来定义方法或变量命名空间。很重要的一点是:Dart 中的库除了包含类之外,还可以包含顶级元素,即类之外的变量和函数。print函数正是一个例子,因为它是无类的顶级函数。库系统也为名字冲突提供了一种解决方案:库 A 可以导入另一个库 B,为了避免 A 和 B 间的命名冲突,所有从库 B 中导入的名字都会被加上前缀,也就是说,使用#import("foo.dart", "foo") 导入库后,所有其中的可用元素都会拥有前缀"foo."。
  • 可选类型 (Optional Typing)——“可选类型”关键在于“可选”。开发人员 _ 可以 _ 为代码加上类型标注,但这些标注又对代码行为根本没有影响。事实上,Dart 中还可以指定一个无意义类型——而同时代码仍然能够正常运行。在代码中拥有类型可以让各种类型检查器各司其职。Dart 附带的编辑器中拥有一种类型检查器,它能够高亮类型错误并将其当做警告。Dart 中还有一种检查模式,在该模式中类型标注可用来检查代码,任何违规都会被报告成警告或错误。实际上可选类型标注在代码中会具有类型信息,这些信息对编制文档会有帮助;使用可选类型不再需要更多的文档来解释某个参数必须实现一个特定的方法才可以接受。接口的存在(即带有方法签名的方法名称集合,以及可选类型标注)可以帮助文档化API。关键在于,语言总是动态的而且参数也可以被指定为动态的,也就是 Dynamic类型。

针对 Dart SDK 的发布和 Dart 的前景,开发社区展开了热烈的讨论,大家发表了各自的看法。

ColinABQ :Dart 从一出生就注定是“Javascript 的转换器”和“Javascript 代码的交互库”,Google 知道它面临多大的障碍,大家认为 Dart 不可能获得真正的应用。如果其他转换器被禁用,那么 Dart 也会消失。不过我想知道 Dart 是否在 Google 公司内部使用,处理一些开发问题。

Deekthesqueak:我对 Web 新技术非常感兴趣,但是坦白的说,在应用新技术之前,我们需要考虑如何处理低版本的浏览器。我们需要想办法强制用户升级 IE、Chrome、Firefox 等等。作为一名曾经为 IE 7-9、Firefox 和 Chrome 开发过 Web 应用的过来人,我不得不考虑最小支持集合,这严重影响了应用可以具备的特性。

Dilbert:我认为 Dart 还没有准备好。Google 需要浏览器来支持 Dart 语言。你不能把内建 Dart 虚拟机的 Chromium 构建用于普通的上网,其他浏览器厂商还没有支持 Dart,而且 Google 也是 Javascript 标准化进程的一员,它还在招聘大量的 Javascript 开发人员……我认为,Lars Bak 想要开发 Dart,因此 Google 投入了相应的资源,这就像 Rob Pike 和 Ken Thompson 想要开发 Go 语言一样,Google 也提供了支持。Google 公司的一些员工认为 Javacript 很糟糕,希望完全抛弃它,但是很显然更多的人不支持。

Desverger:我个人认为 Javascript 是一门很糟糕的语言,原因有很多。因此,我会尽力避开 web 开发。那些从事 Web 开发的人正是那些真正喜欢 Javascript 的人。我对 Dart 了解不多,但是我相信相比 Javascript,我会更享受 Dart。作为一名开发人员,我希望能够使用 Dart 开发网站,应该会满足我的需求。我猜 Dart 会吸引更多的人从事 Web 开发。

PervertRyan:为何我们要花时间学习一种新语言?我们应该做的是为统一的字节码和虚拟机制定一个 Web 标准。只要 JVM 或者 CLR 没有把我们绑定到某一种特定的语言上,我们就可以选择。Dart 可能比 Javascript 更好(希望如此),但是这并不意味着它就是银弹。如果我们创建标准化的字节码,那么具体的语言我们就不必关心了。 这就是我想要的。我希望能够选择动态类型还是静态类型,低性能还是高性能。我们已经做了不少 Javascript 的替代品(CoffeeScript、TypeScript、ScriptSharp、GWT 等等),但是它们本质上都利用 Javascript 作为底层的字节码。

xxgreg(回复 PervertRyan):字节码存在一系列问题——1. 验证,你需要验证字节码是否安全。这个过程会像解析源代码一样缓慢。更糟糕的是,难以确保安全。2. 缺少 AST,虚拟机经常额外的修改源代码的初始 AST,从而可以进行运行时优化。字节码经常会导致源代码中的有用信息丢失。3. 尺寸,字节码通常不比源代码小,可能会创建一个压缩的二进制 AST。字节码和虚拟机必须经常做出优化决定。对于虚拟机上的所有语言,虚拟机很难公平对待。

cletus :坦白说,我依然看不到 Dart 的意义,它做出了一些奇怪的选择,比如可选类型。代码在服务器端和客户端共享是 GWT 吹嘘的想法,但最终失败。Dart 看起来又要重蹈覆辙,我对它的成功不太乐观。不过从另一方面讲,Dart 也可能会有不错的前景,它所包含的不少特性我都很喜欢。我认为 Javascript 就像是编程语言界的电子邮件——它无处不在,但是大家都觉得它存在问题,而且这些问题的修补特别复杂。

读者朋友是否看好 Dart 的前景?欢迎发表自己的看法。

2012-10-18 08:552475
用户头像

发布了 501 篇内容, 共 257.5 次阅读, 收获喜欢 61 次。

关注

评论

发布
暂无评论
发现更多内容

软件测试|测试专家(前阿里P8)聊测试职业发展常见瓶颈

霍格沃兹测试开发学社

直播预告 | 大模型时代 “应用变了”:看大模型如何跑进零售电商应用

京东科技开发者

零售 大模型

火眼金睛破局ES伪慢查询 | 京东物流技术团队

京东科技开发者

数据库 慢查询 Elastic Search

活动预告| 字节跳动基于DataLeap的DataOps最佳实践

字节跳动数据平台

大数据 数据治理 数据安全 数据研发 企业号12月PK榜

DAPP代币燃烧质押系统开发丨详情开发

l8l259l3365

新一代 “垫图” 神器,IP-Adapter 的完整应用解读

京东科技开发者

大模型那么火,教你一键Modelarts玩转开源LlaMA(羊驼)大模型

华为云开发者联盟

人工智能 华为云 华为云ModelArts 大模型 华为云开发者联盟

如何发布自定义 npm 组件包

数新网络官方账号

前端 npm

每日一题:LeetCode-113. 路径总和 II

Geek_4z9ami

面试 算法 LeetCode 二叉树 DFS

【案例】多渠道管理 第七在线智能计划帮助Calvin Klein业务精准决策

第七在线

软件定义世界 开源共筑未来 首届“开放原子开源大赛”火热进行中

开放原子开源基金会

Java 开源 程序员 开发者 算法

用友BIP数智干部管理,落实国有企业人才强企战略

用友BIP

干部管理

第七在线引领零售供应链智能化,助力企业实现效能提升

第七在线

喜讯!云起无垠入选“2023年中国AIGC创新企业榜”

云起无垠

数智化重新定义员工体验

用友BIP

数智人力

软件测试/人工智能|selenium元素定位方式大全

霍格沃兹测试开发学社

设备巡检二维码:手机扫一扫,即可解决巡检、报修等问题

草料二维码

二维码 设备巡检 设备巡检管理系统 草料二维码

探秘AI赋能的未来世界:CyberAI深度学习技术助力变革

数新网络官方账号

人工智能 大数据

数字化商品计划已经Out啦 揭秘哪些国际⼤牌⽤了AI智能商品计划?

第七在线

基于Raft算法的DLedger-Library分析 | 京东物流技术团队

京东科技开发者

算法 分布式系统 raft DLedger

使用 PAI-Blade 加速 StableDiffusion Fine-Tuning

阿里云大数据AI技术

AI

软件测试/人工智能|一文教你配置selenium环境

霍格沃兹测试开发学社

软件测试/人工智能|Linux常见面试问题讲解

霍格沃兹测试开发学社

华秋DFM荣获第三届智能制造创新大赛全国总决赛-新技术应用赛道三等奖

华秋电子

HTML5+Canvas数字孪生智慧机房可视化系统

2D3D前端可视化开发

物联网 数字孪生 三维可视化 智慧机房 智慧数据中心

LED透明屏:私人定制引领新潮潮流

Dylan

广告 时尚产业 LED显示屏 全彩LED显示屏 led显示屏厂家

如何在编写代码时添加有效的注释?

小魏写代码

新一代“垫图”神器,IP-Adapter的完整应用解读

京东科技技术说

人工智能

DFM引领电子产业变革,智能制造助力高效生产

华秋电子

企业API网关适用业务场景

RestCloud

API 网关

容器网络Cilium:DualStack双栈特性分析

华为云开发者联盟

云原生 华为云 华为云开发者联盟

Dart准备好了吗_Google_崔康_InfoQ精选文章