用C设计,用C++编码

来源:互联网 发布:非凡网络加速器官网 编辑:程序博客网 时间:2024/05/16 05:11

网友观点:

 

(一): 

我认为很多人没有理解linus或者myan的意思,我举个实例。


我们现在要设计一套网络-客户端软件,我们要先把协议定好,把界面和后台交互设计想好,把容错和恢复想好,我认为这些是最重要的,至于编码,用C也可以编出来,用C++也可以编出来,甚至用JAVA也能编出来,关键是整个软件的架构要清晰,这样软件本身才不会出大问题。

当然对于那种比较小的软件,设计就不是那么重要了,或者某些技术至上的软件(比如说那些什么hack之类的,那设计就不是很重要了)


至于说到用什么语言,以前百晓生在兵器谱上的排名第一好像是如意棍。你让使如意棍的人来使刀,使枪,估计他也不太会,而且他还会跟你讲如意棍是最好的武器。小李飞刀其实说白了就是一把普通的小刀(那时候铸造水平估计比现在要差),但到了李寻欢手里就发挥大的威力。

当然,这是针对个人来说的,从广义的语言上来说,我个人认为语言的发展方向是向着实用、解决问题、简化的方向发展的。从asm到C,从C到C++,JAVA都是体现了这一点。其实有很多语言,比如vb,比如pb,很多人不屑,但他们的确很实用,也解决了很多实际的问题。所以有他们的大的生存空间。至于说到优雅、巧妙,我想那就是学究派了。

至于C++的高级特性,我个人认为没有必要花很多时间去学习,把这个时间花在学习一种脚本,学习一下操作系统,学习一些数据算法岂不更有用。

 

 

(二):

C++的各种特性和stl不是强加在程序员身上的。不理解编译器做的事情,不理解库的内部实现使用了它们反而不爽不是C++的错。

我只能说C++的门槛高。你们害怕了,没看过10本以上C++著作的人没有权利在这里对C++指手划脚。而java达到同样的境界只需要两三本书就够了。

C++比起C就是进步,一个const关键字,一个bool类型都是进步,更不用说其他玩艺了。阻止进步就是犯罪。

说C++没用的人为什么不说Java,C#没用?语言没有万能的,说出来谁都知道。你们就只是墙头草,随风倒的类型。我C,C++,Java,C#都用。只是在这里为c++说句公道话。

 

 

(三):

1、C是最能体现程序设计(programming)功力的语言!尤其是第一版即K&R C,几乎是一种“裸体”语言,程序的正确、安全与否完全取决于程序员的功力。
2、后来人们觉得K&R C“太危险”,在ANSI C中加入了很多类型检查的设施,如function prototype的约定等,等于让编译器为程序员做了很多工作。
3、C++的很大一部分精力就是放在了类型检查上,当然还有class, template等等这些比较高级的东西。C++的这些做法主要有两个目的:提升程序员的生产力以及便于大规模程序的开发。
4、C#设计的主要目的之一便是集中于程序的类型安全上。
5、C -> C++ -> C#语言的演进,直接反映了现代程序设计的实践,即将越来越多的工作交给编译器,以降低对程序员功力的要求。毕竟像Ken Thompson和Dennis Ritchie这样的用随便什么语言就可以写一个Unix操作系统出来的程序员是极少极少的。
6、将C与C++作一粗略的比较,可能会比较有意思:C的技术性更强一点,因为更加底层;C++的概念性更强,更加强调良好的设计(good design),层次提高了,反映在语言上,就是更加复杂。
7、所以,如果是做操作系统级的东西,C可能是不二选择,但如果是应用级(不是高层应用,而是系统级的应用,比如OS kernel之外的东西),C++可能会更好。
8、每一种语言都有其设计的宗旨及适用的范围,除了吃饭必需的之外,自己喜欢的,就是最好的!

补充:
A、N年以前曾听一位玩Linux的高手说过:真正的程序员都是用汇编的(大意如此,意思是真正的程序员都是直接跟硬件打交道的)!
没有见过比这更为偏激的了(有点少年轻狂),但当时并没有引起人们的注意,今天Linus说了类似的几句话,就引得如此沸沸扬扬,实在匪夷所思......,也许Linus是“大腕儿”?我们一直走不出“大师崇拜”的阴影?
B、但这些沸沸扬扬的议论里面,多的是情绪的宣泄,少见理性的思考。实际上,多读读K&R的书,就知道C是怎么回事,而多读读Bjarne Stroustrup的书,才知道C++是怎么回事。而知道了C/C++到底是怎么回事,就不会对Linus的几句话如此大惊小怪、翻江倒海,因为N年以前的Linux高手就说过类似的话了。呵呵。
C、世界上没有完美的东西!勉强的比附是愚蠢的。
N年以前所用的Unix是出自AT&T的正宗(非BSD版),版本是Unix System V Release 2,当时认为是一个近乎完美的OS,以至于后来接触Windows反倒觉得真不怎么地。可那又如何呢?Windows已经成长为占据半壁江山的“巨人”,Unix已经衍生了若干variants,Linux也已经形成了一个强大的community(尽管我不喜欢,但没人在乎你喜不喜欢,有人喜欢就行,这是市场法则)。
OS如此,语言也一样。中文还要从文言文进化到现代(白话)文呢!若问是文言文好,还是现代文好?这就近乎是一个白痴的问题!这就好象大人逗小孩子,问是爸爸好,还是妈妈好。作为一个玩笑问题去问小孩子,只是一种善意的玩笑。而如果作为一个严肃的问题去问成人,那就近乎白痴!
D、如果国人哪一天能够设计出一种超越C/C++/C#的X语言来,我将为之鼓与呼!很久以前有过一种叫XCY(取系统程序语言的拼音缩写)的国人自己设计的语言,关键字都用中文表示,也许设计者认为这才是中国人自己的语言吧,用心良苦,但背道而驰,再加上当时中文输入不易,其命运可想而知。

 

 

 

(四):

我们现在要设计一套网络-客户端软件,我们要先把协议定好,把界面和后台交互设计想好,把容错和恢复想好,我认为这些是最重要的,至于编码,用C也可以编出来,用C++也可以编出来,甚至用JAVA也能编出来,关键是整个软件的架构要清晰,这样软件本身才不会出大问题。

我认为这个逻辑是不对的。照这个逻辑,任何图灵完备的语言都可以拿来实现特定功能。

但语言本身就是形而上的,语言的能力就体现在更直观简洁地表达思想(这是对于编码者),更直观容易地理解(这是对于阅读者)。这两点其实就是金钱,而且维护花的钱更多。

一个项目并不是一次写完,就算了。而且就算一次写完,也分在什么抽象层上写的难易度呢。

你也提到架构一说,架构是为什么?就是为了:一,更清晰的表达思想,二,让后来人更容易地进行扩充或维护。否则只要功能的话那就太好办了。既然架构是为了这两个目的,那就不能不说,采用何种语言,以何种语言组织代码,是重要的了。

而在这个问题上,最重要的估计还是API的设计。所以,你要论述的重点应该是,“C是如何导致更好的API设计的”。

那C究竟是如何导致更好的API设计的呢?

如果能给出一个例子,同一个API,用C设计什么样子,用C++设计什么样子,那人家一看就一目了然了。

 

 

 

(五):
如果西加加一开始没有用西作为基础来进行++,那么在那个人们只会“函数+过程”的年代,西加加就只能是个早产而死的婴儿了

实际上,函数和类都是代码结构,只不过函数和三种控制结构要简单,比类要简单得多,但其实他们都跟解决实际问题没有必然关系,伪码图,西函数,西加加类,都能实现数据结构,只有当问题要被编程实现时,我们左手有西而右手有西加加却反而陷入二难一样。而如果只有西,大家都只会西,谁都会明白用三种流程,一个函数的写法去写

关键的关键在于:并不是所有人都会西加加,会西加加的不一定会用类,用了类的不一定在面向对象,用了对象的一部分只会写class pig这样的东西,另一部份却开始写class iteratr了


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/myan/archive/2007/09/10/1778843.aspx

原创粉丝点击