| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2282 人关注过本帖
标题:用OO的思想来写C程序[原帖内容已被清除...]
取消只看楼主 加入收藏
pingf
Rank: 2
等 级:论坛游民
帖 子:33
专家分:66
注 册:2010-7-25
收藏
 问题点数:0 回复次数:13 
用OO的思想来写C程序[原帖内容已被清除...]
删了原帖中的介绍,帖子变味儿了...
................................




[ 本帖最后由 pingf 于 2010-7-27 22:58 编辑 ]
搜索更多相关主题的帖子: 思想 
2010-07-25 18:13
pingf
Rank: 2
等 级:论坛游民
帖 子:33
专家分:66
注 册:2010-7-25
收藏
得分:0 
ls说的ooc-lang,可以理解为另一门语言了(尽管它可以通过某个程序转换成c99的代码)
这有点像GObject中早期的GOBuilder以及现在的Vala,这和JCOOP有本质上的区别.

当然用C去进行OO开发的也早就有,比如GObject,但是这个虽然强大却不是很好用.

如果拿JCOOP跟ooc-lang相比,JCOOP简单的多;如果拿ooc-lang跟Vala比,ooc-lang又简单的多.
毕竟JCOOP仅仅是宏的集合,但这意味着纯c编译器就编译的,比如GCC,直接编译就行了

另外补充下,
用C写oo的方式一般有两种,一种通过函数以及指针的配合,一层一层的写用于"类"生成的函数......
这种方式的确很好,但是也有一个明显的缺点就是使用起来极其不方便....
另外一种方式就是通过宏来提供一个形式上的模拟,比如JCOOP,当然因为宏本身就有些缺点,所以.....
还要说一下GObject其实结合了上面两种方式,但是因为其的复杂性,使用起来依旧极度不方便,
特别是当你要是用它构造一个类时,
JCOOP本身的定位就是一个模板,所以设计之初重点考虑的就是简化类的设计,所以使用起来要简单的多.

最后,再补充下,使用JCOOP和SlickEdit配合起来也是非常方便的,SlickEdit对其解析的相当好....






2010-07-25 19:53
pingf
Rank: 2
等 级:论坛游民
帖 子:33
专家分:66
注 册:2010-7-25
收藏
得分:0 
回复 4楼 东海一鱼
呵呵,这个只是来"玩"C语言的,
并不期望会怎么规模化......
仅仅是因为个人的兴趣,想拿C去完成一些有意思的事情....
当然也期望有兴趣相投的多多参与更好,O(∩_∩)O~

2010-07-25 20:33
pingf
Rank: 2
等 级:论坛游民
帖 子:33
专家分:66
注 册:2010-7-25
收藏
得分:0 
回复 5楼 BlueGuy
Objective-c的是水果整的,那是独立的一门语言,并不是c!
还有就是Objective-c是一门广受批评的语言,它的热更多的是源自
iPhone的盛行,以及基于Objective-c的cocoa框架的优良设计.
而其本身,让我来说是真的很不给力,了解一下是好的,但如果不是水果死忠,没有必要深入学习的.

不过从类的声明而言,JCOOP和Objective-c还有几分相似~~~


2010-07-25 20:41
pingf
Rank: 2
等 级:论坛游民
帖 子:33
专家分:66
注 册:2010-7-25
收藏
得分:0 
回复 8楼 Devil_W
首先,我并不是说服谁类用这个,只是希望兴趣相投的人参与并使用.
另外c++是很强悍的,它比JCOOP强了十万八千倍!
但是正像Linus Trovalds一样,我对C++其不是很喜欢...
原因如下,
1.c++掩盖了过多的细节,但却没有诸如GC之类的东西
很多人学了相当长的一段时间也是仅仅知道基本的语法.而在对内存分配等方面
C++的编译器为我们隐藏了太多的细节,比如默认构造函数的调用,内存具体在何时分配等等细节问题,
程序员很多时候无从知晓,而C++本身又没有自动的垃圾回收机制.这就导致很多初级程序员的代码存在大量难以
维护的BUG.
2.繁琐的语法,不统一的标准
据说还没有哪个c++的编译器能完整的实现C++的所有语法,早期的VC 6对标准的支持有违差劲.
另外各厂家的编译器有很多差异,而C++的标准在一些关键点上并没有统一的规范,比如name mangling....
而像微软直流,又在其.Net平台下整了个C++/CLI,这对高手可能有些好处,但是却大大增加了初学者的负担.
因此我一般倾向于使用GCC那套免费的跨平台的东西
3.诡异的语法
其实C++的语法设计也是很不好的,引入了大量的语法结构.导致很多时候并不雅观.
比如泛型中出现的那个>>要多用个空格,一般的编译器才能正常识别.
4.语法不够简练
如果你学过设计模式,那么会发现用C++去实现各种设计模式比用JAVA去实现要累的多.
5.嵌入式应用不易普及
正式因为它的复杂,在低端嵌入式系统上很难普及应用
...blablabla.....


基于上面等的种种原因我个人仍旧比较喜欢纯C!
但是事实上学C的过程中不免接触到c++,这也是很多人把c跟c++混为一谈的一个主要原因,
比如纯c中并没有try...catch...,但有些讲纯c的书上却出现了这个.
如果你说C缺乏高级的语法,那么不妨试试JCOOP,如果你真的需要一些高级的
基于语言本身的东西的话,我个人比较喜欢Ruby和Scala.


还有就是C++的各种类库中,我个人还是有比较中意的,比如Qt就是我非常喜欢的的一个类库.


2010-07-25 21:16
pingf
Rank: 2
等 级:论坛游民
帖 子:33
专家分:66
注 册:2010-7-25
收藏
得分:0 
另外还要补充的一句就是
像JCOOP这样的宏只是提供对OO机制的"模拟",而不是在C上实现了OO的机制!
所以JCOOP技术含量并不高,很容易入门,
但JCOOP本身是精心设计的,能保证其的美观和易用性......
如果有兴趣的朋友有何改进方案,可以电邮我或是给我留言.
2010-07-25 21:24
pingf
Rank: 2
等 级:论坛游民
帖 子:33
专家分:66
注 册:2010-7-25
收藏
得分:0 
回复 11楼 Devil_W
看来你是追求效率那一类啊,
我比较喜欢Ruby,是因为它的语法,我喜欢的是语言本身
因为一来我写的程序一般不需要那么高的速度,二来从计算机的发展来看,
速度的问题早晚可以通过代码的重写和优化和硬件升级来解决
不过个人认为如果是纯粹的追求速度,
那么千万不要oo,也不要fp,简单的过程式编程外加良好的并发支持才是关键.
我不喜欢c++是因为它有相当一部分语法不够人性化,而其基础上的一些类库
如MFC,更是无比丑陋[个人观点],不过Qt是个例外,个人认为Qt还是很美的

当然我也没说你非要用这个啊,我只是希望那些对纯C以及OO有兴趣的人能够
参与与交流而已

还有就是,可以看看Vala,和C基本一致的效率,C#的语法,
但是这个更多用来做界面,你说的写网关层的软件它能不能胜任我就不清楚了
2010-07-25 22:34
pingf
Rank: 2
等 级:论坛游民
帖 子:33
专家分:66
注 册:2010-7-25
收藏
得分:0 
不是吧?!!
它高度定制到哪里呢?
我从来都不这么觉得.
2010-07-25 22:43
pingf
Rank: 2
等 级:论坛游民
帖 子:33
专家分:66
注 册:2010-7-25
收藏
得分:0 
回复 13楼 Devil_W
从c++的语法来看,它不可能是高度定制化的,
如果你说的是代码方面的,能举个实例代码来说明么?
如果你说的是类库的话,那么就不是c++高度定制化,而是他类库比较多
而其它语言的类库也非常丰富的...
2010-07-25 22:49
pingf
Rank: 2
等 级:论坛游民
帖 子:33
专家分:66
注 册:2010-7-25
收藏
得分:0 
回复 16楼 Devil_W
你要这样说的话,那么很多都有可定制性
比如C,这个写底层比C++更普及,而且嵌入式上用C++的并不多,而且普遍反应一般,
C也可以写应用,
包括GUI,比如Gtk就是纯C的(当然它提供了对很多语言的绑定)
包括Web,使用CGI等,或者自己用socket写个服务器,
但是这不应该叫可定制性吧.......


还有你说的底层,
如果是PC上的,大多数的底层都是调用的都是系统的API,
所以拿ruby,python写串口通讯等的程序也是没问题的.
如果是嵌入式应用,比较低端的51,avr之类,很少用c++的,即便是有些支持了c++也是不完整的支持.
很多嵌入式的编译器对于泛型这类的语法都是不支持的.

另外能写底层的不止是C和C++,
Lua,Ruby,Python等都有其嵌入式版本(因为他们本身都可以拿C来实现),甚至可以在某些单片机上使用(当然功能上有所阉割,c++也是如此)
而手机上的应用C++可以,但绝对不是主流,主流的仍旧是JAVA,早些的J2ME到最近热的烫手的Android,
还有比较新的Rhodes(使用Ruby的跨平台[iPhone,android等手机]手机开发套件)




2010-07-25 23:53
快速回复:用OO的思想来写C程序[原帖内容已被清除...]
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031185 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved