`

静态,动态,强类型,弱类型的一点事儿

阅读更多

在程序设计语言的设计中,动态语言,静态语言两大阵营都有着大量的尤其是再现实应用中的成员。

像java  c++ c#这种重量级语言,还有Perl,python,ruby这等轻巧的语言。一直以来,孰优孰劣似乎一直是争论的焦点。我并不想,有没有这个能力给出一个严谨的理论分析,在这里,只是简单的说下自己的一些小感悟。

 

首先,从静态和动态的角度来说,静态似乎又更多的优势,比如编译期的检查及优化等。当然,动态语言也有类似的优化技术。我只是在现实当中,遇到了些强弱类型的小麻烦。

 

在使用python编写一段辅助工作的代码是,当2min的前期数据结束后,忽然console出现了一行行的错误,原来是一个变量名拼写错误导致的。就这样,代码要重新跑一次。当然,python支持先编译成字节码再进行解释执行,但是大多是情况下,代码并不会直接被编译为字节码,而是直接解释执行的。

这不仅是我想起了《代码之美》中“漂亮的调试”一章的作者,在使用增量调试对DDD进行调试时遇到的问题:调试脚本在运行了三天后,崩溃了,原因也是拼写错误。哈哈,我的2min中看上去要算是捡了大便宜了。就是这样,一个编写错误,就导致了这样的一个错误。

 

而另一方面,在Python没有类型声明,一个变量名既可以引用int,也可是是list。而从方法签名上,也不是很容易就推断出一个方法会需要什么样的参数,会有什么样的返回值。当我回头去读曾经写过的一些脚本时,偶尔还是会觉得费力,因为已经记不清每个方法的细节了。当然,代码文档(__doc__)可能会很有帮助

 

Python的语法的确很优雅,我也很喜欢使用Python在平时的工作中处理些小问题。本身,并没有使用Python做过什么大的项目,也并不清楚在大型的Python项目中,会不会出现这样的由于类型之类的问题导致的错误。

 

题外话,曾经看过Hashkell,开始还是被镇住了,那真是神一样的语言啊,简洁优美而强大,但是被它的pure function特性秒杀了,那monad,太晦涩了.....曾经梦想,要是有一款有Haskell那么简洁强大,而又不失Python语言的一些优雅的特性,该是多好啊。还幻想着自己试试写写这样的语言,名字就叫Kava~~  后来发现了Scala! 再次膜拜国外的各位神人了!!!

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics