. . . . . . . . . . . . . . Blog Garden' C plus plus (My technology Impire!)

................................................................ It‘s a age of economic globalization and Infomation globalization........................................

编程方法很重要

编程方法很重要

看了网上面编程高手写的一些如何学习编程的文章,体会到学习编程,重要的是学习编程的方法;

掌握了方法之后,对与一门新语言的学习,就只剩下该语言区别于你所熟悉的语言的一些特殊语法和这门语言的一些特殊机制而已.


一、英语对于编程重要吗?

有些人问:英语对于编程重要吗?那你就看看下面的例子就知道了:

6d61696e(){
7072696e7466("你好啊,世界!");
}

好吧,这是一个C语言Hello world! 但它不能用TC或者BC等编绎器编绎----会出错。为了能把它编绎,你再请一个“用英语”编程的人帮你编个程序,将上面的程序转为TC和BC可以认识的 源代码。转换过程很简单,因为在ASCII码中,m=6d, a=61, n=6e, p=70, r=72, i=69, t=74, f=66, 以上都是十六进制数值。

这种“程序”,就算你不会英语也会编出来吧?就算你不会英语也不会妨碍你成为高手吧?因为所有人都能轻易学会0-9和a-e。

我曾经看到有人用中文“编写”C语言程序----把main换为“主函数”,把int换为“整型”,把printf换为“打印”......,就是:

主函数(){
打印("你好啊,世界!");
}

我认为这种方法不比我的方法好,因为别人还得学习汉字。我的方法即使是中文文盲也能很容易学习。

我的意思是,中文编程不是简单的将英文单词“一一对应”地翻译为中文名词就行了,而应该是发明出一种符合“汉语思维”的编程方法。这种“一一对应” 的中文编程只不过是一种无聊的作法。在各种编程语言的函数库和类库中,都是以英文词汇(或者26个英文字母,数字,下划线的组合)命名,当然你也可以把它 们全都翻译为表示中文意思的中文词汇,或者按照我所说的方法翻译,然后就可以“使用中文(或者不使用英语)编程”了,可是,这有什么意义?

所以,结论是:英语对编程很重要。

二、编程语言和编程思想

这么多年来,我学过和使用过的开发语言也不少了,可真正用得好一点的就只有 C 。有一段话很流行,直到现在类似的想法还影响了很多人。“做程序员 , 学习程序语言最重要的是学习编程思想 , 而不是学习那种语言”。我曾经把这段话奉为经典。在做程序员的初期,频繁更换编程语言,这是一个重要原因,另一个重要原因是,如果不会新的语言,就显得落后了。因此流行的语言基本都涉及过,买书的钱都以千计。随着代码数量的增加,经验的增长以及对于业务了解程度的深入,自然产生了一些想法、思路和设计。

我举的一个例子,开发过数据库的人大概都有所体会。数据库应用中常常需要构造 SQL 语句,但在程序中写 SQL 语言以及对返回结果集的处理,这往往是个体力活,特别是在嵌入式 SQL 的编程中。重复地拷贝一段颇长代码,再修改一点点,整个程序大量的篇幅都耗在这上面了,维护起来也比较困难。我想很多人都针对此想过了很多的方法来简化这些甚是无趣的操作。我也想过好些方法,其中一个方法比较有趣。在 C 语言中有一个很常用的函数是 int sscanf(const char *str, const char *format, ...) ,用起来颇为简便。我想仿照这个函数的来处理 SQL 语言的 select ,因此就定义了一个获得一条记录的函数: ifx_select(const char* sql,…); 使用起来非常简便:

int id;

char name[16];

if(ifx_select(“select id,name from users where id=10”,&id,name)==0)

这是一个很好的点子,也是很好的编程思想。但开工后,我发现我实现不了。虽然这段代码看上去很简单,但它包含的东西却不少:变参数的处理,指针及其内容的赋值,错误处理,数据类型判断与分析等等。这些东东都学过,但在实际工作中却不能灵活运用,想法和思路自然实现不了。类似的现象不仅仅大量出现在程序设计中,在现实生活中也比比皆是。

由此,下决心好好补了补课。把教科书又翻了几遍、阅读了很多开放源码的程序、在平时的编程中投入一部分精力到 C 本身的研究中,经常感叹,原来 C 语言还可以这样用。随着对语言本身(语法、技巧、组合等等)的越来越熟悉,自己的很多思路和想法也得以顺利实现。到目前语言和思想已经密不可分了,以上的代码自然搞定了。当然这是一个长期的过程,不可一蹴而就。时间一般以年计算。

讲了这么多,我的观点也很明确,编程的语言和编程的思想同样重要,扎实的编程语言功底是编程思想得以顺利的实现的基础,二者缺一不可,相互制约也相互促进。就象人的灵魂和肉体。对于一个人来说,若只管灵魂而不管肉体,那是“鬼”;如只管肉体而不管灵魂,则会被称为“行尸走肉”。基本工具都用得不好,用得不熟,很难期待会出现一个好产品;有一个好的编程想法,却因为编程语言的能力不够而不能实现,那么这个好的想法就只是“空想”,开发者容易被划归到“眼高手低”、“不切实际”、“不踏实”的一类中去。

另外在选择和学习编程语言上,最好根据需要选择一门主流的、应用广泛又有强大生命力的编程语言,例如 BASIC FORTRAN C/C++ JAVA 等。语法学习相对容易,关键在于熟练应用。理想境界是达到卖油翁的程度:“无它,唯手熟而”。

三、编程高手谈编程

编程并非高深莫测

  李晓东 eBOOK 电子小说阅读器作者http://eb.126.com)
  要想学好编程,没有什么捷径可走,只有多动手,敢于动手,看完一本厚厚的编程书,学习效果也肯定比不上亲自上机设计一个简单的程序。就拿我来说吧,其实我很早就想学VB了,在我的电脑中也多次安装过VB4VB5,可我一直没有动手,也许是因为缺乏某种紧迫感吧。直到去年10月份,我在用VFP设计一个文本阅读器(eBOOK的前身)时,越来越感到VFP无法满足我的一些特殊要求,于是我又想到了VB,终于,我捧起一本VB3的编程手册(当时我只能找到这本VB编程书了),在VB5中敲下了第一个键。半个多月过后,eBOOK1.01版诞生了!在此,我要对想学编程的朋友说一句:编程并非高深莫测,只要你敢于迈出关键的第一步,你就入门了。
  另外,编程书还是要看的,但不必强求最新、最全、最多,够用、适用就行。就我个人来说,我有汇编基础(当然也是自学的),这对我现在的编程有很大帮助(尽管在Windows时代汇编语言已无用武之地)。对广大编程爱好者来说,则要系统地掌握一些底层的东西,比如显卡显示图像的原理、硬盘存储文件的方式、内存管理机制等,这些知识尽管不能直接用到程序中去,但对你理解程序的运行流程、找出发生问题的原因等方面还是很有好处的。我编程的长处在于界面设计(eBOOK就是明证)。我觉得,在Windows中编程,最容易体现个性的就是界面设计,在千篇一律的灰色窗口+菜单栏+工具条+状态条+滚动条的模式下,只要你敢于打破这个框框,你的程序就很容易脱颖而出(当然内在的东西也要足够好)。
选择方便快捷的方案

  杨延哲 Eport软件小组成员 http://eport.yeah.net
  我从学习编程到现在不多不少三年半,这期间学的东西很杂,首先是从QBASIC开始,后来学上了VisualBasic,再后来学校里教了TurboPascal。现在我才认定了Pascal,跟了Delphi。其他的语言像C++我也学过,但没人教再加上已经弄懂了Pascal,所以就放弃了。
  Delphi编程的最大好处就是它的控件,它将编程变成了一件快乐的事。因为在编程过程中唯一的快感就是看到自己的程序在运作了,而Delphi就给了编程者这个感觉。这对于我们这些写小程序的人来说特别有帮助,可以将编程时间降到最低。
  我的编程忠告就是:如果你遇到了大的问题,解决方法有许多种。为了避免走弯路,先选择最方便的快捷方案,这样即使无法执行也不会太浪费时间。用专业的讲法就是Shortest Job First
