免费注册 查看新帖 |

Chinaunix

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

奶奶的靠语言机制保证安全 [复制链接]

论坛徽章:
0
41 [报告]
发表于 2011-11-16 10:06 |只看该作者
本帖最后由 三月廿七 于 2011-11-16 11:59 编辑

STL 这种东西随时需要随时写,需要哪个写哪个, 几个弱弱的数据结构有啥子用吗?
STL相对工程来说就是一个微不足道的小模块, 这种东西还依赖别人, 真是蛋疼...

不亲力亲为, 写程序还有什么意思?
不亲力亲为就只能跟着微软走, 今天MFC, 明天C#, 后天就D#
不亲力亲为 我认为已经输了.

c++ 根本没有减轻我编码的复杂度,
反而加重了我的负担, 莫名其妙的名词真让人心烦,
时间如果都花在语言上了, 哪还有时间学习xxx啊,
结果自然是 "xxx不重要, 重要的是设计"之类的扯淡的话..

"云风" 就是这类人的典型, 他就是 "设计、架构" 之类的比较牛B
国内就是 "架构型人才"多了一点 ...

论坛徽章:
11
未羊
日期:2013-12-16 12:45:4615-16赛季CBA联赛之青岛
日期:2016-04-11 19:17:4715-16赛季CBA联赛之广夏
日期:2016-04-06 16:34:012015亚冠之卡尔希纳萨夫
日期:2015-11-10 10:04:522015亚冠之大阪钢巴
日期:2015-07-30 18:29:402015亚冠之城南
日期:2015-06-15 17:56:392015亚冠之卡尔希纳萨夫
日期:2015-05-15 15:19:272015亚冠之山东鲁能
日期:2015-05-14 12:38:13金牛座
日期:2014-12-04 15:34:06子鼠
日期:2014-10-16 13:40:4715-16赛季CBA联赛之八一
日期:2016-07-22 09:41:40
42 [报告]
发表于 2011-11-16 10:50 |只看该作者
回复  zylthinking
缺乏全面性
()会应付不过来而cast可以
既然如此,为什么不单独提出来给用户使用的自由
幻の上帝 发表于 2011-11-16 09:36

1. 对内存布局重解释, 一条原则解释一切, 你还想全面什么?
2. 全面对应的是片面, 也就是有不能做的, 你到是举出一个例子, 什么是c++能做, C不能做的?
3. 自由个鸟, 虚竹一个黑虎掏心无视鸠摩志花里胡哨的武林绝学, 你这种慕容世家出身的人理解不了的

论坛徽章:
0
43 [报告]
发表于 2011-11-16 10:54 |只看该作者
1. 对内存布局重解释, 一条原则解释一切, 你还想全面什么?
2. 全面对应的是片面, 也就是有不能做的, ...
zylthinking 发表于 2011-11-16 10:50



    那段誉的“六脉神剑”你又如何解释?

论坛徽章:
11
未羊
日期:2013-12-16 12:45:4615-16赛季CBA联赛之青岛
日期:2016-04-11 19:17:4715-16赛季CBA联赛之广夏
日期:2016-04-06 16:34:012015亚冠之卡尔希纳萨夫
日期:2015-11-10 10:04:522015亚冠之大阪钢巴
日期:2015-07-30 18:29:402015亚冠之城南
日期:2015-06-15 17:56:392015亚冠之卡尔希纳萨夫
日期:2015-05-15 15:19:272015亚冠之山东鲁能
日期:2015-05-14 12:38:13金牛座
日期:2014-12-04 15:34:06子鼠
日期:2014-10-16 13:40:4715-16赛季CBA联赛之八一
日期:2016-07-22 09:41:40
44 [报告]
发表于 2011-11-16 11:02 |只看该作者
回复  zylthinking
语言没提供足够的接口你怎么控制?我需要一个不能转换掉const的cast怎么办
要是人能随心所欲精确控制所有东西……语言都嗝屁好了
幻の上帝 发表于 2011-11-16 09:18


更是屁话, 什么叫 需要一个不能转换掉const的cast? 那是你自己写错了, 如果不能cast, 就不要 cast, 自己写代码弱暴了, 反而指望语言替你擦屁股???
什么叫不能控制所有东西, 首先所谓东西, 是程序员控制范围内的流程, 你不用任意扩大范围找理由。
什么能控制, 我要定义一个 const, 那么我就不尝试写它, 或者, 即便是 const,  因为我也知道写他造不成坏影响, 所以无视const, 照样写。 这就是控制。
反而是, 自己明明知道不能写的, 写代码写的乱七八糟, 稀里糊涂想 const 造型, 还指望着语言告诉你不能造型, 这就是没能力控制。

你就是没能力控制的那种人。

