如何看待程序員的三大浪漫被認為是操作系統、編譯原理和圖形學?
什麼叫浪漫?花費一大堆時間去做一個不見得有產出的事情叫做浪漫。自古浪漫都是和浪費聯繫在一起的。
操作系統、編譯原理和圖形學這三點正是如此。你要弄個操作系統,當然可以,不過你花了一大堆時間下去碼各種代碼研究各種規範,大部頭的POSIX規範,數量多到列印不出來的規範(網路協議、bootloader、甚至連驅動規範都足夠你刷個三天三夜、ASM、寄存器、中斷定義),結果發現終於好不容易跑起來了,還是沒其他人的好用。
然後你研究各種論文各種paper各種奇妙的hack,然後發現一大堆可以改進的地方。你這個時候忍不住了!老子就是要逆天成神!Linus快來食我大雕啦!
然後你寫。然後你再寫。然後你覺得好難。然後你發現原來用C++11某個實驗中的特性可以完美無比的實現需要的功能!然後你接著寫。Compiling....Error:.......Warning:........然後你發現GCC對這個特性的支持還只是exprimental。然後你再改。
你終於用一種極其醜陋的姿勢完成了代碼。Debug終於過了編譯。Crash卒。你要弄個編譯器,當然可以,不過你花了一大堆時間下去讀了一大堆龍書、虎書、鯨書,然後你就照著書上的說法寫了一個Tiny C,結果發現終於好不容易跑起來了,還是沒其他人的好用。
還是研究一下LLVM吧,看看最牛逼的編譯器是咋樣的。好,看代碼。你很開心。寫《LLVM初學者代碼閱讀手冊》。
發現不夠簡明。寫《如何閱讀&等若干年後,你不再年輕,你少年時寫過的代碼也在某次硬碟損壞中丟失,只有sourceforge上的某個頁面知道你的年少輕狂。
某天有個菜雞點進你的主頁,「哈?這麼菜的代碼?真是弱得不行啊,難怪去寫PHP了」說完,Ctrl+W,絕塵而去。只有那個頁面上的Visitor Count見證著你失去的情懷。
浪漫嗎?浪漫啊。
妄圖以一人之力,完成一個根本不可能完成的任務,不是浪漫又是什麼呢?
像堂吉訶德一樣沖向風車,沉浸在自己的世界裡,覺得自己什麼都行,向習慣用360的女朋友介紹說:「我寫了一個新的東西!用了剛剛出來的技術!」驕傲得像是下了蛋的公雞一樣。——不被人理解,但是被人理解又算什麼!這個時候你根本沒想著錢,你不會問盈利,你沒想過賺錢,你就是要證明自己!
那些愚蠢的HR又怎麼知道你寫在自己項目經歷里的第一行「在XXX年到XXX年間,我自行實現了一個編譯器,支持到C++99標準」到底有多少凝聚了心血?他們根本不懂,他們看到的只是你放在末尾的那一項「XXXX年到XXXX年間 在XXXX公司參與遊戲項目A,玩家付費率XXX。」
對的,他們不在乎你說的「嘗試了一個新的XXXX調度演算法,承載能力提升了XX」,他們根本不懂,他們在乎的是「完成了一個iOS應用,上架,獲得了官方推薦,下載量XXX」。
他們在面試的時候隨意的問你:這個項目你幹了什麼?呵呵,幹了啥?Debug了十萬行代碼他們看不到,fix了數以千計的bug他們看不到,mail-list裡面的各種臉紅憤怒生氣他們看不到,求大師解惑時等待的忐忑不安他們看不到,他們只能看到錢。——「那又有什麼用呢?」——「啊,這個,我就是寫了一個程序嘛……」——「那又有誰用呢?」——「額……沒幾個,我也就是覺得好玩吧」
——「哦。那你為什麼要寫呢?」——「額………………」干你娘!老子就是喜歡!這是男人的浪漫你懂嗎!浪漫!蠢貨!在作者眼裡,實現編譯器或者操作系統是這樣的:而在外人眼裡,他們只是:
三大浪漫是vczh提出來的,操作系統編譯原理是通用基礎知識,浪漫無可厚非,圖形學是特定領域知識,網路也是特定領域知識,我覺得圖形學和網路是最迷人的兩個cs方向,但圖能直接感受到,網路卻是透明的,所以圖比網更浪漫
以前看過一篇文章,作者名叫李淳(拳王_新浪博客),文章叫做遠比你浪漫(二),一共三篇,以下內容摘自第二篇。
=============
4.最後的故事,屬於自然科學,關於生和死。獻給所有從事理工科學習和工作的人們。
前段時間在學習人工神經網路的時候接觸到了玻爾茲曼機(Boltzmann Machine)這個東西,在百度其原理的同時順便了解了下玻爾茲曼這個人的生平。他是熱力學和統計物理學的大師,他是一個極端幽默和極端嚴謹的結合體,又是一個極端自負和極端不自信的矛盾產物。也許正是這些混亂的性格因素,促成了他對熵的統計學意義的發明。簡單說來,在一個孤立系統里,熵,即系統的混亂程度,永遠不可能減小,只會朝著極大值,無止境地增長下去。玻爾茲曼在一生中和很多科學家進行了學術層面的爭論,如大名鼎鼎的奧斯瓦爾德和馬赫,雖然關於「原子論」的爭執最終由玻爾茲曼獲勝告終,但是這種無休止的學術爭論讓他本來就脆弱的腦神經愈發混亂。他沒有牛頓那樣不可一世的霸氣和愛因斯坦對於真理的執著,他本來就性格孤僻、沒有朋友,這場論戰更是讓他的心靈徹底變成了一個孤立的系統,他在這個系統中身心俱疲,了無生趣,最後選擇了自殺了結束殘生,關閉了這個孤立而混亂的系統,這個系統的名字叫做生命。玻爾茲曼的墓碑上刻著他流芳百世的經典公式S=klnW,其中S為系統的熵,W為自然對數的真數,在公式里被定義為自然數,所以S必然不小於0.而此時,玻爾茲曼的系統里的W終於從混亂歸於最小的自然數1,他的熵S隨之成為了0. 他這孤立的系統永遠告別了混亂,開始了絕對零度一般死寂的長眠。用自己的公式給自己划上句號,這真是一種無奈的浪漫。
第二位科學家叫做艾佛萊特,Hugh Everett,估計99%的朋友都沒聽過這個名字,但是99%的朋友都知道「平行世界」這個時髦的玩意。艾佛萊特就是平行世界之父,著名量子物理學家。一切量子力學的怪胎和悖論都起源於薛定諤的那隻貓,那隻貓在哥本哈根學派的思想實驗里又死又活,這隻又死又活的貓數十年來讓愛因斯坦、玻爾、海森堡、波恩等物理巨擎吵得面紅耳赤、不可開交,愛因斯坦直到死都不相信那隻貓是又死又活的,他認為上帝不會執骰子,不會把貓的死活交給概率、而非裝置背後的物理定律本身。這時艾佛萊特出現了,他提出了著名的多世界理論(MWI)。也就是說,薛定諤的思想實驗里那掌管子彈發射裝置的原子核有50%的可能性衰減(衰減即觸發子彈),這並不意味著那隻可憐的貓就成為了一團50%活著、50%死去的概率雲,而是在原子核決定是否衰減的瞬間,分裂到了兩個平行世界裡。在其中一個世界,那隻貓被衰減後的原子核觸發出的子彈爆頭,死得比玻爾茲曼還慘,而在另一個世界,由於原子核並未衰減,這隻在輪盤賭里倖存下來的貓繼續活蹦亂跳地活了下去。接下來,根據艾佛萊特的理論推論,著名的量子永生思想實驗應運而生。我們可以將複雜的原子核子彈裝置換成手槍、菜刀或者折凳等市井兇器,如果多重宇宙的解釋是正確的,那麼無論如何,貓永遠也不會被殺死,同理,我們也永遠都不能自殺成功。例如我用刀抹自己脖子,組成刀的粒子符合薛定諤的波動方程,那麼總有那麼一點微小的可能性,這些粒子在那一剎那發生了躍遷(稱為量子隧道效應,像是穿牆術),以某種方式完好無損地穿過了我的脖子,我依然生龍活虎。例如這個幾率是0.001%, 那麼除了我奇蹟般存活下來這個世界,還有99999個平行的世界,在那些世界裡我都自殺成功了。概率的懸殊也能解釋為什麼我們在生活中並不經常遇到這樣春哥附體般的怪事。但對於「我」這個有意識的個體來說,意識只能存在於活下來的那一個世界。也就是說,在我的主觀意識里,無論我自殺多少次,我都活著,因為活著的那個世界是對我唯一有意義的存在。就像薛定諤的貓永遠認為自己存活在原子核沒有衰減,子彈並未觸發的那個世界一樣。這就是量子永生,它還有一個更加邪惡的名字,叫作量子自殺。
偉大的艾佛萊特的女兒就對自己進行了量子自殺,雖然她自殺的原因也許是為情所困,或者對資本主義社會失去了信心,但是她留給艾佛萊特的遺書里就寫道,她沒有死,只是去另一個平行世界和父親相會。我難以猜測艾佛萊特在看到女兒遺書那一刻的心情,平行宇宙本來是科學史上最浪漫的假說之一,但是這一假說的第一個實驗者,竟然是自己的女兒,這是一種何等殘忍的浪漫。艾佛萊特的學生後來受他的「平行宇宙」假說影響,提出了量子計算機的構思,簡單說來,就是讓傳統計算機處理信息的最小單位比特,即1和0這一對二進位數字,在量子的世界裡變成1和0的疊加態。於是比特就變成了量子比特,計算機也變成了量子計算機,我們可以想像,只需要建造一台計算機的成本,通過量子疊加,就能擁有數億台計算機在數億個宇宙里同時進行著運算。這是人類從未擁有,甚至根本不曾想像過的超級計算機。而那麼多的計算機,總有一台,存在於艾佛萊特女兒自殺失敗、存活下去的那個世界。如果艾佛萊特在計算機上打出「女兒,無論在哪個宇宙,我都會永遠愛著你。」,而她在那裡能夠看見,那將是多麼浪漫的一件事。當然,他知道自己用不著這樣做。因為他女兒活著的那個宇宙,是從自己的宇宙分裂出去的,那裡同樣有一個艾佛萊特存在,代替這個宇宙的自己去愛她。
這就是量子力學的浪漫。這就是宇宙的終極浪漫嗎?不,在愛因斯坦的思維里,宇宙是簡潔的,物理定律是優美的。最終極的理論必然擁有最簡單的表達方式,浪漫亦然。什麼是最簡潔的浪漫呢?偉大的阿蘭-圖靈,計算機和人工智慧的締造者,自然科學史上堪與牛頓和愛因斯坦媲美的曠世奇才,他的圖靈機為現代計算機的邏輯工作方式奠定了基礎。以至於從最古老的電子管計算機到如今的「最深的藍」,所有的電腦以及人工智慧都遵從圖靈的通用機定律。但是很多現代教材里的「計算機之父」卻繞開圖靈不提,而選用馮-諾依曼,當然諾依曼也同樣是偉大的天才,他提出了計算機的二進位思想和程序內存原理,這至今仍然是所有計算機的基本工作原理。但是就如同圖靈的助手所說,「許多人都推舉馮?諾依曼為『計算機之父』,然而我確信他本人從來不會促成這個錯誤的。或許,他可以被恰當地評為『助產士』。他曾向我並且我肯定也曾向別人堅決強調:如果不考慮巴貝奇、阿達和其他人早先提出的有關概念,計算機的基本概念屬於圖靈。按照我的看法,馮?諾依曼的基本作用是使世界認識了由圖靈引入的基本概念……」事情的悲劇就在於,阿蘭圖靈不僅是個天才,而且是個基佬。在解放前的英國,同性戀是大逆不道的罪名。警方逼著圖靈注射雌性激素,進行化學閹割,成為一個真正的女人。圖靈自是不堪屈辱,他不是英國的司馬遷,他選擇了以死相抗。他吃下了小半個注射有劇毒氰化鉀的蘋果,然後告別了這個野蠻的世界。多年之後,喬布斯創立Apple公司,選用一個被咬過一口的蘋果作為Logo. 無數愛戴圖靈並且生性浪漫的IT浪子,將這個IT業歷史上最著名的Logo解讀為向圖靈致敬。喬布斯本人也被問到過這個問題,他的回答是:It isn"t true but God, we wish it were. 如今喬布斯也去見圖靈了,Logo的真相也許永遠無人知曉,但這已不再重要。這樣的解讀本身就是一種極致的浪漫,真相已逝,但浪漫永存。但這還不是人世間最簡潔的、最浪漫的浪漫。喬布斯逝世後的歲月里,全世界鋪天蓋地地紀念,蘋果的小小Logo似乎同喬布斯的Levis牛仔褲和New Balance運動鞋一起,成為了IT界在地球的唯一代言。群眾不分國籍種族、不分行業領域,團結在蘋果產品的偉大旗幟下,一遍又一遍地向喬布斯這個偉大的geek歡呼致敬。很少有行業之外的人注意到,C語言之父,丹尼斯-里奇(Dennis Ritchie),在喬布斯去世後的3天,也收到了馬克思和圖靈的請帖,離開了人世。在我工作的QQ群里,學習計算機理論的論壇里,全世界的程序員都在用以下的代碼向里奇致敬:#include int main(){ printf("Goodbye, World.
"); return 0;}這行簡單的代碼無須我解釋,我相信任何一個能看懂英語的人都會明白它的意思。這還不是最簡潔的致敬。眾所周知,C語言不是最高級的程序語言,但卻是最簡潔優美的程序語言,所以國內外眾多C語言論壇的網友都用一個簡單的分號回帖,向里奇致敬。因為分號是C語言里的語句結束符。;這就是人世間最簡潔、最終極的浪漫。
三大浪漫有個孩子,叫瀏覽器
不浪漫如何出現新事物,真正未來的牛人都是在做你看似無聊的事情。
所以不同意前面的一些答案,什麼寫個操作系統沒戲之類的答案。很多遺棄的代碼是因為沒有堅持,沒有在無聊的路上走下去。
北歐這種地方創造了很多神奇的產品,linux,我的世界,可能是因為他們確實受得了無聊,日子本來也很無聊了。如果一切都功利的面相商業產品估計永遠也出不了linux,這麼浩瀚的工程沒有點無聊的浪漫精神堅持不下來的。
當然天朝生存環境惡劣,所以很多時候沒法浪漫起來,就好比朝鮮飯還都吃不上呢,就更別提什麼巧克力噴泉了。親,這種都是當事人隨便編的段子,不用那麼認真。
聽都沒聽說過這三個……
浪漫不浪漫我不知道,但是這三個中間,有我喜歡的,那就是操作系統
最近三年,我軟體也不想寫了,ObjC 也不怎麼看了,找來一堆操作系統,彙編語言的書來看,,到現在為止,我也不知道這些東西能給我帶來什麼回報,但是我就是覺得有意思,,
現在看到一些軟體,腦子裡蹦出的就是它使用了哪些系統調用,以及這些調用又使用了那些 Mach 調用。再也不畏懼什麼 Kernel Panic,反而很期待這個,看看吐的核,可以找到很多內核的 Bug。
反正挺有意思的,just for fun
計算方法最浪漫啊,考試根本不夠時間老師大手一揮加兩小時大家好開心都不知道開心什麼。
我感覺老派人工智慧才是浪漫,正因為看上去死路一條所以浪漫。。
發現好多人對這三大浪漫不甚了解,還是讓我這跨多個計算機領域的老geek來回答吧。
這三塊內容其實是計算機領域開發其它一切應用程序的基礎,也是難度和工程量相對來說最高的三大塊內容。
一般情況下程序猿針對自己所從事工作的能力提升和項目進度靠時間的積累是可以顯著看到成效的,但是這三塊內容卻並非這麼簡單,就拿操作系統和編譯器來說,微軟是全球數千名開發者協同開發它們,並且開發人員還需要極強的計算機功底,也就是所謂的數據結構和演算法,而深入研究計算機圖形需要的不僅僅是很強的工程數學基礎還需要比較了解光學和各種複雜的光學演算法。
回到主題,這些複雜的甚至是枯燥的技術為何會浪漫了?其實這是一種謙虛甚至是自嘲的說法,很多對這些行業比較了解的攻城獅們,他們真心是覺得難,覺得枯燥,反其道稱之為浪漫,其實他們一點都不覺得浪漫,反倒是覺得痛苦,非常非常的痛苦,而相反的有些技術geek們,他們就是愛專研有難度的東西,而且樂此不疲,對他們來說這是真的浪漫!為什麼沒有資料庫 @vczh
因為當初提出這個的人只會這三個(還未必有多高建樹)
數據結構 表示不服
資料庫系統原理 表示不服
演算法分析與設計 表示不服等等 操作系統、編譯原理和圖形學 這是 「計算機科學」 的爛漫吧
程序員的爛漫難道不是emacs和vim么?
OS,compiler有很多任務可以接,只要你有一定的水平和足夠的空閑時間,以及願意為社區奉獻力量的想法。OS確實不用你寫,但很多設備都沒有linux驅動,你貢獻一個不是很好么?
這種所謂的浪漫,不過是剛入門的小學生構想的殿堂,別太當真。重複造個車輪不是浪漫,是自我滿足式的意淫而已。當然入門鑽研這個可以學到一些東西。如果真對程序員的浪漫有追求,那去設計更快更有效率的演算法,去實現沒人實現的東西,看別人所看不到的風景,那才是浪漫。
自己眼中:屠龍之技~~
別人眼中:連修電腦/盜qq/手機貼膜都不會,要你何用?推薦閱讀:
※程序員如何找到一份遠程工作?
※在資料庫中具體創建表結構的時候,需要創建外鍵嗎?
※碼農學CFA有價值么?
※如何融入工作?如何看待工作的意義?
※程序員站立工作是種什麼體驗?怎麼樣構建工作環境?