以计算机科学的角度谈谈科班出身和非科班出身的一些看法

在当今的计算机行业里面从事计算机软件,硬件等设计开发工作的人其实有相当一部分大学时所学的专业并不是计算机科学,我们在此暂且简单的把这个行业里面的人分为学习计算机专业的科班,以及其他非科班两类。本文意在简单讨论一下对于不同问题的想法,这两类人到底会有什么区别,无意触及任何人,所以请不要对号入座。

当然科班出身的也存在一部分没有好好学的,不在本文讨论之内,非科班出身的也有自学了相关的全部知识技术,而且理解的相当深入的人,那么本文也将这类人算成是科班出身的。

想写这篇文章已经很久了,因为看到了太多的人,对于某个具体领域的想法,包括提的问题都是非主流的,根本不符合计算机科学的思考方式,人说没吃过猪肉,至少也要看看猪跑,然而好多人,好多会,好多问题,浪费了太多的时间。

先说说作者自己的亲身经历吧,笔者在国内一所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!

时间: 2024-10-08 07:48:42

以计算机科学的角度谈谈科班出身和非科班出身的一些看法的相关文章

【NLP】基于机器学习角度谈谈CRF

基于机器学习角度谈谈CRF 作者:白宁超 2016年8月3日08:39:14 [摘要]:条件随机场用于序列标注,数据分割等自然语言处理中,表现出很好的效果.在中文分词.中文人名识别和歧义消解等任务中都有应用.本文源于笔者做语句识别序列标注过程中,对条件随机场的了解,逐步研究基于自然语言处理方面的应用.成文主要源于自然语言处理.机器学习.统计学习方法和部分网上资料对CRF介绍的相关的相关,最后进行大量研究整理汇总成体系知识.文章布局如下:第一节介绍CRF相关的基础统计知识:第二节介绍基于自然语言角

非科班出身转行IT难吗?好找工作吗?

大家都知道,IT行业是出了名的高薪行业,很多传统行业/专业的小伙伴由于薪资低.就业机会少而有了想转行IT的想法. 他们通常有以下几个问题: 非计算机专业0基础能学会技术吗?非计算机专业如何转行到IT行业?非计算机专业怎样学习编程开发?学习以后好找工作吗? 总体来看,大家对于跨专业学习IT领域的技能存在很多疑虑和疑问. 没错,今天小千就来为你解疑答惑! 1.非科班出身能学会编程吗? 首先,答案是肯定的.非计算机专业转编程的大有人在.兴趣是最好的老师.大家都知道,坚持不懈地学习任何东西都需要兴趣去支

从JVM内存管理的角度谈谈JAVA类的静态方法和静态属性

在JVM中,内存分为两个部分,Stack(栈)和Heap(堆),这里,我们从JVM的内存管理原理的角度来认识Stack和Heap,并通过这些原理认清Java中静态方法和静态属性的问题. 一般,JVM的内存分为两部分:Stack和Heap.(stack和heap都是位于RAM中的) stack(栈)是JVM的内存指令区.stack管理很简单,push一定长度字节的数据或者指令,stack指针压栈相应的字节位移:pop一定字节长度数据或者指令,stack指针弹栈.stack的速度很快,管理很简单,并

从软件工程的角度解读任正非的新年公开信

转自:https://www.cnblogs.com/dotey/p/10220520.html 昨天被任正非的那封<全面提升软件工程能力与实践,打造可信的高质量产品>的公开信刷屏了,作为一个软件工程专业科班出身的软件开发从业者,自然是引起了我(@宝玉xp)的好奇,仔细阅读之下确实让我大吃一惊,看似八股官方文,但细看之下是作者对于软件工程的理解确实非常深刻,各种专业术语信手拈来,比喻恰到好处. 我对华为的研发其实一直挺好奇的,从传统的硬件公司,到现在软硬件齐头并进,华为手机销量都已经超过了苹果

关于AngularJS 1.x 从Flex程序员角度谈谈我的一些看法(一)

用AngularJS开发了2个很小的项目,多少积累了点经验,这里稍微谈下我一个Flex程序员的角度对它的看法. 你可能会有疑问什么是AngularJS?为什么我们要用它?它有什么用 1:它是google开发的一套前台MVC开发框架,这个框架的健康度很好,社区完善,资料也好找 2:一般说到JS框架,我们第一个想到的就是JQuery.AngularJs其实和它的前驱者JQuery做着差不多的事情,都是对html元素进行动态操作. 两者最大不同之处在于理念,JQuery是操作Dom对象的一套强大工具,

从浏览器渲染的角度谈谈html标签的语义化

大家都看过报纸或者杂志的排版,里面最主要的一些概念,就是版面的分割,标题的分级等等,web页面作为一种信息展示的形式,其基本的排版形式是从报纸杂志等传统媒介借鉴过来的,看一看html一些常用的tag就可以知道,比如h1-h6,p,img等等. html的语义化从字面的意思来看,就是你选用的tag要尽可能的符合它适用的场景.为什么要语义化呢?可以从浏览器开始说起,报纸和杂志作为信息的载体是通过印刷机将其呈现在大众面前的,同理html是通过浏览器的界面将其展现在用户面前的.html页面展现在我们面前

从WM_DISPLAYCHANGE消息的角度谈谈分辨率

众所周知,WM_DISPLAYCHANGE是当Windows显示器分辨率改变之后发送给所有的窗口的消息.但是不知道你有没有想过,显示器的分辨率不是固定的吗?为什么会有这条消息呢? 这里就要说一下逻辑分辨率和物理(设备)分辨率了: 我们说某个品牌的显示器的分辨率为80DPI(Dots Per Inch),是指在显示器的有效显示范围内,显示器的的显像设备可以在每英寸荧光屏上产生80个光点.举个例子来说,一台14英寸的显示器(荧光屏对角线长度为14英寸),其点距为0.28mm,那么:显示器分辨率=25

从法学的角度谈谈“接口”--基于C#

接口(interface),这是C#的基础之一,是实现多态的必要工具. 然而,由于中文中"接口"的多意性,使得我在学习的时候陷入了一个误区,大大困扰了我的学习进度. 因为我在学习这个知识时,第一反应的是下面这种接口: 看网上的视频,老师们首先举的例子也是这种.然而,这种举例是不恰当的.因为,这种接口英文是input/output,也就是所谓的I/O.顾名思义,这种接口的主要作用是传递输入和输出信息.不同的I/O实际上是规定了不同的连接方式和信息传播方式. 那该怎么理解C#中的接口呢?最

关于AngularJS 1.x 从Flex程序员角度谈谈我的一些看法(二)

再来看看关于Angularjs其它一些特性 1.依赖注入这个是老概念了,Angularjs通过参数的形式把实例传递到调用的模块中去,例如下图 灰色的Service 实例就作为一个参数传递到业务逻辑Controller中去的,从而分层,这种方式在Flex Parsley中也是非常常见的,只不过Flex中常用是先用config文件来定义注入关系. Angularjs中又n种注入声明的方法,controller filter directive factory config run.前三个分别用于An