𝚲

该用哪门语言

抛开剂量谈毒性,那是耍流氓!

上图来自 Comparing Scala.js and JScala

我真正能上手出活的编程语言,一只手就能数过来。该用哪门语言,按理不应该是个问题,可能是习惯性想太多吧(这或许不是一个好习惯)。

为了方便分析自己跑步的数据,我自己写了一个 Chrome 扩展程序2。一开始我就纠结,该用哪门语言?按偏好,无疑是 Scala ;论速度,应该选 JavaScript。这里的速度,到不是指运行速度,而是指从编码到验证的周期有多快?

起初,无论是开发平台(Chrome 扩展),还是业务领域(运动数据分析),我已有的经验令系统性的工程决策(考量)无从谈起。眼下在最短时间内,基于官方文档的范例代码拓展出一个能跑的原型,大概率是启动成本最低的选择。

原型阶段,最重要的莫过于敏捷地验证想法(或方案)的可行性。

然而,这么一句原则只能辅助关键决策,具体的问题还是需要细化的拆解,

问题拆解树

直到所有叶子节点能够指导具体的代码实现。因此,我选择用 JavaScript 一路 A 过去3,逢山开路,遇水架桥。

吃干抹净,代码自然不太好看,有很多需要完善的地方。这摸着石头过河的经验已经积累了一些了,正好开始重构代码。面对 JavaScript 的持续重构,我这个被静态类型语言宠坏的程序员,着实有些力不从心了。

TypeScript 会是一个好的选择吗?它具备不错的类型特性,对应的编辑器和编译器成熟到不言自明。代码的迁移过程理论上也会是很平滑的,它肯定会是一个好选择。只不过对我而言,不是。

我并不排斥学习一门新的语言,而且如今主流语言的特性大致趋同,学习门槛本身不高。门槛高的是,工具生态链。选择 TypeScript,意味着接下来会有更多选择要纠结。相反,Scala.js 的背后的工具生态链,要么没得选,要么我轻车熟路。

待续回见。

以上是我决定开启的一个系列合集的开篇内容,以较为松散且不那么严谨的标准,去记录我开发过程中的所思所想。这里的记录,大概率会是当时很明智,事后很弱智的。主题随机,更新随意,博君一笑,引以为戒。


  1. https://sebnozzi.github.io/84/scala-to-javascript-comparison/↩︎

  2. https://github.com/hanabix/mpb↩︎

  3. 星际争霸梗↩︎