天天看點

想稱自己是黑客的人,就進來看看再說

  "黑客"必備知識和成長之路

經常有人問我怎樣才能成為一個真正的黑客,我想一個黑客必須具備以下知識,從Level 1到Level 5循序漸進。Level 1到Level 5的難度是按倍數增加的,如果假設Level 1的難度系數是0.1,那麼Level 2的難度系數就是0.2,Level 3, 4, 5的難度系數就分别是0.4, 0.8和1.6。

Level 1:

入門階段

C/C++:level 1的"黑客",必須能夠熟練使用C/C++,希望入門者不要被它吓跑。

數學:數學是電腦中必不可少的,無論是程式設計還是底層的開發研究。從一開始就掌握數學的思維,對于以後會有很大幫助。

Level 2:

打基礎階段

Computer System:要掌握彙編,了解計算機記憶體、CPU和指令之間的關系,還要了解計算機硬體的一些基本結構和原理。

Data Structures:主要是用C/C++實作各種算法,例如Linked list, tree, queue, stack, heap...,如果你能實作以上所有結構,那麼你的C/C++算是精通了。

Object Oriented Programming:明白面向對象的原理,要知道除了C++,還有Java之類的面向對象語言可以選擇,面向對象對于你以後開發大型程式還是很有幫助的。

Level 3:

深入學習階段

Systems Programming:了解如何設計和實作系統軟體,重點是線程的同步和分布式系統。

Computer System Architecture:非常偏向硬體,要深入了解計算機性能、指令工作原理、Datapath、Pipeline、記憶體Cache,虛拟記憶體等的細節。并能用硬體描述語言(例如:VHDL)來設計簡單的硬體。

Network Communications:了解網絡通訊的原理和幾種常用協定,并能用Socket程式設計來實作這些理論或協定。

Programming Languages:分析各種類型程式設計語言的優缺點,為以後寫編譯器打下基礎,這些程式設計語言可以分為函數語言,邏輯語言,面向對象語言等。還要了解編譯器前期工作的實作方法,例如Lexical, Syntax, Semantic分析。

Level 4:

實戰階段

Compilers:實作真正的程式設計語言,能夠把源程式編譯成彙編語言,并生成可執行檔案。

Advanced Communications and Network Systems:掌握TCP/IP的細節,并研究各種不同網絡的特點、實作方法(特别是MAC層的實作方法)和發展前景,例如Wireless, SONET, Ethernet, ATM等。

Advanced Computer System Architecture:設計并實作一個簡單的CPU,包括指令集,架構圖,優化算法等。

Advanced Operating System:設計并實作一個能在普通PC上運作的作業系統,包括程序管理,I/O,記憶體管理,檔案管理等。

Level 5:

研究創新階段

Level 5是Level 4的一個升華,當你掌握必需的知識和實踐之後,你就要自己從事研究新技術了。如果研究成功,就可以在國際上發表你的論文了,這時你就不僅僅是一個"黑客",而是一個令人尊敬的專家了。

總結

當然,計算機不止以上内容,例如還有軟體工程,AI,人機互動,多媒體,資料庫等。如果你想成為一個真正的黑客高手,那你起碼需要達到Level 4階段。但我真心希望你能向Level 5邁進,不要滿足于應用别人已有的技術,那樣始終隻能跟在别人後面。以上隻是我個人意見,最後,如果有人問我是黑客嗎?我會肯定的告訴他,我不是。

繼續閱讀