编程语言鄙视链这个视频里头这些语言的区别是:谁更大而全的提供了所有功能。机器语言最牛,汇编语言是机器语言的助记语言,基本上可以提供机器语言的完整功能。但需要汇编器把汇编语言翻译成机器能读懂的语言。
一、编程语言鄙视链这个视频里头这些语言的区别
区别就是谁更大而全的提供了所有功能。机器语言最牛,汇编语言是机器语言的助记语言,基本上可以提供机器语言的完整功能。但需要汇编器把汇编语言翻译成机器能读懂的语言。名列前茅个汇编器应该是用机器语言书写的(不是直接书写0101,而是通过“带孔卡片”让机器理解人类的要求。)汇编语言可以用来开发操作系统(比如unix),编译器(比如C语言编译器cc),甚至有人用其开发完整的应用程序(比如求伯君的WPS的早期版本)。有了编译器,就出现了底层语言(机器语言、汇编语言)和高级语言的分别,而随着Unix操作系统流行起来的C语言,因为有自举性(可以用自己给自己开发更复杂的图灵完备的编译器)而红红火火起来。后来应用领域愈发复杂,需要引入面向对象、类的概念。C with Class就被开发出来了,后来感觉名字不够Cool就叫个C++吧。再后来,互联网红红火火起来,需要大量互联网从业人员,需要把复杂的系统进行更加详细的分工。这个时候,本来Java就诞生了,继承了C++大部分优点而又抛弃了一些诸如“指针”等容易引起程序运行时问题的概念。后来,微软看着Java大火,引入.Net加入Web Service的竞争,同时开发出C#(相当于C++++)视频里谁大而全的提供解决方案谁厉害呗。
看了个搞笑视频,C++比Python、Java厉害,C语言比C++厉害,又有啥汇编语言更牛逼。我们只学过C++还学得云里雾里,这几天网上铺天盖地Python教学。常见的编程语言有哪几个?有两类,底层语言和高级语言。解释语言(脚本语言)和编译语言。C派系和C派系以外语言。
这些语言之间到底什么区别?没什么区别,本质上都是人机交流的桥梁。
运用上有什么区别?没什么区别,不论什么语言都得由解释器或者编译器将其翻译为机器可以理解的机器码才能真正被执行。
作用的软件有啥不一样?没啥不一样,编译执行的有运行时可能稍微快一点儿,解释执行的,也许稍微慢点儿,但会更加灵活。
这之间有什么关联吗?当然,主要是为了解决不同领域复杂的问题。
我们现在有哪些作用的软件、游戏、APP或者现在什么工程就是用哪种语言写出来的?苹果的APP一般是用苹果自己定义的叫做Object C做的,安卓的APP一般是谷歌的Kotlion,相当于谷歌版Java。但由于直接使用C和Java语言做APP开发比较复杂,现在也流行用HTML、Java Script等做APP。微软的Windows、Office,大部分用C/C++做的,底层驱动或者内核会直接使用一些汇编语言。绝地求生、和平精英这些大型游戏,是C++为主、辅以一些脚本语言实现的,但不是只用计算机语言编程,而是大量使用了虚幻等游戏引擎。
我们如果学能达到什么效果?我们当初学的时候怎么感觉云里雾里枯燥无味?认真学,毕业后如果从事相关专业,可以深入进行研究。先把学校传授的基础知识学好,打好基础,尤其是像《操作系统》《编译原理》《数据库原理》《计算机网络与多媒体》《数据结构与算法》这些基础课程一定要认真学好,然后找自己感兴趣的一两门计算机语言学精就差不多了。
延伸阅读:
二、低级语言与高级语言
最初的计算机程序都是用0和1的序列表示的,程序员直接使用的是机器指令,无需翻译,从纸带打孔输入即可执行得到结果。后来为了方便记忆,就将用0、1序列表示的机器指令都用符号助记,这些与机器指令一一对应的助记符就成了汇编指令,从而诞生了汇编语言。无论是机器指令还是汇编指令都是面向机器的,统称为低级语言。因为是针对特定机器的机器指令的助记符,所以汇编语言是无法独立于机器(特定的CPU体系结构)的。但汇编语言也是要经过翻译成机器指令才能执行的,所以也有将运行在一种机器上的汇编语言翻译成运行在另一种机器上的机器指令的方法,那就是交叉汇编技术。
高级语言是从人类的逻辑思维角度出发的计算机语言,抽象程度大大提高,需要经过编译成特定机器上的目标代码才能执行,一条高级语言的语句往往需要若干条机器指令来完成。高级语言独立于机器的特性是靠编译器为不同机器生成不同的目标代码(或机器指令)来实现的。那具体的说,要将高级语言编译到什么程度呢,这又跟编译的技术有关了,既可以编译成直接可执行的目标代码,也可以编译成一种中间表示,然后拿到不同的机器和系统上去执行,这种情况通常又需要支撑环境,比如解释器或虚拟机的支持,Java程序编译成bytecode,再由不同平台上的虚拟机执行就是很好的例子。所以,说高级语言不依赖于机器,是指在不同的机器或平台上高级语言的程序本身不变,而通过编译器编译得到的目标代码去适应不同的机器。从这个意义上来说,通过交叉汇编,一些汇编程序也可以获得不同机器之间的可移植性,但这种途径获得的移植性远远不如高级语言来的方便和实用性大。