第几个hello world 程序了,为曾经没有毅力的自己默哀下。今天的课程语言的分类,三大类:机器语言,汇编语言,高级语言。
其中最让我痛恨的就是汇编语言,我们大学没事开什么这课程,大学混日子的喔不可避免的挂科了。至今都不清楚汇编语言程序是个什么个结构体系,曾经为应付考试的我自认为懂个个别符号的含义(MOV当作是要进行运算的前置标识),一到考试题目满脸懵B。汇编再见。
三者间的关系比较:
直观点说,机器语言和汇编语言都是用二进制指令去编写程序,直接操作硬件,必须足够了解硬件的细节问题。而其中汇编语言只是在机器语言的基础上将二进制指令封装成一个个英文标签,方便我们记忆。但是指令的繁多,使得换成的英文标签也让我们难以消化记忆。
与之相对高级语言用人类能比较轻松理解的表达方式去编写程序,通过操作系统间接的去操纵硬件,从而不用去考虑硬件细节问题。但这种方式因为我们写的程序计算机不能直接听的懂,所以中间需要操作系统将我们写的程序翻译成相应的二进制指令让计算机去执行。
高级语言分成两类:编译型和解释型
编译后程序运行时不需要重新翻译,直接使用编译的结果就行了。程序执行效率高,依赖编译器,跨平台性差些。如C、C++、Delphi等
解释类:执行方式类似于我们日常生活中的“同声翻译”,应用程序源代码一边由相应语言的解释器“翻译”成目标代码(机器语言),一边执行,因此效率比较低,而且不能生成可独立执行的可执行 文件,应用程序不能脱离其解释器(想运行,必须先装上解释器,就像跟老外说话,必须有翻译在场),但这种方式比较灵活,可以动态地调整、修改应用程序。如Python、Java、PHP、Ruby等语言。
所以 执行效率:机器语言>汇编语言>编译型>解释型
然而现实社会中执行效率高,并不一定就能确定其开发效率高。就拿个简单的文件传送问题,当你生成一文件的速度为0.01s,而传输该文件的速度则需要5s,当第一个文件传输完成,经过了5s,此时第二个文件才开始传输,但是此时已经生成了500个文件。所及即使生成的速度比较慢,1s生成一个文件。但是文件的传输过程并不会受到干扰,反而会减少了滞留文件所占用的空间内存。而解释型就类比于此,因为逐行翻译,当程序代码繁多时出bug时也不会像编译型那么的调试麻烦。
因此 开发效率:解释型>编译型>汇编语言>机器语言
跨平台性:解释型 > all
开始正式编写python程序,“hello world”(没错就是我,嘿皮)。不过单就“hello world”这个程序我就确信了python宗旨的真实:语言整体的优雅与简洁。
汇编那个10多行的”hello world“不堪回首,就拿c和java说吧:(头文件也就不讨论了)c必不可少main函数整体,内部区域大小括号划分好函数区域。java更夸张的函数调用控制台输出入口string args[]...输出system.out.println的前缀。这些直观的结构体系却在python中不会见到。甚至每行字段都不用打";"分隔,而双引号("),单引号(')的用途界限都不再区分。但我还是用双引号吧,以后指不定又往回学java捞下麻烦的陋习。 (但仍需注意 msg = "My name is Egon , I'm 18 years old!" 此处需要考虑单引号和双引号之间的配合)