什麼是真正的程序員?
真的程序員,敢於直面慘淡的重構,敢於正視淋漓的需求。
我感覺,不管能力高低,無論新手老手,不管是用c,c++,python .... ,只要當你寫完某個程序,或是解決了一個困擾已久的bug,能夠由衷的感到高興。感覺自己是創作了一個美好的作品。就是一個真正的程序員。不管是剛入學時候寫的hello word,還是現在在知乎寫搜索,每一行代碼都帶給我興奮!
記得《瘋狂的程序員》書里有一段話我很喜歡: 程序員是值得尊敬的。程序員的雙手是魔術師的雙手。
他們把枯燥無味的代碼變成了豐富多彩的軟體。
欲罷不能
都該看看程序員阿士頓的故事。
------------------------
我告訴過你有關阿士頓的事情嗎?
阿士頓是一個典型的吃玉米長大的農場男孩,他的父母曾經是嬉皮士,從來沒有真正地同心協力過,直到有一天他的媽媽繼承了密歇根農村的15畝地。然後 他全家搬到了那裡,買了一對奶山羊,靠在農貿市場把有機山羊乳酪賣給雅皮士們謀生。
那個時候阿士頓才10歲,他需要每天早晨4點起床給那些該死的山羊擠奶,這活非常累。阿士頓很喜歡上學,因為上學就意味著不需要跪在羊糞里工作了。整個高
中他都異常努力,希望可以拿到一所名牌大學的獎學金,然後他就可以離開農場了。在大學裡,他發現大學生活比農場的生活輕鬆多了,所以搞不明白為什麼每個人
不能像他那樣每科都拿到A。他選擇了軟體工程作為自己的專業,因為他深信一個工程師絕對不需要早晨4點就起床。
阿士頓就這樣從學校畢業了,他對軟體產業並沒有很多了解,所以他去了招聘會,申請了3份工作,並且都拿到了 offer 。然後他挑了一個給錢最多的offer:年薪高達 32,000美元,這是一家位於密歇根西南部的大傢具公司,為全世界的企業生產辦公小隔間(cubicle farm)。入職之後,因為阿士頓再也不想回到農場了,所以他決定給他的老闆查理謝爾曼留下一個好印象。
「這個可不簡單」,坐在他隔壁的同事傑夫說:「她在這裡也算是個傳奇人物了。」
「你的意思是?」 他說。
「嗯,你還記得幾年前嗎?那個時候到處都是關於千年蟲的話題。」
阿士頓可能是太年輕了。「千年蟲?」
「是這樣的,沒有人預料到在60年代寫的程序在2000年還會繼續運行,所以當時給年份只留了2個數字的存儲空間,也就是說 1999 被存儲為 99 。所以當 2000 年到來的時候,計算機系統就會崩潰,因為它會試圖將 100 存儲成2個數字。」
「真的?我還以為那只是個傳說,」 阿士頓說。
「世界上所有其它的公司都沒有發生什麼事故,」 傑夫說。「因為它們花了數十億美元去檢查每一行代碼。但是在我們公司,當然了,因為他們是狗娘養的混蛋,所以他們不願意做任何測試。」
「完全沒有做嗎?」
「幾乎沒有。零測試。所以你瞧,當人們在2000年1月2號開始工作的時候,發現所有東西都不能工作了。他們不能列印生產計劃,甚至不能打開半個裝 配生產線。沒有人知道如何進行工作,工廠差不多停滯了。」
「你在開玩笑。」 阿士頓說。
「絕對沒有。工廠整個都停止運轉了。這個時候查理出現了。她那個時候還是個新人,曾經在微軟,可能是NASA,也可能是其它機構工作過……沒有人清 楚為什麼像她那樣的牛人會到我們這種地方工作。然而她坐了下來,然後開始寫代碼。然後寫代碼。繼續寫代碼。
查理整整寫了九天代碼,這九天她沒有睡覺,沒有吃東西,有些人說她甚至沒有去過洗手間。她檢查了一個又一個系統並且逐個修復了它們。那真是一件壯觀
的事情,老天,那些需要被修復的可是 COBOL(一種非常古老的編程語言)系統。在整個工廠處於停滯狀態的時候,查理派人去大學圖書館找來了古老的
COBOL 手冊。裝配線上的工人站著直哆嗦,因為連恆溫器也有千年蟲問題。而查理則一杯接一杯地喝咖啡,像一個瘋婆子一樣不斷敲擊鍵盤。」
「哇。她沒有去過洗手間?」
「呃,那個部分可能有稍微那麼一點點的誇張成分,但是她的確連續9天工作24小時。總之,在1月11號的時候,
就在開工前一天的5分鐘,她走出了她的隔間,來到了印表機面前,按下了一個按鈕,然後,奇蹟出現了!生產計劃列印出來了,團隊計劃也列印出來了。一切都是
完美的,經過了完美的格式化,使用了一個稍微較小的字體把
『2000』放到了原來寫『99』的地方,她甚至還寫了一個新的優先順序優化系統,可以幫助工人在不得罪那麼多客戶的情況下趕上過去9天的生產進度。所有的
裝配線都開始工作,好像從來沒有出現過錯誤一樣,供暖也恢復了,列印出來的發票的年份由『19100』變成了『2000′。而且,之後誰也沒有找到過一個
bug.」
「得了吧!」 阿士頓說。「誰也寫不出沒有bug的代碼。」
「她做到了。我親眼看到的。這是他們第一天無間斷地生產了相當於以往兩天生產的小隔間。」
阿士頓目瞪口呆。「這簡直是史詩阿。我怎麼才能做到那樣?」
「你做不到,夥計,沒人能做到」 傑夫邊說邊回到了自己的電腦前面,繼續玩已經玩了4個多月的斯波克和蝙蝠俠之間的在線戰爭遊戲。
阿士頓不是一個輕言放棄的人,他發誓某一天他也會做一些富有傳奇色彩的事情。但現實情況是,再也沒有出現另外一個千年蟲問題。而且在密歇根的那個地
方,沒有人可以提供一丁點兒關於如何寫好程序的信息。事實上幾乎沒有什麼事情需要程序員去做。分配給阿士頓去做的都是一些無聊的小項目……有一次他花了三
個星期來處理這樣一個事情:由於兩個不同的銷售稅區域使用了相同郵政編碼,導致在某個縣的銷售稅是錯誤的。有趣的是,這個縣位於紐約一個人煙稀少的地方,
那裡沒有人買過辦公小隔間,公司在那裡也從來沒有一個客戶,所以他寫的代碼永遠都不會運行。
日子就這樣過去了。
兩年來阿士頓一直帶著熱情和興奮投入工作,迫不及待地想有所作為,想做一些了不起的事情。與此同時,他的同事卻在上網衝浪,給朋友發簡訊,連續幾個 小時地玩電腦紙牌。
坐在他旁邊的那個同事傑夫,只有一個工作內容:每周更新一個「顯示本周有多少人在工作中受傷」的 Excel 電子表格。從來沒有人受過傷。每周傑夫都打開那個電子表格,然後移動到頁面的底部,在那裡輸入日期和一個數字0,點擊保存,然後就完成了工作。
阿士頓甚至幫傑夫寫了一個宏來自動化他的工作。傑夫不想被逮到,所以他拒絕安裝這個宏。從那之後他們的關係就變僵了,真是尷尬。
在阿士頓工作兩周年的那天早晨,他和以往一樣開車去工作,然後忽然意識到了一些事情。
他寫過的任何一行代碼都沒有運行過。
過去兩年內他做的任何一件事情都沒有對世界產生過什麼影響。
而且在密歇根州的這個地方氣溫他媽的有24度,天空是灰色的,瀰漫著臭味。他開的本田車也是一坨垃圾,在這個小鎮上他沒有任何朋友,他自己也什麼都 不是。
當他開車到林肯大街的時候,他看到了左邊他所在的那個傢具公司。在公司園區前面飄揚著三面旗幟:美國國旗,偉大的密歇根州的州旗以及一面有公司標識
的紅白相間的旗幟。他開車進入了轉彎車道等待左轉,他的前面有一長排車,在高峰期的時候需要等四到五個紅綠燈才可以左轉,所以阿士頓有足夠的時間來回想他
寫過的代碼有沒有哪怕一行是被別人使用過的。
沒有。他怔怔地留下了眼淚。
然後他沒有左轉,直接往前開了出去,這差點釀成了一起交通事故。阿士頓忘記了自己已經打了轉向燈,而打了轉向燈就意味著你不能直接往前開。
他沿著林肯大道開了下去,然後上了高速公路,他只是不停地往前開,一直來到了機場。他把他的垃圾本田扔在了航站樓的前面,心裡非常清楚它會被拖走。
他甚至沒有去關車門就徑直走到了櫃檯前面買了下一趟飛往舊金山的航班的機票,20分鐘內起飛。然後他上了飛機,永遠地離開了密歇根。
如果想到你的退休時代,你還想繼續寫程序,那麼你是個程序員。
你們看,鄙司許式偉同學寫代碼之餘還兼任CEO呢。
當你衣食無憂後還會去coding
剛開始學習編程時是三年前,那個時候我認為一個程序員就是應該給你一台破電腦,然後讓你隨便完成一個功能,你都能頭都不抬也不參考任何資料就能完成這個功能,所以,在學習的時候我就拚命的記各種代碼,我記得很清楚的一本是李興華的《Java實戰開發經典》這本書,我都快給翻破了,書中的例子等都記得非常的清楚。就這樣,我把Java基礎學完了,但是,當別人跟我談起php、python等編程語言時,我又啥都不會,啥都不懂,MD,我生氣了,繼續埋頭苦練,苦學,終於,我達到了自己所要求的,別人談論什麼我都會,我也都記得,我不靠什麼開發工具就能編寫複雜的程序,那時的理解就是,能記得住代碼的就是真正的程序員,你看其他的程序編個簡單的文件拷貝都要去查查API,頓時覺得這些程序員這低級,哥才是高級程序員。可是,當我上了研究生進了公司工作,接觸到了越來越多的實際問題,我需要用一個程序去解決這個問題,怎麼解決呢?我傻了。我之前記得代碼對我現在沒有太大的幫助,這些業務太複雜了,我都無從下手了。現在我知道了,真正的程序員是什麼,是我們真正的解決問題,不管是什麼問題,我都能分析出他的實質,最終通過代碼將其實現,具體代碼怎麼來的,我可以不用管,說其根本,編程語言只是工具,我們一直在學習如何怎樣把這個工具用的如何如何的出神入化,可最終忘了我們學習這個工具只是為了更好的解決問題,我認為真正的程序員就是可以出神入化的使用編程語言解決項目中複雜的問題!
程序人生的寂靜歡喜
標題起得太大咯,是在故作老成么?
「程序人生的寂靜歡喜」——怎麼看都感覺像是某位已故計算機大師的墓志銘,可卻偏偏被一個菜得摳腳的毛頭小子拿來當做人生寄語——也是日了狗了!
人都沒生過,談什麼人生!?
莫怪我,我偏要「奢談」一下!
一.記敘一開始我是拒絕的!因為我根本就不喜歡寫程序。
打高中數理化就不好,什麼排列組合、圓錐曲線、電磁場中一帶電粒子、水溶液中的水解電離,困擾我有如夢魘。
高考時,祖墳上冒出一縷青煙,數學創歷史新高考了88,理綜破有史記錄考了200,數據不僅太美太感人,而且大吉大利、元亨利貞!終於,我以總分522分考上了一所夢寐以求的2本就讀於計算機科學與技術1202班——命中犯2!
可是對於編程其實我是拒絕的——大一花了一年的時間來研究心理學,大二花了一年的時間來研究哲學,大三花了一年的時間來研究中醫——結果,《離散數學》掛了,《數字邏輯》掛了,《數據結構》掛了,《編譯原理》掛了——恨不得自掛東南枝!
人在做天在看,出來混總是要還的!曾堅信「天生我才必有用」,「我輩豈是蓬蒿人」;曾篤定「心所願力畢至」,「有志者事竟成」;曾夙願「天授其賦必賜其福」,「好風憑藉力,送我上青雲」。可是,一個冷峻若紫電青霜的問題劈面而來:不寫程序又能幹嘛呢?
然而我根本就不會寫程序!試想,一個打字只能用到右手食指、左手食指和左手無名指的人,敲代碼時是多麼捉急!試想,一個高數補考考了19分,滿腦子宏大敘事的理科弱智,寫程序時是多麼腦洞大開!
後來去公司實習,遇到的第一個項目就是要使用ESFramework通信框架,當我第一眼看到了開發手冊上的如下句子時,我就知道,春天不會再來了!
客戶端通過調用ESPlus.Application.Basic.Passive.IBasicOutter介面對應的方法以及預定其相關的事件,就可以完成基礎功能或得到相關狀態改變通知。我們可以從 ESPlus.Rapid.IRapidPassiveEngine暴露的BasicOutter屬性來獲取IBasicOutter引用。
介面、預定、事件、暴露、屬性、引用,你們一個一個來,我還大概能明白,你們群起而攻之,我便委地如泥了!
重載的Query方法(帶有CallbackHandler參數的)在發送請求信息後,不會阻塞而繼續向下執行,而框架在收到對應的回複信息時,會回調CallbackHandler委託指向的方法。由於調用線程與回復回調的線程不是同一個線程,所以稱這種機製為回復非同步調用。
再當我看到「重載」、看到「阻塞」時,我徹底憤怒了!而緊接著映入眼帘的「委託」、「回調」更使我出離憤怒!最後「線程」、「非同步」更令我萬念俱滅,心如死灰!
從此,我便以一種菜得摳腳的姿態狼狽不堪地行走在險象環生的程序世界裡。莫非是寒更雨歇,葬花天氣,獵獵北風襲單衣;荒原寂寂,遠聽猿啼,近看寒鴉起;鬼影幢幢,步步驚心,不知今夕何夕。
好多次我都想,別瞎費勁了,你不是寫程序的料!真正適合寫程序的人根本就不可能是這個樣子!
於是乎放棄。可是不寫程序又能幹嘛呢?好歹讀了四年大學,何況拉弓沒有回頭箭。還是要頂風逆水雄心在,不負人民養育情!
終於,苦水的浸泡痛徹了肌膚,磨練了身心,同時也澆灌出了涅槃之花!
某天我突然發現,那些原本看來佶屈聱牙的技術文檔如今看來卻直白如話,那些原本晦澀難懂的語法如今卻能夠熟練運用,那些原本看都看不懂的源碼如今也能夠在自己指下流淌,實習之前我連循環語句都寫不對,如今卻也能用ESFramework和OMCS等框架開發出像樣的網路通信應用。
二.議論更重要的是,從當初的不喜歡、不擅長、不自信,到而今能夠懷揣著一顆歡喜之心來寫程序,能夠以樂在其中的心緒來開啟自己的程序人生,這不僅是我收穫到的莫大財富,更是我把握住的莫大幸福!
胡適先生的名言:「怕什麼真理無窮,進一寸有一寸的歡喜。」真理無窮並不可怕,因為我們在每一寸的前進中始終獲得歡喜。編程之路並非坦途,我們也並非天賦異稟,然而那個最幸福的人,並非是玩轉代碼的編程高手,也並非是億萬家資的IT精英,而是那個在流年中始終以歡喜之心書寫代碼,又通過書寫代碼恆久再獲歡喜之人!
常言道:「男怕入錯行,女怕嫁錯郎」。嫁郎要嫁有情郎——有情飲水飽,無情龍肉都無味!入行也是一樣。入了所愛之行,舉手投足皆得歡喜;入了所憎之行,坐卧立行儘是苦悲!嫁郎的幸福不在於嫁郎所獲得的富貴榮華,其根本在於郎本身。那些通過嫁郎以獲取外在利益的女子,她們充其量只是獲得了生意上的成功,而根本沒有獲得婚姻本身的幸福,而這何嘗不是一種買櫝還珠?同樣,那些以工作作為純粹手段的人,他們也從來沒有獲得過工作本身的幸福快樂。
由此看來,我想恐怕對於絕大多數的程序員而言——你不是真正的快樂!
所有程序員恐怕可以粗略的劃分為這五種狀態:
1.不愛,但是迫於生計
2.無感,反正亦步亦趨
3.熱愛,但卻身心俱疲
4.狂熱,打了雞血一般
5.歡喜,畢竟樂在其中
你是屬於哪一種呢?
如果要我來選,我一定會選5,因為唯其如此才能獲得程序人生的個中真昧,才能擁有彼此交融的內在完滿。而其他的幾種狀態在不同程度上都是殘缺的。
也許我們寫程序總是不可避免的為了各種外在的目的,但是寫程序時的那份小確幸的歡喜,卻始終是我們精神飛鳥的棲息地。 正如孔子贊顏回——子曰∶「賢哉回也,一簞食,一瓢飲,在陋巷,人不堪其憂,回也不改其樂 。賢哉回也!」
罷筆時風煙俱凈,但願自己剛剛開啟的程序人生能夠無關風月,寂靜歡喜。
入行的時候能興奮的寫一行 printf(「hello world
「); 掛掉的時候能自豪的寫一行 printf("goodbye world!
");
Mel Kaye,真正的程序員現在已經很少有人提到他了,在我上學的那幾年,他的故事曾經引發過國內的大面積討論。現在在google上搜索Mel Kaye,能找到故事的英文版,也能很早到Mel確實存在的證據。以下文字來自:Mel Kaye的故事
最近有一篇展現編程的「大丈夫」一面的文章,裡邊有這麼一句粗暴直接的話:
真·程序員用FORTRAN編程
也許現在的程序員是這樣吧,
在這個墮落腐朽的年代到處都充斥著淡啤酒、計算器、還有「用戶友好」的軟體但是在過去美好的日子裡,「軟體」還是一個聽上去有點滑稽的新詞而真·計算機是使用磁鼓和真空管組裝起來的,真·程序員寫的則是機器代碼。不是FORTRAN,不是RATFOR,甚至,連彙編語言都不是。機器·代碼。實實在在、原汁原味、深不可測的十六進位代碼。直截了當。為了避免新一代程序員
對這段輝煌的歷史一無所知我覺得自己義不容辭,我要用文字努力填補這一段代溝,真·程序員是怎樣寫代碼的我把這個程序員叫做Mel,因為這就是他的名字。LGP-30我是在Royal McBee計算機公司上班時第一次碰到Mel的,
這是隸屬於Royal Typewriter的一家子公司,現在已經解散了Royal Typewriter製造了LGP-30,一種小型的,低價的(以當時的標準)磁鼓存儲計算機,而且剛剛開始製造RPC-4000,一種大大改進了的更大、更好、更快的——磁鼓存儲計算機。RPC-4000我當時被雇來為這個新機器
寫一個Fortran編譯器,而Mel則負責引導我了解這台新機器。Mel對編譯器不感冒。
「如果程序不能重寫自己的代碼,」Mel說,「那它能有多挫啊?」用十六進位代碼,
Mel寫了公司最受歡迎的計算機程序程序運行在LGP-30上面能跟人玩「二十一點」,每次計算機展會上它都能戲劇般的吸引到不少人IBM的銷售都會圍成一圈,對它指指點點究竟展覽對於銷售有沒有幫助我們從來沒有討論過21點的程序是用印表機輸出的,當時還不知道什麼叫顯示器Mel的任務,是為
RPC-4000重寫二十一點遊戲(平台移植是什麼意思?沒聽說過)新機器有一個一加一定址模式,每一個機器指令和它的操作代碼以及操作所需的內存都擁有一個第二地址,用來告訴你下一個指令在旋轉磁鼓上的具體位置用現代術語講
就是相當於每個指令都捆綁了一個goto放到Pascal的煙管里抽一口吧磁鼓Mel對RPC-4000情有獨鍾
因為他可以優化自己的代碼他可以手動設置指令在磁鼓上的存儲位置,然後當一條指令執行完的時候,磁頭會正好停到下一條指令所處的位置上然後下條指令就可以好不耽誤時間地立即執行了有一個程序也可以做這件事叫做「優化彙編器」但Mel拒絕使用它。「你永遠不知道它會把東西放到哪裡,」
他解釋道,「所以你只能使用不同的常量。」這句評論我花了很久才明白是什麼意思,
因為Mel知道每一條操作指令的數字值,而且手動分配了磁鼓的存儲地址,他寫的每一條指令,都可以被認為是一個數字常量。他可以把比如說一條「加值」指令,當作一個數值去做乘法,如果「加值」指令對應的正好是一個合適數值的話。別人要改他的代碼可不容易。我把Mel手動優化過的代碼
和優化彙編器「按摩」過的代碼比較了一下,Mel的總是跑得更快。因為在那會「自頂向下」的程序設計還沒被發明,而且就算髮明了,Mel也不會去使用的。他會先把程序循環中最裡層的部分寫好,
讓這部分內容優先運行在磁鼓最合適的位置上。優化彙編器做不到這點,它沒有這麼聰明。Mel也從來不會去寫延時循環,即使Flexowriter這種笨重的輸出設備需要在輸出之間延時才能工作正常。新式磁鼓他只需把磁鼓上的指令放在特殊位置上,
這樣下一條指令會剛好跳過磁頭,然後磁鼓只能重新旋轉一圈才能找到這條指令。這樣就正好實現了延時。他為這個流程創造了一個很好記名字。雖然「最優」是一個絕對化的術語,就和「獨一無二」一樣,但在習慣使用過程中它也變得相對化了:「不是特別最優」或「不夠最優」或者「不是特別最優」。Mel把導致磁鼓最大延時的存儲地址叫做「最劣」址。當他寫完「二十一點」程序
並且讓它運行起來後(就連初始程序都被優化過了,他驕傲地說),他從銷售部門得到一個修改·需求程序用了一個優美的(優化過的)隨機數生成器用來洗牌以及處理牌局,有的銷售人員認為這個遊戲太公正了,因為有時候客戶會輸掉。他們想要Mel修改程序,讓可以通過控制台的感知開關調整獲勝幾率,這樣就可以讓客戶能贏了。Mel很抗拒
他覺得這是絕對的不誠實,的確也是他還覺得這是對他作為一個程序員的人格侮辱,這話也沒錯所以他就拒絕做這件事。銷售部·領導和Mel談過,大·老闆也和Mel談過,程序員·同事也勸過,最後Mel還是讓步了,去寫了代碼但他把條件寫反了,於是當感知開關打開以後,程序就會作弊,不是會輸,而是次次會贏。Mel對他的傑作相當滿意,說他潛意識裡有無法控制的道德感,並且堅決拒絕修正這個問題。Mel離職另謀高就以後,
大·老闆讓我看看代碼看能不能把這個條件判斷修改過來。雖然不怎麼情願,我還是答應了。追蹤Mel的代碼是一場真正的歷險。我常常覺得編程是一種藝術形式,它的真正價值只能被別的熟知這種艱深藝術的人理解;一些美妙的細節和智慧的處理,常人可能永遠都看不到,更不用說去欣賞了,軟體的過程天然就是這樣子的。通過閱讀一個人的代碼,你可以了解很多關於這個人的東西,即使十六進位代碼也是一樣的。Mel在我的眼裡,就是一個不為外人所知的天才。也許最讓我吃驚的
是我在裡邊找到了一個沒有條件判斷的循環。沒有條件判斷。沒有常識告訴我這必須是一個閉循環,程序走到這裡會永遠不停地循環下去。但實際情況是,程序可以直接跑進這段代碼然後再安全地抵達了另外一邊。我花了兩個星期才弄明白這是怎麼回事。RPC-4000計算機有一個相當現代化的功能
叫做索引註冊器。它可以讓程序員寫一個循環,在裡邊使用索引過的指令;不過每使用一次,索引註冊器里的數字就會被加到這條指令的地址上面,這樣它就會指向序列中的下一條數據。不過他就需要每次手動為索引註冊器增值。Mel從來沒這麼做過。取而代之的是,他會把指令拖到一個機器註冊器里,
為它的地址加1,再把它存儲回來。然後他再直接從註冊器中執行修改過的指令。循環在寫的時候就把增加的執行時間也算進去了——這條指令執行完後,下一條就會剛好處在磁頭的閱讀位置上,可以直接繼續。但循環裡邊沒有條件判斷。最重要的線索出現了,
當我我注意到索引註冊器位元的時候,這個位元處在指令的地址碼和操作碼之間,而且是開啟的——儘管Mel從來沒使用過索引註冊器,所以此處一直是為0的。當我看明白的時候,我簡直被亮瞎了。他把工作的數據
放在了存儲的最頂端——指令能處理的最大的地址值——所以,當最後一條數據處理完以後,增加指令地址就會讓地址發生溢出。然後就會導致操作碼被加1,讓它成了指令集里的下一條指令:一條跳過指令。於是理所當然,下一條程序指令就到了地址位置0,然後程序就開心地運行下去了。我沒有和Mel再聯繫過,
所以我不知道他是不是面對著洪水般的編程技術變革已經讓步了。我喜歡想像他沒有讓步。無論如何,我已經被他的技術深深折服,不想再去找那處有問題的條件判斷了。我告訴大·老闆我找不出。大·老闆聽了也沒覺得奇怪。當我離開這家公司的時候,
在你打開對應的感知開關以後,「二十一點」還是會作弊的,我覺得這樣挺不錯。深入研究了真·程序員的代碼,我覺得自己有點心累。
內心有創造力的人們發現這個世界不完美或遇到沒有解決的問題時候,他們想要創造更好的東西和嘗試解決前人沒有解決的問題,代碼只是做這件事的無數工具中的一個。內心有這種慾望的人就是真正的程序員。從這個角度講,真正的程序員和藝術家是相似的。
程序員是人類和電腦之間的翻譯。
將程序設計思維和感覺融入生活學習中,即便不敲代碼也算是程序員!
耶穌說:「心裡相信,口中承認,你就是我的門徒了。」同理:心裡相信,口中承認自己是程序員的,你就是一個真正的程序員了。
其實稱為軟體工程師更為恰當, 一個合格的工程師具有自發性發現問題,解決問題的能力。 http://baike.baidu.com/view/25007.htm http://zh.wikipedia.org/zh-cn/工程師
最早期,程序員一群(高智商+有錢)人在做研究,為了解決大數運算(實質就是為了解決人類重複干、或者幹不了的事情)。後來呢,程序員成了一種做重複勞動的人群,解決自己或者別人重複勞動。
俺作為程序員的對立面,可以提供一個反例。俺這個人從小就不喜歡編程,不晚於十歲就痛恨寫代碼,至今一直以消滅程序員這一職業,埋葬掉整個軟體產業為己任,而且已經有了一個大致的思路,具體可參見俺半年前寫的的文章《消滅程序員需要百年嗎?》 http://www.ituring.com.cn/article/details/346 面壁十年圖破壁,編程就是為了終結編程 俺這樣的人,一定不是真正的程序員,倒是不妨稱為真正的「反程序員」——Anti-programmer
相比寫代碼,具有解決問題創造社會財富的意識更重要。
李興平做了一個靜態網頁hao123,他是不是真正的程序員?
雨林木風做了傻瓜版的XP安裝盤,沒有多少行代碼,他是不是真正的程序員? 一味強調寫代碼,心中只有代碼,卻沒仔細想過為什麼而寫代碼,這不是真正的程序員,這是真正的代碼工人。我不知道。從大一到現在,比如開老鄉會,一開始我到那裡的時候他們就會猜到我是程序員。雖然他們之前一直沒見過我。所以大多數時候我可以不用自我介紹。
推薦閱讀:
※python3.4寫好的.py文件如何打包成exe?
※編程會讓人變得木訥(內向)嗎 ?
※如何有效的學會c語言?
※相比學士和碩士,計算機PhD的優勢是什麼?
※C++中的sort函數使用自定義比較函數的具體運行過程是怎麼樣的呢?