免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: art_codes

[C++] 确认一下c++中不能使用interface(如java)那样的功能把 [复制链接]

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
发表于 2009-03-24 15:26 |显示全部楼层
原帖由 everlasting_188 于 2009-3-24 14:51 发表
问:你有什么理由来否定,你一句话否定一个语言,具体的比较下


我一句话回答你:“java是一个限制开发者思想的语言”。 这就足够糟糕了。

如果你想知道java到底限制了哪些思想,  我有空就写, 没空你等等。
或者也像楼主一样, 提个什么“interface”什么的问题。

我首先回答和元数据有关的。
C++不直接支持元数据。 可以通过库提供。 Qt就是一个例子。
在这方面, C++确实没有提供给开发者一个选择:”我需要的时候,就提供给我, 否则不要让我付出任何代价“。
而是直接不提供。

java是默认提供元数据。
其他语言层次方面, 我没看出java比C++先进在哪。


原帖由 everlasting_188 于 2009-3-24 14:51 发表
我怀疑: 你写出来的c++程序是否比使用java写出来的,在jvm运行的快,稳定,希望你也实际测试一下


我上面也举了一个例子,虽然不是java和jvm,而是C#和clr, 请仔细看。
为什么不整体全部用C#开发完了算了? 也请你仔细想想。

而且你用这个来反驳我根本就是很可笑的事情。
我怀疑你是否故意在糗我? 嗯?  拿我的代码和java代码比效率?

而我提出的质疑, 是很有可能发生的事情。
asm c c++ 才有效率上的可比性。  java和c++比效率??? non-sense。


原帖由 everlasting_188 于 2009-3-24 14:51 发表
语言只是个工具,会说中国话就是演讲家?


一方面来说, 语言确实是工具。
那么, 是否分析,比较工具就是不应该的?
是否你会了一个工具, 就可以用它做任何事情? 拿着锤子就把任何事务当钉子?

显然不是。  比较工具就是为了发现工具的适用范围。 这是其一。


其二, 对于语言, 既是表达程序员思想的工具,  又是锻炼程序员思想的工具。
java对于锻炼oo思想还行。 除此之外, 通过java, 只能是限制程序员的思想。


原帖由 everlasting_188 于 2009-3-24 14:51 发表
你以为你懂c++就不是了?


我一再强调, java限制了程序员的思想, 所以java程序员更容易沦为只会写代码, 不会思考的”代码工人“。
我没有丝毫贬低”工人“的意思。

如果你觉得受刺激了。 我再可以为你把”代码工人“ 改为”技术工人“。 其实我想表达的是后一个意思。也就是熟练工那种人员。
社会同样需要, 而且大量需要的是它们。

但是, 如果世界上只有熟练工, 科技就很难进步。



同时, 我不仅仅是懂c++, 我也懂一部分java,甚至比写过诸多项目的java开发者更了解java语言是怎么回事。
”代码工人“的结论, 是我在了解两种语言的基础上,通过比较得出的。

看看java论坛中充斥的 " object到底是传值还是传引用 "
看看java开发者意识不到MouseAdapter的真正用意。
看看java开发者对除了oo的其他编程范式的了解
看看 ……

我再次重申, 上面的是事实, 但是不是贬低。
软件工程需要只会写代码的人。

但是, 通过c++语言的学习, 你可以很轻易的:
了解object、传值、传引用的背后机理
了解mix-in风格
了解generic programming、functional programming、 template metaprogramming
了解……

所以C++不那么容易沦为代码工人。  有太多的事情值得你去思考。
(当然, 不思考这些问题, 同样可以进行C++开发)

[ 本帖最后由 OwnWaterloo 于 2009-3-24 15:56 编辑 ]

论坛徽章:
0
发表于 2009-03-24 15:30 |显示全部楼层
原帖由 redspider 于 2009-3-24 15:24 发表
java 流行的一个重要原因是因为它是 Sun 的,商业推广的力量不可小觑。


是的,c++和c也是因为unix才火起来的,商业公司推一个无用的东西,这个逻辑本身就是不合理,只要人家投入,很多东西对会做得很好的.不能偏激,我也是先学c++,后学java的,现在又和处理和硬件相关的一些东西,重新拾起c++来.只是觉得c++的有些人观点太偏了


就很多应用来说,java是合适的
就和硬件相关的说,c++,c,汇编是合适的


开发效率和工具能使用的场景肯定都是考虑的因素

论坛徽章:
0
发表于 2009-03-24 15:41 |显示全部楼层
看看java论坛中充斥的 " object到底是传值还是传引用 "
看看java开发者意识不到MouseAdapter的真正用意。
看看java开发者对除了oo的其他编程范式的了解

这个问题,java很多人不原意了解jvm,没有像c++一样必须很清楚编译器行为,这方面是c++的限制太多了,也不一定是有点,也是很大的缺点,呵呵,是否就此判断c++是个限制型的垃圾语言呢?对java来说确实很多人,可以很少关注这些

[ 本帖最后由 everlasting_188 于 2009-3-24 15:43 编辑 ]

论坛徽章:
0
发表于 2009-03-24 15:43 |显示全部楼层
俺一直觉得,基于形式语言与自动机的设计才是正道,而OO只是组建化实践过程中的一个阶段

C++的过错就在于强调类的设计,最终导致了过渡设计,Java引入接口与单继承两个概念实际上减轻了对类设计的依赖,尝试弥补C++过渡设计这个难题,但不幸的是,最后Java类库的设计者自己都陷入了过度设计的泥潭。而C++喜好编译时OO特性这一点又导致了这么个结果:一方面,C++的OO特性不完整,另一方面不完整的OO特性加剧了过度设计。

在Python官方网站上,可以找到一个讲述functional编程的文档,里边就对OO于functional两种编程风格做了分析,作者认为,functional编程强调没有状态,而OO编程强调保存状态(类属性)。因此,OO编程语言中,成员函数过分依赖于函数执行的副效应了,这是OO语言难于分析设计的根本。而functional编程语言尽量避免负效应,这将会在大系统,高并行时代再次为functional编程风格带来辉煌。

俺虽然不完全认同他的观点,但一直以为他对OO的分析讲得是有道理的。成员函数的负效应是OO不得不面对的一个问题,Java在不降低实用性的基础上,朝这个方向走了很多,俺认为这是一个伟大的进步

俺看过C++作者写的一本书,看到那哥们在书里拿数学哲学和文学装B很不爽....

去上课了,晚上回来再看这个贴

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
发表于 2009-03-24 15:45 |显示全部楼层
原帖由 everlasting_188 于 2009-3-24 15:15 发表
指针和面向对象使编译器复杂化,很多了掌握不好c++,因为对编译器理解不到位.指针的引入导致开发一个好的很OO的很难

做C++开发, 对编译器的实现机制躲避还来不及, 什么时候真正需要去了解它????
不了解编译器如何实现OO机制就会使用C++的OO机制吗???
我真怀疑你到底是不是做C++开发的 ……


原帖由 everlasting_188 于 2009-3-24 15:15 发表
c++面向对象,确实还没见到什么好的框架
而java就很多优秀的框架,spring,hibernate....


java背后有sun, 有ibm, 简而言之, 有钱。
c++背后呢?


原帖由 everlasting_188 于 2009-3-24 15:15 发表
底层的话,我更倾向于c


如果你的领域的需求满足2个条件 : 效率 + 抽象机制
那么C++就是不二人选。  比如game。 比如WOW。

当然,你要坚持用c是你的自由, 你用汇编都是你的自由。



原帖由 everlasting_188 于 2009-3-24 15:15 发表
底层的操作系统,数据库,其他的一些东西,不能归于c++,因为别人发明了语言也可以发明其他至少不是我们接触到的c++语言,而且底层的很多都是c和汇编来做的.


那java是不是也是这样?  也可以由别人发明,  而不是我们现在接触到的java?

那么我们到底应该讨论什么?  c++和java背后的设计理念
绕了个弯, 还是在讨论现在我们见到的c++和java。





原帖由 everlasting_188 于 2009-3-24 15:15 发表
1>存在就是合理的,java存在就有他的道理,没有根据的否定我认为不是一个技术人员讨论问题的基本观点


仅赞同前半句。

但是, 我反复的强调, 我说java糟糕(我没有说它的存在是不合理的)是有根据的。 很多的根据。
同时, 到底是我没有根据, 还是你没有根据???

原帖由 everlasting_188 于 2009-3-24 15:15 发表
3>c++面向对象不及java,指针方面吧,也是继承c的,这种混合体确实没有很大的竞争力

C++面向对象为什么不及java? 为什么混合体就没有竞争力???


原帖由 everlasting_188 于 2009-3-24 15:15 发表
好在标准维员会也在新的标准中加很多好用的特性,想想:一个面向对象的带指针的静态语言,这些年没有什么语言上的变化,确实在很多领域都没有什么竞争力了,能保留的也就是和硬件相关的人.

带指针怎么了? java里面除了值类型, 其他哪样东西不是指针???

论坛徽章:
0
发表于 2009-03-24 15:45 |显示全部楼层
原帖由 reiase 于 2009-3-24 15:43 发表
俺一直觉得,基于形式语言与自动机的设计才是正道,而OO只是组建化实践过程中的一个阶段

C++的过错就在于强调类的设计,最终导致了过渡设计,Java引入接口与单继承两个概念实际上减轻了对类设计的依赖,尝试 ...



你说话客气点,比好一点,找书来装B,更好笑,至少我不用找书!!

论坛徽章:
0
发表于 2009-03-24 15:46 |显示全部楼层
原帖由 OwnWaterloo 于 2009-3-24 15:45 发表

做C++开发, 对编译器的实现机制躲避还来不及, 什么时候真正需要去了解它????
不了解编译器如何实现OO机制就会使用C++的OO机制吗???
我真怀疑你到底是不是做C++开发的 ……




java背后有sun ...



你要抽象成二进制,我都没有前提和你讨论了.

我觉得的还是别做技术的愤青了,报纸,电视,internet,其实和语言一样,各有各的市场和环境,从多方了解这个世界.

[ 本帖最后由 everlasting_188 于 2009-3-24 15:49 编辑 ]

论坛徽章:
0
发表于 2009-03-24 15:48 |显示全部楼层
原帖由 everlasting_188 于 2009-3-24 15:30 发表


是的,c++和c也是因为unix才火起来的,商业公司推一个无用的东西,这个逻辑本身就是不合理,只要人家投入,很多东西对会做得很好的.不能偏激,我也是先学c++,后学java的,现在又和处理和硬件相关的一些东 ...

商业产品并不一定好,但是商家会花钱让人说他好,或者用绑架的手段让人使用。
不否认产品会逐步改善,但是坐等糟糕的设计被慢慢改善不如另外寻找原本就优秀的东西。

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
发表于 2009-03-24 15:50 |显示全部楼层
原帖由 everlasting_188 于 2009-3-24 15:41 发表
这个问题,java很多人不原意了解jvm,没有像c++一样必须很清楚编译器行为,这方面是c++的限制太多了,也不一定是有点,也是很大的缺点,呵呵,是否就此判断c++是个限制型的垃圾语言呢?对java来说确实很多人,可以很少关注这些


你又错了。

学C++, 必须了解这些吗?  去看看BS的忠告。
还有我上面的疑问 : 你真的是做C++开发的吗?
日常C++开发, 需要你了OO实现机制吗?


我说上面的诸多“了解”,  你不高兴也可以不去了解同样可以进行C++开发
但是, 如果你愿意去想那些事, java不会提供给你机会。 但是C++可以。

论坛徽章:
0
发表于 2009-03-24 15:51 |显示全部楼层
如果冒犯了各位技术大牛的话,sorry!!!

语言就是:报纸,电视,internet

无所谓谁最好,当然你也可以认为其中的一个最牛,其他都是垃圾!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP