首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

通俗的方式理解动态类型,静态类型;强类型,弱类型

引言 今天和一个朋友讨论 C++ 是强类型还是弱类型的时候,他告诉我 C++ 是强类型的,他和我说因为 C++ 在写的时候需要 int,float 等等关键字去定义变量,因此 C++ 是强类型的,我告诉他...什么是动态(静态)类型,强(弱)类型 基础版本 编译时就知道变量类型的是静态类型;运行时才知道一个变量类型的叫做动态类型。...根据图我们可以严格的定义动态类型,静态类型;强类型,弱类型 强类型:如果一门语言写出来的程序在红色矩形外部,则这门语言是强类型的,也就是上面说的 well behaved 弱类型:如果一门语言写出来的程序可能在红色矩形内部...是强类型的。...另外,由于强类型语言一般需要在运行时运行一套类型检查系统,因此强类型语言的速度一般比弱类型要慢,动态类型也比静态类型慢,因此在上述所说的四种语言中执行的速度应该是 C > Java > JavaScript

2.3K40

编程语言的弱类型、强类型、动态类型、静态类型的解释

编程语言的弱类型、强类型、动态类型、静态类型的解释 一、弱类型和强类型的区别 ​ 弱类型语言和强类型的语言的区分点,在于 是否支持隐形类型转化 越支持隐式类型转化,越是弱语言类型; 越不支持隐式类型转化...,越是强类型。...要注意的是:强类型和弱类型并没有严格意义上的定义 像是 C++,允许某些类型的隐式转换的同时却又对类型要求严厉,不能将一个指针随意地转换为一个整数。我们很难定义它究竟是弱类型语言还是强类型语言。...强类型和弱类型的存在只是为了让我们更好的理解语言特性;如强类型语言在类型安全性上有更严格的要求,而弱类型语言在类型安全性上通常更为放松。...二、动态类型和静态类型的区别 很多初学者很容易把这两个概念和弱类型,强类型的概念混淆,其实这是两个完全不同方向上的概念 静态类型语言: 是指在编译时变量的数据类型必须确定的语言,静态类型语言要求在使用变量之前必须声明该变量的数据类型

