|
作者:Linus Torvalds(“最偉大程序員”之一,對(duì) Linux 內(nèi)核開發(fā)起著至關(guān)重要的作用) 譯者:賀佳 原文:The Beauty of Programming 雖然還不知道怎樣去解釋我對(duì)編程的迷戀,但是我想盡量把這種感受傳遞給你。對(duì)于一些編程者來說,這世上再?zèng)]有比它更有趣的事情了。這可比下棋強(qiáng)多了,你可以自己制定規(guī)則,并且利用它,獲得一切想得到的結(jié)果。 不過,在旁人看來,編程可能是世界上最無聊的東西了。 編程最初讓人興奮的點(diǎn)很容易解釋:只要告訴計(jì)算機(jī)做什么,它就會(huì)一一照辦,一絲不茍、始終不渝、并且絕無抱怨。 這本身就很有趣。 當(dāng)然,一味地盲從雖然最初令人著迷,但顯然單靠這一點(diǎn),并不能讓人終生為伴。編程的迷人之處在于,在讓計(jì)算機(jī)執(zhí)行指令之前,你得弄明白怎么做。 個(gè)人而言,我堅(jiān)信計(jì)算機(jī)科學(xué)與物理學(xué)有諸多共同點(diǎn)。兩者都在一個(gè)相當(dāng)基礎(chǔ)層面的探討世界的運(yùn)行規(guī)則。在物理學(xué)領(lǐng)域,人們要研究世界如何構(gòu)成,而在計(jì)算機(jī)科學(xué)中,你可以創(chuàng)造世界。 在計(jì)算機(jī)的世界里,你就是“造物主”,你主宰一切的發(fā)生。如果足夠優(yōu)秀,你甚至可以成為“上帝”,當(dāng)然,是就這個(gè)小世界而言的。 我這么說可能冒犯了世上一半的人。 但事實(shí)便是如此。你可以創(chuàng)造屬于自己的世界,對(duì)你唯一的限制就是機(jī)器的性能,很多時(shí)候你會(huì)發(fā)現(xiàn),也可能是你自己的能力。 想想樹屋吧。你可以造一個(gè)功能齊備、結(jié)構(gòu)穩(wěn)定還帶著活動(dòng)門的樹屋。人人都知道樹屋是簡陋還是精致,要看怎么在搭屋的樹上進(jìn)行創(chuàng)作。這關(guān)乎藝術(shù)和工程學(xué)的結(jié)合。這也是編程如此引人入勝又令人充滿滿足感的原因之一。這種感覺僅次于有趣、漂亮或者令人驚嘆。 它還可以訓(xùn)練創(chuàng)造力。 最初吸引我參與編程的是,想要了解計(jì)算機(jī)工作原理的過程。最大的樂趣之一是,我發(fā)現(xiàn)計(jì)算機(jī)就像數(shù)學(xué):你可以用其規(guī)則創(chuàng)造屬于你自己的世界。在物理學(xué)中,人們要受到既有規(guī)則的束縛,但數(shù)學(xué)不同,和編程一樣,只要自洽,一切皆可行。數(shù)學(xué)不必受外部邏輯的約束,但它必須有自身邏輯。每一個(gè)數(shù)學(xué)家都知道,你確實(shí)可以設(shè)立一組“3+3=2”的方程。事實(shí)上,你可以做任何想做的事,但隨著所創(chuàng)造的這個(gè)“世界”日漸復(fù)雜,你必須要小心地保持它們邏輯上的一致性。為了這個(gè)小小“世界”的精致美好,不能有任何疏漏。這就是編程的工作原理。 人們對(duì)計(jì)算機(jī)著迷的原因之一是,它能使人感受自己創(chuàng)造出的新世界,去了解什么是可能的。數(shù)學(xué)上,人們能在腦子里聯(lián)想。比如,提到幾何形狀,大多數(shù)人會(huì)想到歐幾里得幾何,而計(jì)算機(jī)可以幫助人們實(shí)現(xiàn)所想不同幾何形狀的可視化,它們可都不是歐幾里得幾何。 利用計(jì)算機(jī),你可以進(jìn)入這些虛擬世界,并且實(shí)實(shí)在在看到它們的樣子。還記得Mandelbrot set基于Benoit Mandelbrot方程的分形圖像嗎? 它們就是純數(shù)學(xué)世界的視覺表現(xiàn),這在計(jì)算機(jī)出現(xiàn)之前是無法想象的。 Mandelbrot隨意為他的世界編造了些不存在的規(guī)則,與現(xiàn)實(shí)世界無關(guān),制定了這些任意規(guī)則,但事實(shí)證明,這些規(guī)則所創(chuàng)造的模式令人著迷。運(yùn)用計(jì)算機(jī)和編程,你可以建立一個(gè)全新的世界,有時(shí),這個(gè)模式真是很美。 大多數(shù)情況下,你并沒有在做上面所說的事。你只是在簡單寫個(gè)程序完成某個(gè)特定任務(wù)。 此時(shí),你并不是在創(chuàng)造一個(gè)新世界,而是在解決計(jì)算機(jī)世界中的問題。這個(gè)問題要想辦法解決,而只有某一類的人才會(huì)坐在屏幕前盯著屏幕思考這些問題,像我這樣的“書呆子”。 操作系統(tǒng)是計(jì)算機(jī)的基礎(chǔ),而創(chuàng)造一個(gè)操作系統(tǒng)則是計(jì)算機(jī)領(lǐng)域的終極挑戰(zhàn)。當(dāng)你創(chuàng)建操作系統(tǒng)的時(shí)候,你就是在創(chuàng)造一個(gè)世界,在這個(gè)“世界”中,所有計(jì)算機(jī)程序基本上都會(huì)實(shí)時(shí)運(yùn)行,而你則在制定規(guī)則,規(guī)定什么合適,什么可以做,什么不能做。程序來具體運(yùn)行,但操作系統(tǒng)是最基礎(chǔ)的。這就像是你在制定這片“土地”上的憲法,其他計(jì)算機(jī)上運(yùn)行的程序則是普通法。 有時(shí)候,某條規(guī)則講不通,但是“通”的是你努力追求的。 你希望能看到解法,并且發(fā)現(xiàn)自己通過正確方式得到了正確答案。 還記得學(xué)校里那些總能做對(duì)題的人嗎?他們比別人做得快,之所以會(huì)這樣,是因?yàn)樗麄儾⒉蛔非筮@個(gè)。他們并不是在學(xué)如何解決問題,而只是在以正確的方式思考問題。一旦有了結(jié)果,就非常完美。 在計(jì)算機(jī)中也是如此。你可以用蠻力,愚蠢地對(duì)付問題,直到它不再是問題,或者找到正確的方法,讓問題自己消失。換一種方式看問題,你會(huì)頓悟:它之所以是問題,是因?yàn)榭创姆绞藉e(cuò)了。 最好的還是數(shù)學(xué)中的一個(gè)例子。偉大的德國數(shù)學(xué)家高斯(mathematician Carl Friedrich Gauss)小時(shí)候,某天,老師很無聊,為了使學(xué)生專心,決定讓他們從1加到100。他希望學(xué)生們花一整天算完。 沒想到,這位初出茅廬的數(shù)學(xué)家五分鐘就交卷了,答案完全正確:5050。這道題的解法并不是將所有數(shù)字順序一一相加,這樣既笨拙又勞神。高斯發(fā)現(xiàn),將1和100相加可以得到101,然后2和99相加也是101,3和98也是,直到50和51相加得到101。僅僅幾秒鐘,他注意到正好50對(duì)101,因此答案是5050。 也許這個(gè)故事是虛構(gòu)的,但是道理很清楚:偉大的數(shù)學(xué)家并沒有采用漫長而無聊的方式解決問題,他看到了問題背后的真正規(guī)律,并且運(yùn)用該規(guī)律用更好的方式找到了答案。 在計(jì)算機(jī)科學(xué)領(lǐng)域也是如此。當(dāng)然,你可以寫一個(gè)程序來計(jì)算總和。在現(xiàn)在的電腦上,也就是一瞬間的事。但是一個(gè)偉大的程序員只要夠聰明,就知道答案是什么。他知道要寫一個(gè)漂亮的程序,用一種新的方法來解決問題,最終,這也是正確的方法。 還是很難解釋,連著把頭往墻上撞三天還找不出更好的、更漂亮的解決方法這件事有什么好迷人的,但是一旦你找到了,那真是世界上最棒的感覺了。 Refenrence: https://www./cs/resources/beauty-of-programming 學(xué)術(shù)頭條-生命科學(xué)讀者交流群來啦! 為了給大家?guī)砀鼉?yōu)質(zhì)的體驗(yàn) 本群采取實(shí)名驗(yàn)證入群 歡迎生命科學(xué)、醫(yī)學(xué)相關(guān)話題的討論、交流和分享 |
|
|