`

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

阅读更多

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

像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 学习中关于动态类型静态类型强类型弱类型的问题.docx

    ### Python学习中关于动态类型、静态类型、强类型与弱类型的问题 #### 动态类型与静态类型 在计算机编程领域,动态类型和静态类型是两种重要的类型系统分类方式。 **动态类型**(Dynamic Typing)指的是在程序...

    弱类型、强类型、动态类型、静态类型语言的区别是什么.md

    弱类型、强类型、动态类型、静态类型语言的区别是什么

    动态语言、动态类型语言、静态类型语言、强类型语言、弱类型语言介绍

    本文将深入探讨动态语言、动态类型语言、静态类型语言、强类型语言和弱类型语言的区别,帮助理解它们各自的特点。 1. 动态语言: 动态语言,也被称为动态编程语言,其核心特征是在运行时允许程序结构的变化。这意味...

    编程语言里的静态、动态、强类型、弱类型等概念介绍

    编程语言可以按照类型系统的不同特点分为静态类型语言和动态类型语言,同时还可以根据类型检查的严格程度来区分强类型语言和弱类型语言。了解这些概念对于编程语言设计、选择以及代码实现有着重要的意义。 首先,...

    弱类型语言允许将一块内存看做多种类型

    - **Python**:虽然 Python 在表面上看起来是弱类型语言,因为它支持动态类型,但实际上在操作不同类型的数据时仍然需要遵循严格的规则,因此被视为强类型语言。 ### Java 中 WeakHashMap 的使用及特性 #### 五、...

    5.5游标强类型弱类型异常报错.sql

    5.5游标强类型弱类型异常报错.sql

    强类型_强类型_

    强类型是编程语言中的一个重要概念,它涉及到程序设计的基础和数据类型的严谨性。在C#这种面向对象的编程语言中,强类型系统是其核心特性之一。本文将深入探讨强类型的概念、它在C#中的应用,以及ADO.NET技术如何与...

    linux静态库和动态库

    综上所述,静态库和动态库各有千秋,在实际开发中应根据具体需求选择合适的类型。了解两者的区别以及它们的工作原理对于优化应用程序性能和简化软件维护至关重要。通过合理利用这两种库类型,开发者可以创建出更加...

    webservice的动态调用和静态调用

    这种调用方式在编译时就已经确定了服务接口,因此也被称为强类型调用。在.NET环境中,例如使用C#或VB.NET开发时,可以通过"Add Web Reference"或"Add Service Reference"功能将WebService引入项目。这样做会自动生成...

    实验静态路由和动态路由_路由_静态路由和动态路由_

    动态路由的优势在于适应性强,能够应对网络变化,减少管理负担,尤其适合大型和复杂的网络环境。但其缺点是增加了网络通信开销,可能因算法复杂度导致延迟,并且安全风险相对较高,需要防止路由欺骗。 实验中,参与...

    强类型系统 RTTI 类型识别

    强类型系统 RTTI 类型识别 强类型系统 RTTI(Run-Time Type Identification)是一种类型识别系统,主要用于在运行时期检查对象的实际派生类型。RTTI 提供了两个非常有用的操作符:typeid 操作符和 dynamic_cast ...

    myscript是用c语言开发的一个动态强类型的脚本语言.zip

    myscript是用c语言开发的一个动态强类型的脚本语言

    C++ 中对强类型(strong type)进行实验

    这个项目是在 C++ 中对强类型(strong type)进行实验。强类型是一种用于替代其他类型的类型,其名称能承载特定含义。项目中的所有组件都在fluent命名空间下。在Fluent C++上有一系列博客文章阐述了该库的原理和强...

    Pascal动态数据类型

    此外,相比静态类型,动态类型可能对性能有轻微影响。 6. **在信息学竞赛中的应用** 在NOI信息学竞赛中,动态数据类型的应用非常广泛。例如,动态数组常用于存储比赛题目中的数据序列;动态记录类型可以帮助构造...

    举例分析Linux动态库和静态库

    为了更直观地理解静态库和动态库的工作原理及其差异,接下来将通过一个具体的例子来展示如何在Linux环境中创建和使用这两种类型的库文件。 ##### 示例程序结构 假设我们有一个简单的“Hello World”程序,该程序由...

    动态网站主页转静态工具 v3.0

    动态网站主页转静态软件主要功能是为把动态的网站主页,转成静态的网站主页,让网站的速度、安全都大大的提高。用户也不用天天得想怎么把自己的网站的主页转成静态的,以便浏览速度和网站安全都提高。现在有了这个...

    python动态性强类型用法实例

    这一点与BASIC等弱类型语言有所不同,后者允许访问未定义的变量,且通常会自动将其视为某种类型(通常是数字或字符串)。 #### 三、Python中的动态类型 Python是一种动态类型语言,这意味着同一个变量可以表示不同...

    ADC动态参数静态参数INLDNL测试说明文档.rar

    本文档主要关注ADC的动态和静态参数测试,通过MATLAB进行分析,确保ADC在实际应用中的性能满足设计要求。 一、ADC的静态参数 1. INL(Integral Nonlinearity,积分非线性):衡量ADC转换结果与理想转换曲线之间的...

    ffmpeg动态库、静态库,64位windows版

    在这个64位Windows版本中,我们关注的是FFmpeg的动态库和静态库,它们对于开发和应用多媒体软件至关重要。 1. **动态库与静态库的区别** - **动态库** (Dynamic Link Library, DLL):在运行时被应用程序加载,多个...

Global site tag (gtag.js) - Google Analytics