非计算机专业出生的程序员,在编程技术上有什么差别?
发布网友
发布时间:2024-10-21 17:32
我来回答
共1个回答
热心网友
时间:2024-11-23 20:29
1.有内存概念,科班的人编程一般都知道自己在什么时候需要跟内存打交道,什么时候不需要,而非科班的人,大部分都是功能导向的,很多人不理解内存在计算机科学里面的重要地位,像python这样的语言,你其实大部分时候看不到内存,跟你打交道的是list呀,map呀这些数据结构,你在写code的时候一般都不会考虑他的内存情况。
2.不会被局限到框架中,大部分培训班出来的人,都是学了一门语言加框架,所以他一般就是背的这些东西,但是不理解,比如典型的web框架,尤其以前jsp时代,好多非科班的人,捧着一本厚厚的jsp书跟查字典一样学这个东西,非科班的人容易被某个框架局限住。而科班的人一上来就知道所谓框架不过是人家写好的code,你理解他在做什么就可以了。
3.对操作系统的理解,这一点上很容易看出科班跟非科班的差距,大部分非科班的人看到的都是程序呀,语言这一层面的,但是科班的人,如果操作系统学的不错的,他关注的其实是对机器的抽象,他知道我们要run一个程序,需要这么一些东西,包括进程怎么管,内存怎么管,io怎么管,网络怎么管,这样对于编程来说,你其实拿到的是什么,是一个进程管理器的句柄,一个内存管理器的句柄,一个io管理器的句柄,一个网络管理器的句柄,有这几个功能句柄,你就可以操作这个机器了。
4.再进一层是缓存,这个可能需要有工程经验的科班人士才会有的意识,实际上计算机体系结构,只有一个东西就是缓存,跟上层应用相关的cache最典型的就是python里面的迭代器。弄明白这个,很多架构上的事情你才会明白,比如数据库有一个cache,搜索引擎有cache,你做的所有的优化,基本上都是跟cache相关的。
5.抽象的意识,这个也需要写过很多实践的code才能明白,跟科班可能关系不是很大,跟悟性有关,有的人很笨,无论是不是科班,他就是悟不到这一块,有的人很聪明,无论是不是科班,只要他写过一些code,你点拨他一下,他自然而然就知道什么时候该做什么样子的抽象。