从1+1=?谈计算机软件的相关理论课程

1+1=? 这是一个刚懂事的孩子的就会的问题,但是如果是遍程呢?
写一个程序,算一个简单运算的值? MS 比较简单:
Cin >>a;
Cin>>b;
Return a +b;
这个程序简单,简单在只要你学过一门程序设计语言,你就能将它实现.
现在,我们的要求要变一下:输入一个四则运算式子,去求它的值.
呵呵,这回不仅是1+1了,可能是1+1+2,甚至是1+2*2,现在,如果你只会编程语言,解决这样一个问题就有些困难了,因为你要知道怎么样去判断优先级,怎么样去保存中间结果.这时,除了编程语言,你要去学计算机理论中另一门基本的课程:数据结构,你要通过数据结构去实现中间结果的保存和优先级的判断,说细一点,就是栈.
现在,当我们的要求进一步深化时,要加入sin cos,tan,以至于lg,开方等,如果再用一个栈去解决,去判断,那么会很困难,因为你需要大量的switch,这时,就要用到编译原理的内容,因为这里要涉及到对文法的处理,然而,学了数据结构,你是无法直接跳到编译原理的,因为这中间你还有另一门课程,就是形式语言,学了它,你才不会被编译原理中各种产生式吓倒.

在这里发这篇有些莫名奇妙的文章,是为了给各位朋友们提个醒,因为在程序员中,很多人或是半路出家,或通过职业陪训,进入了IT这一行,或许,你会很多种编程语言,了解很多种架构,但是在工作了一断时间后,会发现一些问题的解决无从下手,其实就是理论知识欠缺的缘故,这时,你就要去补习一下理论,更好的方式是,在遇到"瓶颈"之前,就去学一下,因为有些问题,如果书没看到,你可能不知道他是用哪种理论解决的,比如,很多人对多线程头疼,一运行就出问题,一同步就死锁,自己弄好久也弄不明白,其实,线程的相关问题可以在操作系统中学到,随便找一本操作系统,对线程同步的各种模型,如消费者/生产者,哲学家就餐等都会有很详细的说明,而这种说明,肯定要比任何一个网页上的资料更详细.

要工作了,就写这么多 希望对大家有用.
posted @ 2009-05-17 21:16  葛云飞  阅读(1817)  评论(9编辑  收藏  举报