强类型语言的优缺点是什么?
优点是和计算机亲和力高,缺点是和人亲和力不足。
机器本身是强类型的,同一个寄存器载入和计算1字节、2字节、4字节、8字节数据的指令都不太一样,数字太大寄存器位长不够的,还要拆分成多个步骤计算;处理流还要再进一步区分和转换。
我们人类并不在意100到底是“一百”还是“一零零”,但是计算机上这两个东西根本就不一样,它就这样歇斯底里的和你玩文字游戏,人类思考上没有毛病的逻辑,对于机器而言可能都是模棱两可的。
“1 + 1 到底你是要 等于2 还是要等于 3(11)“,这是来自机器的灵魂拷问。
强类型,其实也没有特别准确界限,但是毫无疑问一旦一门语言自称“强类型”,那么它就是选择了亲和机器的设计,让人自己来解决这个文字游戏里那些令人挠头的问题,让我们主动告诉机器,我们要的是那个”等于2“的”1 + 1“(内心万马狂奔)。
但是这也有好处,强类型明示了机器操作数据的必要特征,这样就不用让机器费力去解读人模棱两可的描述,直接就能按照人的指示去工作,性能会有很大提升;而且强类型中隐含了很多确定的承诺,可以利用大量数学方法直接分解化简的,进而获得极其可观的编译优化增强,让性能更进一步。
仍然说“强类型中隐含了很多确定的承诺”这个问题,强类型带来的另外一个好处是,代码拥有更多逻辑上可以“证伪”特征,让程序在编译的时候就能得到非常充分的检查,遂“苹果只会和苹果一起计算和处理,没有你的明确指示,机器会预先检查并保证求他水果不会乱入”,这很大程度降低了程序执行错误和崩溃的可能性。
计算机语言的种类非常的多,总的来说可以分成机器语言,汇编语言,高级语言三大类。
电脑每做的一次动作,一个步骤,都是按照已经用计算机语言编好的程序来执行,程序是计算机要执行的指令的集合,而程序全部都是用我们所掌握的语言来编写的。所以人们要控制计算机一定要通过计算机语言向计算机发出命令。
(1)解释类:执行方式类似于我们日常生活中的“同声翻译”,应用程序源代码一边由相应语言的解释器“翻译”成目标代码(机器语言),一边执行,因此效率比较低,而且不能生成可独立执行的可执行文件,应用程序不能脱离其解释器,但这种方式比较灵活,可以动态地调整、修改应用程序。
(2)编译类:编译是指在应用源程序执行之前,就将程序源代码“翻译”成目标代码(机器语言),因此其目标程序可以脱离其语言环境独立执行,使用比较方便、效率较高。
但应用程序一旦需要修改,必须先修改源代码,再重新编译生成新的目标文件(*.OBJ)才能执行,只有目标文件而没有源代码,修改很不方便。如今大多数的编程语言都是编译型的,例如VisualBasic、VisualC++、VisualFoxpro、Delphi等。