非计算机专业要学多少计算机知识?

大家好,刚来到博客园,先和大家打个招呼,这厢有礼了!

我是自动化专业出身的,对于软件开发可以说是一窍不通。但从多年学习的经验来看,我还是想谈谈非计算机专业需要掌握哪些计算机知识,为了缩小讨论的范围(敝人也写不出有内涵的长文),姑且局限在软件范围内吧。这里说的软件,主要还是指计算机语言(可能这种表达不太恰当,我也找不出更合适的)。于是,问题可以表达为:非计算机专业需要学哪些计算机语言?学到那种程度?

为了回答这个问题,我就拿自己读大学以来的经历谈起吧,并总结出我自己的几个教训,也可以说是几条经验。

教训1:语言要常用常新

刚上大学那会,基本上工科学生都是要学点计算机语言的,而且学得最多的是Turbo C。那时感觉还是相对简单的,学了一个学期,考试过了,后来为了找工作,考计算机证,就又学了一年(要考上机)。不知道自己学了什么,反正国家三级是过了(高手别见笑)。从这以后,计算机语言也就基本放下,以至于到现在,已然完全不清楚指针和链表用法了。虽说也不是完全忘记概念,但我现在绝对敲不出可以通过编译的代码。说起来,考级那会对Turbo C的了解应该也算可以,至少不看书能按照自己的回忆和理解写个简单的学籍管理程序。可到现在,本科毕业大概五年多了,连个杨辉三角也不会算了。所以,任何一门计算机语言,其实和任何自然语言一样,即使掌握得再好,再熟练,如果几年时间完全不碰,也会忘得一干二净。想再捡起来就难了。

教训2:不能浅尝辄止

读研究生以后,Matlab用的比较多了。要说Matlab的特性,还真是简单易学。其实本科阶段就有相关课程,但那时候也没好好学,而且教学重点在Simulink上。大家上机都是随便拉几个框图,看看虚拟示波器也就过去了,其实没学到实质性的东西,脚本就更没怎么用过了。但是因为Matlab这种脚本语言的特点,变量甚至不需要声明类型,所以几乎有些C基础的人一上手都能用来做些数值计算。我也是一样,几乎没看过什么教材,不懂就试。比如记不起取矩阵列或者行的命令了,就自己先定义个小矩阵,然后不同的命令试一试。一来二去,也就掌握了。后来还查帮助文档,示例代码拷过来稍微修改一下就开始用了。对于简单的问题,这么学倒问题不大,可后来要计算的问题越来越复杂,运算时间越来越长。硕士毕业那会,一个仿真常常要跑几个小时,可自己又没什么办法提高计算速度,只能干等。而且加上对库函数的不了解(不是科班学出来的嘛),常常自己花了好长时间写一个功能,后来发现人家一个函数就能搞定。所以,如果要学一门自己的工作学习中常用到的语言,就一定要想办法吃透,不要停留在能满足基本需求的水平上。找本好教材,快速读一边,也不要求全部理解,但至少要和常用特性混个脸熟,下次需要了会知道有这么个东西,查找起来会方便很多。

教训3:不要一门语言用到死

其实对工科学生来说,平时做数值计算,有个Matlab就足够了,各个不同的专业或许还有不同的行业软件。但千万不要在掌握了一门语言后满足于现状,尤其是所掌握的是比较专业的语言。像我个人,自从开始用Matlab后,觉得其他通用语言和自己就没什么关系了。曾经一度听到C++或者Java就好象是遇到了外国人,一说面向对象就感觉是在听玄学。而且那时候看通用语言开发人员,总觉得他们像魔术师,靠代码可以创造出千变万化的程序世界。自己一心虚,自然再没有勇气去学习其中的任何一种。后来,项目中涉及到了Java和其他语言,领导建议我学习一点(尽管不用我去写这些代码),可我仍然下不了决心。还是在老婆的鼓励下才开始鼓起勇气学Java(老婆虽不是程序员,但也自学过一点),下了些视频,看了本教材,又自己动手写了些小程序。哇,原来也没有那么可怕。加上学习过程中的一些扩展阅读,在业余时间自学一门语言不但没有加重工作负担,反而使自己对所从事项目的组成层次有了更深刻的理解,便于调整手头的工作以配合总体需要。经历这件事,我真诚的建议非计算机专业的功课同学们,精力有余一点要多学一门面向对象的通用编程语言,以后一定会用得上,磨刀不误砍柴工。

教训4:不要觉得网络和自己没关系

通常工科出身的同学们,很多会觉得做好手边的工作就好,网络对自己来说就是查资料和娱乐的地方,技术和自己关系不大。要是在十多年前,这样想准错不了,可越往后可能对网络应用的需求越大。即使你写的是单机运行的仿真程序,也有可能需要自动将仿真结果上传到服务器或者通过电子邮件发给同一研究组的其他人。如果不了解这些,就无形中失去了和别人交流的机会。

总结:

对于刚开始大学的生活的同学们,现在是最好的学习计算机语言的时机,对于已经毕业,甚至读研的同学们,现在也仍然不晚。毕竟,一门计算机语言比非线性系统理论或者离散数学要容易多了。所以,根据我的教训,下面几条建议同学们可以参考:1)广泛了解,最起码在各种不同的领域,比如通用,科学计算,服务器,数据库,网页等,每个领域了解一种语言(不是精通),每种花三四天学习一下就好,能自己学着写个小程序更好。2)选一门通用语言,尽量透彻掌握,这对学习其他语言的特性或者编程思想都有很大帮助。3)拓展视野,除了语言之外,相关的标准(当然也不全是标准),比如W3C,xml,CSS等也应该有一定了解。

以上是我个人这么些年来对计算机语言学习的一些想法,想法出自个人,再加上本人又是个开发菜鸟,难免存在不妥与错误,望同学们批评指正。

最后,希望所用每天在电脑前工作很久的朋友们(不论开发人员与否),都勤洗脸,多通风,少受辐射。当然想要生个女孩的除外,有报道称电脑辐射可以降低Y染色体精子的活性,当然这是后话。

posted @ 2010-09-12 16:39  我不容易  阅读(1293)  评论(0编辑  收藏  举报