【发展方向的选择】《计算机之路与绝望的人生》
《计算机之路与绝望的人生》
1、我曾想要不要以「软件工程、大数据、计算机应用技术」作为发展方向。比如按照用户需求开发一个网站、开发一个软件,等等。但是我想了想,应用层的东西会随着计算机行业巨头公司的技术规则变化而变化,很不稳定,得不断学习新出现的东西。这倒没什么,重点在于应用层是技术含量最低、能力要求最低的发展方向。我有些自命不凡,而且我的余生还很长,搞这种最低能的东西未免有些太屈才并且太浪费生命了。但是它符合了当前市场的需求,是最赚钱的发展方向;但是它又难度小、门槛低,人人都能掌握,所以市场竞争也很强,也可能赚不到多少钱。
2、我曾想要不要以「网络工程、信息安全、网络空间安全、网络攻防」作为发展方向。比如进行渗透测试、黑客,等等。但是我想了想,网络的本质就是一大堆的协议。那个东西没啥好研究的,用到的时候拿技术文档看一下就行。至于黑客攻防层面,它的技术前提是网络空间存在漏洞才能有用武之地。计算机科学技术的发展会不断修补漏洞,网络空间会越来越健壮,这个发展方向的路会越来越窄。而且电子信息工程、通信类专业的人在这类方向上更厉害,会被他们抢饭碗。
3、我曾想要不要以「操作系统」作为发展方向。比如独立开发出一个完整、全面、极高质量的操作系统。但是我想了想,一方面,操作系统涉及底层硬件。面对不同的计算机体系结构、繁杂变化发展着的硬件类型等等,会很难弄全硬件技术文档,而且学习难度也比较大。这个时候还不如去学嵌入式,好便于更加专业地把握硬件。另一方面,操作系统发展得太繁杂了。例如:Symbian;Java OS;Unix—>Linux—>Windows、Android,等等。整个发展历程当中出现了太多分支、太多版本和太多技术。有些已经年代太久远,很难弄到源代码、文献资料,等,进行学习了。另一方面,有些操作系统还不开源,压根就弄不到源代码,只能靠瞎猜、摸索,根本没法高效学习。
4、我曾想要不要以「嵌入式、嵌入式系统」作为发展方向。比如进行硬件裁剪开发、驱动开发、底层开发,等等。但是我想了想,嵌入式涉及底层硬件。面对不同的计算机体系结构、繁杂变化发展着的硬件类型等等,会很难弄全硬件技术文档。由于它可以批量复制性地生产,市场需求量小,进而导致这个方向是一个“高难度、高门槛、高能力、累死人,但却工资低”的发展方向。
5、我曾想要不要以「算法、机器学习、人工智能」作为发展方向。很显然,这个方向其实就是“数学在计算机科学中的应用”。它的知识内容很稳定,不会经常变来变去的,不会出现学了以后很快就被淘汰,白学了,的情况。而且它是一个“高难度、高门槛、高能力、累死人,但也工资高”的发展方向。但是,数学专业的人在这类方向上更厉害,会被他们抢饭碗。
➤终于,经过深思熟虑,我决定走「算法、机器学习、人工智能」这一发展方向。但是学习《算法》,需要学习一些语言,掌握一门面相过程语言和一门面相对象语言最为合适。为了让算法跑得更快,还要学习《编译原理》。针对特定的编译器还有特定的编译原理,以C语言为例,常见的有:《GNU GCC编译器编译原理》、《LLVM Clang编译器编译原理》,等等。然后还要学习《数据结构》。学习《数据结构》需要《离散数学》基础,因此我还要先学习《离散数学》。学习《离散数学》又需要《高等数学》基础,因此我还要先学习《高等数学》。对于机器学习、人工智能,还要学习《概率论与数理统计》。而且,如果还能够掌握《高等代数》、《线性代数》、《数学分析》,那就更好了!
●这样算下来,我至少需要学习如下知识模块:
《高等数学》—>《离散数学》—>《一门面相过程语言》—>《一门面相对象语言》—>《GNU GCC编译器编译原理》—>《LLVM Clang编译器编译原理》—>《数据结构》—>《算法》—>《概率论与数理统计》—>《高等代数》—>《线性代数》—>《数学分析》。
●然而此时,学完这些,我已两鬓斑白,暮年花甲,快要死了。