HyperIris
发表于 2011-7-18 10:44
SUPERFIGHT
发表于 2011-7-18 11:06
~ 语言其实还好啦~ 就是现在的软件专利看得烦~ 什么都能起诉~
蕾丝蕾丝
发表于 2011-7-18 12:39
引用第118楼HyperIris于2011-07-18 10:26发表的:
c/c++ 作为工业基础,其地位不言而喻。
....... images/back.gif
不能同意更多。有太多的码农在计算机基础这一块缺乏常识,却反过来质疑基础知识的必要性
两点水
发表于 2011-7-18 16:21
引用第120楼HyperIris于2011-07-18 10:44发表的:
这好像是Linus Torvalds说的,你搬出这个有什么意义?linux 内核绝大多数都是用c写的,他觉得c++不好用很奇怪吗?
....... images/back.gif
不用到他那个境界吧,C 确实比 C++ 容易,说 C 难的回去重修程序设计吧。C++ 是专门用来堆人海的,就像 Java 是专门给印度和中国人用来替美国外包。
OO 的好处是分治法解方程,他的意义在于让要解决的问题更简单而不是让编程更简单。而且问题被分治之后会更好控制,更容易测试,而且开发的流程衔接更紧密。
对普通用户来说,最理想的当然是汇编,是机器码,是 native api,甚至是真正的“天才吧”给你技术支持,问题这真的搞不起……
鸡蛋灌饼
发表于 2011-7-18 16:36
引用第106楼fctt2008于2011-07-18 07:02发表的 :
至于“庞大复杂”“奇技淫巧”,只需要看看诸如effective c++和more effective c++这一类书有多少就知道了。作为通用语言,内存操作细节之类的东西根本就不应该暴露出来。
....... images/back.gif
那些东西完全可以不管
我现在写的一个C++ daemon就是把他当面向对象支持的C来用,成员一律public
还是那句话,语言的特性你完全可以不用,特性丰富不是喷语言的理由
引用第113楼thq于2011-07-18 09:03发表的 Re:回 94楼(鸡蛋灌饼) 的帖子 :
optional的吧我记得。
不过0x里面没有varadic template实在太不爽了。 images/back.gif
我理想中的新C++应该有个增强的函数式语言被嵌入到编译期,现在的TMP那堆东西完全就是蛋疼,有些东西还做不了
引用第120楼HyperIris于2011-07-18 10:44发表的 :
这好像是Linus Torvalds说的,你搬出这个有什么意义?linux 内核绝大多数都是用c写的,他觉得c++不好用很奇怪吗?
到他那个境界觉得c++不好用很奇怪吗?images/back.gif
C++有些设计哲学对于底层开发人员——特别是操作系统的开发者来说纯粹是多次一举……
再加上那蛋都已经被疼掉了的ABI兼容性……
引用第121楼SUPERFIGHT于2011-07-18 11:06发表的 :
~ 语言其实还好啦~ 就是现在的软件专利看得烦~ 什么都能起诉~ images/back.gif
中国没有软件专利,先谢国家吧
henvelleng
发表于 2011-7-18 16:53
这火果然最后还是烧到c++身上去了,躺着也中枪啊
c++其实有很多类似语感之类的东西,类似于按惯例我们应该怎么设计接口,按惯例该接口定义为public和private时包含了哪些不需要列入注释你就应该懂的潜台词等等。其实现在的c也是这样,到处是设计模式的影子
linus痛恨的是那些害人害己不懂规矩的半调子c++程序员,另外在kernel.org主页上的faq还有很多关于c和c++的有趣的论调
精钢魔像
发表于 2011-7-18 16:57
玩模板元编程请使用intel 的编译器,开5级检查
微软那个根本找不到错在什么地方。不过也是,简化版么
Andiry
发表于 2011-7-18 17:19
dada
发表于 2011-7-18 18:26
引用第116楼thq于2011-07-18 09:33发表的:
结果呢? images/back.gif
从金融行业看基本达到设计目标,开发效率比以前C的时候强大了很多,硬件架构选型和软件选型基本分离了。大公司的非核心类应用基本都迁移到JAVA上了,我了解的大型保险公司核心基本都使用JAVA了,证券、银行部分核心未迁移。
venusvsvirus
发表于 2011-7-19 01:29
引用第112楼thq于2011-07-18 09:00发表的 :
⋯⋯RAII要比autorelease优雅多了好不好。
scope_ptr,auto_ptr,shared_ptr哪个不比autorelease强?
就语法来说,objc实在是一个error-prone的语言,连父类的析构都要显式调用,有这么麻烦么?
images/back.gif
C++是simula系(COOP),OBJC是smalltalk系(POOP)两者根本没可比性
C++中smartpointer干的是NSObject中retain和release干的事(当然并不是所有smartpointer都是引用计数的实现)
RAII...你什么时候产生了OBJC不能RAII的错觉
父类的析构函数需要显式调用这是有原因的,objc中调用一个类的initxxx函数不一定会返回这个类的对象,self不一定指向当前对象,super也不一定指向当前对象的基类对象....你还可以动态的修改你的基类这个类的原型,正如objc玩不出template那一票狂霸酷拽屌,objc在prototype,module mixin,class cluster,duck type这方面的能力也是C++望尘莫及的。这都不是缺陷,也没有谁比谁更“优雅”,只是语言设计的取向不同
henvelleng
发表于 2011-7-19 02:35
其实一个带引用计数的智能指针的实现也不过区区几十行至百行代码而已,何必这么纠结,很多资源管理比较复杂的场合还真不屑于用这些现成的RAII,自己动手现写一个反而更好用
其实,有些事情跟ps修图差不多,关键不是你的能力能修到什么程度,关键是你知道什么时候该适可而止该收手,不要再继续修下去了。我的意思大家应该懂的
thq
发表于 2011-7-19 10:00
引用第129楼venusvsvirus于2011-07-19 01:29发表的:
C++是simula系(COOP),OBJC是smalltalk系(POOP)两者根本没可比性
C++中smartpointer干的是NSObject中retain和release干的事(当然并不是所有smartpointer都是引用计数的实现)
RAII...你什么时候产生了OBJC不能RAII的错觉
父类的析构函数需要显式调用这是有原因的,objc中调用一个类的initxxx函数不一定会返回这个类的对象,self不一定指向当前对象,super也不一定指向当前对象的基类对象....你还可以动态的修改你的基类这个类的原型,正如objc玩不出template那一票狂霸酷拽屌,objc在prototype,module mixin,class cluster,duck type这方面的能力也是C++望尘莫及的。这都不是缺陷,也没有谁比谁更“优雅”,只是语言设计的取向不同 images/back.gif
求objc的RAII方法,我google是没找到⋯⋯
另外我比较的不是语言的优雅,而是每项特性,比如在资源的管理上面啥的。
venusvsvirus
发表于 2011-7-19 14:52
如果你指的是栈上对象的模拟 http://kickingbear.com/blog/archives/13
析构释放资源现在的objc主流规范就是这么做的
语言特性脱离语言应用环境和设计哲学是没有可比性的,我并不觉得autorelease就不如raii,例如我有时候确实要在函数内返回局部对象的引用,以c++的眼光这是bad smell,你可以列n条论据证明这种设计的弊端,我也能举n个例子阐述这种设计的好处,这种争论毫无益处
另外无论是RAIi还是autorelease都跟语言本身没关系,c++是多范式的(cocos2d就有个c++实现的简易autorelease),objc也是(只是现在cocoa过于强势)
蕾丝蕾丝
发表于 2011-7-19 15:04
提个问题,OBJC到底有多少人在用?跟水果在电脑方面的市场占有率差不多吗
venusvsvirus
发表于 2011-7-19 15:21
引用第133楼蕾丝蕾丝于2011-07-19 15:04发表的:
提个问题,OBJC到底有多少人在用?跟水果在电脑方面的市场占有率差不多吗 images/back.gif
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
确实差不多....但是这个份额在编程语言里面已经算民工级了
uroko
发表于 2011-7-19 15:29
>>其实一个带引用计数的智能指针的实现也不过区 区几十行至百行代码而已
不难,很短,但是需要内联汇编。范型神马的也不难,不过我知道很多人只会用不会写。所以……
可别被大门的interlocked之类的api骗了,那玩意不原子。
thq
发表于 2011-7-19 15:30
引用第132楼venusvsvirus于2011-07-19 14:52发表的:
如果你指的是栈上对象的模拟 http://kickingbear.com/blog/archives/13
析构释放资源现在的objc主流规范就是这么做的
语言特性脱离语言应用环境和设计哲学是没有可比性的,我并不觉得autorelease就不如raii,例如我有时候确实要在函数内返回局部对象的引用,以c++的眼光这是bad smell,你可以列n条论据证明这种设计的弊端,我也能举n个例子阐述这种设计的好处,这种争论毫无益处
....... images/back.gif
语言关乎表达。任何设计都需要表达。迅速直接明确地表达人的思想,我觉得这是语言的优雅所在。任何“实际”的语言都可以实现任何设计不是么?只是实现的难度,实际上就是表达的难度而已。C++的语法合自动化机制使得很多原先无法表达的设计变得可能,使原本繁复的设计的表达都变得很简练,这就是优雅。比如foreach。
另外这个主流的做法貌似是编译器相关的?那么objc只有gcc这一个主流编译器么?
蕾丝蕾丝
发表于 2011-7-19 15:33
引用第135楼uroko于2011-07-19 15:29发表的:
>>其实一个带引用计数的智能指针的实现也不过区 区几十行至百行代码而已
不难,很短,但是需要内联汇编。范型神马的也不难,不过我知道很多人只会用不会写。所以……
可别被大门的interlocked之类的api骗了,那玩意不原子。 images/back.gif
请教如何不原子,难道汇编不是那样写的么。另外,有支持内联汇编的X64编译器吗
thq
发表于 2011-7-19 15:36
引用第135楼uroko于2011-07-19 15:29发表的 :
>>其实一个带引用计数的智能指针的实现也不过区 区几十行至百行代码而已
不难,很短,但是需要内联汇编。范型神马的也不难,不过我知道很多人只会用不会写。所以……
可别被大门的interlocked之类的api骗了,那玩意不原子。 images/back.gif
大门那个不是么?貌似以前我们公司有人这么干过。不过后来都用汇编了,因为要跨平台什么的。
另外是需要考虑效率和线程安全才需要内联汇编吧?不然随便一个mutex就解决了⋯⋯
venusvsvirus
发表于 2011-7-19 15:45
thq
发表于 2011-7-19 15:54
精钢魔像
发表于 2011-7-19 15:58
这世道连语言都要比爹了么
thq
发表于 2011-7-19 15:59
引用第141楼精钢魔像于2011-07-19 15:58发表的:
这世道连语言都要比爹了么 images/back.gif
不要么?
uroko
发表于 2011-7-19 16:05
引用第137楼蕾丝蕾丝于2011-07-19 15:33发表的 :
请教如何不原子,难道汇编不是那样写的么。另外,有支持内联汇编的X64编译器吗
....... images/back.gif
试了下好像是我记错了。
x64,好像还不行?囧…
搜了下好像可以这样,不过每次这么搞会嫌烦的……
http://blog.sina.com.cn/s/blog_6296cebc0100fa5g.html
哦不,新的icc直接支持了……
uroko
发表于 2011-7-19 16:21
>>另外是需要考虑效率和线程安全才需要内联汇编 吧?不然随便一个mutex就解决了
有时候你需要频繁同步两个线程,却只是进行很简单的操作。
就为了这点小事你要承担大量函数调用开销,甚至用互斥,感觉就不爽了,这种时候还是内联汇编最高
当然智能指针我不觉得需要搞成这样。它就构造和析构需要同步次。
henvelleng
发表于 2011-7-19 20:13
智能指针的实现里,模板其实真心只涉及到最最简单的语法。当然你可以把析构函数做成支持回调函数或仿函数以适应各种资源释放的方法,那么其实shared_ptr已经这么做了,而且其实语法上也不算是太复杂
智能指针对象本身的线程安全也不是很麻烦,只要保证引用计数值访问的线程安全就可以了。不要做无意义的扩展,该收手时就要收手,该undefined的时候就要狠狠地理直气壮地说undefined。对智能指针的访问的线程安全性应该由外部去加锁,如同内建类型的变量一样
如果说的是用shared_ptr来实现自己类析构的线程安全的话,矮油,这就涉及到mutex作为类成员它本身的局限性了——能保护类方法的线程安全但无法保护类自己的析构过程