文章目录
前言
简单总结一下
「高级语言 vs 低级语言」
-
「高级语言」:相对于低级语言来说,高级语言采用易于识别和记忆的字符来作为关键字,也更接近人类的思维方式,编写容易读写性好,因此开发效率更高,另外高级语言是可移植的,做少量修改甚至无需修改,即可将代码运行在不同平台的计算机上,比如 C、C++、Java、Python等都是高级语言;
-
「低级语言」:低级语言又分为两种
- 2.1 「机器语言」:计算机硬件只能识别“断开”和“闭合”两种物理状态,也就是0和1。使用机器指令执行效率最高,因为无需对指令进行翻译。但是机器语言对人类不友好,一大串0和1,很难识别和记忆,且容易出错,因此开发效率很低。另外低级语言与机器硬件绑定,不具备可移植性;
- 2.2 「汇编语言」:汇编语言(assembly language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。普遍地说,特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植;
总结:
- 越是低级的语言对机器越是友好,越是符合机器的思考方式,因此执行效率高;
- 越是高级的语言对人类越是友好,越是符合人类的思考方式,因此开发效率高;
「编译型语言 vs 解释型语言」
坦白讲,现在用编译型、解释型来分类编程语言已经有点力不从心了
比如拿Java来举个
JAVA的第一道工序是javac编译,当然目标文件是BYTECODE。后续可能有三种处理方式:
- 运行时,BYTECODE由JVM逐条解释执行;
- 运行时,部分代码可能由JIT翻译为目标机器指令(以method为翻译单位,还会保存起来,第二次执行就不用翻译了)直接执行;
- RTSJ。继JAVAC之后执行AOT二次编译,生成静态的目标平台代码(典型的就是IBM WEBSHPERE REAL TIME);
有的时候,可能是以上三种方式同时在使用。至少,1和2是同时使用的,3需要程序员手工指定
所以,你说Java到底是编译型语言?还是解释型语言? 如果按照3的使用方式,Java是编译型语言。如果按照1和2的使用方式,Java可以说是半编译半解释的语言
不过一般来说
- 「编译型」:指事先把源代码通过编译器转换成目标平台的机器语言;
- 「解释型」:指源代码不会事先编译成目标平台的机器语言,而是在运行的时候逐行对代码进行解释,转换成目标平台机器代码运行,像Java和Pyton会事先把源代码编译成一个中间语言,然后通过VM对中间代码进行解释执行;
这两种类型语言的区别,就在于跨平台和执行性能上,解释型语言能直接跨平台,但执行性能相对差,而编译型语言跨平台需要重新编译,但执行性能相对好
「强类型语言 vs 弱类型语言」
-
「强类型」:不允许改变变量的数据类型,除非进行强制类型转换;比如Java,对变量类型转换有严格限制,不同类型变量是不能相互赋值的,这样可以避免许多低级错误;
-
「弱类型」:变量可以被赋予不同的数据类型;比如javascript,对变量类型没有约束,相对更灵活,但容易产生bug;
「动态类型语言 vs 静态类型语言」
-
「静态类型语言」:在编译阶段确定所有变量的类型,比如C++ 、Java,编译阶段就可以确定属性偏移量,用偏移量访问代替属性名访问,偏移量信息共享;
-
「动态类型语言」:在执行阶段确定所有变量的类型,比如javascript,会导致需要在程序运行时,动态计算属性内存地址的偏移量,还需要额外空间存储属性名,所有对象的偏移量信息各存一份;
相应的也就可以理解静态链接和动态链接的区别了
综上,动态弱类型语言(比如Javascript)因为性能和易引入bug等问题,被很多开发者鄙视
PS:根据上面的分类,Python属于动态强类型语言
如上只列举了几个分类的维度,当然,还有其他的维度,比如GC-based的、手工管理内存的,有没有VM的等等,就不一一列举了
-END-
Python入门全套学习资料附带源码:
学习编程前准备(文末免费领)
全套软件安装包
附带完整的安装包的安装视频教程资源(新手大礼包已备好)
整套零基础入门视频+课件笔记
👉实战案例👈
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
👉100道Python练习题👈
检查学习结果。
👉面试刷题👈
资料领取
上述这份完整版的Python全套学习资料已经上传CSDN官方,朋友们如果需要可以微信扫描下方CSDN官方认证二维码输入“领取资料” 即可领取
学习方法
学习python,我觉得一定要快,用最快的时间快速入门,千万不要学困难的东西,先挑简单的来,越快越好,以免打击了你学习的积极性。
找到一个切入点,比如爬虫就是一个十分有趣的切入点,学会了爬虫你就可以从网站上“偷数据”,还可以把这些数据拿来卖钱,你说好不好。
总结
好啦,这就是今天的内容,入门知识点资料免费发送的哈,想要的小伙伴儿不要错过,带你直
接弯道超车,少走一大波弯路,准备好了嘛?!我们要开始学习一项编程技术啦!