在程序设计语言的设计中,动态语言,静态语言两大阵营都有着大量的尤其是再现实应用中的成员。
像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! 再次膜拜国外的各位神人了!!!
分享到:
相关推荐
python 学习中关于动态类型静态类型强类型弱类型的问题
主要介绍了动态语言、动态类型语言、静态类型语言、强类型语言、弱类型语言介绍,需要的朋友可以参考下
5.5游标强类型弱类型异常报错.sql
PYTHON是一门动态解释性的强类型定义语言:编写时无需定义变量类型;...强类型和弱类型主要是站在变量类型处理的角度进行分类的。 强类型是指不允许隐式变量类型转换,弱类型则允许隐式类型转换。 所以,关
主要介绍了编程语言里的静态、动态、强类型、弱类型等概念介绍,需要的朋友可以参考下
强类型运用了c#中ado技术,希望大家多多下载,提供宝贵意见
配置文件强类型详细解析,配置文件也可以使用强类型,包含了强类型制作使用的代码 更详细的解释参考 http://blog.csdn.net/xuexiaodong2009/article/details/6655818
一直都觉得强类型数据集挺不好懂的,近期自己强化了这方面的知识,让您对强类型数据集有个系统的了解和学习!
强类型登陆
基础的ADO.NET开发中DataSet强类型的使用。
C#强类型数据示例 文档包括 1、数据库分离文件 2、示例项目(VS2010运行通过) 3、示例讲解文档
通过rt_thread线程处理,设定一个动态线程与静态线程来控制led的亮灭。
Go(也被称为Golang)是由Google公司开发的一种静态强类型、编译型的编程语言。自2007年诞生以来,Go凭借其简洁、高效和并发的特性,迅速在服务器端开发、网络编程、分布式系统等领域崭露头角。 Go语言的设计初衷是...
动态网站主页转静态软件主要功能是为把动态的网站主页,转成静态的网站主页,让网站的速度、安全都大大的提高。用户也不用天天得想怎么把自己的网站的主页转成静态的,以便浏览速度和网站安全都提高。现在有了这个...
强类型系统RTTI,类型识别系统,对于像了解这个概念的同仁们,是不错的选择!
linq to datasets,通过linq访问强类型数据集
Covariant Script 编程语言是一种开源、开放的动态强类型通用编程语言,在数据分析、可视化、系统软件方面均有一定的应用
此软件主要功能是为把动态的网站主页,转成静态的网站主页,让网站的速度、安全都大大的提高。用户也不用天天得想怎么把自己的网站的主页转成静态的,以便浏览速度和网站安全都提高。现在有了这个软件,用户方便的把...
c和c++是静态语言,也是弱类型语言,perl和php是动态语言,但也是弱类型语言,强类型语言在没有强制类型转换前,不允许两种不同类型的变量相互操作。java、c#和python都是强类型语言。 使用那种语言还是要按需而定。...
强类型面向对象动态SQL生成器的设计与实现.pdf