【发布时间】:2012-02-11 06:26:05
【问题描述】:
在编程方面,我对功能 x 与功能 y 没有强烈的看法。我认为各有各的用途。
而且我一直在阅读尽可能多的编程语言的所有内容,以便我可以提取出最好的想法并比较它们(从 Haskell 到 Lisp 到 C 到 Erlang)。
但是有些事情一直困扰着我,基本上就是当我读到静态类型和动态类型之间的比较时,动态类型的一个缺点是会出现“错误”,因为编译器不是能够检查变量的类型。
现在,我在编程时遇到了很多错误,但我从来没有因为这样的事情而遇到过错误,而且我实际上很难想象这样的例子是什么错误将是。就像可能忘记在某处使用整数而不是字符串一样?这似乎太做作了......
我编程是为了一种爱好,而不是为了谋生,所以也许这些类型的错误只有在具有不同思考方式的人聚在一起时才会出现。我真的只是在寻找一些真实的例子。
【问题讨论】:
-
假设我给你一个函数作为我的 API 的一部分,看起来像这样:function foo(datablob1, id, args)。你认为我希望你通过什么?你会猜到 id 是一个字符串还是一个整数?你会猜到 args 是一个数组吗?什么数组?什么是数据块?它可能有什么属性?如果没有好的文档,你怎么知道?
-
我通常只是在文档中查找该功能。这不是大多数人的做法吗?
-
“没有好的文档”
-
我看到了——我只是觉得没有好的文档很奇怪。这可能是对与打字无关的一系列错误的解释。
-
在专业领域中,使用完全没有文档记录的正在进行的系统或文档记录不充分的遗留代码并与对您来说是黑盒的服务进行交互的情况并不少见,您无法打开源代码以查看它打算使用的内容。这并不是说强类型可以解决问题,但无类型的动态语言会加剧问题。