掌握一门编程语言 学会与机器交流
计算机科学是21世纪最具有活力的学科,几乎每五年就会演进到新的高度。从云计算、雾计算到量子计算;从虚拟机、容器到无服务架构(Serverless);从大数据到人工智能每一次的进步,都像一颗颗从万花筒中喷射出来的彩蛋,不停地砸在幸运儿的身上。迭代速度之快,跨越领域之广,以至于让众多学习计算机学科的学生们感到眼花缭乱,心猿意马,在不知不觉间就错过了那颗属于自己的彩蛋。那么,怎样才能在井喷的万花筒中抓住那颗属于自己的彩蛋呢?
《圣经·旧约·创世记》第11章记载:在洪荒时代,上帝为了阻止人类建设通天塔,于是让人类说不同的语言,使人类相互之间不能沟通。但是今天,随着计算机科学的普及,人类文明在机器语言的支撑下,正在逐步破解上帝的封印,打破沟通的障碍。如大家日常所体验,无论是中国科学家研究的语音识别算法,还是美国科学家研究的计算机视觉分析算法,编译成机器语言之后,它就可以毫无障碍地被其他国家的学者使用、完善,甚至衍生出新的技术。所以,计算机科学能在21世纪席卷各个行业的关键原因就在于它提供了统一的语言。机器语言让不同地域、不同行业背景的人都能借助它进行无障碍的交流和经验传承。所以,如果你想抓住计算机科学派发的彩蛋,首先你至少得学会一门编程语言,学会与机器交流,理解机器的想法,传递自己的指令,将计算机科学的优势全部释放出来。
如果要学习一门编程语言,应该选择C、Java还是Python呢?有两个基本原则可以参考:(1)如果研究方向没有特定编程语言的限制,那么可以参考编程语言排行榜来选择,因为选择排名靠前的开发语言,也代表了未来更多的就业机会;(2)同时掌握一门高级语言和一门脚本语言。
为什么需要同时掌握一门高级语言和一门脚本语言呢?这是因为高级语言封装相对比较少,更加原始。所以,它可以暴露更多计算机体系结构原理方面的内容。当你想驾驭它时,你就需要更好地理解计算机原理、编译原理、数据库原理、数据结构、算法等知识。因此,当你掌握了一门高级语言之后再学任何编程语言都非常简单。但使用高级语言进行软件开发会比使用脚本语言的效率低。例如,当你需要设计一个算法实现任意长度的两个整数相加时,如果你选择了用C语言来实现,则代码行数将超过1000行。因为你需要考虑整数长度、内存泄漏和溢出、字符串分割等问题。但是,如果你用Python语言来实现,就简单得多了。因为在脚本语言Python中,C语言面临的异常处理问题都已经经过打包调优,根本不需要软件开发人员去考虑,所以开发效率极高。
随着软件系统的规模越来越大、复杂性越来越高,软件项目团队的规模也在不断增加,项目沟通的复杂性也随之呈指数级上升。在此趋势下,学会团队协作、学会与人高效沟通就成为计算机专业学生必须具备的第二个能力要求。例如,在华为校招流程中的集体面试环节主要考查的能力就包括沟通与团队协同合作能力。
怎样才能提升团队协作与沟通能力呢?参与一个开源社区的项目,无疑是一个不错的选择。开源社区是一个开放的论坛,没有强等级约束,人与人之间的沟通和共识的达成往往依赖热情、专业素养以及优秀的谈判文化。值得一提的是,开源贡献者大多有着不同文化背景和不同语言,这进一步增加了沟通的复杂性与难度。所以一个优秀的开源社区贡献者往往具备如下特质:对编码有着极高的热情。因为开源社区的个人贡献者往往是自主、自发的行为,没有兴趣作为支撑,很难坚持下来。编码质量和编码能力卓越。如果编码质量和编码能力达不到相应水平,则提交的代码很难通过同行评审,无法合入到社区版本中。具备优秀的英文沟通能力。
所以,对于计算机专业的学生来说,如果能坚持参与到开源社区的活动中去,那么编程能力、沟通能力、社会事务处理能力都能得到实质性的提高。更重要的是它还能帮助学生构建起个人社会影响力。因为开源社区有着非常健全的“打怪升级”机制,所以它能非常客观地记录和评价个人对社区的贡献。而这些记录以及个人在参与开源社区项目过程中所积累的人脉,最终会成为自己步入社会非常重要的财富。
一款软件获得成功的决定因素很多,它不仅需要有优秀的创意、卓越的编程实现能力、稳定的质量、令人耳目一新的营销方案,还需要有深刻的市场洞察、分析与运营能力。而这些能力来自于分布在不同学期的各个课程训练中,课程中散列的知识点无法构成面、形成立体。而参加软件开发比赛,它会引导你将需求分析、系统设计、编码、测试、市场运作等原来散列的知识综合起来运用,帮助你构建起一个完整的项目开发与管理的知识体系。在参加比赛的过程中,你将利用需求分析软件去描述物理世界,用项目管理工具去搭建计划管理、进度管理、沟通管理、风险管理、变更管理等数字世界的框架,培养营销、路演等一系列专业能力。在实践活动中,你将融会贯通各个知识点,学会同时与数字世界和物理世界进行沟通、交流。
计算机作为一个超级工具,它的能量是有目共睹的。当这个工具掌握在想推动人类科技发展、想增加人类整体福祉的人手上时,它就能推动通讯技术的高速发展,丰富人们的沟通与生活;它也能帮助人们实现远程教育,抹平教育不平衡的鸿沟;它还可以为新药研发、基因测序提供强大的算力,帮助人类克服疾病的困扰。但如果这个工具掌握在P2P金融欺诈“创新者”的手中,它就只会成为发行比特币、莱特币、达世币等虚拟货币的平台;如果掌握在“想一夜暴富”的互联网创业者的手中,它就会成为传播恶搞视频、游戏、段子、虚假广告等毫无意义和价值但又大量消耗用户时间的载体;当AI可以作恶时,计算机就会成为被打开的潘多拉魔盒。所以,当计算机专业的学生学有所成走向社会时,一定要不忘初心,始终铭记为增进人类福祉而努力。这样,才能抓住那颗属于自己的彩蛋。