昨天有网友问我,他原先没有学过奥数,问能不能当系统架构师?其他也有人有疑问,是不是应该先学数学,然后在考研的时候转入计算机?
我先说一下结论,没有学过奥数,完全可以当系统架构师。如果真的喜欢数学,可以先学数学再转计算机;如果数学一般般,不如直接读计算机。当架构师,学数学并不是必须的。
数学是重要的
确实,数学是计算机的基础之一。计算机的先驱,图灵就是一位数学家。我们如果要看图灵奖,也就是计算机领域内的最高科技奖,计算机界的诺贝尔奖,很多获奖者都有数学背景。
比如,第一届图灵奖得主,艾伦佩利是计算机程序语言的先驱。他本科学的是化学,硕士和博士是数学。可以说,有了数学家的参与,我们的程序语言才这么严谨、科学。
两位得图灵奖的女科学家,朗西丝阿伦,2006年的得主,她是数学系毕业的。还有2008年得主,芭芭拉利斯科夫也是数学专业的毕业生。
原先北大在计算机方面有位院士,王选,他的研究生很多都来自于数学系,觉得搞数学的人搞计算机灵,好。
因此,学数学再去研究计算机,那当然很好,算是降维打击。
不过,这并不是必须的。
IT公司的首席架构师并不必须要数学
我们看看国内几家著名IT企业的系统架构师,或者CTO的履历。
阿里巴巴的王坚。王坚是整个IT企业的第一人,被评上了工程院院士。要知道,百度的李彦宏以技术出名,也没有评上,可见王坚的水平是很不错的。
王坚是阿里巴巴的首席架构师,阿里巴巴整个集团的首席技术官,阿里云的总裁。云技术是我们快捷、便宜、大规模使用互联网的一个非常重要的支撑力量。像亚马逊老板贝佐斯当世界首富,核心竞争力是亚马逊云。而阿里云是可以跟它相竞争的,所以技术含量也很高。
那王坚是什么出身呢?王坚是学心理学的,在跳槽去互联网公司之前,是杭州大学心理学系主任,心理学教授。不过有些心理学系对数学要求也是比较高的,但再怎么高,也就是一两门数学课,不需要跟数学专业一样学。
李彦宏做的是搜索,应该说数学含量非常高了。不过李彦宏在北大学的是图书情报专业,好听点的说法是信息管理系统,到了美国,转了计算机专业。
微信创始人张小龙,是华科大的电子信息专业毕业的。
快手的创始人宿华和程一笑,分别毕业于清华大学和东北大学的软件工程。
这些技术巨佬们的简历上都没有太多的数学背景,不过,普通人干嘛非要学数学之后再来学计算机呢?
系统架构师的工作
先说一下系统架构的定义,这是IEEE给出的:
软件系统架构是根据具有参考意义的实践而定义出来的.主要表述了一个系统的基本组织结构、基本组成构件和相互的关系,以及构件于外部环境间的关系。同时,软件系统架构为后续的设计和架构演化提供了指导性原则。
这句话很拗口,我稍微解释几句。里面的几个关键点:系统、构件、环境、相互关系。单个小东西叫构件,这些联系起来叫系统。系统内部的构件之间有各种关系,也就是各种规则。系统跟环境还有交互功能。
这个跟建一个大楼差不多,巨大的软件可能跟建设一个建筑群差不多。大楼内部需要力学知识,对软件来说,需要数学知识。大楼的功能、外部表现需要美学、心理学、文化、社会学等知识。软件的功能也是这样。
所以,作为一位建筑师需要学一点力学知识,但并不需要使劲学力学,把力学摆在至高无上的地位。架构师也是这样,有数学知识,当然非常好,但平常计算机专业的那些数学知识也是基本够用的,大家不要过于害怕。
算法工程师和人工智能工程师
类似的,我再讲一下算法工程师和人工智能方面的研发人员。
在计算机的早期是没有算法工程师的,因为在编程的时候必须要考虑算法的实现,现在的开发软件做得很好,所以普通级别的码农的要求比早期的码农低了不少,不需要自己来编写这些算法,用现成的模块,调个参数就可以了。
算法工程师听着好像都是数学,其实根本来说,就是线性代数、概率论、数据结构这些内容。现在机器学习方面的比较多,机器学习的基础是统计、向量机、人工神经网络理论。
在机器学习上面的是人工智能。人工智能比机器学习的范围更宽,至少要包括语音识别、图像识别、模式识别等,这些涉及的数学不单单是离散数学,还包括了连续数学。
人工智能的数学要求看着更高,不过大家也不要害怕。我们可以看看华为的天才少年计划里的那些天才少年们。他们大部分都是搞人工智能,但基本没有数学系毕业的,基本都是计算机系、自动化系等方向。
像第二批名单中的华科大博士张霁,本科在二本,武昌理工学院,硕士在武汉邮电研究所,博士在中科大,一直是计算机专业。
所以,如果大家想要做计算机方面的工作,直接读计算机专业毫无问题,最直接、最省事的方法。读了数学转计算机,当然更好,也许会更有后劲,对某些问题的理解更深刻一些。