百科问答小站 logo
百科问答小站 font logo



性能最强的编程语言是什么? 第1页

  

user avatar   wang-ping-25-67 网友的相关建议: 
      

php

接下来开始怼吧


user avatar   levio-20 网友的相关建议: 
      

评论里诸多反驳言论都是HDL是否属于“编程语言”。首先,我觉得大家的看法可以更具有包容性,如果实在不支持HDL作为一种编程语言的存在,那就当我抖个机灵耍个小聪明。更重要的是,希望我的答案之前不了解hdl的朋友起到科普作用。(原答案往后翻)

我认为verilog HDL的编写是具有很多编程语言属性的,它同样可以作为编程语言去开发产品。下面这个demo是本人三年前用纯verilog写的,在FPGA上运行:

https://www.zhihu.com/video/1104065469400629248

大家看了这个demo以后会发现,原来java python c能做的verilog也能做,只是耗时长短的问题。只要一个FPGA工程师够闲,完全可以用FPGA搭一个网站

这个demo我当时花了四周做出来,约2000行代码。我后来用python tkinter花两个小时写了一模一样的,只用89行代码。为什么我用verilog花了4个星期,因为连VGA时序都要设置!你知道rgb像素分别用几个bit从哪根针管输出都要自己设置的痛苦吗?!

ok,到这里verilog难应该很少人不赞同了。但你有没有想过,一门这么难的语言,它是靠什么生存的?没点性能优势还混毛线?!

在你认同在你认同HDL是编程语言之后,你继续往下看:

编程语言运行的本质其实就是处理二进制流,以这个机制为基本思想,那么评价一门编程语言性能的指标就是处理二进制流的能力。当然,这个能力并不是单一的,也与硬件载体有关。那么,我们不定量地去讨论几种编程语言的强弱。如果说性能强的几种编程语言里,verilog绝对榜上有名。

我为什么这么自信地说,因为要求强实时性的地方都少不了verilog的身影。通信网络,军工领域,视频编解码等等。

intel在2015年以167亿美金收购了FPGA厂商Altera(这是intel史上最大的收购案)。就性能而言,cpu有点玩不动,你用汇编语言也玩不动,因为CPU这个载体就不行,CPU的性能是随着摩尔定律在发展,很显然摩尔定律带不动了。能打破后摩尔定律魔咒的解决方案只有“异构”,什么是异构?异构可以是,什么是异构?异构可以是cpu+fpga模式,在一个程序里,有非常需要性能的部分,这部分丢给fgpa去做,其他部分用cpu去做。那么当PC完全走向异构的时候,难道还是只有以CPU载体的语言真的就是正统的“编程语言”吗?

下面是一个FPGA视频转码的商业应用案例,黄色光纤连接的就是Gidel公司做的基于FPGA转码的设备。在不要求帧率的情况下,可以用ffmpeg软件(基于C/C++)转码,但需要实时性高帧率时就只有硬转码才能撸得动了。

FPGA视频转码 https://www.zhihu.com/video/1119971797851852800

——————


原答案如下:

Verilog/VHDL(以下简称verilog,手动眼斜)
原因如下:
1,跳过操作系统,对底层电路进行编程;
2,为什么它是编程语言。因为它可以在现场可编程逻辑阵列上运行,没人规定一定要在CPU上跑的才叫编程语言吧。

------
说说Verilog为什么快:
基于冯诺依曼结构的编程语言需要先编译成机器语言之后,run起来需要流式取指译码然后执行,指令之间也是流式进行。而且一条指令可能需要几个或者几十个CPU时钟周期。哪怕是最贴近底层的汇编语言,也没办法避免单指令多周期的时间刚需,也无法避免这些时钟周期还可以流水线叠加。
而verilog如果设计得好,在不太care硬件资源的前提下,任何指令甚至具有一定功能的程序,都可以在一个时钟周期内完成。(可以理解为电路具有无限并行能力)

可以举个例子,比如写个if-else分支。在cpu上会用跳转的方式来完成,比较判断跳转,说三个时钟周期算少。而在verilog上呢,直接编译成一个mux,一个周期搞定。在多分支的情况下,多个mux叠加,verilog的优势会越来越大。

