免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: gnawux
打印 上一主题 下一主题

本版的介绍也太不确切了 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2003-12-16 11:29 |只看该作者

本版的介绍也太不确切了

楼主的标题中”太不确切“如果换成“不太确切”,一种讨论问题的口气,我想就不会让flw老大说出伤和气的话了。C++语言设计的初衷和它以后的发展已大不一样了,启是用简单的话语就能概括全的,但既然是C/C++版的介绍,我个人觉得还是比较合适的。
技术需要争论,但要讲说话的方式,和睦的气氛最重要!

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
12 [报告]
发表于 2003-12-16 14:23 |只看该作者

本版的介绍也太不确切了

首先,我向大家道歉,道歉关于我在本贴中对楼主的疑问做答复时用词上的不恰当以及因此而给大家带来的非我所预期的伤害。

其次,我在回复中标为红色的字样,确实是每一个还没有理解这句话的人应该理解的。这涉及到学习的方法论的问题。

再次,关于 C 与 C++ 的关系,其实也没什么好争论的。
但是,“C++ 是 C 面向对象的扩展”这个说法,我仍然认为是正确的。
主要是看你从那个角度去理解。楼主可能想的比较多了,才会有此疑惑。

正如楼主所说:“C++只是一种语言,支持面向过程、基于对象、面向对象、泛型共4种主要的设计方法。”
然也,你既然知道 C++ 只是一种语言,
那么你就应该知道,你所说的“设计方法”并非语言的一部分,
换言之,C++ 做为一种语言来讲,确实是 C 语言为了更加方便的实现“面向对象”而在时代需求下做的一种扩展、升级。

下面我用比较严谨的方法简要的说明一下:
主要理论依据均来自《编译原理》,当然也包括了一些《集合论》及《逻辑原理》中的基本知识点。

1,前提:C 是一种语言,C++ 也是一种语言。为了叙述方便,假设 C 语言的文法是 G1,C++ 语言的文法是 G2,那么可以这么说:
“符合 G1 文法的所有的句子的集合,构成了 C 语言” ---- 前提 1
“符合 G2 文法的所有的句子的集合,构成了 C++ 语言” ---前提 2

2,另一个前提,符合 C 语言语法的所有程序,均符合 C++ 语法,也就是说:
“ 所有符合 G1 文法的句子的集合,是所有符合 G2 文法的句子的集合的一个子集”                                          ---前提 3

前提 1 和前提 2 实际上是对什么是 C 语言以及什么是 C++ 语言的一种定义。前提 3 则反映了两者之间的关系。按照惯例,如果一种语言能够完全包容另一种语言,那么前者称为后者的“扩展”,比如,现有的很多 C 语言编译器都对 ANSI C 做过“扩展”。扩展后的语言仍然是一种语言,但是却具备了很多新特性,在本例中,C++ 对 C 语言进行了扩展之后,所具有的新特性有“运算符重载”、“函数的多态”、“类的概念”、以及“类的继承”等等,撇开“模板”和“异常处理机制”不谈,实际上 C++ 对 C 的扩展主要是为了更好的适应当时涌起的“面向对象”的潮流。

总之,就像函数不是 C 语言的一部分一样,楼主所谓的“设计方法”同样也不是 C++ 语言的一部分。做为语言本身来讲,C++ 就是 C 的一种扩展。楼主所说的“面向过程、基于对象、面向对象、泛型”其实用 C 语言也可以做。

顺便说一句,试问各位,有多少人“在用 C 语言进行编程”?
或者说,有多少人“在用 C++ 语言进行编程”?
实际上,我们平时在工作中,更多的使用的是各个厂商提供的 API、库函数、接口,或者是类库、模板等等,而这些,都不是语言本身所具备的。

这就是我“C 即是非 C”的意思。
用 VC 的人如果不用 MFC,恐怕有很多东西都不知道从何下手。

论坛徽章:
0
13 [报告]
发表于 2003-12-16 16:15 |只看该作者

本版的介绍也太不确切了

主要是角度的问题,呵呵.
c++ 是 c 的扩展, 但不仅仅是扩展.
打个比方,说 windows 是 dos 的扩展. 不太贴切, 只是个意思而已. 呵呵.

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
14 [报告]
发表于 2003-12-16 16:39 |只看该作者

本版的介绍也太不确切了

[quote]原帖由 "flightbird"]打个比方,说 windows 是 dos 的扩展. 不太贴切, 只是个意思而已. 呵呵.[/quote 发表:

Win98 确实是 DOS 的扩展,很贴切,没有什么不贴切的。
但 98 以后就不是了,因为内核都不一样了。

同样 Win2000 就是 Win NT 的扩展。

论坛徽章:
0
15 [报告]
发表于 2003-12-16 17:04 |只看该作者

本版的介绍也太不确切了

原帖由 "flw" 发表:
《编译原理》,《集合论》及《逻辑原理》

这些个我都没有学过:(
感叹flw的知识结构
我要好好学
对了《集合论》及《逻辑原理》这两门功课主要讲什么呢?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
16 [报告]
发表于 2003-12-16 17:10 |只看该作者

本版的介绍也太不确切了

呵呵,你夸我我怕别人看见笑话呢。这些东西都应该学过的呀!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
17 [报告]
发表于 2003-12-16 17:17 |只看该作者

本版的介绍也太不确切了

原帖由 "jourmen" 发表:

这些个我都没有学过:(
感叹flw的知识结构
我要好好学
对了《集合论》及《逻辑原理》这两门功课主要讲什么呢?

《集合论》及《逻辑原理》应该都属于《离散数学》的一部分。
用googe搜一下就知道了,时间长了也忘了。      

论坛徽章:
0
18 [报告]
发表于 2003-12-19 23:45 |只看该作者

本版的介绍也太不确切了

呵呵,一石激起千层浪啊。
各执一辞不是讨论问题的好办法。

怎么说呢,我认为 C++ 称为 C 的面向对象扩展不确切的关键在于我认为 C++ 和面向对象之间并没有那么强的对应关系,尤其是标准 C++,这种对应关系就更弱了,说 C++ 是 C 的面向对象扩展带有相当强的误导性,有提倡面向对象之嫌,面向对象是一种技术,只适用于一些具体的应用,而不是全部。对于大多数的应用来说,面向对象并不一定有很多好处,所以,我认为强调面向对象不好。

这就是我对标题发问的原因,不过说实话,这个问题本身没有什么学术价值,有点像捣乱,惹得版主有些不快,这也是情理之中的,还请版主多多原谅。

论坛徽章:
0
19 [报告]
发表于 2003-12-20 20:41 |只看该作者

本版的介绍也太不确切了

c++还是不错的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP