? 今天一章,明天补上。
周围的每一寸空间似乎都堆放着各式各样的电子设备和元器件,光线昏暗,拥挤不堪,林鸿觉得自己仿佛来到了大陆某个城市中城隍庙的电子市场。
走了一段路程之后,他看到,和电脑有关的电子配件和元器件逐渐多了起来。
前面,一个前额刘海染成黄色的青年正在店铺中玩着电脑游戏。
这个时候,走在前面的黄越突然站住了,他转头对广永元道:“按照老规矩。”
说完,他便独自一人先朝前面走了。
“老规矩?”林鸿用疑惑地眼神看了广永元一眼。
广永元只好解释道:“要想进入这个圈子,必须证明自己的技术已经达到这个水平。虽然他们都认识我,但他们都是死脑筋,只认技术不认人。”
绕来绕去,林鸿总算明白,要想继续向前走,他必须通过他们设置的考验,颇有点闯关的意味。
“有意思。”林鸿笑笑,对此并不在意,问道,“都有些什么项目?”
广永元道:“编程、破解以及网络渗透。当然,并不一定要全部过关,只要其中一项能够得到他们的认可就行了。你肯定是没有问题的,只是走个过场罢了。”
广永元已经见识过林鸿的破解技术,连《英雄无敌》这样难啃的骨头林鸿都三下五除二不费什么力气就搞定了,更何况是他们的入门考验?
这个时候,之前正在玩游戏的染发青年已经退出游戏,他一甩额头的黄发对林鸿道:“请吧。”
第一道关卡,编程。
林鸿也没有什么废话,坐到了刚刚青年的座位,他看到,显示器中已经出现了一道题目很显然,他们对于这种事情已经非常熟悉,拥有了自己一套固定的考验流程。
给林鸿出的题目为“使用基本运算来编写一个你所可能实现的效率最高的平方根函数”。
平方根在数学中是一个非常重要同时也非常复杂的运算,在计算机中实现这种函数通常比较困难,所以编程语言一般都会对这些函数进行封装,程序员在编程的时候,如果涉及到平方根运算,直接调用函数库中的函数就行了很少有人会懂得底层到底是如何实现的。
而且,能够实现是一方面,能不能做到运算效率高效又是另外一方面。
程序的运行效率,往往就是高手和菜鸟之间的重要区别,真正的黑客,编程的时候,不仅仅只是将功能实现,还会追求最高效率有时候可能只是一个符号的变化,其执行效率便天差地别。
执行一次的区别可能看不出来,可是如果循环一千次,一万次呢?
高手和菜鸟编写的程序,在效率上往往有着很多倍的差距,要想编写出高效优雅的程序必须有着对编程语言和计算机底层的本质理解,同时还得拥有丰富的编程经验,在这方面可做不得假实践是唯一提高自身实力的方式。
林鸿知道,求平方根的运算,有一个算法叫做牛顿迭代法,其原理为:如果一个数为x,假设它的平方根为y如果y的平方和x相差大于某个给定的误差′就继续假设下一个值,如此持续下去直到最终得到在允许误差内的值。
至于如何假设这个值,使用的方式便是取平均值其中必须多次用到除法和乘法。
在计算机中,其本质其实就是加法,整个cpu的运算其实就是一个加法器,当初林鸿实现超脑cpu结构的时候,就是基于一个加法器结构,至于后面的减法、乘法以及除法等运算,都是对在这个加法器的基础上衍伸而来。
直接使用牛顿迭代法来求平方根,这是普通人的做法,林鸿不用想都知道,如果真的按照这种方式来实现,显然不能过关。
林鸿略微一思索便有了头绪,他查看了一下电脑中的编译器,发现这台电脑里面准备得非常充分,不但有市面上常见的一些编程语言编译器,如c、baisc、java、c++等语言,甚至还有一些非常小众的编程语言,如ada、blue、isp等等。
最终,林鸿还是调出了电脑中的c语言编译器,直接敲起代码来。
霹雳啪啦,仅仅过了二十来秒之后,林鸿便完成了函数的编写。
他调用用函数执行了一下,程序成功运行,没有任何地错误,一次通过。
想了想,他再次删掉了两行,将两个步骤合并成了一个,最终的函数代码总数正好为十行。