verilog的缺点也是很明显,开发起来比汇编都痛苦(别问我是怎么知道的)。很多软件工程师不了解verilog也是有原因的。举个例子,都知道很多算法(挖矿,NN等)在GPU上跑得比CPU快很多,原因之一就是GPU上很多矩阵运算都用专用电路加速了(这部分专用计算电路就是由硬件描述语言verilog之类完成后再固化的)。所以,性能最强的编程语言,我投verilog一票。


--------
关于评论里若干争论的回复:
1.硬件描述语言,不等于脱离了编程语言的范畴。可编程逻辑电路是早于CPU问世的,“编程”这个词最初就是对电路进行编程。详情可查wiki。所以,Verilog才是最正的“编程”血统。
2. 编程语言没有说只局限于冯氏结构,在权威媒体TIOBE(tiobe.com/tiobe-index)对编程语言活跃度进行排名的时候,Verilog和VHDL都榜上有名,最新排名大于50名。我怕大家不肯点击这个链接,于是我去截图,如下图所示



这说明权威媒体也认同这是编程语言。对于编程语言的界定,我想各路神仙不必在我这里指点江山。
3. 认为Verilog只是在画电路图的同学,其实还是没太深度了解Verilog的。现在的Verilog等硬件描述语言,发展成类c语言了,可以用c语言里面的很多元件(if-else,for循环,case等等),并不是纯粹画数电图的思路去编程。

我也不知道为什么花这么多时间去解释,我可能是闲的。下面各路神仙还请甭在我这里展示您的上帝视角,这个帖子就到这儿了。我还要花时间忙自己的事呢,就不再回复了。


user avatar   levelpp_edu 网友的相关建议: 
      

先下结论:电影想把Freddie塑造成一个有人性的神,却忘了真正的Freddie只是一个有神性的人

如果作为一部粉丝向的情怀片,《波》已经达到了满分,哪怕不谈对细节出色的把控,光是最后二十分钟的神级还原已经足够让所有的情怀在we are the champions中泪流满面

感受一下当时的直播:

Live Aid https://www.zhihu.com/video/1092941240030597120


Live Aid https://www.zhihu.com/video/1092941515751579648

但是作为一部传记片,《波》还是太流程化了,才华横溢的主角惊艳出场,遇到小人,遭遇挫折,众叛亲离,踢开小人,亲友重聚,完美收场。作为人物小传也算及格,但是对于Freddie这样的传奇人物的剖析还是不够大胆,想要表现其人性的一面,又不敢去探索Freddie其实也有自私功利的角落,想要表现其亦男亦女的魅力,却又只是浮于外表没有触碰到灵魂,以至于片子自始至终有种畏手畏脚的憋屈感。

不过不管受众是谁,《波西米亚狂想曲》至少是一部及格线以上的作品,再加上Queen的音乐加成,哪怕不至于血脉喷张,但让观众在电影院点点头抖抖腿还是绰绰有余了

看完电影之后,再看到波西米亚狂想曲的歌词,或许会有一些不一样的体会

Is this the real life

Is this just fantasy

Caught in a landslide. No escape from reality

Open your eyes.Look up to the skies and see

I'm just a poor boy, I need no sympathy

Because I'm easy come, easy go,A little high, little low,

Anyway the wind blows, doesn't really matter to me

freddie的生命像一场华丽的错觉,但他所留下来的,is not fantasy




  

相关话题

  强类型语言的优缺点是什么? 
  假如用汇编语言重制某游戏或者软件能否降低 CPU 性能损耗? 
  如果鸿蒙系统成功,会复兴C/C++吗? 
  C语言中, for 和 while 在汇编上有什么区别? 
  有 C 语言基础,选择 C#、C++、Java、Swift 中的哪一个进一步学习更合适? 
  C的结构体成员变量的命名有必要加前缀吗? 
  为啥不同编程语言的编程思维很难复制? 
  如果你是一个C++面试官,你会问哪些问题? 
  为什么python整数除法运算得浮点数? 
  关于C#泛型枚举器的问题? 

前一个讨论
网上流传网易游戏、腾讯游戏大量裁员是谣传还是真的?
下一个讨论
怎么看待国企大领导提拔他们的司机进入领导岗位的现象?





© 2024-12-23 - tinynew.org. All Rights Reserved.
© 2024-12-23 - tinynew.org. 保留所有权利