Dart and Atom

24 Aug 2016

1 Dart是个好语言

自己在几年前就关注了Dart,主要原因就是我实在是太讨厌JavaScript了.作为一名程序员,手上一点都不沾JS在这个时代似乎有点不现实, 于是我就在找寻JS替代这条不归路上渐行渐远.

这货后来似乎遇到了一个打击,Chrome不打算集成dart的vm.当然,这个倒也不影响web上继续,因为这货本来就支持编译到JavaScript. 当然,感觉这伙一直也就这么半死不活的. 这几天决定给自己写个玩具玩玩. 于是就想到了这货. 打开一看, 嘿嘿嘿, 你这浓眉大眼的也开始闷声发大财了: flutter用的是dart. 再看看官网的几个方向: Web前端, Server端, 移动端, 嵌入式端. 这盘子开的有点大.

1.1 为毛好

因为我觉得好, 因为好就是个主观的看法. 这世界上有很多东西无所谓好坏, 无所谓对错, 对我胃口就可以了.

  1. 类C语言语法

    无需陡峭的上手, 语法层面学习成本几近于零. 文档和教程都还算丰富.

  2. 标准库支持

    本身有良好的标准库, 日常开发, 自己实现数据结构的需求几近于零.

  3. 类型系统与自动推断

    有类型系统, 从我个人的尿性来看, 这是多么好的一个特性. 更加好的是, 有自动的类型推断, 这还有什么好说的. 编译器算是能帮你做的都往死里给你做了.

  4. OOP,泛型, traits

    虽说我对OOP没太多感情, 但是泛型这个东西我个人感情上很喜欢啊. 还有个traits(虽然我一直就不知道traits是个毛东西,反正我就一直当是interface).

  5. 可用的DE

    官方提供了开发环境支持, 包括, 算了够多了, 懒得写. 我用的是atom写dart, 插件工具我只能说是好好好. 虽然官网上说了atom插件不是官方支持, 但是我感觉这一定是官网太谦虚, 怎么看atom上的插件也是官方支持的水准.

  6. 包管理系统

    有个pub管理系统, 虽说看起来呆呆的, 我用起来也是一头雾水, 但是起码管用, pub可以自己安装项目模板工具, 新建项目也很简单(虽然我只是用来生成项目文件, 装下依赖, 最后还是自己亲手动一下项目结构).

  7. 全软件栈&多平台支持

    与NodeJS无异, 这对我等恨JS堪比国恨家仇的人来说, 简直了. 另外, Flutter要是能成了, 直接写iOS和Android应用.

1.2 Cons

剩下的问题, 我觉得, 都不是问题, 没错.

  1. 编译速度

    编译到JS的速度有点慢, 特别是用的库多了以后, 我就一个一百行的小程序, 用了两个库, 编译就要十秒了. 要是能增量编译, 这dart, 夫复何求.

  2. 编译警告
    1. 因为动态性的原因, 一些静态语言里面的error, 编译器给的是warn.
    2. 还有变量没分配内存的问题, 编译器不检查, 结果会在运行时报null的错误, 结合上一个龟速编译, 真是一把心酸泪. 这个其实编译器肯定能检查出来, 起码局部变量没分配内存这种问题应该可以给个警告吧.

1.3 总结

  1. Dart是个好学校, 好语言.
  2. 没有标新立异的地方, 语言核心不大, 语法糖足够, 生产率能保证. 是个好劳模.
  3. 开发环境灵活多样, 按需选择.
  4. 软件框架可有可无, 项目范围大小通吃.
  5. 性能不差, 我看了看benchmark, 应该是Server端, 反正不差. 和NodeJS也算不相上下, NodeJS都能用得, Dart还能用不得?

2 Atom是个好编辑器

21世纪的编辑器, 还算是配得上这个名号的. 我猜测, 应该编辑器的架构组织的很好, 所以插件编写上生产率可观.

Github在后面支持着, 可以保证未来的用户流入速度. Atom的用户只会越来越多, 因为新的程序员都会从Github上开始自己的编码历险. 而且是商业公司支持, 而非完全的社区支持. 质量有保证, 维护有保证.

软件这个东西和开淘宝店类似, 有入口->有流量->有用户->可变现->有财力. 马太效应能上天, 自从我知道同学的堂弟开淘宝店, 每年三个月, 顶我干三年, 我什么都要用淘宝店来比比看.

那么, 还剩下一个问题, Atom用CSS和JS配置. 不过反正我也不写插件, 眼不见为净.

综上, Atom是个好编辑器. 替代Vim和Emacs, 指年可待. 谁说指日可待的, 那就是不客观.