一个月学会VC++2010 2.看起来风险不大

    任何时候,我都希望做绝对有把握能够完成的事情。换句话说,是缺乏冒险精神。因此,对杨先生叫苦,很大程度上是一种讨价还价的手段。在同意做这个项目的前一天,我就做了完整的评估。风险主要体现在两个方面:1、语言不熟悉;2、算法具有一定复杂性;3、因为是海量的计算,而客户要求每位分析师都能在笔记本上使用,性能方面的问题会大幅增加工作量,甚至存在可行性问题。

    编程语言是初哥们很重视的问题,不过从内心来说,我从来没有将这个当作问题。很多事情,都有一些人类考虑不到的死角,熟视无睹,则眼光永远无法漂移到那边。 就比如编程语言,你该怎么理解? 简单的说,编程语言是我们命令计算机完成一系列工作的工具。假设你面对的计算机是一台高度智能的机器,具备听觉和视觉,你告诉他----卧倒,主机箱便在桌面上打个滚,然后那个显示器就会可怜巴巴的望着你,等待你的下一条命令。
直接用机器指令给电脑下令,是最为简单的----一串零和一的组合之后,电脑能够为你做一次计算工作。但这种工作枯燥无比、容易出错、而且工作量大得惊人。所以人类在不停的想办法,让事情轻松一点。
     最初,是汇编语言。我听到许多高人谈论“你要懂得一定的底层知识”,嗯,在他们脑子里,汇编几乎是最底层的东西了----其实不是的,最底层的是机器码。最早期的程序员,是真的使用机器码编写程序的,汇编语言已经是一个很大的进步了。此时,你面对的不再是一串串指令,而是寄存器、内存、变量等等。你通过类似Mov之类的命令,要求计算机完成某个步骤。 那么,怎么办呢?必定有一个翻译机制,将我们的汇编语言转换成机器码,这就是编程语言的由来。这个翻译机制,实际上也是一套软件,它负责将你用汇编编写的程序,然后变成机器码。 所谓编译型语言和解释型语言的差别,很大程度上,是指:将你写的程序,一次性转换成机器码,还是运行这个程序的时候,动态的转换成机器码。

     而C语言,则是汇编进一步的简化。是啊,我们下命令的过程,其实仅仅是表达我们的诉求,没必要要求你控制每一个设备啊----你让计算机做一些组合工作就行了,所谓高级语言由此而来,主要的原因是:希望我们下命令的过程,变成面向问题的,而不是面向电脑内部的各种元器件、面向动作的。就象你对一个孩子说:抬手、解下腰带、蹲下,嗯,很麻烦。C语言则变成了一句话:“上厕所”。换一个角度来说:此时C语言已经包装了很多东西,你面对机器变成了面对C语言提供的功能。于是定义变量、表达式、计算、编译、分支、循环等等语言概念,逐渐稳定下来。

    C++之类,是面向对象编程语言,这实际上是简化思考的努力。而java、C#等,主要的差异是屏蔽平台差异、实现垃圾回收机制,进一步为程序员减负。

 

    计算机要完成一个复杂的业务过程,显然不可能要求程序员时时刻刻下命令,而是普通人使用你的程序----这个比较重要,意味着某种通用性。那么你的程序对一些重要的流程,仍然会安排一些操作方式,“最终用户”由此产生:他们运行你的程序,按照你约定的操作方式,命令计算机完成他要求的工作。所以到高级语言层面,我并不太在意语言的差异。
     至于其他两个问题,多少也有腹案。
    然后,接下来,开始简单的规划过程,列出所有的功能清单、确定要做的第一项 功能并细分任务。
    我的第一个迭代,只包括一项功能,就是“导入日线行情”。
    那么这个系列一直到最后,我也只描述这项功能实现的过程,基于一项项任务,逐步描述我要做什么、怎样着手去做、怎么思考、遇到问题怎么解决。大体上,由于源码服务器完整的保留了每一次代码的变更,这个过程也很容易复述。
    仅仅希望这一个月的学习过程,对初学者有帮助。这里的方法,事实上是学习编程语言比较通用的方法:若去学习java或者object c的开发,办法其实也差不多。甚至我觉得仅仅使用这种导入日线的例子来做,就能够覆盖常见的编程任务了。至于高手们,大可以一笑而过-----我一向非常鄙视中国的编程高手,因为这些家伙虽然牛哄哄的,但作为一个整体,他们倒真的没有做成什么象样的事情,感觉和中国足球队大有一拼,整个一群浪费粮食的群体。相对来说,我比较喜欢象我一样分布广泛的低手,虽然很差,但绝对不会乱现眼,能做什么就做什么绝不挑挑拣拣,从来不敢告诉外人自己是是踢足球,噢,是写程序的。

    下一篇的题目大体是“确定界面开发模式”,特此预告。

posted @ 2011-12-05 15:16  玄歌  阅读(4004)  评论(36编辑  收藏  举报