周圍的每一寸空間似乎都堆放著各式各樣的電子裝置和元器件,光線昏暗,擁擠不堪,林鴻覺得自己彷彿來到了大陸某個城市中城隍廟的電子市場。
走了一段路程之後,他看到,和電腦有關的電子配件和元器件逐漸多了起來。
前面,一個前額劉海染成黃色的青年正在店鋪中玩著電腦遊戲。
這個時候,走在前面的黃越突然站住了,他轉頭對廣永元道:按照老規矩。
說完,他便獨自一人先朝前面走了。
老規矩林鴻用疑惑地眼神看了廣永元一眼。
廣永元只好解釋道:要想進入這個圈子,必須證明自己的技術已經達到這個水平。雖然他們都認識我,但他們都是死腦筋,只認技術不認人。
繞來繞去,林鴻總算明白,要想繼續向前走,他必須通過他們設定的考驗,頗有點闖關的意味。
有意思。林鴻笑笑,對此並不在意,問道,都有些什麼專案
廣永元道:程式設計破解以及網路滲透。當然,並不一定要全部過關,只要其中一項能夠得到他們的認可就行了。你肯定是沒有問題的,只是走個過場罷了。
廣永元已經見識過林鴻的破解技術,連英雄無敵這樣難啃的骨頭林鴻都三下五除二不費什麼力氣就搞定了,更何況是他們的入門考驗
這個時候,之前正在玩遊戲的染髮青年已經退出遊戲,他一甩額頭的黃髮對林鴻道:請吧。
第一道關卡,程式設計。
林鴻也沒有什麼廢話,坐到了剛剛青年的座位,他看到,顯示器中已經出現了一道題目很顯然,他們對於這種事情已經非常熟悉,擁有了自己一套固定的考驗流程。
給林鴻出的題目為使用基本運算來編寫一個你所可能實現的效率最高的平方根函式。
平方根在數學中是一個非常重要同時也非常複雜的運算,在計算機中實現這種函式通常比較困難,所以程式語言一般都會對這些函式進行封裝,程式設計師在程式設計的時候,如果涉及到平方根運算,直接呼叫函式庫中的函式就行了很少有人會懂得底層到底是如何實現的。
而且,能夠實現是一方面,能不能做到運算效率高效又是另外一方面。
程式的執行效率,往往就是高手和菜鳥之間的重要區別,真正的駭客,程式設計的時候,不僅僅只是將功能實現,還會追求最高效率有時候可能只是一個符號的變化,其執行效率便天差地別。
執行一次的區別可能看不出來,可是如果迴圈一千次,一萬次呢
高手和菜鳥編寫的程式,在效率上往往有著很多倍的差距,要想編寫出高效優雅的程式必須有著對程式語言和計算機底層的本質理解,同時還得擁有豐富的程式設計經驗,在這方面可做不得假實踐是唯一提高自身實力的方式。
林鴻知道,求平方根的運算,有一個演算法叫做牛頓迭代法,其原理為:
如果一個數為x,假設它的平方根為y如果y的平方和x相差大於某個給定的誤差′就繼續假設下一個值,如此持續下去直到最終得到在允許誤差內的值。
至於如何假設這個值,使用的方式便是取平均值其中必須多次用到除法和乘法。
在計算機中,其本質其實就是加法,整個cpu的運算其實就是一個加法器,當初林鴻實現超腦cpu結構的時候,就是基於一個加法器結構,至於後面的減法乘法以及除法等運算,都是對在這個加法器的基礎上衍伸而來。
直接使用牛頓迭代法來求平方根,這是普通人的做法,林鴻不用想都知道,如果真的按照這種方式來實現,顯然不能過關。
林鴻略微一思索便有了頭緒,他檢視了一下電腦中的編譯器,發現這臺電腦裡面準備得非常充分,不但有市面上常見的一些程式語言編譯器,如cbaiscjavac等語言,甚至還有一些非常小眾的程式語言,如adablueisp等等。
最終,林鴻還是調出了電腦中的c語言編譯器,直接敲起程式碼來。
霹靂啪啦,僅僅過了二十來秒之後,林鴻便完成了函式的編寫。
他呼叫用函式執行了一下,程式成功執行,沒有任何地錯誤,一次通過。
想了想,他再次刪掉了兩行,將兩個步驟合併成了一個,最終的函式程式碼總數正好為十行。
作者「瘋狂小強」的其他小說
《修仙高手再戰都市》