今天早上,在 google 上搜尋的時候,我偶然看到了乙個帖子,作者聲稱:所有人都不該使用 c++ 標準庫里的make_heap
函式,因為,幾乎沒有人是在正確的使用它。我立即在心裡大罵這是多麼荒謬的斷言,因為任何人只要上過基本的演算法課程,都會知道如何正確的使用make_heap
。然而,這讓我開始思考,如何看待那些不知道堆(heap)為何物的程式設計師,更甚者,那些並不需要知道它為何物的程式設計師。
最終,我認定,這兩種人,我們仍然應把他們稱作程式設計師。
當我還是個毛頭小伙的時候,很多我聽到的關於如何正確的程式設計的建議其實都是非常錯誤的。經過這些年,我發現,大多數這樣的這建議,其本身並沒有問題,只是缺少相應的上下文環境。當今的這波創業浪潮給人們造成了乙個有趣的印象,導致很多的程式設計師都開始相信「效能不是問題」,這個就是一種充滿風險和牽涉微妙的上下文環境的建議,尤其是當面對會出現意想不到的相互影響的複雜架構時更是要警惕。這種缺乏上下文的耳耳相傳的只言片語的流行是乙個很普遍的問題,而事實上,它是乙個更深層問題的簡單表象。
程式設計師這個詞涵蓋了乙個異常寬泛的技術譜系和層次。從縱座標上講,乙個程式設計師,從能僅僅會用 vbscript,到能為因特爾 cpu 寫編譯器、為航空公司開發系統運算軟體。從橫座標上講,他可能是專長於資料庫,或能從 cpu 指令級別調整效能,或能開發並行處理庫,或製造物理過程引擎,或做處理,或創作 3d 模型,或寫印表機驅動,或使用 coffeescript,html5,和 ajax 來開發**應用,或使用 nginx 和 php 開發 lamp 架構 web 應用,或他能編寫網路應用庫或能做人工智慧科研。他們都是程式設計師。
這太荒唐了。
我們的世界正在被軟體吞噬。在將來,程式設計將會和數學和語文一樣成為基礎課程。我們將會有四個r——reading (閱讀), 『riting, 『rithematic (數學), 和 recursion (遞迴演算法)。到時,如果再說某某人是乙個程式設計師將會是一句廢話,因為超過 10% 的人口將會具有一定水平的程式設計能力。「程式設計師」這個詞涵蓋了如此多的內容,如果你稱自己為程式設計師,就好象稱自己為「科學家」而不是「物理科學家」。我們能有其他稱呼嗎?有人試圖做了這方面的嘗試,指出乙個程式設計師和乙個計算機科學家直接的不同之處,但說的毫無價值,根本無法區分我和乙個從大學畢業的人工智慧博士生之間的區別。他懂得多維數學分析,用函式式語言計算,這些是我不通過數年的研究是無法理解的。而我能夠寫出速度超快的,靈巧的 c++ 或 hlsl 匯程式設計序,能變戲法似的處理和變換矩陣,在螢幕上繪出漂亮的影象。我說的這兩種情況都是出於完全不同的原因下的極其複雜的工作,他不能完成我的,我不能完成他的。一種操作對乙個人很熟練,對另外乙個人卻是困難的。但我們都是程式設計師。只是在我們各自的領域裡的程式設計師,我們是影象計算程式設計師或人工智慧程式設計師或[***]程式設計師。
你知道我們為什麼會有這樣毫無目標的語言論戰和毫無意義的關於哪一種語言更好用的爭論嗎?你知道為什麼人們——除非在自己的小圈子裡當「xx 方法」對所有人表示同乙個意思的時候——永遠不能在這些問題是達成共識的原因嗎?因為我們賦予了自己過多的內容。我們把自己看成了由數個程式設計師組成——每個都專長於某項東西,我們錯誤的認為我們的觀點能夠適用於我們的專長之外的領域。我們是工業工程師卻試圖想告訴化學家如何進行他們的試驗。我們是建築師卻試圖想告訴英語專業的學生如何創作一篇**——只是因為我們都用了大量的紙張。
這種態度深深的根植於計算機科技界的核心深處。電腦科學的主要目的是用一些基本資料結構來幫人們完成以前需要人做的所有事情。如果你認為這完全是程式設計的事,那你就錯了,這是不可能的。我們忘了,這些資料結構只是我們在神奇的資料計算領域需要的,我們忽略了,對於不同的實現,需要對完全不同領域的程式設計,針對的是完全不同的使用者。donald knuth 深知理論和實現之間的不同之處——我們需要認真的理解這些關於理論和特定實現的忠告之間的區別。
如今,你已經不能因為乙個人是程式設計師,你就可以隨意讓他開發任何東西。說乙個程式設計師在開發軟體,就好像是說乙個科學家在做科學研究。不同之處是,植物學科學家是不會去設計核反應堆的。
程式設計師何苦為難程式設計師
職場上有很多辛酸事,很多合夥人出局的故事,很多技術骨幹被裁員的故事。說來模板都類似,曾經是名校畢業,曾經是優秀員工,曾經被領導表揚,曾經業績突出,然而突然有一天,因為種種原因,被裁員了,想申訴,想求解釋,結論是,能力不匹配,未能與企業一起成長云云。這有兩說,一說是企業冷血,卸磨殺驢,嫌棄老人成本太高...
程式設計師的歌《簡單 程式設計師》
歷經三個月,由chinajwork及哈爾濱飛信科技開發 發起,聯同哈爾濱騰飛吉它 學校共同創作的 簡單程式設計師 一歌完成,歌曲以簡捷優美的旋律,唱出了無數it從業人員的心聲!是的,簡單程式設計師,這也是jwork的使命!聽吧,簡單程式設計師,這是我們程式設計師的歌!右鍵另存為 歌詞如下 簡單 程式...
程式設計師人生 優秀程式設計師的法則
本文章的指導法則,使寫 更高效,更容易維護,並且bug和缺陷更少。不要重複 don t repeat yourself 程式設計中乙個最根本的原則就是要避免重複。許多程式設計結構 比如迴圈 函式 類等 的存在就是為了避免重複。每個在程式中有意義的功能片段應該只在源 的一處地方實現。簡單性 避免複雜性...