学习计算机科学还是电子工程

文章来源:http://article.yeeyan.org/view/73774/39023


很多喜欢编程的学生想要去学习计算机科学专业. 编程和上大学学习计算机科学专业有是什么关系? MIT的一位教授为一位热爱编程的高中生解答了他的疑问 -- 学习计算机科学还是电子工程?教授的回答是什么?请看正文.

学习计算机科学还是电子工程?

因为你既在MIT的计算机科学专业和电子工程系教过书,我想知道你推荐我学哪一个专业,计算机科学还是电子工程?

我是一名加利福尼亚的高中生. 大约在4年级的时候,我有了第一台486电脑并且自学了QBASIC.从那时起我就对计算机科学感兴趣.从此以后,我学习了C,x86下和一部分68HC12下的汇编语言,和其他编程语言: perl, tcl, php, 等. 现在应该很容易再捡起这些语言来用. 我已经编了一系列程序,有游戏,有简单的操作系统(驱动程序,和我自己制作的硬件), 大多数像是DOS那类的东西,如果你称在这个保护模式的世界里DOS为操作系统的话. 我认为,我非常擅长编程.

我想不久我就会去大学学习(我申请了MIT -- 嗨,也许我会碰见你). 但是我在究竟是学计算机科学还是学电子工程上有一点难以做决定. 我做过一些电子方面的东西(大部分是数字的),有简单的电路还有比较复杂一些的数字电路用到了CPLD之类的东西.我同样非常喜欢电子,至少不亚于编程.但是我觉得我做电子不如在编程方面优秀,其实只不过是因为我没有花那么多的时间在这上面(还有就是做电子要花很多钱).

现在的问题是,我已经学了一点点大学阶段的计算机科学系的东西.并且在去年参加了计算机系预科班(这些课程也许能够代表大学里的入门课程).但这却似乎给我引入了错误的方向. 我比较喜欢底层,系统层次的编程, 并且我试图最有运行效率的程序. 然而现在的新课程都推崇用高层次的抽象的这样固有的低效率的方法编程.比如,他们讲的新东西之一就是递归,他们经常用递归解决简单的问题.有时,他们强制你最大程度地使用抽象,让一个函数做最小的事情等等.但是,因为我之前的编程经验,我比较喜欢编写有效率的程序,hackish way,因此我总是因此在作业中得到低分(尽管我的程序运行得完美无误,比别人的程序都要好).

我不知道,我应该学习计算机科学这个我熟悉的领域,并且向我看到的计算机科学的阴暗面屈服,过度地对面向对象语言的依赖和懒惰的编程.还是应该去学习这个未知的领域--电子工程?我确信我会喜欢电子工程,但是我担心,也许我对计算机科学的理解有错误,可能会以后认识到这些问题,并且希望当初去学习计算机科学.或者,我可能只是在担心电子工程太难太有挑战性了(我发誓我一点也不懂射频电子学,但是我会喜欢它). 也许我对计算机科学的看法只不过太理想化,太精英化之类的.总之,我讨厌1980年之后发明的大部分在计算机领域内的东西,并且我仍然喜欢用VT510为终端的一台老式freebsd机器(我也拥有并经常用一台基于SPARC的工作站和精准架构的RISC机器(a sparcstation 1+ and an old pa-risc machine)). 我奇怪得像一个新时代的恐龙.

那么,你怎么认为呢?我喜欢编程(不一定必须是计算机科学)和电子学.你认为计算机科学和电子工程里我该选哪一个?

Michael H., December 5, 2003

回答

好问题并且感谢你的提问.学院式的计算机科学很棒,尤其当你想要去计算机科学系的研究生院学习,并且继续留在大学里工作.但是正如你已经提到的那样,教授的理论和实际应用之间有一定距离.有时候,理论推出漂亮实用的解决方案.比如应用在关系数据库中的SQL查询语言,成功解决了几何问题的递归Lisp程序。但是大多数本科计算机科学系不会费力去寻找这些东西的实际例子.他们在20世纪90年代没有必要这样做.大量本科学生学习计算机科学为了要拿到学位.本科生们可以去学习编篮子,而教室里却坐满了人.

从选择一个难以自学,也难以外包给一个通过了Java认证的印度村民的终身技能方面考虑,电子工程是一个比计算机科学好的选择.考虑到你已经做过的那些东西,你可能已经是一个比一些计算机科学系教授还要好的程序员,很多计算机科学的教授把终生花在了理论研究上.但是几乎没有哪个人能够通过自学而设计模拟电路.你把电子工程说成是"未知领域",但这就是大学设置的原因.

我想鼓励你考虑一些其他的选择:机械工程.比如在MIT,很多思考工程问题,解决实际问题的最好的课程是在机械工程系教授的.我遇见的机械工程系教授都有世界级的工业技术.也就是说,如果他们明天离开了MIT,他们会去本田设计轿车,或者在空中客车公司设计飞机.看看http://pergatory.mit.edu/2.007/和http://web.mit.edu/2.009/www/,那里有一些在机械工程学习的例子.航空/航天工程领域与机械工程类似,也用计算机做很多有趣的事情并且专注于应用.

对前面自然段的基本概括就是"记住编程在每一个技术科学领域内都要用".假如你喜欢写关于基因方面的东西,不会上大学学习写作(假设他们会开设这样的专业),而会去学习生物.如果你喜欢写一些在罗马时期的生活,你会去学习历史. 计算机编程(与计算机科学不同)有一点像写作. 它用在几乎每一领域,它是一种你多练习就能提高的技巧,而不是一门专门的学科.尤其当你不想四年无聊死的话.

祝你在申请博弈中有好运.当你决定去那里之后,请回来在这里留下回复.

-- Philip Greenspun, December 6, 2003

译者注:

68HC12: 是16bit 为处理器系列.

CPLD: complex programmable logic device

AP computer science: Advanced Placement Computer Science 查wikipedia吧.

【本文翻译仅为外语学习及阅读目的,原文作者个人观点与译者及译言网无关】

评论

要是我选专业的时候看到这篇文章就好了 (T_T)

不错。貌似对计算机科学非常藐视的机械专业教授的回答

I'm worried that maybe something is wrong
with my take on computer science. 这句话翻错了,take指看法,而非选修。

outsource to a Java Certified Indian Villager 我认为指印度

谢谢在批眉和评论提出修改意见的热心网友!

计算机现在已经变成编程的活计了。确实只要是个还行的学生通过一两年的训练就能做的活。不需要什么专业性的知识。那些读完计算机本科的学生还不如外面培训几个月的学生。

Philip Greenspun is a semi-retired American computer scientist, educator, and early Internet entrepreneur who was a pioneer in developing online communities.
Greenspun was born on September 28, 1963, grew up in Bethesda, Maryland, and received an S.B. in Mathematics from MIT in 1982. After working for Hewlett Packard Research Labs in Palo Alto and Symbolics, he became a founder of ICAD, Inc. Greenspun returned to MIT to study Electrical Engineering and Computer Science, eventually receiving a Ph.D.

Among software engineers, Greenspun is known for his Tenth Rule of Programming: "Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp."
...


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值