第五百四十八章 技术宅
周围的每一寸空间乎似都堆放着各式各样的电子设备和元器件,光线昏暗,拥挤不堪,林鸿得觉
己自
佛仿来到了陆大某个城市中城隍庙的电子市场。
走了一段路程之后,他看到,和电脑有关的电子配件和元器件逐渐多了来起。
前面,个一前额刘海染成⻩⾊的青年在正店铺中玩着电脑游戏。
这个时候,走在前面的⻩越突然站住了,他转头对广永元道:“按照老规矩。”
完说,他便独自一人先朝前面走了。
“老规矩?”林鸿用疑惑地眼神看了广永元一眼。
广永元只好解释道:“要想进⼊这个圈子,必须证明己自的技术经已达到这个⽔平。然虽
们他都认识我,但们他
是都死脑筋,只认技术不认人。”
绕来绕去,林鸿总算明⽩,要想继续向前走,他必须通过们他设置的考验,颇有点闯关的意味。
“有意思。”林鸿笑笑,对此并不在意,道问“都有些什么项目?”
广永元道:“编程、解破以及网络渗透。当然,并不定一要全部过关,要只其中一项能够得到们他的认可就行了。你肯定是有没问题的,是只走个过场罢了。”
广永元经已见识过林鸿的解破技术,连《英雄无敌》样这难啃的骨头林鸿都三下五除二不费什么力气就搞定了,更何况是们他的⼊门考验?
这个时候,之前在正玩游戏的染发青年经已退出游戏,他一甩额头的⻩发对林鸿道:“请吧。”
第一道关卡,编程。
林鸿也有没什么废话,坐到了刚刚青年的座位,他看到,显示器中经已出现了一道题目很显然,们他对于这种事情经已
常非

悉,拥有了己自一套固定的考验流程。
给林鸿出的题目为“使用基本运算来编写个一你所可能实现的效率最⾼的平方

函数”
平方

在数学中是个一
常非重要时同也常非复杂的运算,在计算机中实现这种函数通常比较困难,以所编程语言一般都会对这些函数进行封装,程序员在编程的时候,如果涉及到平方

运算,直接调用函数库的中函数就行了很少有人会懂得底层到底是如何实现的。
且而,能够实现是一方面,能不能做到运算效率⾼效又是另外一方面。
程序的运行效率,往往就是⾼手和菜鸟之间的重要区别,真正的黑客,编程的时候,不仅仅是只将功能实现,还会追求最⾼效率有时候可能是只
个一符号的变化,其执行效率便天差地别。
执行次一的区别可能看不出来,可是如果循环一千次,一万次呢?
⾼手和菜鸟编写的程序,在效率上往往有着很多倍的差距,要想编写出⾼效优雅的程序必须有着对编程语言和计算机底层的本质理解,时同还得拥有丰富的编程经验,在这方面可做不得假实践是唯一提⾼自⾝实力的方式。
林鸿道知,求平方

的运算,有个一算法叫做牛顿迭代法,其原理为:
如果个一数为X,假设它的平方

为Y如果Y的平方和X相差大于某个给定的误差′就继续假设下个一值,如此持续下去直到最终得到在允许误差內的值。
至于如何假设这个值,使用的方式便是取平均值其中必须多次用到除法和乘法。
在计算机中,其本质实其就是加法,整个CPU的运算实其就是个一加法器,当初林鸿实现超脑CPU结构的时候,就是基于个一加法器结构,至于后面的减法、乘法以及除法等运算,是都对在这个加法器的基础上衍伸而来。
直接使用牛顿迭代法来求平方

,是这普通人的做法,林鸿用不想都道知,如果的真按照这种方式来实现,显然不能过关。
林鸿略微一思索便有了头绪,他查看了下一电脑的中编译器,发现这台电脑里面准备得常非充分,不但有市面上常见的一些编程语言编译器,如C、BAISC、JVAA、C++等语言,至甚
有还一些常非小众的编程语言,如Ada、Blue、ISP等等。
最终,林鸿是还调出了电脑的中C语言编译器,直接敲起代码来。
霹雳啪啦,仅仅过了二十来秒之后,林鸿便完成了函数的编写。
他调用用函数执行了下一,程序成功运行,有没任何地错误,次一通过。
想了想,他再次删掉了两行,将两个步骤合并成了个一,最终的函数代码总数正好为十行。
“好了。”林鸿道。
站在他⾝后的广永元此刻还在皱着眉头着看他的程序。
他想不通,林鸿为什么么这编写。
“么这快就好了?”染发青年有些诧异。
刚刚他让出座位的时候,便从个一角落拿出了个一掌上游戏机玩了来起,可是刚刚才始开玩,便听到林鸿说经已OK。
这在众多挑战者当中,是还头一回。
染发青年俯⾝去过看了一眼,脸上微微一愣,林鸿写的这十行代码,然虽他能看懂大部分,但是有还几个细节他一时之间也没弄懂。
他顺手将林鸿的这个函数加⼊时间统计宏,执行一万次之后,最终显示出了时间,965毫秒,也就是说,不到一秒钟。
他用敬服的眼神着看林鸿,道说:“你过关了。我在这里呆了两年了,两年来,从这里走过的人不下五十人,可是从来有没
个一人做到你这一步,不但结果保证精度,并且执行一万次的时间不超过一秒。”
林鸿笑笑,对于他的夸赞并有没什么可得意的,这些是都最基础的东西,要只理解了CPU的运作,多想一想基本上应该都能达到的,有没好得意的。
广永元这个时候出言道问:“阿鸿,我看得是不很懂,求平方

是不使用二分查找法么?”
广永元最擅长的并是不这个方面,他毕竟是野路子出⾝,基础部分还是不很扎实,林鸿的这十行代码,他竟然看得満头雾⽔。
他口中所说的二分查找,实其就是牛队迭代法的实现方式之一。
林鸿点点头:“算法的确是这个,不过在这里,我使用二进制的移位代替了乘除。你看…”
林鸿见他听得是不很懂,是于便重新调出编译器,下断点,跟踪变量的內存赋值,一边

作一边解释:
“在二进制层面上,从前向后决定每个一二进制位上是0是还1,此因,们我可以从最⾼位向最低位,依次上1,看乘积结果是否大于目标数,如果大于目标数了,那一位就保留0样这的情况下,们我上1就用不
的真去计算乘法,而是将之前的结果,加上上1前以的数左移1所在位置那么多位的两倍,再加上上1的位置左移上1的位置…”
经过林鸿演示加解说,广永元这才恍然大悟,后面的青年也释然的点点头,他然虽
道知大致原理,可是在细节方面是还有些地方有没理解,听了林鸿完整的解释这才了然。
也就是说,整个算法林鸿使用的是都二进制层面的运算,想不快都难,或者说,有没哪个程序可以比他的这个算法实现更快了。
仅仅花了二十来秒的时间就搞定第一关,并且答案如此优秀,这可是之前从来有没碰到过的。
林鸿本来还想着见识下一后面到底出什么题目,不过⻩越在看到林鸿的这个程序之后,便直接宣布林鸿过关了,有没必要再继续闯关。
这个题目,实际上是⻩越亲自出的,他当初给了个一标准答案,也是二进制层面的实现,可是两者相比之下,是还有着相当大的差距。
这然虽是最基础的东西,但正是这些东西最是能看清楚个一人的⽔平。
很显然,林鸿在这方面要比⻩越更強,更别说,广永元之前对他说,林鸿是还
个一
解破大师。
最终,林鸿顺利地进⼊了们他的大本营,也就是个一相当大的大厅,不过在那里,摆了上十台各种品牌的电脑和服务器,看上去反而得觉有些拥挤。
大厅之中,有不少人,是都年轻人,们他见来了新成员,的有鼓掌,的有吹口哨,表示


,不过,也仅此而已,例行


仪式过后,们他便再次将注意力放在了己自的电脑显示器上。
⻩越给林鸿重点介绍了两个人,个一叫袁乐邦,个一胖得连

都弯不下的胖子,有着弥勒佛一样的笑脸,擅长的领域正是游戏解破,广永元最想挖的人便是他。
另外个一是阮飞舟,带着厚厚的黑框眼镜,他擅长是的硬件解破,在他的桌子上,摆満了各种电子元器件和最新的游戏机,包括SONY的PS游戏机和任天堂的GBA和NDS系列游戏机。-
在阮飞舟的⾝上,林鸿看到了顾伟的影子。
们他这个地方,并是不公司,至甚连个一团队都称不上,是只基于趣兴聚集在起一,⻩越为们他免费提供场所,而这里是鸭寮街,任何电器和元器件都能很方便地在这里找到。
们他是一群为技术而癫狂的技术宅。
m.YymXs.CC