编程语言里的静态、动态、强类型、弱类型等概念介绍_其它综合

对于动态语言与静态语言的区分,套用一句流行的话就是:Static typing when possible, dynamic typing when needed。

“动”或“静”,强调的是实施类型的时间,编译里就要确定类型的是静态类型,比如C/C++/JAVA/C#,运行时才实施类型的则是动态类型,比如VB/Python。  
   
而“强”或“弱”刚强调实施类型的强度,强类型的语言,如C++等,变量的类型不可随意转换;而弱类型的语言,变量的类型可以随需要任意转换,而且通常都是隐式的。

静态类型语言是指在编译时变量的数据类型即可确定的语言,多数静态类型语言要求在使用变量之前必须声明数据类型,某些具有类型推导能力的现代语言可能能够部分减轻这个要求.

动态类型语言是在运行时确定数据类型的语言。变量使用之前不需要类型声明,通常变量的类型是被赋值的那个值的类型。

强类型语言是一旦变量的类型被确定,就不能转化的语言。实际上所谓的貌似转化,都是通过中间变量来达到,原本的变量的类型肯定是没有变化的。

弱类型语言则反之,一个变量的类型是由其应用上下文确定的。比如语言直接支持字符串和整数可以直接用 + 号搞定。当然,在支持运算符重载的强类型语言中也能通过外部实现的方式在形式上做到这一点,不过这个是完全不一样的内涵

通常的说,java/python都算是强类型的,而VB/Perl/C都是弱类型的.
不过相比于动态/静态语言的分类,强类型/弱类型更多的是一个相对的概念。

时间: 2025-01-05 06:52:34

编程语言里的静态、动态、强类型、弱类型等概念介绍_其它综合的相关文章

动态语言、动态类型语言、静态类型语言、强类型语言、弱类型语言介绍_其它综合

关于如题这几个概念,大部分人应该比较熟悉,但是我昏了好久,所以写下来加深印象. 1. 动态语言 又叫动态编程语言,是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等在结构上的变化.比如众所周知的ECMAScript(JavaScript)便是一个动态语言.除此之外如Ruby.Python等也都属于动态语言,而C.C++等语言则不属于动态语言. 而其实我们平时说的"动态语言"应该指的是"动态类型语言".至少我之前一直是这么认为的. 2. 动态类

给Repeater控件里添加序号的5种才常见方法介绍_实用技巧

.net是目前非常热门的一种程序编译语言,在.net培训中的众多知识点中,给Repeater控件里添加序号的5种方法是非常重要的一个.下面就由达内的老师为大家介绍一下这方面的内容. Repeater是我们经常用的一个显示数据集的数据控件,经常我们希望在数据前显示数据的序号,那么我们该怎么为Repeater控件添加序号呢?下面编辑为大家介绍几种常用的为Repeater控件添加序号的方法: 方法一: 利用Container.ItemIndex属性,代码如下: 复制代码 代码如下: <Itemtemp

类库与框架,强类型与弱类型的闲聊

    有一天,我问一个同学说,"如果让你通过程序开发一个虚拟地球出来,模拟不同的人的行为,模拟天气,地理,人文,股票涨跌,模拟情感,思考,数学,你怎么做?"那哥们眼睛一亮,马上就说,以人为例.教师,官员,学生,工人都不一样,都从人这个基类继承!天气可以定义一个天气接口,通过工厂模式提供一组天气的集合-       我问,突然哪一天,你需要加一个字段,定义学生是不是程序员!他说,那加一个字段就好了.我说,代码都发布出去了.那哥们开始冥思苦想了.总之你发现,不可能预知未来的需求!人的类型

弱类型的 JavaScript 如何转成强类型

JavaScript是一种属于网络的脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果.     x = 5; // 5    x = x + 'A'; // '5A' 上面代码中,变量x起先是一个数值,后来是一个字符串,类型完全由当前的值决定,这就叫弱类型. 弱类型的好处是十分灵活,可以写出非常简洁的代码.但是,对于大型项目来说,强类型更有利,可以降低系统的复杂度,在编译时就发现类型错误,减轻程序员的负担. 一直有人尝试,让 JavaSc

cursor-PL/SQL中什么变量必须定义?它属于强类型语言还是弱类型语言

问题描述 PL/SQL中什么变量必须定义?它属于强类型语言还是弱类型语言 declare begin for i in 0..5 loop for k in 1..i loop dbms_output.put(' '); end loop; for j in 1..11-2*i loop dbms_output.put('*'); end loop; dbms_output.put_line(''); end loop; end; i,j,k都不必先申明再使用 declare pename em

《程序员的呐喊》一一1.13 弱类型机制够不够强

1.13 弱类型机制够不够强 程序员的呐喊你觉得--一个动态类型系统能有多大?静态类型系统到底重不重要?我非常想知道答案. 亚马逊有很多很大的系统,绝大多数采用了静态强类型,至少我知道的情况如此.那么有没有这样一种需求,或者说我们能不能用Perl.Ruby.Lisp.Smalltalk完成同样的工作? 其实,我感兴趣的是更宽泛一点的话题,也就是编程语言里的类型系统.例如,强类型之于关系数据建模和编程语言是一样的.你可以为每种可能性建模,也可以用键值对的方法快速建立原型.XML数据建模也一样. 静

《程序员的呐喊》一一1.11 作者手记:弱类型机制够不够强

1.11 作者手记:弱类型机制够不够强 程序员的呐喊 这是本书最老的文章之一.我在亚马逊时代写了差不多50篇博客,其中只有两篇被收录到本书中,这是一篇,另一篇是<巴别塔>. 这篇博客写于我离职亚马逊的前一个月.我在尽量保证公平公正的情况下,准确地总结了亚马逊在核心理念上的不同.我观察了这些理念上的差异在团队里的Perl和Java阵营之间,不同的数据建模风格,以及其他很多地方所产生的冲突. 当时我关注的焦点主要是和(编程语言的)类型安全以及(关系型数据库设计的)结构安全.后来我将这个问题进一步提

《程序员的呐喊》一一1.12 作者手记:弱类型机制够不够强

1.12 作者手记:弱类型机制够不够强 程序员的呐喊 这是本书最老的文章之一.我在亚马逊时代写了差不多50篇博客,其中只有两篇被收录到本书中,这是一篇,另一篇是<巴别塔>. 这篇博客写于我离职亚马逊的前一个月.我在尽量保证公平公正的情况下,准确地总结了亚马逊在核心理念上的不同.我观察了这些理念上的差异在团队里的Perl和Java阵营之间,不同的数据建模风格,以及其他很多地方所产生的冲突. 当时我关注的焦点主要是和(编程语言的)类型安全以及(关系型数据库设计的)结构安全.后来我将这个问题进一步提

另类PHP安全漏洞:利用弱类型和对象注入进行SQLi

本文讲的是另类PHP安全漏洞:利用弱类型和对象注入进行SQLi,最近,我在一个目标中寻找漏洞时,遇到了一个正在运行Expression Engine(一个CMS平台)的主机. 这个特殊的应用程序吸引了我,因为当我尝试使用 "admin" 为用户名登录该应用程序时,服务器响应的cookie中包含了PHP序列化数据. 如我们之前所说过的,反序列化用户提供的数据可能导致意外的结果; 在某些情况下,甚至会导致代码执行. 于是,我决定仔细检查一下,而不是盲目的去测试,先看看我能否可以下载到这个C