c++是让人变语言的奴隶,c是让语言变人的奴隶。
-
- 帖子: 353
- 注册时间: 2007-04-03 9:52
- 联系:
1. 不同的编译器的STL 库的实现可能不同,例如 VC, BCB, gcc 对STL就有三种不同的实现,eexpress 写了:引用我的话,没明白我的话。
每个公司的c++的类库,调用规则,参数传入次序,控件细节等,都不同。你写过win的dll? 如果c++被调函数不声明成标准的c的调用,每个不同c++ ide编译的dll,都不能保证被其他c++或者其他语言,比如vb/dephi调用。
c 我一直用,作底层多,我的程序,从手持设备,到x86机器的dll和应用,到银行的unix下的终端,和自己用的单片机设备,都几乎不要任何修改,直接编译的。c 的2个标准,是建立在一个替换的基础上的。也是历史原因。你不要局限于x86机器,世界上到处都是程序,芯片上一样有c++,甚至有basic这样的,那更不能提通用了。
这是经验看到的,经验不是在网上搜罗几篇文章,偷换部分概念,就可以得到的。
当然,这是pk,都欢迎大家继续。说得越多,对大家帮助越多。知识面越广。继续。
但它们对库的用户提供相同的接口。第三方的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++ 还是有差别的.
- wanglei8312
- 帖子: 45
- 注册时间: 2007-07-06 15:40
-
- 帖子: 9
- 注册时间: 2007-02-02 22:28
- danielwyo
- 帖子: 66
- 注册时间: 2007-02-15 20:58
- 来自: 上海
- 联系:
问题是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++表现形式更加丰富而已, 如果能够抓住一种方式, 你会发现编程更加简单. 不把这种丰富的表现形式当做一种负担, 或许你会觉得更加快乐, 不是吗?
说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
- 来自: 上海
- 联系:
- danielwyo
- 帖子: 66
- 注册时间: 2007-02-15 20:58
- 来自: 上海
- 联系:
C++的语法BT? 其实上这个错误仍然是C造成的, 就是为了兼容C的语法才有这个结果.xhy 写了:我有同感 C++语言的语法很BT 太多细节了
深入挖掘下去 很多东西要研究 C++对象模型 模板元编程 等等
我一般从C++里学设计思想 然后用C语言实现
btw: 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
- 来自: 上海
- 联系:
不能把这个当做理由, 你的理由只是C++不大会用. 但事实上, C++写的东西反而比C好懂.猛将兄 写了:我喜欢C,不喜欢c++,因为C++让我很头大,经常会看不懂。关于OO,glib和gtk+里面用C实现的OO多漂亮
OO只是思想,根本不局限于语言的。
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
- 来自: 上海
- 联系:
是啊, 你是不是要说, quake, linux等等都是用c写的, 所以C要比其它所有语言都强, 因为如果其它语言比C强, 为什么不用其它语言写quake或者linux呢?3162073 写了:同意LS, 不要说之有C++ 才能写大型程序, 我所知道的很多游戏就是C写的,比如quake等, linux这么大的系统不也是C写的吗? 你会觉得windows是C++写的吗? 架构,思路考虑清楚了 再大的程序一样可以用C写, 论开发周期,C++不一定比C有优势.. 况且C++ 那些变态语法,所造成的代码冗余不知道比C多多少, 执行效率还是C有优势..d
其实上linux用C写是历史留下的原因, 先搞清楚了.
你认为C++那些语法变态, 你能够举出来什么语法变态好吗? 大家可以进行讨论. 如果说你仅仅是对C++没有学透, 从而觉得C++的语法很繁琐, 那也不好说了.
Love in' Littlewhite
- danielwyo
- 帖子: 66
- 注册时间: 2007-02-15 20:58
- 来自: 上海
- 联系:
-
- 帖子: 99
- 注册时间: 2005-12-20 17:06
呵呵,ee你真悲惨,好好一个主题,却被人乱骂一通,搞的完全偏离了你的本意,呵呵!eexpress 写了:愤青???看清楚上面的每个人的话没?这是pk哦。不要先贬低别人,就认为自己有理。别无知当个性。
这么多人讨论,我也来凑一下热闹,我就问两个问题吧(特别是针对那些所谓的对C++很了解的人):
1. C++为什么不叫++C?
2. C能实现OO吗?想想GTK
另外,我也常用C++,我相信很大一部分用C++的人最开始都是学的C,我倒是认为,语言本身没有优劣,它既然称之为语言,那么就应该尽可能描述出所有其他语言能够描述的东西,不然就是有功能缺陷!++嘛,不过是一种更易用化的包装而已,这种包装也不是什么领域都变得易用的,要不也不会出现那么多的编程语言了!不是吗?
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
- speme
- 帖子: 723
- 注册时间: 2005-10-02 8:22
- 联系: