首先是编程语言的发音:
我以前把python发音错读作飞人。因为单词物理physics的phy发音读飞,所以我把python的py也读飞,其实应该读派。then发音读人,所以我把python的thon也读人,其实应该读森。所以python应该读派森,而不是读作飞人。python是编程语言排行榜第一的语言。
C#有个井号,所以有些人把C#读作C井,其实应该读作C sharp。因为C语言增加了内容,变成C++,而C++语言再增加内容,就是C++再++,一共4个加号,拼成一个井号,于是叫C#。
编程语言的三次变革:
编程语言分为编译型语言和解释型语言。
编译型语言就是运行程序前,已经把程序编译成0、1这样的二进制机器码,这是CPU可以直接运行的。
解释型语言是每运行一行代码,就把这行代码编译成0、1这样的机器码,但是编译就需要消耗时间,而且增加CPU负担。
微软最初发明了basic语言,但由于basic语言是解释型语言,程序每运行一行代码,就要编译一下。虽然对于小程序来说,不会显著影响运行速率,但是随着程序变大,需要编译的代码越来越多,就会明显拖累程序运行,使程序运行变慢,于是微软又发明了第二种语言:C语言。C语言是编译型语言,会在软件运行前,就已经编译成0、1这样的二进制机器码,程序运行时就不用再边运行边编译了。C++也是编译型语言。
但是随着虚拟机的出现,就要求程序不能直接编译成0、1这样的二进制机器码,而是编译成中间码,然后根据不同的操作系统和CPU设备,来编译成与之适应的二进制的机器码。这样的话,是否就等于又退回了边运行边编译的解释型语言模式?不是的。虽然Java语言和C#语言用作虚拟机,而生成中间码,所以被称为介于编译型语言和解释型语言之间的语言,但是Java语言和C#语言生成的中间码,已经非常接近机器码,已经完成了99%以上的编译。程序运行时,只需要再完成最后不到1%的编译,所以基本上不会影响软件运行的速度,但是还是稍微有了那么一点点影响,毕竟运行时,每执行一行代码,还要完成最后1%的编译。
我看过一个实验,用C++语言运行一个大的场景,这个场景大到C++刚好只能达到60帧运行,C语言也能以60帧运行,因为运行之前已经编译成机器码了,不会边运行边编译。而C#语言则降到58帧,Java语言则降到56帧,因为是中间码,运行时还要完成最后不到1%的编译,稍微占用了点时间。此外,python语言和basic语言是纯解释型语言,既不是机器码,也不是中间码,而是程序代码的原本,所以每运行一行,就要编译一行,而且是从0%开始编译,所以那个大场景的运行帧率都降到10帧以下。
现在最主流的两个游戏开发引擎:unity只限定用C#语言,虚幻引擎只限定用C++,其它语言都不能用。因为三维游戏属于大游戏、大程序,如果边运行边编译,会严重影响游戏速度。所以低于58帧的语言,例如Java语言,就不能用了。
随着各种语言的特点,各种语言已经各司其职,而不是相互竞争的关系。
例如机器硬件驱动程序,一般就用C语言写。对运行性能要求高的程序,就用C++写。对需要使用多种操作系统的程序(跨平台程序)就用具有虚拟机功能的Java或C#写。对于人工智能,python语言已经有很多库函数可以调用,对很多人来说就省事了,不用亲自去写了,节省了开发时间。对于50岁以上的怀旧的程序员来说,可能还喜欢用basic吧。
标签:语言,编程语言,C#,C++,机器码,编译,对比,运行 From: https://blog.csdn.net/baykid/article/details/143830086