论坛徽章:
11
未羊
日期:2013-12-16 12:45:4615-16赛季CBA联赛之青岛
日期:2016-04-11 19:17:4715-16赛季CBA联赛之广夏
日期:2016-04-06 16:34:012015亚冠之卡尔希纳萨夫
日期:2015-11-10 10:04:522015亚冠之大阪钢巴
日期:2015-07-30 18:29:402015亚冠之城南
日期:2015-06-15 17:56:392015亚冠之卡尔希纳萨夫
日期:2015-05-15 15:19:272015亚冠之山东鲁能
日期:2015-05-14 12:38:13金牛座
日期:2014-12-04 15:34:06子鼠
日期:2014-10-16 13:40:4715-16赛季CBA联赛之八一
日期:2016-07-22 09:41:40
45 [报告]
发表于 2011-11-16 11:04 |只看该作者
那段誉的“六脉神剑”你又如何解释?
digdeep126 发表于 2011-11-16 10:54


少东拉西扯, 我强调的是真实实力面前, 一切花招都是浮云。 不用自以为找到了段誉, 就发现宝贝了

论坛徽章:
11
未羊
日期:2013-12-16 12:45:4615-16赛季CBA联赛之青岛
日期:2016-04-11 19:17:4715-16赛季CBA联赛之广夏
日期:2016-04-06 16:34:012015亚冠之卡尔希纳萨夫
日期:2015-11-10 10:04:522015亚冠之大阪钢巴
日期:2015-07-30 18:29:402015亚冠之城南
日期:2015-06-15 17:56:392015亚冠之卡尔希纳萨夫
日期:2015-05-15 15:19:272015亚冠之山东鲁能
日期:2015-05-14 12:38:13金牛座
日期:2014-12-04 15:34:06子鼠
日期:2014-10-16 13:40:4715-16赛季CBA联赛之八一
日期:2016-07-22 09:41:40
46 [报告]
发表于 2011-11-16 11:18 |只看该作者
本帖最后由 zylthinking 于 2011-11-16 11:24 编辑
回复  zylthinking


回复 27# zylthinking

你说你没用过,但看过实现。
有些问题:
1.你看的是哪的实现?
2.用什么语言写的?
3,怎么实现的?
4.你认为你看懂了吗?
5.你认为这样的实现对dynamic_cast的目的而言有什么优点或缺点?
幻の上帝 发表于 2011-11-16 09:39


这个被你问住了, 我前几年在什么地方偶尔看到的, 现在记不清了, 但还是记得似乎就是不超过10行的一个小玩意
语言就是c++本身模版
等我重新找找, 如果还能找到, 我将源代码一行一行解释给你听, 然后再问问你你觉得我看懂了没有
正如我所言, 指望着 这些 鸟cast 发现错误, 本身就是弱暴了的表现,

A a = synamic_cast<A> b;
if(a is invalid){
    ............
}
这样的代码更是狗屎, 不去找为什么 造型失败这个根本原因, 却是在发现错误后, 搞一个分支, 你想在里面做什么, 写 log???

优点无, 缺点: 丑陋, 娇惯写代码的人

论坛徽章:
11
未羊
日期:2013-12-16 12:45:4615-16赛季CBA联赛之青岛
日期:2016-04-11 19:17:4715-16赛季CBA联赛之广夏
日期:2016-04-06 16:34:012015亚冠之卡尔希纳萨夫
日期:2015-11-10 10:04:522015亚冠之大阪钢巴
日期:2015-07-30 18:29:402015亚冠之城南
日期:2015-06-15 17:56:392015亚冠之卡尔希纳萨夫
日期:2015-05-15 15:19:272015亚冠之山东鲁能
日期:2015-05-14 12:38:13金牛座
日期:2014-12-04 15:34:06子鼠
日期:2014-10-16 13:40:4715-16赛季CBA联赛之八一
日期:2016-07-22 09:41:40
47 [报告]
发表于 2011-11-16 11:20 |只看该作者
回复  三月廿七
简洁不应该是指看起来的简单。简洁还包括了要在各种情况下保持它继续简单的潜在成本。
代 ...
幻の上帝 发表于 2011-11-16 09:48


总结一下, 似乎是在说 专业程序员, 就是应该抱 STL 大腿。

论坛徽章:
0
48 [报告]
发表于 2011-11-16 11:23 |只看该作者
老子早知道这些东西是垃圾

论坛徽章:
4
戌狗
日期:2013-08-15 18:22:43技术图书徽章
日期:2013-08-21 13:48:45巨蟹座
日期:2013-09-26 17:06:39处女座
日期:2013-12-25 11:26:10
49 [报告]
发表于 2011-11-16 11:41 |只看该作者
对呀,C++太J8操蛋了。

我不认为我这辈子还能学会C++了,也不会去学这个鸟玩意了。



1) C++诞生的目的,是为了减少写及维护代码的工作量,尤其是针对大型软件。

   但是你看现在,有多少大型软件是用C++搞的啊,绝大部分还是C。所以C++已经失去了存在的意义。


2) 语言的目的,是为了描述逻辑。所以语言有两个关键指标:是否简单直接,是否描述精确。

   目前来看,除了汇编之外,在没有语言比C更加简单直接,描述精确的了。



这个鸟CU坛子也很操蛋。

在清茶聊个女女都被版主封号,日的。

C版每天就是炒作C99标准之类的玩意,炒作之余,互相吹捧,无聊。

大不了不来这个鸟坛子了。

论坛徽章:
11
未羊
日期:2013-12-16 12:45:4615-16赛季CBA联赛之青岛
日期:2016-04-11 19:17:4715-16赛季CBA联赛之广夏
日期:2016-04-06 16:34:012015亚冠之卡尔希纳萨夫
日期:2015-11-10 10:04:522015亚冠之大阪钢巴
日期:2015-07-30 18:29:402015亚冠之城南
日期:2015-06-15 17:56:392015亚冠之卡尔希纳萨夫
日期:2015-05-15 15:19:272015亚冠之山东鲁能
日期:2015-05-14 12:38:13金牛座
日期:2014-12-04 15:34:06子鼠
日期:2014-10-16 13:40:4715-16赛季CBA联赛之八一
日期:2016-07-22 09:41:40
50 [报告]
发表于 2011-11-16 12:12 |只看该作者
这个被你问住了, 我前几年在什么地方偶尔看到的, 现在记不清了, 但还是记得似乎就是不超过10行的一个 ...
zylthinking 发表于 2011-11-16 11:18


