php
接下来开始怼吧
评论里诸多反驳言论都是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(https://www.tiobe.com/tiobe-index)对编程语言活跃度进行排名的时候,Verilog和VHDL都榜上有名,最新排名大于50名。我怕大家不肯点击这个链接,于是我去截图,如下图所示
这说明权威媒体也认同这是编程语言。对于编程语言的界定,我想各路神仙不必在我这里指点江山。
3. 认为Verilog只是在画电路图的同学,其实还是没太深度了解Verilog的。现在的Verilog等硬件描述语言,发展成类c语言了,可以用c语言里面的很多元件(if-else,for循环,case等等),并不是纯粹画数电图的思路去编程。
我也不知道为什么花这么多时间去解释,我可能是闲的。下面各路神仙还请甭在我这里展示您的上帝视角,这个帖子就到这儿了。我还要花时间忙自己的事呢,就不再回复了。
先下结论:电影想把Freddie塑造成一个有人性的神,却忘了真正的Freddie只是一个有神性的人
如果作为一部粉丝向的情怀片,《波》已经达到了满分,哪怕不谈对细节出色的把控,光是最后二十分钟的神级还原已经足够让所有的情怀在we are the champions中泪流满面
感受一下当时的直播:
Live Aid https://www.zhihu.com/video/1092941240030597120
但是作为一部传记片,《波》还是太流程化了,才华横溢的主角惊艳出场,遇到小人,遭遇挫折,众叛亲离,踢开小人,亲友重聚,完美收场。作为人物小传也算及格,但是对于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