目前风行的编程语言
很显著python,c,java,c++,c#,javascript,php,汇编,go这些语言目前还是支流语言。
我置信,进入IT互联网行业工作一段时间的敌人多多少少也应该用过下面的语言,同时大家可能听到过上面的舆论
在不少论坛,探讨群,平台上很多人都在探讨某某语言如何如何,那么在这里我给各位讲一下这些语言,它们最终的实质。如果你想看视频,能够看看(最好联合视频看)https://www.bilibili.com/vide...
大部分状况之下,咱们都是在win/mac上开发咱们的我的项目,而后将代码部署在Linux零碎下运行(这状况在互联网公司居多,其它部署在win,mac上也有,不过很少,不在本文讲述之内),而后咱们会在Linux下启动咱们的程序给用户提供服务。那么咱们晓得会有各种编程语言编写的利用,在这里咱们举个例子,向屏幕输入数据的性能,给各位演示一下各种编程语言它们在底层调用的是什么货色。
在这里,我先给最终的后果图
机器平台
java编程语言测试
rust编程语言测试
python编程语言测试
golang编程语言测试
php/node/c/c++一样不在测试(大家能够自行测试)
大家看到了几个要害的零碎函数execve,write这2个函数在1991年就曾经存在,能够查看linux 0.11版本内核源码就能够看到,也就是说下面这些编程语言呈现工夫不同,然而它们都要运行在Linux零碎之后,要操作屏幕就必须要借助零碎调用,否则是无奈间接操作显存,读写显存的。
execve/write零碎函数
这2个函数是Linux零碎函数,属于比拟原始底层的函数了,简直任何编程语言都要通过它们来实现相应的性能,因为没有哪个语言能间接绕开操作系统间接操作硬件的,毕竟没有几个人晓得intel芯片,内存芯片,网卡芯片,显卡芯片的datasheet,能间接操作芯片的寄存器的。
这些零碎函数还有很多,能够分为过程管制相干,中断信号相干,文件操作相干,网络socket编程相干等大量的零碎函数。理解这些零碎函数并把握应用,对于咱们应用php,java,python,golang,rust,c,c++,nodejs等将有极大的帮忙和驾驭编程能力。
置信大家看完下面的测试,应该晓得咱们用的货色局部技术曾经成型于20年前,30年前,10几年前了,只不过被一群大佬(欧美公司或集体封装了一堆编译器,解释器,搞出了一堆各种语法的编程语言)弄出一堆语言(它们在应用上只是语法不同)。
intel处理器
32架构的呈现工夫在1985年,目前仍然在应用,64架构的呈现晚一些,但Linux零碎照样兼容
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
而intel芯片的指令集零碎个别是出厂就固定了,如退出指令汇编是ret,机器指令就是C3,只有编译 器厂商将本人创造的各种语法(编程语言)最终编译出intel芯片能辨认的机器指令码就能够了,轻易你语法怎么变。如c/c++应用退出函数exit时,在底层的汇编指令就是ret,机器指令码就是c3.
总结
通过下面的演示(用各种语言向屏幕输入数据的性能)最终运行在同一个零碎Linux上,即运行在同一块处理器上intel芯片,所以机器指令完全一致,同时通过linux的write零碎函数达成目标。
那么针对下面的问题,谁高谁低,谁是旧谁是新技术置信大家会本人判断。
那么意味着我只有通过java,php,python,golang,rust,c,c++,node..等轻易某一门编程语言把握到外围底层的货色,也就意味着你用啥语言都一样了,只是语法不同,比方我喜爱钱,通过各种语言示意
中文:我喜爱钱
英文:I like money
法语:J'aime l'argent.
俄语: .
那么在这里我想说的是:比方你先把php,或是python,或是golang等把握到外围底层(就是Linux的零碎函数,在Linux c 核心技术就讲过了),而后你再转某一门语言那是轻松许多因为你只是学一下它的语法完事,而外围底层你曾经会了。
我通过php把握了外围底层
我通过python把握了外围底层
我通过golang把握了外围底层
我通过java把握了外围底层
我通过node把握了外围底层
..................
疑难
那我学外围底层有啥用?我把握某门语言,某框架就够了,干嘛学外围底层?
https://www.bilibili.com/vide...