68710
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    区块链是今年的流行词 - 但它可以超越炒作吗?

    比特币背后的开源账本被吹捧为从银行到健康的一切革命,但是判断还早。 围绕加密货币的猜测掩盖了这样一个事实:区块链是驱动比特币的分散的开源分类账,可以彻底改变所有权被验证的方式。...虽然主要加密货币的价值波动,但“区块链”仍然是一个利润丰厚的流行词,公司已经发现是一个吸引资金的磁铁。但是通过炒作,区块链技术真的可以彻底改变从银行到教育的任何方式吗?...与eBay,亚马逊和其他公司不同,它可以自由使用,因为交易是通过点对点方式完成的,没有中间商要求每笔交易的百分比。它的模型在理论上可以扩展到任何普通市场。...“对于发达国家的大多数人来说,这不是需要解决的问题。如果我想汇款,我用我的银行账户;如果我想证明我的身份,我使用我的护照。...简化的文件验证也可以用来削减供应链中的官僚作风。最近的一项试点研究表明,使用区块链技术可以减少从墨西哥到西班牙的25吨金枪鱼从一周到三个小时的文书工作时间。

    72570

    强类型 JavaScript 的解决方案

    JavaScript 是一种弱类型(或称动态类型)语言,即变量的类型是不确定的。...弱类型的好处是十分灵活,可以写出非常简洁的代码。但是,对于大型项目来说,强类型更有利,可以降低系统的复杂度,在编译时就发现类型错误,减轻程序员的负担。...一直有人尝试,让 JavaScript 变成强类型语言。在官方最终支持强类型之前,本文介绍三种现在就可用的解决方案。...它的最大特点就是支持强类型和 ES6 Class。 首先,安装TypeScript。 $ npm install -g typescript 然后,为变量指定类型。...Flow 的用法很多,我只举几个例子。前文介绍的两种工具,只能检查声明了类型的变量,而 Flow 可以推断变量类型。

    97650

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

    有了上面的概念,再讨论强、弱类型,静态、动态类型 强、弱类型 强类型strongly typed: 如果一种语言的所有程序都是well behaved——即不可能出现forbidden behaviors...这样的结果是:容易产生forbidden behaviours,所以是弱类型的 动态、静态类型静态类型 statically: 如果在编译时拒绝ill behaved程序,则是statically typed...譬如Ocaml是静态类型的,但是也可以不用明确地写出来。。...Ocaml是静态隐式类型 静态类型可以分为两种:如果类型是语言语法的一部分,在是explicitly typed显式类型; 如果类型通过编译时推导,是implicity typed隐式类型, 比如ML和...Haskell 4.下面是些例子 无类型: 汇编 弱类型、静态类型 : C/C++ 弱类型、动态类型检查: Perl/PHP 强类型、静态类型检查 :Java/C# 强类型、动态类型检查 :Python

    1.5K30

    ReasonML——新的前端强类型语言简介

    在当前的选择中,有两个流派,都能够解决 JavaScript 弱类型语言带来的弊病,给前端带来强类型语言的支持。...第二个是以微软开发的 TypeScript 为首的前端新强类型语言——这类语言的优势是从根本上支持了强类型语言,可以在编译时通过类型推导与判断来从根本上解决类型转换问题,约束开发模型。...具体是什么意思呢,就是说你的代码可以是部分 TypeScript 语言,部分 JavaScript 语言的。...首页介绍中,还提到了这个语言的三个特点: 无争论的类型系统(Types without hassle),有效、安全的类型推论意味着你很少需要进行类型注释,但是它可以帮你检查所有内容的类型。...总结 ReasonML 是一门比 TypeScript 约束严格的多的强类型语言(TypeScript 编译报错可以选择忽略掉,不影响使用)。强类型语言对于大型的项目开发来说,确实可以带来明显的优势。

    1.8K30

    竟然真的可以是 null!.NETC# 确定可空值类型 Nullable 实例的真实类型

    使用 Nullable 我们可以为原本不可能为 null 的值类型像引用类型那样提供一个 null 值。...于是我们可以得出结论: 对于可空值类型,当为 null 时,GetType() 会出现空引用异常; 对于可空值类型,当不为 null 时,GetType() 返回的是对应的基础类型,而不是可空值类型;...然而对可空值类型的装箱与对值类型本身的装箱是同样的操作,所以调用 GetType() 的时候都是返回这个对象对应的实际基础类型。例如对一个 int?...应该如何判断可空值类型的真实类型 使用 Nullable.GetUnderlyingType(type) 方法,能够得到一个可空值类型中的基础类型,也就是得到 Nullable 中 T 的类型。...= null; 如果你是运行时拿到的可空值类型的实例,那么实际上此方法也是无能为力的。

    1.5K20

    强类型与弱类型语言关于存取对象(数据)的问题

    在旧的业务流程加入一个“拦截”,原来从前端表单提交到后台的处理逻辑延后处理,本质上是一个异步化的处理过程。 此时将表单参数存储到数据库,在适当的时刻“拦截”结束通过时调用原来的处理逻辑。...-> A', 从数据库取出原来的参数对象,希望A'能够完全表达A, A' == A,包括参数类型与顺序。...这里的Person类型无法确定,调用realService方法也无法做到,需要反射? PHP的示例代码 <?...public $name; public $data; public static findOne($condition) {} public save() {} } 弱类型语言就没有这样的麻烦...虽然这里讨论的示例中只有一个参数,但是多个参数的情况下,PHP也能支持。 感谢@Tranch提供的PHP示例代码

    86190

    都说vivo营销强,但你知道vivo的营销究竟强在哪里吗?

    因此今天单靠互联网营销已不足够——互联网营销的优势是取得立竿见影的效果,但要塑造品牌、与消费者建立情感上的连接,则不是单靠一种营销方式就可以满足的,这需要多元化的尝试;不是一次自我炒作或者口水战就能实现...针对这个市场的用户,vivo的营销就采取了相对传统的电视广告方式。...vivo做广告时,并没有强调高大上的品牌特性,而是回归到产品的核心卖点,从最初深入人心的音乐广告,到主打“Camara& Music”之后的“照亮你的美”广告系列,vivo的品牌广告都与产品核心卖点直接关联...每个手机公司都要结合自身特点来建立一套类似的体系,直接复制vivo的做法没有意义。不过,vivo的营销理念在行业却是共通的。 第一,vivo对不同营销方式的开放态度,是许多厂商欠缺的。...第二,vivo将营销当做手段而不是目的的理念,是许多厂商欠缺的。 vivo的理念中,营销只是手段,目的是与消费者保持紧密沟通。因此,vivo的营销方式都与目标消费者的沟通习惯有关。

    2.7K40

    弱类型与强类型语言“=”号的不同以及引发的安全问题

    #弱类型与强类型语言中“=”号的不同scode type="red"声明:以下文字仅为个人观点,如有不正确的地方欢迎指正/scode##0x01 在编程语言中的 “=“ 号不同于在数学上的 ”=“号,...强类型语言 我们(我)知道c语言是一门强类型语言,而诸如python,php等则是弱类型语言。...何为强类型?...在弱类型语言中,大部分时候我们都不太需要提前定义声明变量和类型 如在php中$x = 5;$y = '5' ; 在弱类型语言中 "==”与C语言有所不同的是他比较的不是ascll码,而是数值 如 x...引用上面的x和y变量 这时 $x===$y 则返回的是 fasle ,优先比较两者的类型undefined##0x04 引发的安全问题 在编程语言中科学计数法的表示为 数值e整数,如 5e5 = 5*

    56820

    弱类型与强类型语言“=”号的不同以及引发的安全问题

    弱类型与强类型语言中“=”号的不同 声明:以下文字仅为个人观点,如有不正确的地方欢迎指正 0x01 在编程语言中的 “=“ 号不同于在数学上的 ”=“号,在数学中,x=5 与 5=x 是一个意思...,可以等量替换,但在编程语言中,x=5与5=x 就不同了,后者会报错 因为这里的等号是赋值,且变量名不能为数字开头,我认为”=“号是一个人类伟大的发明. 0x02 强类型语言 我们(我)知道c语言是一门强类型语言...何为强类型?...‘1’,对应的十进制ascll码为49,若 a==b 则返回 false ,在比较a和b时,比较的是ascll码值 数值1 与 字符1显然不相等 图片 图片 0x03 弱类型语言 在弱类型语言中...,大部分时候我们都不太需要提前定义声明变量和类型 如在php中x = 5;y = '5' ; 在弱类型语言中 "==”与C语言有所不同的是他比较的不是ascll码,而是数值 如 x==y 与 x==y

    1.5K10

    论编程界的日经问题:到底如何区分静态类型和动态类型、强类型和弱类型?

    然而,如果按照已有的共识来界定这些概念,就能得出一些明确的答案。文章提到了强类型语言和弱类型语言的区别,以及静态类型语言和动态类型语言的区别。...在强类型和弱类型的定义中,强类型语言常常会直接出错或编译失败,而弱类型语言会进行隐式转换或产生意料之外的结果。根据这个定义,Python被归类为强类型语言。...最后,博主表示这种讨论对工程开发的实际意义并不大。 论编程界的日经问题:到底如何区分静态类型和动态类型、强类型和弱类型?...强类型和弱类型 有关强类型和弱类型的定义大都比较模糊,这里我采用 Wikipedia 上的一个结论: 强类型的语言遇到函数参数类型和实际调用类型不符合的情况经常会直接出错或者编译失败;而弱类型的语言常常会实行隐式转换...讨论之末,有人问了一个很有意思的问题:“我一直想知道了解语言的 typing system 分类对工程应用有什么帮助”,这确实引发了我的一些思考,即使我们争论的喋喋不休,又或者终于达成了某种共识,那么这种结果对我们的工程开发有什么实际的意义吗

    42940

    实现函数的输入输出参数的强类型检验

    Python是一门弱类型的解释型语言,弱类型有其优势,非常适用于算法开发以及一些短平快的项目,但也有其劣势,当代码越来越多的时候,自由的代价就会呈现出来,维护的代价也会越来越大。...特别是,如果我们开发接口给别人使用的时候,如果没有强类型的校验,别人就不能清晰的知道输入输出的数据结构是什么,报错的时候也比较难定位问题,因此在有些场景下,需要对函数输入输出进行强类型约束。...使用FastAPI的体验都比较清楚,在FastAPI中,接口的输入输出参数是可以定义成强类型的,这也是自己最初看到FastAPI就觉得这就是Python当前最好的框架之一。...总结一下,我们的实现方式应该做到如下两个要求: 非侵入式的,尽量避免对业务代码的更改; 实现输入输出参数的强类型校验。 参考FastAPI的实现,我们的实现应该也是采用包装器的形式来实现。...说明:因为我们的场景下,输入输出都需要是普通的数据,并没有将输入输出转成强类型数据,外部在调用时(通过HTTP接口)还是普通的输入输出。

    25221

    【模型训练】SGD的那些变种,真的比SGD强吗

    很多的论文依然采用了原始的梯度下降算法而不采用更高级的算法,今天就以一个实践例子来给大家展示一下各类算法的比较,所有内容参考文章【An overview of gradient descent optimization...前面说了梯度下降算法是按照梯度的反方向进行参数更新,但是刚开始的时候梯度不稳定呀,方向改变是很正常的,梯度就是抽疯了似的一下正一下反,导致做了很多无用的迭代。 而动量法做的很简单,相信之前的梯度。...nesterov的好处就是,当梯度方向快要改变的时候,它提前获得了该信息,从而减弱了这个过程,再次减少了无用的迭代。...adam对梯度的一阶和二阶都进行了估计与偏差修正,使用梯度的一阶矩估计和二阶矩估计来动态调整每个参数的学习率。 ? ? ?...说了这么多,对上面各种方法从一个鞍点开始优化,表现如何的预期效果图如下。 ? 理论上,就是上面这样的。文章作者会告诉你对于数据稀疏的问题,用自适应学习率算法就好了,而且使用人家推荐的参数就好。

    87320
    领券