【关注】黑客必备知识和成长之路
经常有人问怎样才能成为一个真正的黑客,我想一个黑客必须具备以下知识,从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迈进,不要满足于应用别人已有的技术,那样始终只能跟在别人后面。
经常有人问怎样才能成为一个真正的黑客,我想一个黑客必须具备以下知识,从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迈进,不要满足于应用别人已有的技术,那样始终只能跟在别人后面。