猜测通用且成熟的语言应该会较多,尤其是系统编程语言。rust 有 五百左右,C 约一百五十,python 只有 七十左右。差距挺大。
1 个赞
一般来说静态类型语言报错类型就要多一些,动态类型要少一些,特别是一些带GC的报错会更少,因为GC封装了内存这一最容易出问题的东西。。。
动态类型,带GC的脚本语言报错信息类型会少很多,如果愿意可以在动态检查类型时都可以不报错,直接返回一个null或者undefined,NaN等等,这样还能减少很多报错信息类型,故意减少报错信息类型也有好处:在写一些简单的脚本时,会很容易上手,一把梭哈。当然程序大了,就显得不太好调试了。
1 个赞
还是要看语言给用户的定位。
静态类型语言的类型静态检查系统就是要尽可能的检查出类型错误,报错当然会多很多,C语言的类型检查不太严格存在不少隐式类型转换,Rust,C++等类型检查会严格很多,报错也会多很多。
动态类型相反,就是要屏蔽类型检查这个东西,虽然运行时动态检查类型,但是任然会故意减少一些(甚至完全屏蔽)类型检查错误,浏览器中的JavaScript就是这样减少了不少类型检查错误,你的网页脚本怎么写浏览器都很少报错,都能跑起来,至于是不是你想要的结果,浏览器就不管了。
此外不带GC,不封装内存,你的语言,必然要引入不少概念去抽象内存,比如指针,结构体,联合体等等,这些概念的引入也会带来不少语法及一些衍生错误信息。
1 个赞