以计算机科学的角度谈谈科班出身和非科班出身的一些看法
在当今的计算机行业里面从事计算机软件,硬件等设计开发工作的人其实有相当一部分大学时所学的专业并不是计算机科学,我们在此暂且简单的把这个行业里面的人分为学习计算机专业的科班,以及其他非科班两类。本文意在简单讨论一下对于不同问题的想法,这两类人到底会有什么区别,无意触及任何人,所以请不要对号入座。
当然科班出身的也存在一部分没有好好学的,不在本文讨论之内,非科班出身的也有自学了相关的全部知识技术,而且理解的相当深入的人,那么本文也将这类人算成是科班出身的。
想写这篇文章已经很久了,因为看到了太多的人,对于某个具体领域的想法,包括提的问题都是非主流的,根本不符合计算机科学的思考方式,人说没吃过猪肉,至少也要看看猪跑,然而好多人,好多会,好多问题,浪费了太多的时间。
先说说作者自己的亲身经历吧,笔者在国内一所985高校获得了自动化的本科,信号处理相关的硕士和计算机的硕士。个人认为其中的区别还是很大的,自动化专业偏控制更宏观一些,信号相关的专业偏信号处理,算法设计,FFT,计算机专业的则更侧重于代码实现,机器学习方法等,据笔者所知,即便是这三个如此相近的专业都有如此大的区别,那么其他非科班出身的如果没有自学过相关的知识就去完成相关的工作,如何保证做得对,做得好呢。
这里举一个简单的例子,前几天有人在园子里面写了一篇文章谈了谈DNS的简单原理,对于计算机科班出身的人来说,这些应该东西应该是完全了然于胸的,比如在企业内网发现问题了,机器名字和IP对不上,或者对上了总是出问题,怎么去查找,怎么去解决这个问题呢?这时候就是这些原理性的东西发挥作用的时候了。
再举个例子对于WCF的学习,相信很多人都研究过,也看过很多园子里面的文章,但是自己研究的时候,或者遇到问题的时候还总是不知道如何下手,为什么呢?究其本质,基础的计算机科学的东西已经被人家认为是你必须掌握的东西了,所以人家是不会给你讲那些你不懂的地方的,直接就是切入主题,其实你学不会,并不是因为你不懂WCF,而是因为你缺少基础知识的掌握。其实我有时候就很讨厌这种书,因为不自成体系,初学者不适合阅读,这和老外的想法就完全不同,老外学的东西一般都是自成体系的。
再举个例子NODE.JS, 看下面一个简单的例子,JavaScript难么,不难,那为什么好多人还是如此简单的东西都理解不了呢?甚至有人认为搞NODE.JS的都是高大上?恐怕还是基础的东西没掌握吧?一个就连文科生都可以去写的很好的语言,你还觉得难么?
var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }).listen(1337, '127.0.0.1'); console.log('Server running at http://127.0.0.1:1337/'); To run the server, put the code into a file example.js and execute it with the node program from the command line: % node example.js Server running at http://127.0.0.1:1337/ Here is an example of a simple TCP server which listens on port 1337 and echoes whatever you send it: var net = require('net'); var server = net.createServer(function (socket) { socket.write('Echo server\r\n'); socket.pipe(socket); }); server.listen(1337, '127.0.0.1');
再来谈谈前端的东西,HTML, CSS, JavaScript, 这些及其简单的东西为为什么总是被人奉为神技呢?还是因为不懂球吧,呵呵。当然我在这里并不是说前端一无是处,一个好的前端一般都是有品位的,有艺术眼光,对于一些前端的东西有很多的经验性的东西。在这里笔者想说的是,不管我们干的是那一部分的工作,但是至少我们也应该知道其他的东西都是干什么的,不要盲目崇拜,认为干什么什么的都是NB的。AJAX, JQuery, Bootstrap这些东西只要你理解了基础,就会知道,这些工具,对他们只是工具,就像人类发明了机器代替手工一样,还是挖土,但是工具让我们生活的更舒服,效率更高。
总结
说了半天基础是什么呢?举例来说,计算机组成,编译原理,OS,Network, Datastructure, 信息安全和密码学等等,俗话说不积跬步无以至千里,在有时间的时候补一补这方面的东西说不定会有很大的收获。在一个浮躁的世界上,可能好多人根本还没学会跑就已经开始跑了,但是无所谓,you are never too late to learn!
最后借用侯杰老师的一句话结束本文:勿在浮沙筑高台