百科问答小站 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




  

相关话题

  C++工程中的目录有何意义? 
  为什么多数编程语言的赋值在左边?是有什么历史渊源吗? 
  Java的语法规则是怎么传播开来的?(如若回答,请看完补充说明)? 
  CMake如何优雅地读取txt内容并载入到C++二进制中? 
  不同编程语言的转义字符可以通用吗? 
  现在的市场对 C++ 的需求大吗? 
  既然有文件后缀名,为何还需要MIME类型? 
  现在快2022年了,c++为什么还要实现(.cpp)和声明(.h)分开? 
  应该如何理解 Erlang 的「任其崩溃」思想? 
  常说「Java 在虚拟机中运行」,请问这个虚拟机可以视为 Java 语言的解释器吗? 

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





© 2024-05-20 - tinynew.org. All Rights Reserved.
© 2024-05-20 - tinynew.org. 保留所有权利