免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12345
最近访问板块 发新帖
楼主: OwnWaterloo
打印 上一主题 下一主题

[C++] 有效降低C++复杂性的方法 —— 百试百灵 [复制链接]

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
41 [报告]
发表于 2011-12-01 22:23 |只看该作者
本帖最后由 OwnWaterloo 于 2011-12-01 22:24 编辑

回复 41# pmerofc

多语言配合不是想象中那样容易……  .net那套不要提了,那是一种语言穿了不同的马甲……

即使最亲密的C/C++之间,都经常会有问题,而且会相互影响。
比如上面提到的 .net, 要配合的话就只能用语言的一个子集。
比如我在论坛上提到的C++要与C配合就很难用异常, C也要禁止setjmp/longjmp。

而且,多语言配合相对大而全来说也是很麻烦的事情……  麻烦到有时候就懒得配合,凑合着用算了……

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
42 [报告]
发表于 2011-12-01 22:35 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
43 [报告]
发表于 2011-12-01 22:39 |只看该作者
回复 43# pmerofc

C++的异常: http://bbs.chinaunix.net/thread-3624850-1-2.html

C的setjmp/longjmp是因为longjmp会略过析构函数 —— 这基本就要了C++的命了……
类似的还有不从main或者线程入口点返回而直接退出, 也会导致析构函数得不到调用。

也就是说, 两者语言提供的nonlocal jump都被禁止了……

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
44 [报告]
发表于 2011-12-01 22:54 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
45 [报告]
发表于 2011-12-02 11:34 |只看该作者
想当瑞士军刀的话,其实我觉得C++还不够完善。至少它的STL库要再努把力。

这样,最基础的C++类似没有类强制的java,或者说表达能力上类似python,或者说类似C#——这不正是STL一直努力的方向吗?


之后,想玩C?那就enable_ptr,玩汇编额外enable_asm。
或者.c文件默认enable_ptr,这就保持了和C的最大兼容。
至于.cpp,需要什么就显式enable什么。

——现在的STL,还无法在禁止指针的前提下,满足常规应用的需要。在其大成之后,相信指针是比lambda、class甚至泛型和宏都更不受欢迎的东西。


至于set_jmp和异常什么的,包括某些GP技法、指针,都可以看做是一种可传染的东西。
这些东西要么在库内控制,阻止其传染(比如,enable_ptr的库,对外接口只能用引用,不得出现指针),或者在引入库时显式说明(exported enable?),使得使用了这个库的编译单元自动enable相关特性(enable的特性冲突就停止编译)。


这样子的C++编译器,其实并不需要真正做什么。它只是拒绝解析没有enable的关键字/语法而已。
甚至都不需要c++自己的支持,第三方工具或编程规范一样能做到。

论坛徽章:
0
46 [报告]
发表于 2011-12-02 12:33 |只看该作者
楼主你的意思是什么功能都可以集中在C++上实现,需要哪个功能是只需把这个功能“打开”(enable),不需要哪个功能时只需把这个功能“关闭”(disable),是这个意思么?

论坛徽章:
0
47 [报告]
发表于 2011-12-02 17:15 |只看该作者
回复 44# OwnWaterloo
我们的项目中使用SIGSETJMP 来处理异常,编码风格是保持函数只有一个出口,不混乱。

论坛徽章:
0
48 [报告]
发表于 2011-12-05 18:03 |只看该作者
封装度太高,理解起来难度大啊{:3_183:}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP