c++是让人变语言的奴隶,c是让语言变人的奴隶。

不同视角、不同观点、深度探讨,禁止人品和道德攻击
回复
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙
送出感谢: 4 次
接收感谢: 256 次

#61

帖子 eexpress » 2007-07-26 15:13

在pk中学习,是这意思啊。

其实,标题的意思,很少有人理解了。可能我说得太文字化了。
● 鸣学
头像
antonym55
帖子: 353
注册时间: 2007-04-03 9:52
送出感谢: 0
接收感谢: 0
联系:

#62

帖子 antonym55 » 2007-07-27 1:55

eexpress 写了:引用我的话,没明白我的话。

每个公司的c++的类库,调用规则,参数传入次序,控件细节等,都不同。你写过win的dll? 如果c++被调函数不声明成标准的c的调用,每个不同c++ ide编译的dll,都不能保证被其他c++或者其他语言,比如vb/dephi调用。
c 我一直用,作底层多,我的程序,从手持设备,到x86机器的dll和应用,到银行的unix下的终端,和自己用的单片机设备,都几乎不要任何修改,直接编译的。c 的2个标准,是建立在一个替换的基础上的。也是历史原因。你不要局限于x86机器,世界上到处都是程序,芯片上一样有c++,甚至有basic这样的,那更不能提通用了。

这是经验看到的,经验不是在网上搜罗几篇文章,偷换部分概念,就可以得到的。
当然,这是pk,都欢迎大家继续。说得越多,对大家帮助越多。知识面越广。继续。
1. 不同的编译器的STL 库的实现可能不同,例如 VC, BCB, gcc 对STL就有三种不同的实现,
但它们对库的用户提供相同的接口。第三方的c++库不一样也很正常,毕竟是不同的厂商生产。

2. win的dll,Linux的 so 是跟OS相关的东西,与c++ 语言本身无关

3. 纯 c 的项目,在 Windows 和 VxWorks 中做过,我遇到的情况是,就算都是用的VxWoks,不同硬件,涉及到硬件和平台相关的东西,c 的代码也很难做到不做修改,应用层部分相对修改就要少一些(这只是个人情况,不具有代表性).

4. 我并没有针对x86来谈c++, 一般来说,如果没做特殊说明,我所说的c++ 指的是Bjarne Stroustrup 的那个(ISO/IEC14882-1998描述的c++), 其它的C++,一般会特别说明,如Symbian C++,EC++... 这些与ISO C++ 还是有差别的.
TODO LIST:
1.valgrind:
2.gcov:
3.cppuint:未在Linux中使用
4.PostgreSQL:unixODBC
5.Doxygen:UTF8 中文问题,生成LaTex文档问题
6.LaTex:明确安装问题,UTF8 中文字体问题
头像
wanglei8312
帖子: 45
注册时间: 2007-07-06 15:40
送出感谢: 0
接收感谢: 0

#63

帖子 wanglei8312 » 2007-07-27 10:17

看看,C++ ,能如何呢?
oiniya
帖子: 256
注册时间: 2007-07-26 15:07
送出感谢: 0
接收感谢: 0

#64

帖子 oiniya » 2007-07-27 14:37

做主人?做奴隶?
完全看实力。
其实我是把C++当成朋友和伙伴的。
翼仙
帖子: 9
注册时间: 2007-02-02 22:28
送出感谢: 0
接收感谢: 0

#65

帖子 翼仙 » 2007-07-27 23:13

其实c和c++不具有可比性。。
不必要评出个高低贵贱的
哪样适合完成工作就用哪样呗

我现在就发现python不错
我就用 C + PYTHON 干我想干的事

汇编。。。
看人了。。
要修养地。。
头像
danielwyo
帖子: 66
注册时间: 2007-02-15 20:58
来自: 上海
送出感谢: 0
接收感谢: 0
联系:

#66

帖子 danielwyo » 2007-07-28 11:29

问题是C++几乎兼容C的啊. 如果你觉得C++的东西不舒服, 可以完全使用C的方式来工作, 但是如果你觉得C不爽, 你却不能在C上使用C++的方式来工作. 其实上, C++中很多东西都已经被C引用了, 甚至C中的部分设计超过了C++的前言, 看过C99的定义就知道了.

说C++繁琐, 那是因为C++拥有多种编程手段, 多种混用确实会让人感到繁琐, 但是习惯了一种就完全相反, 反而觉得是一种享受.

说C++不好, 我确实同意, 但不是跟C比.

C:
printf("some");
C++:
printf("some"); or std::cout<<"some";

C: (gtk style functions)
create_object();
object_function1(object, params);
object_function2(object, params);
object_function3(object, params);
....
C++:
class object
{
public:
object();
function1(params);
function2(params);
function3(params);
};

C:(call back function)
typedef void (*call_back)(void);
do_call_back(call_back);

C++:
class Some
{
protected:
virtual void call_back(void) = 0;
};


C:(unknown type)
function(void* p)
{
if (*p is type1)
...
else if (*p is type2)
...
...
}

C++:
class Base
{
public:
virtual function() = 0;
};

function(Base* p)
{
p->function();
}

or
template <class T>
function(T* p);



仔细看看就知道, 其实上C++表现形式更加丰富而已, 如果能够抓住一种方式, 你会发现编程更加简单. 不把这种丰富的表现形式当做一种负担, 或许你会觉得更加快乐, 不是吗?
Love in' Littlewhite
头像
danielwyo
帖子: 66
注册时间: 2007-02-15 20:58
来自: 上海
送出感谢: 0
接收感谢: 0
联系:

#67

帖子 danielwyo » 2007-07-28 11:41

eexpress 写了:我c++用10年了。结束了。BCB结束了。c++每个公司一套。不断的改,不断的变奴隶。是这个意思。
C++10年确实长, 值得敬佩, 我用C++才5年, 只有你的一半, 你算我的前辈. 但首先要搞清楚一个观点, C++只有一个标准, 只是编译器有不同版本, 况且你拿BCB出来说事, 恰恰BCB的C++是对标准C++更变最大的一种编译器. 但这不是最终观点, BCB的核心是VCL, 而不是C++, 所有的问题都围绕着VCL来, 甚至C++也是为了支持VCL而存在, 与标准C++差别大所以才有你这样的误会.
Love in' Littlewhite
头像
danielwyo
帖子: 66
注册时间: 2007-02-15 20:58
来自: 上海
送出感谢: 0
接收感谢: 0
联系:

#68

帖子 danielwyo » 2007-07-28 11:47

xhy 写了:我有同感 C++语言的语法很BT 太多细节了
深入挖掘下去 很多东西要研究 C++对象模型 模板元编程 等等
我一般从C++里学设计思想 然后用C语言实现


btw: C++模板和C语言的宏都是土灵完备的。。。。
C++的语法BT? 其实上这个错误仍然是C造成的, 就是为了兼容C的语法才有这个结果.
事实上, 象Java的语法, 个人感觉就非常清透, 而C++完全可以抛弃C的格式, 可惜没有做到.

Java, C#, 这些语言的语法内容并不比C++少, 为什么用起来反而简单呢? 道理只有一个, 那就是它们的语法只有一种体系, 而C++的语法同时包括C++以及对C的兼容两种体系.

我很高兴出现一种更加纯粹的C++改进语言, 那就是D语言, 它有比C++更加先进而且没有C的包袱. 但从语法本身来讲, 它仍然是C++的延续.
Love in' Littlewhite
头像
danielwyo
帖子: 66
注册时间: 2007-02-15 20:58
来自: 上海
送出感谢: 0
接收感谢: 0
联系:

#69

帖子 danielwyo » 2007-07-28 11:57

猛将兄 写了::D 我喜欢C,不喜欢c++,因为C++让我很头大,经常会看不懂。关于OO,glib和gtk+里面用C实现的OO多漂亮
OO只是思想,根本不局限于语言的。
不能把这个当做理由, 你的理由只是C++不大会用. 但事实上, C++写的东西反而比C好懂.
gtk确实是使用C实现的, 但我敢说, 如果gtk是用C++实现的, 那么gtk会更加漂亮.
而gtk的实现, 其实并不是这么简单的, 而是当初gimp已经使用C实现了, gtk作为gimp的接口层, 自然会用C来实现而不是C++.
甚至有很多软件, 它使用C的原因很简单, 那时候C++并未成熟, 或者C++并未出现.
Love in' Littlewhite
头像
danielwyo
帖子: 66
注册时间: 2007-02-15 20:58
来自: 上海
送出感谢: 0
接收感谢: 0
联系:

#70

帖子 danielwyo » 2007-07-28 12:03

3162073 写了:同意LS, 不要说之有C++ 才能写大型程序, 我所知道的很多游戏就是C写的,比如quake等, linux这么大的系统不也是C写的吗? 你会觉得windows是C++写的吗? 架构,思路考虑清楚了 再大的程序一样可以用C写, 论开发周期,C++不一定比C有优势.. 况且C++ 那些变态语法,所造成的代码冗余不知道比C多多少, 执行效率还是C有优势..d
是啊, 你是不是要说, quake, linux等等都是用c写的, 所以C要比其它所有语言都强, 因为如果其它语言比C强, 为什么不用其它语言写quake或者linux呢?
其实上linux用C写是历史留下的原因, 先搞清楚了.
你认为C++那些语法变态, 你能够举出来什么语法变态好吗? 大家可以进行讨论. 如果说你仅仅是对C++没有学透, 从而觉得C++的语法很繁琐, 那也不好说了.
Love in' Littlewhite
头像
danielwyo
帖子: 66
注册时间: 2007-02-15 20:58
来自: 上海
送出感谢: 0
接收感谢: 0
联系:

#71

帖子 danielwyo » 2007-07-28 12:10

声明一下, 我的争论只针对C与C++本身, 只是在强调一个观点, 那就是C++确实比C强. 不针对这里任何人.
况且这里很多都是前辈高人, 或许我的理论根本站不住脚, 希望各位能够指点. 谢谢.
Love in' Littlewhite
smartyin
帖子: 99
注册时间: 2005-12-20 17:06
送出感谢: 0
接收感谢: 0

#72

帖子 smartyin » 2007-07-29 21:54

eexpress 写了:愤青???看清楚上面的每个人的话没?这是pk哦。不要先贬低别人,就认为自己有理。别无知当个性。
呵呵,ee你真悲惨,好好一个主题,却被人乱骂一通,搞的完全偏离了你的本意,呵呵!

这么多人讨论,我也来凑一下热闹,我就问两个问题吧(特别是针对那些所谓的对C++很了解的人):
1. C++为什么不叫++C?
2. C能实现OO吗?想想GTK

另外,我也常用C++,我相信很大一部分用C++的人最开始都是学的C,我倒是认为,语言本身没有优劣,它既然称之为语言,那么就应该尽可能描述出所有其他语言能够描述的东西,不然就是有功能缺陷!++嘛,不过是一种更易用化的包装而已,这种包装也不是什么领域都变得易用的,要不也不会出现那么多的编程语言了!不是吗?
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙
送出感谢: 4 次
接收感谢: 256 次

#73

帖子 eexpress » 2007-07-30 9:34

第一页开始,就已经不是我的本意了,就已经控制不住了的。 。没关系啊。 :lol: 大家支持那种,是自己喜欢的事情。我曾经都想精简c的库,作一个自己用的c--呢。别++c了。喜欢简单。
● 鸣学
头像
speme
帖子: 723
注册时间: 2005-10-02 8:22
送出感谢: 0
接收感谢: 0
联系:

#74

帖子 speme » 2007-07-30 10:51

eexpress 写了:在pk中学习,是这意思啊。

其实,标题的意思,很少有人理解了。可能我说得太文字化了。
应该是说C++类库一堆,要查一堆资料,然后再用.
而C就那么几个函数,拿来就用.当然简单哦,不过,有些时候也挺累人的,人家一个语句就可以完成的事,自己要一堆代码.
头像
yangcheng
帖子: 498
注册时间: 2005-09-27 18:24
来自: 杭州
送出感谢: 0
接收感谢: 0
联系:

#75

帖子 yangcheng » 2007-07-30 13:16

3162073 写了:C++ 是协会定的,所以很庞大, C一个人发明的 所以很小..

C++ 是烦人.. 反正跟C完全兼容,那些用不到的特性 不用也就算了~~ 以前流行类,现在流行GP.. 流行的不一定都好.

特性这东西 就是让人方便才用的,觉得不方便,完全可以不用阿.. 不必顾及啥面子什么的 好像不用C++全部特性就不是好汉一样,作出东西才是关键

STL,模版这些是个好东西.. 我比较懒所以喜欢用..其他都无所谓了..
和C不是完全兼容的 使用了大量void指针的代码转成c++还是很费力的
回复

回到 “深度PK版”