`

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

阅读更多

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

像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)指的是在程序...

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

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

    Python动态强类型解释型语言原理解析

    PYTHON是一门动态解释性的强类型定义语言:编写时无需定义变量类型;...强类型和弱类型主要是站在变量类型处理的角度进行分类的。 强类型是指不允许隐式变量类型转换,弱类型则允许隐式类型转换。 所以,关

    强类型_强类型_

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

    网站,静态与动态的区别

    ### 网站:静态与动态的区别 在深入探讨网站的静态与动态区别之前,我们首先需要明确两者的基本概念。 #### 静态网站(Static Website) 静态网站是指那些页面内容固定不变、由一系列预定义的HTML文件组成的网站...

    webservice的动态调用和静态调用

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

    强类型系统 RTTI 类型识别

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

    linq to datasets,通过linq访问强类型数据集

    在传统的数据集中,数据是弱类型的,这意味着在运行时才能确定数据的类型。而强类型数据集则是在设计时就明确了数据类型的DataSet,它提供了更好的类型检查和 IntelliSense 支持,减少了编译时和运行时的错误。 **3...

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

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

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

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

    Covariant Script 编程语言是一种开源开放的动态强类型通用编程语言,在数据分析、可视化、系统软件方面均有一定的应用

    Covariant Script编程语言,简称CovScript,是一款专为多领域应用而设计的开源、开放源代码的动态强类型编程语言。它以其强大的功能和灵活性,在数据分析、可视化以及系统软件开发等方面展现了广泛的应用潜力。 在...

    221025-13Linkage(局部刷新的强类型实现)

    与强类型局部刷新不同,弱类型更新不强制模型数据类型,这使得它更加灵活,可以应用于基于浏览器的渲染以及App更新刷新。在某些情况下,如使用JavaScript或者jQuery的Ajax请求更新页面部分,我们可能无法提供强类型...

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

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

    强类型面向对象动态SQL生成器的设计与实现.pdf

    【标题】:“强类型面向对象动态SQL生成器的设计与实现” 【描述】:本文介绍了一种在Java开发环境中,利用SQL与关系数据库交互的工具,它基于JDBC和SQL,不依赖具体数据库,通过强类型高级面向对象语言特性,提高...

    动态网页与静态网页的区别

    动态网页功能强大、交互性强,适合用户参与度高的应用。在选择网页类型时,必须根据网站的具体需求和目标来决定,同时还要考虑用户体验、维护成本、搜索引擎优化等多方面因素。通过精确的前期规划和恰当的技术选择,...

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

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

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

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

    C#中的动态类型(Dynamic)的项目工程

    这个特性引入自C# 4.0版本,为开发者提供了更大的灵活性,尤其是在处理非强类型的数据或者与动态语言如Python、JavaScript交互时。下面将详细讨论动态类型在C#中的应用及其相关知识点。 一、动态类型的定义与工作...

    Python基本语法 数据类型 列表 元组 字典

    # javascript:是一门动态的弱类型语言,运行时识别数据类型 字符串(str) # 单引号和双引号 temp = 'hello python' temp = "hello python" print(temp) # 转义符处理 temp="I say \"hello world\...

    DynamicDataRecord:将 IDataReaderIDataRecord 动态转换为适合序列化的强类型类的类库

    然而,这些接口返回的数据通常是弱类型的,这意味着你需要通过索引或字段名来访问数据,这在进行序列化或与强类型对象交互时可能会变得复杂。`DynamicDataRecord`项目就是为了简化这一过程,它将`IDataReader`或`...

Global site tag (gtag.js) - Google Analytics