主题:高手心得(转载)!
回字的四种写法(转载)
文/blueelf
从论坛上关于C++的探讨,让我想起的是孔已己:"回字有四种写法".
做为过来人,我想告诉你们,不要以为C++是一切,不要以为学会写高难度
的程序就能成为计算机高手.有意思的是,很多计算机科学家大师根本不
会写程序.
程序是什么?程序只是把人能看懂的数学算法变成计算机能懂的逻辑符号.
本质上和建筑工人差不多.建筑学家一定要亲手砌过墙吗?
我不止一次看见人嘲笑:XXX学校教计算机还是BASIC呢.我就是从BASIC开
始学遍程的,而且使用basic长达5年之久.之后我用二星期转到了汇编,在学
习汇编的二星期里,我使用它写了一个简单的图形届面游戏.写成后我认为我
学会汇编了。二年后我又用三天学习了c语法,继而用一个月的时间写了一个
小型CAD,该程序至今(快10年了)还在我们的国家级科研单位使用。
说我自己的经历并不是想证明我比谁强,只是想以此指出很多后来者在学习上
的误区。不同编程语言不过是具有不同逻辑符号的集合而已。无论你使用循环
还是递归,知道CPU都是在线性工作同样重要。
很多人抱怨C++太难了,我想告诉你们的解决办法就是:不要去理会哪些难点.
奔腾CPU具有几百条汇编指令,其中80%不常使用,40%几乎不出现在我们的常
用软件中.条条大道同罗马,干嘛非一棵树上吊死?
我有个朋友从C++教程学起,而后是《Thinking in C++》,《Inside C++》,
《C++ reference》,总之是看完了这个C++看那个C++,两年了告诉我说,"我
觉得我还没领会C++的精髓",我问它使用C++解决了哪些典型问题,结果他除了
用MFC写过一些界面程序外,没有任何成果.这样的学习有意义吗?
我商业编程的时间已经8年,学习遍程已经15年了,所看过的关于语言的书估计
也超不过6本,通常我每学一种语言看一本书,目前我只会basic,asm,C/C++,
java.但这丝毫不影响我解决很多别人解决不了的问题.
我从没看过上面那些C++的书,但我从来不会觉得我的C++语法知识不够,不会
我就不用.如果你觉得自己苯,那恰恰说明你的程序最容易懂!C++封装继承的
目的不就为了让程序好懂吗?这才是OOP的精髓!如果你按照自己的方法写出了
世界上最好懂的程序,那你就可以根据自己的经验创建D++,E++,还学C++干什
么?
语言仅仅是一个工具,C++又只是这些工具中的一个,我们没有必要在这上面浪
费时间!需要你学习掌握的东西还多着呢!你的英语词汇量够吗?计算机的前沿
在西方,不懂英文你永远是技术上的后进者.操作系统原理你掌握了吗?这是我们
写应用程序的重要前提,也是我们学习软件结构设计的经典案例.你的数学知识
够吗?计算机说倒底是个复杂的数学处理器,没有数学知识我们根本无法解决向
模式识别这类的问题,甚至连数理统计也无法完成,比如你知道如何算合理库存
吗?如果不知道你肯定写不出ERP的核心代码,即使你破掉10000本C++书也是无
可奈何.
继而我希望大家再多多看看软件工程和模式设计方面的书.这些书每看一便你的
层次就提高一点!看不懂也没关系,先看自己懂的,然后就去编程解决问题,之后
再翻回头来看,把自己在实践中得到的经验提升到理论高度,然后再用理论去
指导自己的下一次实践.这将是一个良性循环.
解决问题也有很多东西等待我们去看,去学.比如网络协议,比如无线通讯协议...
这些协议都是学界泰斗们的力作,从中我们可以学到很多协议之外的东西.比如
模式设计.
也许你可以写出一个程序,它能管理1000个线程同步异步协同工作,我们顶多说
你是个优秀的程序员.而第一个提出OS应该以线程作为调度单元的才是科学家,
即使它根本不知道在Windows中线程是如何创建的.
孔已己说"回字有四种写法",我们笑了他一百年.但当你死抠着语法不放的时候,
有没有意识到自己已经成为了新时代的孔已己?或许你希望后人再笑100年?
ps:我想笔者的意思不是说不要学习语言,而是不要死抠着语言的一个细枝末节不放。毕竟做为开发人员不掌握一门语言是不实现的,这个世界不可能大师满世界跑。这是我作为一个C++初学者的感想。
文/blueelf
从论坛上关于C++的探讨,让我想起的是孔已己:"回字有四种写法".
做为过来人,我想告诉你们,不要以为C++是一切,不要以为学会写高难度
的程序就能成为计算机高手.有意思的是,很多计算机科学家大师根本不
会写程序.
程序是什么?程序只是把人能看懂的数学算法变成计算机能懂的逻辑符号.
本质上和建筑工人差不多.建筑学家一定要亲手砌过墙吗?
我不止一次看见人嘲笑:XXX学校教计算机还是BASIC呢.我就是从BASIC开
始学遍程的,而且使用basic长达5年之久.之后我用二星期转到了汇编,在学
习汇编的二星期里,我使用它写了一个简单的图形届面游戏.写成后我认为我
学会汇编了。二年后我又用三天学习了c语法,继而用一个月的时间写了一个
小型CAD,该程序至今(快10年了)还在我们的国家级科研单位使用。
说我自己的经历并不是想证明我比谁强,只是想以此指出很多后来者在学习上
的误区。不同编程语言不过是具有不同逻辑符号的集合而已。无论你使用循环
还是递归,知道CPU都是在线性工作同样重要。
很多人抱怨C++太难了,我想告诉你们的解决办法就是:不要去理会哪些难点.
奔腾CPU具有几百条汇编指令,其中80%不常使用,40%几乎不出现在我们的常
用软件中.条条大道同罗马,干嘛非一棵树上吊死?
我有个朋友从C++教程学起,而后是《Thinking in C++》,《Inside C++》,
《C++ reference》,总之是看完了这个C++看那个C++,两年了告诉我说,"我
觉得我还没领会C++的精髓",我问它使用C++解决了哪些典型问题,结果他除了
用MFC写过一些界面程序外,没有任何成果.这样的学习有意义吗?
我商业编程的时间已经8年,学习遍程已经15年了,所看过的关于语言的书估计
也超不过6本,通常我每学一种语言看一本书,目前我只会basic,asm,C/C++,
java.但这丝毫不影响我解决很多别人解决不了的问题.
我从没看过上面那些C++的书,但我从来不会觉得我的C++语法知识不够,不会
我就不用.如果你觉得自己苯,那恰恰说明你的程序最容易懂!C++封装继承的
目的不就为了让程序好懂吗?这才是OOP的精髓!如果你按照自己的方法写出了
世界上最好懂的程序,那你就可以根据自己的经验创建D++,E++,还学C++干什
么?
语言仅仅是一个工具,C++又只是这些工具中的一个,我们没有必要在这上面浪
费时间!需要你学习掌握的东西还多着呢!你的英语词汇量够吗?计算机的前沿
在西方,不懂英文你永远是技术上的后进者.操作系统原理你掌握了吗?这是我们
写应用程序的重要前提,也是我们学习软件结构设计的经典案例.你的数学知识
够吗?计算机说倒底是个复杂的数学处理器,没有数学知识我们根本无法解决向
模式识别这类的问题,甚至连数理统计也无法完成,比如你知道如何算合理库存
吗?如果不知道你肯定写不出ERP的核心代码,即使你破掉10000本C++书也是无
可奈何.
继而我希望大家再多多看看软件工程和模式设计方面的书.这些书每看一便你的
层次就提高一点!看不懂也没关系,先看自己懂的,然后就去编程解决问题,之后
再翻回头来看,把自己在实践中得到的经验提升到理论高度,然后再用理论去
指导自己的下一次实践.这将是一个良性循环.
解决问题也有很多东西等待我们去看,去学.比如网络协议,比如无线通讯协议...
这些协议都是学界泰斗们的力作,从中我们可以学到很多协议之外的东西.比如
模式设计.
也许你可以写出一个程序,它能管理1000个线程同步异步协同工作,我们顶多说
你是个优秀的程序员.而第一个提出OS应该以线程作为调度单元的才是科学家,
即使它根本不知道在Windows中线程是如何创建的.
孔已己说"回字有四种写法",我们笑了他一百年.但当你死抠着语法不放的时候,
有没有意识到自己已经成为了新时代的孔已己?或许你希望后人再笑100年?
ps:我想笔者的意思不是说不要学习语言,而是不要死抠着语言的一个细枝末节不放。毕竟做为开发人员不掌握一门语言是不实现的,这个世界不可能大师满世界跑。这是我作为一个C++初学者的感想。