以計算機科學的角度談談科班出身和非科班出身的一些看法
在當今的計算機行業里面從事計算機軟件,硬件等設計開發工作的人其實有相當一部分大學時所學的專業並不是計算機科學,我們在此暫且簡單的把這個行業里面的人分為學習計算機專業的科班,以及其他非科班兩類。本文意在簡單討論一下對於不同問題的想法,這兩類人到底會有什么區別,無意觸及任何人,所以請不要對號入座。
當然科班出身的也存在一部分沒有好好學的,不在本文討論之內,非科班出身的也有自學了相關的全部知識技術,而且理解的相當深入的人,那么本文也將這類人算成是科班出身的。
想寫這篇文章已經很久了,因為看到了太多的人,對於某個具體領域的想法,包括提的問題都是非主流的,根本不符合計算機科學的思考方式,人說沒吃過豬肉,至少也要看看豬跑,然而好多人,好多會,好多問題,浪費了太多的時間。
先說說作者自己的親身經歷吧,筆者在國內一所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!
最后借用侯傑老師的一句話結束本文:勿在浮沙築高台