像python这样的动态语言给你带来了什么?来自ac#/ java背景.告诉我光明!

Bla*_*man 4 python oop dynamic-languages

可能重复:
动态语言的热爱是什么

我来自ac#/ java背景,即强类型,OOP语言.

我对Python非常感兴趣,但我需要更多地了解动态语言的优点.

它真正给我的力量是什么?(在Web应用程序中).

有人可以勾勒出我可以做的一些优点和酷炫的技巧吗?

Ale*_*lli 5

我不认为动态类型语言是"允许很酷的技巧"(他们这样做,但大多数情况下,在生产软件中使用"酷"技巧并不是很合理 - 它们在测试,调试等方面都很方便,但是当它出现时为生产,简单规则部署好的,快速的东西.

相反,我认为这些语言"不妨碍我" - 特别是,不要因为强迫我一遍又一遍地冗余地指定事物而使我慢下来.并不是每一个静态类型语言 "让你的方式" -好的固体,逻辑正确类型的系统,如哈斯克尔让编译器推断类型(尽管你可能冗余指定他们,如果你喜欢的冗余...或者,更重要的是,如果你想要比编译器实际从代码中推断出更严格的约束条件).但是在Java中(在C#中,除非使用合理的最新var关键字时,在较小程度上)冗余是规则,这会影响生产力.

一种折衷可以通过第三方的检查系统中提供了Python中,类似于类型检测 -我不使用它,我自己,但我可以看到有人谁真的认为静态类型检查如何增添了很多的价值可能是满意的.在最近的Python版本中甚至有一种语法(Python编译器接受但不做任何处理),允许您注释函数参数并返回值 - 其目的是让这些包typecheck扩展为更自然地与语言合并(虽然我认为typecheck还没有).

编辑:

正如我在这里写的,我引述:

我喜欢Van Roy和Haridi的解释,p.他们的书中有 104-106 ,尽管我可能会或可能不会同意他们的结论(基本上内在差异很小 - 他们指的是Oz和Alice分别是没有和静态打字的互操作语言),所有要点他们做得很好.最重要的是,我相信,动态类型的方式允许真正的模块化(静态类型更难,因为必须跨模块边界强制类型规则),以及"集成了几种编程范例的计算模型中的探索性计算".

他们总结道,"建议动态打字","程序必须尽可能灵活".我建议阅读敏捷宣言,了解为什么最大的灵活性对于大多数现实世界的应用程序编程至关重要 - 因此,在现实世界中,而不是在更多学术界,Van Roy博士和Hadidi博士进入,动态打字的原因通常是优选的,并不是一个很小的问题,因为他们有所不同.尽管如此,他们至少表现出对这些问题的更多认识,投入了3篇关于它的优秀讨论,优点和缺点,而不是我见过的几乎所有其他书籍 - 大多数书籍已明确界定并优先考虑其中一种或另一种,所以讨论很少像那样平衡;).