创意是软件的灵魂

  张研 Update NOW!的软件作者 (http://nowsof.yeah.net thttp://www.ourchina.net/)
  1.基础比语言更重要
  以前有一句很有名的话:算法+数据结构=程序",后来有人批评这种说法,但不管怎样,算法和数据结构的重要性可见一斑。而语言则显得不那么重要了。语言只是算法的表达方式,就拿排序来说吧,C语言用的是那些方法,Pascal也是,Java也一样。只是表达的方法不同。万变不离其宗",所以说要想成为一个好的程序员,算法和数据结构是最基础的。
  2.精通一门适合自己的语言
  现在流行的语言很多,Visual BasicVisual C++、JAVA Delphi等。同时新语言层出不穷。谁也不可能都会。怎么办?最好只选择一门语言,集中精力钻研,精通它。没有一门语言是万能的,有算法和你精通的那门语言做基础,学一门新的语言是件轻松的事。
  3.熟悉你使用的操作系统
  同一种语言在不同操作系统中,会略有不同。比如Windows 下的CUnix 下的C是都是C语言的超集。这些不同,正是我们所关心和应该潜心研究的。只有这样才能写出有特色的程序。
  4.熟悉你使用的硬件系统
  不了解硬件系统,很难写出好的程序。所以好的程序员,对硬件的了解都很深。
  5.容错是很重要的
  容错性能的好坏是评价一个程序是否专业的重要标志。好的程序员会写大量的代码让程序更坚固"Update NOW!的核心代码中有20%~30%是用于容错的。
  6.好的程序书写风格是必要的
  书写程序按照语法的层次缩进,是衡量程序员是否专业的一个标准。当然,还要有必要的注释。否则,过了几个月,你都很难读懂自己的程序了。
  7.创意是软件的灵魂
  好了,如果你作到了上面那几点,那你差不多是个好程序员了。最后要说的就是创意。没有创意的软件,只是重复劳动。即使容错再好,风格再好也没有用。回头看看,那些出色的软件都有独到之处。如果你既是个好程序员又能写出有创意的软件,那你差不多就是大师了。         
语言只是工具

  梁肇新《超级解霸》的作者(http://www.herosoft.com/
  1.如何成为程序员
  要成为高手程序员首先必须有丰富的计算机知识,包括软件系统知识和硬件系统知识,掌握一种高级编程语言如C/C++和掌握汇编语言,这是成为程序员高手的必备条件。一般人都会认为语言最重要,其实语言只是工具而已,重要的是如何使用工具做自己想做的事,
  2.如何学习编程
  我的建议是从API入手,因为API是操作系统提供的直接接口,其他的任何东西都是在这之上,像VBDelphi这样的开发工具尽量隐含API的内容,同时也阻隔了成为高手的机会,因为编出来的程序无法了解它的执行过程也就使编程中最重要的可预测性变得很低。
  编程序的重点不是,而是调试程序,理论上的完美在实现的时候会遇到很多细节问题,这些问题必须调试才能解决。我的编程习惯是一天写五天调试,《超级解霸》就是调试出来的,而不是写出来的。调试就涉及到汇编的问题,不进行汇编级的调试是不彻底的,也不能让人放心。
  3.编程忠告
  我的编程经验是,编程时除了调试外还应该测试,测试是指把要完成的程序的单个功能写一个测试实验,成功后再加到软件中来。任何软件都是小功能组成的,因此不要像课本所说的那样先写个程序框图来浪费时间,而是先单个实现局部功能再组装在一起。编程时千万不要盲目使用不了解的代码,否则会增加程序的出错机会。了解底层会增加编程思路。

四、编程语言学习随笔

近来一直在学习c++,原因很简单,就是喜欢编程!!!
学习之余,若有所思,记录在此,或许N年后回首,会有更多感触!!
编程最重要的是什么?-----是解决问题的思路和方法!
那么编程语言在这里扮演一个什么角色呢?--扮演的是把你的思想和方法转化为现实的一种工具!!仅仅是工具而已!
学习编程语言,就像我们学习认字、写字一般。解决问题的思路和方法,我们活到这个年岁上,都肯定有一些了,只不过是多少、优庸之分而已!但是并非每个人都能用程序来体现,因为很多人没有掌握这个工具,就好像会说话当不会写字的人,虽然有很多话要说,但是不会写字,从而不能把想法写下来,让更多的人分享。掌握了编程语言,就可以和机器交流,,让机器懂得我们要想做什么。但是,,并非每个会写字的人都能写出好文章来!!!
     我想说的,其实只有一点,,工具的东西是必须掌握的,但是工具仅仅是工具,不要沉迷于工具而忘了最重要的东西!!!

五、闲言碎语话编程

     有人说:编程高手==游戏高手。如果这是真的话,我早就成高手了,因为在游戏里,我早已成为宇宙总管、富甲天下、仗剑走天涯了。可是我还是一个菜鸟:)闲来无事,随便贴点文章。
    程序员不应依赖开发工具,程序员更应该拥有的是一种思维、一种精神、一种观念。就像Richard.M.Stallman一样,有自己的精神,为自由软件而奋斗。就像求伯君,为民族软件的振兴而奋斗。这才是真正的程序员。
    应该说,他们更注重的不是技术,而是软件的思维,软件的灵魂!!
    真正在编写程序到达一定时候,语言的使用并不是最大的障碍,对整个项目的把握、软件工程的把握、数据库的设计以及执行效果的分析等等才是需要进一步考虑的东东!
    学习编程其实与学习其它东西一样,要想掌握它,就要实践,实践,再实践.当你学到了一种新的技术或知识时,多实践是巩固学习的一种最好最有效的方法。
    这个实践不是照著书上的例子做一遍,而是根据自己的能力,给自己出题,然后去完成 它.只有这样,你才能发现自己的不足,同时又增加了自己的编程经验. 但要成为合格的程序员,光会写代码是远远不够的,更重要的和学习其他知识一样,重要的是获得提出问题,分析问题,解决问题的能力,不是为编程而学习,你具有什么样的思想,就会写出什样的程序。学一门语言,不能仅仅是语言,要注重语言背后的思想方法是思考.谋定而后动,是 不变的真理。

posted on 2006-10-04 02:17 Technical Consultant 阅读(770) 评论(0)  编辑 收藏 引用 所属分类: C plus plus


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


My Links

Blog Stats

常用链接

留言簿(3)

随笔分类(47)

随笔档案(45)

文章分类(87)

文章档案(87)

相册

C++

Database

Game Develope & Game Engine

Java

News

Web

最新随笔

搜索

最新评论

阅读排行榜

评论排行榜