动态语言是什么(无代码)

List item

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


新的更改理解 2022年6月2日11:13:14

我今天重新看这个问题,看了原先写的突然可以更直接的理解的了。

这个划分分为后前面的动态(动态类型)与语言的划分开,
然后先理解动态是什么,动静态的判断就是是否要检查或者说要添加运行一个东西的行为来划分为动态(运行的、检查的、添加的)和静态(不运行的、检查的、添加的)。
然后这个检查或者添加的东西,这个东西分为动态语言(黑体强调的词语‘东西’是函数)与动态类型语言(东西是数据类型,也可以说是对象)。

因此,java如果会在运行的时候才调用函数,那么就是动态语言,在运行的时候才检查语言的类型,那就是动态类型语言,两者不是同一个东西,虽然都有调用的行为,但是面向的东西是不同的,一个是函数,一个是数据类型。
所以如果我理解有错误,没有函数这样一个东西需要判断是否在运行时才调用和检查,东西所能代表的就只能是数据类型了,那动态语言和静态语言就等价于强类型语言和弱类型语言。

最后我发现我之前写的东西后面的推论部分确实很混乱,现在自己给自己做注释。哈哈。

以下为20200406记录

一、动态语言的不理解

https://www.jianshu.com/p/46db0fe9f996
其实我还是理解不了。我自己先给自己一个答案,方便我先错误的理解一下。
我能理解动态类型语言,就是等到使用的时候才确定一个变量的类型。根据上下文来确定的。
然我想起来了一个机制:运行的时候才确定使用函数。所以我认为动态语言,就是运行的时候才增加函数和减少函数。
但是我不认为这个理解是正确的,因为这个机制是java的。我觉得如果我我是正确的话,那么java如果不是所有的动静态语言都覆盖的话,那java应该是静态类型语言的动态语言。

二、进一步推论

1.尝试更直接的理解

动态语言就可以理解为
只是在确定函数的这一个必然函数运行后,还可以继续运行其他函数。
并且这个继续运行的函数,可以更改之前函数。
为啥更改前面的函数。我的自我推论是还为了重用函数或者避免重写。

2.迷思与出现的矛盾

那么所有可以重用的语言都是动态语言吗。

相反,静态语言就是运行中不可以更改函数,但是所有的更改不是在提前已经设定好了,更改不更改吗?
所以有没有可能是,在运行中确定是否更改 并 可以更改函数的语言是动态语言。
那这就要求动态语言在运行中是可以选择运行哪一部分函数,而不是必须运行每一部分函数,这个角度java还是符合的。
但换个角度就不一样了。
另一个角度,脚本语言作为动态语言的角度来理解,就是是否经过编译这一个过程。从这个角度来讲,java就不是动态语言了。(这个我想的是,脚本直接运行,而java还要编译一下,在编译中检查了,没在运行中检查,所以相对于脚本,脚本更加直接动态了。)

总结

干脆放弃掉动态语言这个名词的多要求的理解。直接以其中的内核作为理解基点。
如果可更改函数,那就是动态语言,体现了动态语言的部分。
关键看可不可以更改函数
(在运行中通过设定更改函数,而不是更改源码
(这个是讲,要通过程序的自己调用来运行,不是非要在代码上写出来调用才可以。想想其实还是被代码调用了函数,但是省略了一部分,从这个角度讲,当时的理解是错的,正确的想法应该是,函数的确定在调用的时候才确定调用还是不调用这个函数,在源代码我是写了,但是不一定调用。静态就是源代码写死了,必然被调用。但是反过来一想,运行的时候才调用也是被源代码写死了的啊。所以可能我最开始就理解错了哈哈。
(所以在这里强行圆的方式就是,自己写的函数都必须被用到的就是静态,可以不被用到的就是动态;或者函数在编译阶段不被检查的是静态,在运行时才检查的是动态,但是应该没有那个编译器在编译的时候不先检查下语法错误啥的吧,那有没有可能是检查函数是否能正常运行呢,比如无限循环问题或者其他奇奇怪怪组合出来以至于不能运行的代码之类的。))
)。

  • 14
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值