数据分析与知识发现
    主页 > 综合新闻 >

计算机基础知识对程序员来说有多重要?“脚本

前言

重度依赖计算机技术的互联网行业发展到今天,计算机的火热程度大家是有目共睹的;

早些年还只是局限在计算机领域的互联网行业,到今天已经泛化成互联网+、oto、互联网金融、智慧零售、智慧城市等热门话题渗透进老百姓的生活当中了;

众多的传统行业在互联网技术的加持下,正迸发着新的生命,薪资待遇水涨船高,吸引着更多的优秀人才前仆后继,人才的规模效应也促使着行业迈着更大的步伐发展;

当你看到编程语言编进教材的时候,看到一个文科生也在编写程序进行数据分析的时候,你就会发现,这是一个万物皆互联网的时代,也是一个全民编程的时代;

而在这个全民编程的时代中如何有效提升自己,让自己在激烈的竞争环境中脱颖而出,我想这是大家都在思考的问题。

普通程序员VS优秀程序员

计算机安全行业有一个著名的词叫做“脚本小子”,指的是只会使用一些别人的工具扫描一些别人已知的漏洞的“黑客”;

“脚本小子”常常从某些网站上复制脚本代码,然后到处粘贴,却并不明白其中的方法与原理;

因而“脚本小子”通常形容一些基础不扎实的入门黑客,“脚本小子”和“黑客”是计算机安全领域相去甚远的两类人群,安全领域尚已这样,而更为普遍的软件开发领域亦是如此。

一个开发者的基础扎实与否,在和他合作的时候就能看得出来。

而关于普通程序员和优秀程序员,最大的区别就在于此,基础不扎实的程序员,其技术的天花板是很低的;

当达到一定水平之后,往往后面的发展,都只会原地踏步,徘徊不前,而晋升往更深的领域,计算机的底层基础知识,是必不可少的。

常常有些同学有这样的疑问,我是学习前端的、我是做客户端的又或者是我是写Java的等等,这样有必要学习编程基础知识吗;

感觉这应该是很多同学都有过的思考,“我是专长于某种语言的,应不应该学习更加底层的知识?”

我认为只要从事计算机编程的同学都应该补充或者学习一些计算机的基础知识,优秀的程序员不应该把自己局限于某种语言,而是应该放眼去看整个领域。

当某种语言的使用到达一定阶段之后都会追求更高层次的阶段去发展,那往往意味着会更接近底层一些。

举个例子:当你使用某种语言,你是否了解这种语言对对象内存的管理方法、是否了解语言的线程、进程和锁同步等机制呢?

而这些内容都可以在操作系统中补全,当了解了操作系统之后,学习新的语言时理解这些内容只不过是对知识的迁移和理解,原理无需重复学习。

当然,这样的例子还能找到很多,关于计算机网络、关于计算机组成原理等等。

因此只要往更深层次去发展的话,就应该补充相关的底层原理,这些通用的基础知识,对你日后学习其他知识会有很好的帮助,也是你“打怪”晋升成为更加优秀的自己的必由之路。

工作中的基础知识

互联网大厂,不管是“行业老大哥”百度、腾讯、阿里还是“行业新星”美团、滴滴、拼多多、头条等等,在人才招聘的时候总更青睐于基础扎实的人,一方面是大部分高校毕业出来的同学项目经历都比较少,考察基础知识能够容易筛选合适的人选;

而另一个方面则往往是基础扎实的人接受能力更强,能够更快学习新的知识,更能够满足企业的需求。如果把时间线拉长到五年甚至十年去看,去观察一些经验丰富的大厂从业者,你会发现那些基础扎实的开发者总是能够在新的技术或问题面前更容易的抓住重点;

比如学习Go语言,当基础薄弱的人还在纠结语法的时候,他们已经在调研goroutine和channel了,又比如在调研框架,当部分人还在看API的使用文档的时候,那些基础扎实的开发者已经在了解架构了,扎实的基础加上日积月累的效应;

所能带来的差距是很大的,因此互联网大厂都更青睐于基础扎实的人才。

相信大部分同学在笔试或者面试过程中都有被考察基础知识的经历;

就比如编程语言中关键字volatile的作用就常常作为面试官考察应聘者基础知识的题目,对于一些涉及Java的面试,相信也有被问到volatile对比synchronized的区别等等的问题,咋一看还以为是考语言层面的知识。

其实volatile这个关键字虽然从表面来说只是一些编程语言中用于声明变量的关键字,不少同学也能说出关于其中的一二;