程序員、黑客與開發者究竟有何區別?這個問題往往會引發踴躍的討論與辯論。但是我看到的很多說法往往至少在一個重大方面是有瑕疵的,所以在此我愿給出我的定義,希望這個定義能夠更準確些。
- 程序員是能夠通過操縱計算機代碼解決問題的人。他們的技能水平可高可低—從掌握基本腳本的入門級到可利用任何一門語言的絕對巫師都算是。
- 黑客是做東西的人。在本文背景下,是指通過對計算機編程做東西的人。這是對這個術語的原創、純粹的定義,比方說,你有了一個想法以后就設法 “破解” 某個東西讓它可以工作。這個詞也可用到修改東西使其功能發生重大改變的人身上,但是不像前面的定義用得那么多。
- 開發者是正規培訓的程序員。他們并不僅僅要解決問題或者創造東西,而是按照一套設計和實施原則去做事。這些事情包括性能、維護、伸縮、健壯性以及安全等。
簡而言之,這三者都利用代碼去解決問題。程序員是一個涵括性術語,帶有問題解決者的含義,黑客是創造者 / 多面手,開發者是正規培訓的程序員,他們不僅解決問題,而且是采用(很可能是通過正規教育學到的)結構化和按照規定的方式去做解決問題。
關系
一個人可以是上述三種角色的組合。以下就是這三者的相互關系:(參見下面的維恩圖)
- 黑客和開發者都是程序員。
- 許多程序員,甚至開發者的創意都不足以被視為是黑客。
- 許多程序員,甚至也包括黑客,其教育程度或者經驗均不足以被看作是開發者。
理想情況下一個人當然想同時成為這三種角色,比方說足夠有創意成為一名黑客,受到的正規訓練和經驗足夠多可以設計軟件而不僅僅是破解東西。
不過即便你不是很有創意,并且 / 或者缺乏教育以及 / 或者經驗來正確開發大規模應用,你仍然應該對自己是一名程序員感到自豪。利用代碼解決問題本身就是一種超級能力。
注釋:
- 黑客的類型很寬泛,可應用到任何領域,不僅僅是計算機。而本文主要是針對軟件類型。
- “coder”基本上等同于程序員。
- 破解往往跟質量差相關聯,但并不總是這樣。這是因為破解通常都是大刀闊斧一想到就開干效果最好而不是一點點的慢工出細活。在黑客也是開發者或者雖然不是開發者但還需要盯住設計和質量的情況下,事后回過頭來看看自己的創作并且解決存在問題幾乎是免不了的。
- 確定誰可以叫做黑客,誰不能被稱為黑客是一件認知見仁智者見智的事情。大都同意的基本規則包括 1)你得做出 1 件或以上大家覺得有用的東西,2)其他黑客覺得你是黑客。
- 在安全界,黑客還意味著多件事情。對于測試者來說這通常意味著這個人理解系統并且能攻克其安全控制。不過頂級安全對黑客的定義要更加純粹,比方說創建了供他人使用的安全軟件或工具的人就是黑客。
- 在流行文化里面,黑客意味著計算機犯罪。在安全界此類演員往往被稱為是 “攻擊者”。
- 著名程序員,同時也是最早的計算機社區名人之一的 Eric Raymond 是這樣定義黑客的,“聰明、有創意、思想開放,享受問題解決和學習,樂意分享知識高于一切的人。”
- “軟件工程師”等同于開發者。意味著受到過有關軟件架構、設計的正規教育以及必要的預教育。
本文翻譯自:
控件產品咨詢與定制服務,請聯系
標簽:
圖表程序員
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn