免费注册 查看新帖 |

Chinaunix

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

[其他] 编程命名到底有多难? [复制链接]

论坛徽章:
9
2015年亚洲杯之卡塔尔
日期:2015-05-07 07:05:542015亚冠之鹿岛鹿角
日期:2015-05-29 14:55:522015亚冠之鹿岛鹿角
日期:2015-06-11 09:55:192015亚冠之山东鲁能
日期:2015-06-19 23:53:042015亚冠之大阪钢巴
日期:2015-06-23 21:03:17操作系统版块每日发帖之星
日期:2015-06-23 22:20:00操作系统版块每日发帖之星
日期:2015-06-27 22:20:002015亚冠之布里斯班狮吼
日期:2015-07-04 03:40:012015亚冠之平阳省
日期:2015-07-12 09:32:55
1 [报告]
发表于 2015-06-12 04:00 |显示全部楼层
遇到这种情况,楼上的

可以写个小程序

把所有充当变量的 a,b,c,d,e,f,j

替换成  你喜欢的不宜混淆的变量,或者常量

这个小程序编写最多5分钟,一次运行,生成备份,解读,修改.速度比你看之前的....就要快了

论坛徽章:
9
2015年亚洲杯之卡塔尔
日期:2015-05-07 07:05:542015亚冠之鹿岛鹿角
日期:2015-05-29 14:55:522015亚冠之鹿岛鹿角
日期:2015-06-11 09:55:192015亚冠之山东鲁能
日期:2015-06-19 23:53:042015亚冠之大阪钢巴
日期:2015-06-23 21:03:17操作系统版块每日发帖之星
日期:2015-06-23 22:20:00操作系统版块每日发帖之星
日期:2015-06-27 22:20:002015亚冠之布里斯班狮吼
日期:2015-07-04 03:40:012015亚冠之平阳省
日期:2015-07-12 09:32:55
2 [报告]
发表于 2015-06-12 04:04 |显示全部楼层
这个情况很多

源码写好,然后用事先写好的程序修改成难懂晦涩,但运行速度相差无几的程序

通过写这种改换程序

你会对语言理解越来越深

别人要是那天也来这一手

你已经写好了简化程序,等着了

论坛徽章:
9
2015年亚洲杯之卡塔尔
日期:2015-05-07 07:05:542015亚冠之鹿岛鹿角
日期:2015-05-29 14:55:522015亚冠之鹿岛鹿角
日期:2015-06-11 09:55:192015亚冠之山东鲁能
日期:2015-06-19 23:53:042015亚冠之大阪钢巴
日期:2015-06-23 21:03:17操作系统版块每日发帖之星
日期:2015-06-23 22:20:00操作系统版块每日发帖之星
日期:2015-06-27 22:20:002015亚冠之布里斯班狮吼
日期:2015-07-04 03:40:012015亚冠之平阳省
日期:2015-07-12 09:32:55
3 [报告]
发表于 2015-06-12 04:09 |显示全部楼层
为了不影响速度

一般都是这几个方向

模糊算法,改变结构,增加避免异议顺序,

最狠的是针对编译器,写出特定代码(这个不光对语言有要求,没有代码级研究过特定编译器的,基本没有这个能力)

论坛徽章:
9
2015年亚洲杯之卡塔尔
日期:2015-05-07 07:05:542015亚冠之鹿岛鹿角
日期:2015-05-29 14:55:522015亚冠之鹿岛鹿角
日期:2015-06-11 09:55:192015亚冠之山东鲁能
日期:2015-06-19 23:53:042015亚冠之大阪钢巴
日期:2015-06-23 21:03:17操作系统版块每日发帖之星
日期:2015-06-23 22:20:00操作系统版块每日发帖之星
日期:2015-06-27 22:20:002015亚冠之布里斯班狮吼
日期:2015-07-04 03:40:012015亚冠之平阳省
日期:2015-07-12 09:32:55
4 [报告]
发表于 2015-06-12 11:54 |显示全部楼层
1、作为程序员,你认为编程最难的事儿是什么?
   
   难的不是语言和程序本身

   而是算法!

   举个例子!
  1.   void shellsort(int v[],int n){
  2.   int gap,i,j,temp;
  3.   for (gap=n/2; gap>0;gap/=2)
  4.     for (i = gap; i <n; i++)
  5.       for (j=i-gap; j>=0&&v[j]>v[j+gap]; j-=gap) {
  6.         temp=v[j];
  7.         v[j]=v[j+gap];
  8.         v[j+gap]=temp;  
  9.       }
  10. }
复制代码
这已不是简单的程序问题,而是算法问题,这就是希尔算法.只是众多算法之一.

  许多程序卡壳,写不下去的程序员,问题不在他们对所用语言的理解不深

  而是他们面临的实际问题,无法提炼出算法,从而导致无法程序化!

  

2、编程过程中,你是怎么来命名的?命名的原则是什么?

   命名的规则,主要看,这个程序的用途和之后如何维护!

   如果是商业产品.并且以后由客户公司自行维护!

   那在命名,变量,常量,函数名,头文件时,就要做到通俗易懂,如果客户需要,双语注释也是标配!(英语+汉语)

   如果是开源产品,放上Github全球分布式维护!

   那在命名,变量,常量,函数名时,头文件时,使用该社区的通用规则即可!

   比如:FreeBSD 社区,编写,系统文件挂载头文件.
  
   直接命名  ufsmount.h 之类的就可以了

   原码文件  ufs_bmap.c ufs_dirhash.c ufs_extattr.c 这样的风格即可

   
3、在你的工作学习中,有哪些有趣儿的事发生吗?哪些是让你印象深刻的?
  
   这个问题,如果让我放开了讲,还真怕受不住!

   在上面几楼,我提到过,写源码自己用,然后故意混淆代码,但不降低性能,来折磨你想恶搞的人.

   这样的事,常常发生.而且乐在其中!

   时间一长,有了积累,你就会发现,这种娱乐方式,还有提高自己编程能力的作用!

   我自己曾经写过不下10个代码混淆器和功能相反的代码简化器!

   当中有出错,也有高潮!

   最经典的就是,一次误操作,把希尔算法的c语言实现错当作了恶搞代码

   做为输入,由自己编写的代码简化器运行,输出了

   希尔算法的代码原型!
  1. int shellsortSh(int p[],int n)
  2. {
  3. int op=0;
  4. int h,i,j,temp;
  5. for(h=n/2;h>0;h=h/2){
  6. for(i=h;i<n;i++){
  7. temp=p[i];
  8. for(j=i-h;j>=0&&p[j]>temp;j-=h){
  9. p[j+h]=p[j];
  10. op++;
  11. }
  12. p[j+h]=temp;
  13. op++;
  14. }
  15. }
  16. return op;
  17. }
复制代码
当时带给我的快感,到现在还记忆犹存!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP