如何选择强、弱类型编程语言

翻译自:https://dzone.com/articles/types-when-i-use-when-i-dont


注:以下纯属个人意见。

如果我做一个简单的程序,我不关心该使用强类型语言还是弱类型语言。但是如果我的程序很复杂,并且需要由多人进行维护,那么我一定会选择强类型语言。

何时用强类型语言
现在,许多现代的编程语言都支持类型推导(type inference),因此强类型语言代码看起来和弱类型语言的代码一样简练。诸如Scala/Haskell/OCaml/Kotlin/ELM等强类型语言既简练又十分优雅。

何时用弱语言类型
我们依然需要编译代码,并且这也需要耗费时间,但是我认为编译工作是值得的。因为代码的维护和理解也需要耗费时间。相比于解决bug和阅读代码所需要耗费的数小时时间,我认为花费数秒去进行编译代码是值得的。


类型推导+强类型=>简练,可读性强的代码!


类型推导的性能瓶颈
我们为编译代码付出花费时间的代价。如之前提到的一样,我倾向于在编译时花费少量时间而不是在阅读与理解代码时花费更多的时间。


难于理解的程序编译也会很慢。


因此,如果你的代码可读性强,编译也能块很多。

参数化多态


参数化多态:定义相同子类型的容器。
译者注:参数化多态是指编码可以不指定任何特定类型,在被实例化作为参数时才去确定类型。在面向对象编程中,称之为generic programming,而在函数式编程中,则被简称为polymorphise。


定义Array[A],我们可以有自己的实现方式并对数组进行操作和使用。

子类型多态
通过继承类来实现多种实现,但是这会导致大对象(类层次结构)的产生。我认为这会导致代码泥团。
译者注:代码泥团是指一个随意化的杂乱的结构化系统,只是代码的堆砌和拼凑,往往会导致很多错误或者缺陷。


子类型多态:代码泥团。当你遍历数组时会遇到很多数据类型。


简单类型系统
和Java一样,我们使用模具(函数做什么,程序如何构建等)有很多好处。


简单类型系统提供易用的模具。
简单类型系统提供编译器检查过的文档。


使用无类型推导语言时,你需要向编译器解释你的意图。

复杂类型系统
这里我们讨论诸如Scala/OCaml和Haskell等语言。


复杂类型系统提供简单/简洁的代码!


这听起来优点不寻常,但确实如此。例如,泛型用于扩展代码以用于不同类型的多态,也就是代码重用。返回Int还是Double,我不关心,我返回A就可以。

复杂类型系统减少bugs


谎言:需要编译的语言在减少bug方面做得更好。


我不认为这是正确的。但是很多bugs消失了:

  1. 空指针异常,自从使用Scala我就没碰到过。
  2. 函数未定义。使用ELM后可以忘记这个bug。

总结
我的结论很简单:需要由他人维护或者工作量很大的代码,使用强类型语言。简单的脚本和简短的代码片,使用弱类型语言。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,108评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,699评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,812评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,236评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,583评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,739评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,957评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,704评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,447评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,643评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,133评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,486评论 3 256
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,151评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,108评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,889评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,782评论 2 277
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,681评论 2 272

推荐阅读更多精彩内容