奶奶的, 找不到了, 之前不知在啥地方瞄到了, 现在找了半天没辄;
帖个反汇编, 汇编不好, 没办法再翻译成C
  1. --- f:\sp\vctools\crt_bld\self_x86\crt\prebuild\eh\rtti.cpp --------------------
  2. 10261EC0  push        ebp  
  3. 10261EC1  mov         ebp,esp
  4. 10261EC3  push        0FFFFFFFEh
  5. 10261EC5  push        offset __TI2?AVbad_cast@std@@+10h (103043D8h)
  6. 10261ECA  push        offset _except_handler4 (1021E1D0h)
  7. 10261ECF  mov         eax,dword ptr fs:[00000000h]
  8. 10261ED5  push        eax  
  9. 10261ED6  add         esp,0FFFFFFC8h
  10. 10261ED9  push        ebx  
  11. 10261EDA  push        esi  
  12. 10261EDB  push        edi  
  13. 10261EDC  mov         eax,dword ptr [___security_cookie (10311AA8h)]
  14. 10261EE1  xor         dword ptr [ebp-8],eax
  15. 10261EE4  xor         eax,ebp
  16. 10261EE6  push        eax  
  17. 10261EE7  lea         eax,[ebp-10h]
  18. 10261EEA  mov         dword ptr fs:[00000000h],eax
  19. 10261EF0  mov         dword ptr [ebp-18h],esp
  20. 10261EF3  mov         dword ptr [ebp-1Ch],0
  21. 10261EFA  cmp         dword ptr [ebp+8],0
  22. 10261EFE  jne         __RTDynamicCast+47h (10261F07h)
  23. 10261F00  xor         eax,eax
  24. 10261F02  jmp         $LN14+2Fh (10262049h)
  25. 10261F07  mov         dword ptr [ebp-4],0
  26. 10261F0E  mov         eax,dword ptr [ebp+8]
  27. 10261F11  push        eax  
  28. 10261F12  call        FindCompleteObject (10262060h)
  29. 10261F17  add         esp,4
  30. 10261F1A  mov         dword ptr [pCompleteObject],eax
  31. 10261F1D  mov         ecx,dword ptr [ebp+8]
  32. 10261F20  mov         edx,dword ptr [ecx]
  33. 10261F22  mov         eax,dword ptr [edx-4]
  34. 10261F25  mov         dword ptr [pCompleteLocator],eax
  35. 10261F28  mov         ecx,dword ptr [ebp+8]
  36. 10261F2B  sub         ecx,dword ptr [ebp+0Ch]
  37. 10261F2E  mov         dword ptr [ebp+8],ecx
  38. 10261F31  mov         edx,dword ptr [ebp+8]
  39. 10261F34  sub         edx,dword ptr [pCompleteObject]
  40. 10261F37  mov         dword ptr [inptr_delta],edx
  41. 10261F3A  mov         eax,dword ptr [pCompleteLocator]
  42. 10261F3D  mov         ecx,dword ptr [eax+10h]
  43. 10261F40  mov         edx,dword ptr [ecx+4]
  44. 10261F43  and         edx,1
  45. 10261F46  jne         __RTDynamicCast+0A1h (10261F61h)
  46. 10261F48  mov         eax,dword ptr [ebp+14h]
  47. 10261F4B  push        eax  
  48. 10261F4C  mov         ecx,dword ptr [ebp+10h]
  49. 10261F4F  push        ecx  
  50. 10261F50  mov         edx,dword ptr [pCompleteLocator]
  51. 10261F53  push        edx  
  52. 10261F54  call        FindSITargetTypeInstance (102620A0h)
  53. 10261F59  add         esp,0Ch
  54. 10261F5C  mov         dword ptr [ebp-20h],eax
  55. 10261F5F  jmp         __RTDynamicCast+0EFh (10261FAFh)
  56. 10261F61  mov         eax,dword ptr [pCompleteLocator]
  57. 10261F64  mov         ecx,dword ptr [eax+10h]
  58. 10261F67  mov         edx,dword ptr [ecx+4]
  59. 10261F6A  and         edx,2
  60. 10261F6D  jne         __RTDynamicCast+0D0h (10261F90h)
  61. 10261F6F  mov         eax,dword ptr [ebp+14h]
  62. 10261F72  push        eax  
  63. 10261F73  mov         ecx,dword ptr [inptr_delta]
  64. 10261F76  push        ecx  
  65. 10261F77  mov         edx,dword ptr [ebp+10h]
  66. 10261F7A  push        edx  
  67. 10261F7B  mov         eax,dword ptr [pCompleteLocator]
  68. 10261F7E  push        eax  
  69. 10261F7F  mov         ecx,dword ptr [pCompleteObject]
  70. 10261F82  push        ecx  
  71. 10261F83  call        FindMITargetTypeInstance (10262190h)
  72. 10261F88  add         esp,14h
  73. 10261F8B  mov         dword ptr [ebp-20h],eax
  74. 10261F8E  jmp         __RTDynamicCast+0EFh (10261FAFh)
  75. 10261F90  mov         edx,dword ptr [ebp+14h]
  76. 10261F93  push        edx  
  77. 10261F94  mov         eax,dword ptr [inptr_delta]
  78. 10261F97  push        eax  
  79. 10261F98  mov         ecx,dword ptr [ebp+10h]
  80. 10261F9B  push        ecx  
  81. 10261F9C  mov         edx,dword ptr [pCompleteLocator]
  82. 10261F9F  push        edx  
  83. 10261FA0  mov         eax,dword ptr [pCompleteObject]
  84. 10261FA3  push        eax  
  85. 10261FA4  call        FindVITargetTypeInstance (10262350h)
  86. 10261FA9  add         esp,14h
  87. 10261FAC  mov         dword ptr [ebp-20h],eax
  88. 10261FAF  cmp         dword ptr [ebp-20h],0
  89. 10261FB3  je          __RTDynamicCast+110h (10261FD0h)
  90. 10261FB5  mov         ecx,dword ptr [ebp-20h]
  91. 10261FB8  add         ecx,8
  92. 10261FBB  push        ecx  
  93. 10261FBC  mov         edx,dword ptr [pCompleteObject]
  94. 10261FBF  push        edx  
  95. 10261FC0  call        PMDtoOffset (10262570h)
  96. 10261FC5  add         esp,8
  97. 10261FC8  add         eax,dword ptr [pCompleteObject]
  98. 10261FCB  mov         dword ptr [ebp-1Ch],eax
  99. 10261FCE  jmp         __RTDynamicCast+138h (10261FF8h)
  100. 10261FD0  mov         dword ptr [ebp-1Ch],0
  101. 10261FD7  cmp         dword ptr [ebp+18h],0
  102. 10261FDB  je          __RTDynamicCast+138h (10261FF8h)
  103. 10261FDD  push        offset string "Bad dynamic_cast!" (102DC9CCh)
  104. 10261FE2  lea         ecx,[ebp-38h]
  105. 10261FE5  call        std::bad_cast::bad_cast (10208630h)
  106. 10261FEA  push        offset __TI2?AVbad_cast@std@@ (103043C8h)
  107. 10261FEF  lea         eax,[ebp-38h]
  108. 10261FF2  push        eax  
  109. 10261FF3  call        _CxxThrowException (10207E50h)
  110. 10261FF8  mov         dword ptr [ebp-4],0FFFFFFFEh
  111. 10261FFF  jmp         $LN14+2Ch (10262046h)
  112. 10262001  mov         ecx,dword ptr [ebp-14h]
  113. 10262004  mov         edx,dword ptr [ecx]
  114. 10262006  mov         eax,dword ptr [edx]
  115. 10262008  mov         dword ptr [ebp-48h],eax
  116. 1026200B  mov         ecx,dword ptr [ebp-48h]
  117. 1026200E  xor         eax,eax
  118. 10262010  cmp         ecx,0C0000005h
  119. 10262016  sete        al   
  120. $LN15:
  121. 10262019  ret              
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP