电竞比分网-中国电竞赛事及体育赛事平台

分享

“Linux之父”Linus Torvalds論編程之美:在計算機的世界,你就是造物主

 長沙7喜 2021-04-25

圖片

作者:Linus Torvalds(“最偉大程序員”之一,對 Linux 內核開發(fā)起著至關重要的作用)

譯者:賀佳

原文:The Beauty of Programming

雖然還不知道怎樣去解釋我對編程的迷戀,但是我想盡量把這種感受傳遞給你。對于一些編程者來說,這世上再沒有比它更有趣的事情了。這可比下棋強多了,你可以自己制定規(guī)則,并且利用它,獲得一切想得到的結果。

不過,在旁人看來,編程可能是世界上最無聊的東西了。

編程最初讓人興奮的點很容易解釋:只要告訴計算機做什么,它就會一一照辦,一絲不茍、始終不渝、并且絕無抱怨。

這本身就很有趣。

當然,一味地盲從雖然最初令人著迷,但顯然單靠這一點,并不能讓人終生為伴。編程的迷人之處在于,在讓計算機執(zhí)行指令之前,你得弄明白怎么做。

個人而言,我堅信計算機科學與物理學有諸多共同點。兩者都在一個相當基礎層面的探討世界的運行規(guī)則。在物理學領域,人們要研究世界如何構成,而在計算機科學中,你可以創(chuàng)造世界。

在計算機的世界里,你就是“造物主”,你主宰一切的發(fā)生。如果足夠優(yōu)秀,你甚至可以成為“上帝”,當然,是就這個小世界而言的。

我這么說可能冒犯了世上一半的人。

但事實便是如此。你可以創(chuàng)造屬于自己的世界,對你唯一的限制就是機器的性能,很多時候你會發(fā)現(xiàn),也可能是你自己的能力。

想想樹屋吧。你可以造一個功能齊備、結構穩(wěn)定還帶著活動門的樹屋。人人都知道樹屋是簡陋還是精致,要看怎么在搭屋的樹上進行創(chuàng)作。這關乎藝術和工程學的結合。這也是編程如此引人入勝又令人充滿滿足感的原因之一。這種感覺僅次于有趣、漂亮或者令人驚嘆。

它還可以訓練創(chuàng)造力。

最初吸引我參與編程的是,想要了解計算機工作原理的過程。最大的樂趣之一是,我發(fā)現(xiàn)計算機就像數(shù)學:你可以用其規(guī)則創(chuàng)造屬于你自己的世界。在物理學中,人們要受到既有規(guī)則的束縛,但數(shù)學不同,和編程一樣,只要自洽,一切皆可行。數(shù)學不必受外部邏輯的約束,但它必須有自身邏輯。每一個數(shù)學家都知道,你確實可以設立一組“3+3=2”的方程。事實上,你可以做任何想做的事,但隨著所創(chuàng)造的這個“世界”日漸復雜,你必須要小心地保持它們邏輯上的一致性。為了這個小小“世界”的精致美好,不能有任何疏漏。這就是編程的工作原理。

人們對計算機著迷的原因之一是,它能使人感受自己創(chuàng)造出的新世界,去了解什么是可能的。數(shù)學上,人們能在腦子里聯(lián)想。比如,提到幾何形狀,大多數(shù)人會想到歐幾里得幾何,而計算機可以幫助人們實現(xiàn)所想不同幾何形狀的可視化,它們可都不是歐幾里得幾何。

利用計算機,你可以進入這些虛擬世界,并且實實在在看到它們的樣子。還記得Mandelbrot set基于Benoit Mandelbrot方程的分形圖像嗎?

它們就是純數(shù)學世界的視覺表現(xiàn),這在計算機出現(xiàn)之前是無法想象的。

Mandelbrot隨意為他的世界編造了些不存在的規(guī)則,與現(xiàn)實世界無關,制定了這些任意規(guī)則,但事實證明,這些規(guī)則所創(chuàng)造的模式令人著迷。運用計算機和編程,你可以建立一個全新的世界,有時,這個模式真是很美。

大多數(shù)情況下,你并沒有在做上面所說的事。你只是在簡單寫個程序完成某個特定任務。

此時,你并不是在創(chuàng)造一個新世界,而是在解決計算機世界中的問題。這個問題要想辦法解決,而只有某一類的人才會坐在屏幕前盯著屏幕思考這些問題,像我這樣的“書呆子”。

操作系統(tǒng)是計算機的基礎,而創(chuàng)造一個操作系統(tǒng)則是計算機領域的終極挑戰(zhàn)。當你創(chuàng)建操作系統(tǒng)的時候,你就是在創(chuàng)造一個世界,在這個“世界”中,所有計算機程序基本上都會實時運行,而你則在制定規(guī)則,規(guī)定什么合適,什么可以做,什么不能做。程序來具體運行,但操作系統(tǒng)是最基礎的。這就像是你在制定這片“土地”上的憲法,其他計算機上運行的程序則是普通法。

有時候,某條規(guī)則講不通,但是“通”的是你努力追求的。

你希望能看到解法,并且發(fā)現(xiàn)自己通過正確方式得到了正確答案。

還記得學校里那些總能做對題的人嗎?他們比別人做得快,之所以會這樣,是因為他們并不追求這個。他們并不是在學如何解決問題,而只是在以正確的方式思考問題。一旦有了結果,就非常完美。

在計算機中也是如此。你可以用蠻力,愚蠢地對付問題,直到它不再是問題,或者找到正確的方法,讓問題自己消失。換一種方式看問題,你會頓悟:它之所以是問題,是因為看待它的方式錯了。

最好的還是數(shù)學中的一個例子。偉大的德國數(shù)學家高斯(mathematician Carl Friedrich Gauss)小時候,某天,老師很無聊,為了使學生專心,決定讓他們從1加到100。他希望學生們花一整天算完。

沒想到,這位初出茅廬的數(shù)學家五分鐘就交卷了,答案完全正確:5050。這道題的解法并不是將所有數(shù)字順序一一相加,這樣既笨拙又勞神。高斯發(fā)現(xiàn),將1和100相加可以得到101,然后2和99相加也是101,3和98也是,直到50和51相加得到101。僅僅幾秒鐘,他注意到正好50對101,因此答案是5050。

也許這個故事是虛構的,但是道理很清楚:偉大的數(shù)學家并沒有采用漫長而無聊的方式解決問題,他看到了問題背后的真正規(guī)律,并且運用該規(guī)律用更好的方式找到了答案。

在計算機科學領域也是如此。當然,你可以寫一個程序來計算總和。在現(xiàn)在的電腦上,也就是一瞬間的事。但是一個偉大的程序員只要夠聰明,就知道答案是什么。他知道要寫一個漂亮的程序,用一種新的方法來解決問題,最終,這也是正確的方法。

還是很難解釋,連著把頭往墻上撞三天還找不出更好的、更漂亮的解決方法這件事有什么好迷人的,但是一旦你找到了,那真是世界上最棒的感覺了。

Refenrence:

https://www./cs/resources/beauty-of-programming

學術頭條-生命科學讀者交流群來啦!

為了給大家?guī)砀鼉?yōu)質的體驗

本群采取實名驗證入群

歡迎生命科學、醫(yī)學相關話題的討論、交流和分享

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多