翻了一下博客的记录,从2017年我就想要学习,假如坚持到现在的话,我想应该可以出师了,可总是断断续续,这次把周期放长,一定要坚持学习到明年6月,希望自己能够坚持到底!
一、编译性语言和解释性语言的区别
1、编译性语言
(1)只须编译一次就可以把源代码编译成机器语言,后面的执行无须重新编译,直接使用之前的编译结果就可以;可以理解为一本英文书直接翻译成中文给读者使用。
(2)编译性语言代表:C、C++、Pascal/Object Pascal(Delphi);
2、解释性语言
(1)源代码不能直接翻译成机器语言,而是先翻译成中间代码,再由解释器对中间代码进行解释运行;程序在运行时才翻译成机器语言,每执行一次都要翻译一次;可以理解为一本英文书你要找个翻译员给你同步翻译,相比与直接阅读多了一个步骤。
(2)解释性语言代表:Python、JavaScript、Shell、Ruby、MATLAB等;
3、比较
(1)一般,编译性语言的运行效率比解释性语言更高;但是不能一概而论,部分解释性语言的解释器通过在运行时动态优化代码,甚至能使解释性语言的性能超过编译性语言;
(2)编译性语言的跨平台特性比解释性语言差一些;
二、动态语言和静态语言的区别
(1)动态类型语言,是指数据类型的检查是在运行时做的。变量使用之前不需要类型声明,通常变量的类型是被赋值的那个值的类型。
(2)静态类型语言,是指数据类型的检查是在运行前(如编译阶段)做的。静态类型语言在编译时变量的数据类型即可确定的语言,多数静态类型语言要求在使用变量之前必须声明数据类型。
三、强类型语言和弱类型语言的区别
(1)强类型语言
强类型语言,强制数据类型定义的语言。也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。举个例子:如果你定义了一个整型变量 a,那么程序根本不可能将 a 当作字符串类型处理。强类型定义语言是类型安全的语言。
主要语言:Java、C#、Python、Object-C、Ruby
(2)弱类型语言
弱类型语言,数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。
主要语言:JavaScript、PHP、C、C++(C和C++有争议,但是确实可以给一个字符变量赋整形值,可能初衷是强类型,形态上接近弱类型)
【完】