设为首页收藏本站

爱吱声

 找回密码
 注册
搜索

tag 标签: 编程

相关日志

分享 【转贴】金庸与程序猿
热度 43 沉宝 2014-4-25 10:53
“... ... 说到变量命名,金庸就是个中高手。像四大恶人的外号:恶贯满盈,无恶不作,凶神恶煞,穷凶极恶——同类型变量中包含特定的元素,一看就记住了。再比方,穆 念慈和包惜弱,这两人从未谋面,名字却是工稳的对仗,暗指二人是母女关系:穆念慈的“慈”,就是一个指针指向包惜弱,包惜弱的“弱”也是一个指针指向穆念 慈。慈就是母,弱就是子嘛。 《侠客行》开头有个“卖饼老者”,麦饼老者有没有名字呢?有,叫吴道通。那金庸为什么不直接称呼他“吴道通” 呢?答曰:占用内存。读者记太多名字会累的,哪怕名字都是丁不三、包不同这种,多了也记不住。一个无名小卒,戏份太少,特地安个名字不划算。名字相当于一 个指针,读者看到名字,首先想到这个人的特征和身份,才明确这个人。对于戏份太少的角色来讲,变量不存在多次赋值的问题,安排指针是大大的浪费。 但 金庸还是说出了他的名字,不过金庸并不是直接以叙述的方式告诉读者他叫吴道通,而是通过他的对手骂他:“姓吴的,你想怎样……吴道通,你到底要怎样……” 接下来,就把他名字自然替换成吴道通了。为什么又要替换呢?因为紧接着出现了第二个“老者”,若不替换,这老者和那老者就犯了重名的问题。可见,“老者” 其实相当于一个局部变量。同样,“胖子”、“店小二”也是。 《侠客行》第一章是这么写的: 汴梁城外的一个小镇,暮色时 分,四围响起了马蹄声,由远而近,浩浩荡荡,没人知道出了什么事情。——这时,金庸把笔锋宕开,写镇上人的各种惶恐不安,战战兢兢,于是小镇气氛更加凝重 紧张。紧接着,马蹄涌入城内,一帮凶神恶煞的人列队排开,当中一人穿着皮靴踏着石板路走来…… 整个暮光下的小镇上,唯一的声音是他的皮靴声。唯独有个卖饼老汉,依旧做烧饼,对一切置若罔闻。此人不忿上前,卖饼老汉顺手把他灭了。可是,一个冷眼旁观 的老者周牧又站出来,把卖饼老汉解决了。而周牧见了安金刀,却远不是安金刀对手。这时,石清闵柔出现了,果断把安金刀打趴下了…… 然后,谢烟客闪亮登场,前边的所有人物,一概变成了小喽啰…… 以上,就是一段很好的代码。好在哪里?好在语句间的关系清晰明了,好在各变 量和函数定义得一丝不苟。所有的语句之间,层次条理极为鲜明。一个语句是一个语句,一个函数是一个函数。不粘连,不纠结。每段代码要解决什么问题,别人一 看就知。不是所有代码混成一锅粥。各小段代码单独拎出来,各各是独立的,各各都好看;但在总体上,又能形成一股合力,指向问题最终的解决。 文 章也该这么写。轮到每个配角的戏份时,要当成主角去写,同时,所有的戏份从整体上看,又要层层递进。文章各段落之间也要形成一股合力,每个小段落既能单独 拎出来成立,还要成为整篇文章的一块砖,不能率尔删去。若前者做不到,文章就太粗糙不够细腻,若后者做不到,文章就沦落成了段子集。 在处理复杂的问题时,往往无法一上手就针对问题本身来提出解决方案,而要先建立起一些基本的模型,再将模型的约束条件渐次放松,得到更为普遍的一般的模型,再将多个这样的模型组合在一起,使之复杂化。 好的文章也如此,它一定不是单线程的,必然是多线程的。所谓多线程并不是指存在多个主题,它仍然是一个主题和中心,但它蕴藏着多种内涵和意义,所有内涵又必须是统一在大主题之下的。 像 《天龙八部》这部大作品,就极具复杂性。因为过于复杂,整个前15回都是在界定关系,建立模型:段誉上来碰见的无量剑派的斗争,是三十回以后的逍遥派的伏 线;鸠摩智到大理取六脉神剑剑谱也直接指向四十回后带头大哥和报信人的问题。北乔峰、南慕容、大理段氏、江南王氏、吐蕃、丐帮,西夏一品堂、逍遥派,除了 少林之外,几乎所有重要的函数和模型,都在前15章定义清晰了。 但变量并没有全数出现。因为有些变量必须到问题复杂到一定程度才能定义。 主要人物中,萧峰到了第14回才出场,虚竹到了29回才出场,萧峰出场前已经有了30万字,虚竹出场前已经有了60万字。直到40回后,少林寺大会才将整 部小说推向大高潮。少林寺那段之所以是大高潮,是因为在那个模型里,几乎所有的变量、函数、模型都包含进来了,而没有一个是之前未精确定义过的。” 原帖在 这里
786 次阅读|3 个评论
分享 失眠的痛苦--兼忆从前往事 4
热度 4 天马行空 2014-2-10 21:30
【一】 【二】 【三】 这次真的是失眠了。。 ====================================== 真正开始有“失眠”的症状是从去年春天。 大二下刚开学回来的时候,我决定改善自己的作息,不再过这种夜猫子的生活了。一是我不是熬夜的料,精力颓丧的时候意志力是不够支撑我继续做事情的,效率低下还不如不熬;二是,睡不够的感觉真的太太太太太难受了,那种浑身上下胸口四肢,说酸不酸说疼不疼,身体舒展不开,眼镜干涩生疼,头昏脑涨意识模糊,眯着个眼只想搓脸的感觉。。(是不是有人中枪了?) 决定后就开始行动。那个学期作息上我算是调整过来了,早上6-7点起床,晚上11-12点睡觉。中午睡1-3个小时不等。然而新出现的症状“失眠”却让我痛苦不堪。 % %% 我晚上躺下后,睡不着了。 我们宿舍楼在平时是11点熄灯。考试前两周开始一直到下学期开学前两周不熄灯。 我发现有光我睡不着。于是每天晚上整座楼拉闸之后我会记得去按一下自己寝室灯的开关--以免第二天早上来电的时候会自动亮起来。平时她们熄灯后如果继续打小灯学习的话,我会倒过来睡,背对光线。舍友们也比较照顾,知道我怕光,光线都尽量不朝着我。考试前两周开始不熄灯了,我跟她们商量自己定一个熄灯时间,舍友们也都很照顾我,一般12点多就关灯。而且,我们都有自己的帘子,睡觉的时候拉上,本身已经能遮光不少了。 但即便如此,我有时还是睡不着。 有光就睡不着的症状越来越严重,竟成了有一点光就睡不着。于是我戴眼罩。有的眼罩质量不好,鼻子这儿会漏光进去。于是我买质量优、版型好的。。甚至有时候蒙被子,竭力让睡眠环境保持黑暗。 这段时间里,我经常性地从躺下到入睡需要半至一小时的时间。有时会更长--我带着眼罩迟迟没有睡着,就听到舍友已经忙活完收工睡觉了。第二天一问,才知道她睡下时已是1,2点多。也就是说,我虽然11点多躺下,却过了很久才睡着(实际上我也不知道过了多久,我不看表)。11点---6点看起来睡了7个多小时,但其实根本不到。这也就导致了我中午会睡很久。( 还是因为中午睡得太多导致晚上睡不着? 这个问题始终有疑惑。因为我中午向来是睡得很香的。我同学睡0.5-1小时就可以自己醒来,我却一定要2-3小时候才能醒来) 同时,早上有时候还是没有精神。不过,只要睡过午觉(20分钟以上就可以),我下午和晚上的精神头就很足,不知道为什么。 我以为睡不着是因为光线问题。可后来发现还不是。 % %% 去年暑假8月份有几天在学校时,寝室只有我一人。假期没有太大压力,我保持着春季以来的作息,晚上早躺下早上早起。可是晚上躺下后还是经常睡不着。甚至有一天晚上11点就躺下,丝毫没有睡意,翻来覆去睡不着;后来有困意了,还是睡不着,脑子乱七八糟地转着,根本停不下来;越来越困,可还是睡不着。说实话,我已经忘记当时想的什么了,只记得等我终于忍不住看表的时候,发现已经凌晨4点多!吓死了。一会儿天都要亮了。要不然别睡了干脆,骑车子去看升旗吧。。可是又不太敢,早上冷,加上一夜没睡,而且只有一个人,万一出去撑不住可就惨了。我怕自己撑不住,因为当时真是 困得不行,坐起来都困,眼咪糗着,然后再躺下;可躺下却睡不着---生理上特别困, 但意识非常清醒。 哈气连天眼泪直流,感觉脸上的肉都是僵硬的;然而脑子过的事情清楚不过,虽然也很天马行空,但绝不是在做梦。 我不想“想”我在想什么了,可是脑子仍在不住地“想”。。。最后好像真的是撑不住了,太困太困,也不知怎么睡过去的。 也是那次让我知道,我睡不着不止是光线的问题。
个人分类: 失眠|1497 次阅读|0 个评论
分享 目前编程最基础的能力需求——抽象能力
热度 11 code_abc 2012-3-23 02:57
编程最基础的能力是抽象能力,也就是把实际问题转换成数学问题的能力。因为我们日常用的数学大多只需要小学算术能力,所以这绝大多数的转换确实不超过小学数学知识。这样就解释了为何小学数据都不及格的人也可以写程序。 另 外,在许多程序员眼中,数学物理问题可以抽象成神秘的模块,只需要知道怎么调用就可以了,不需要了解内部机制。这些年成长起来的程序员尤其如此——现在还 有谁是从空白的CPU开始写程序的?举一个抽象的例子:让一个小学数学不及格的程序员写开平方程序(sqrt函数)能行吗?当然可以!我们只需要告诉他一 个迭代公式,然后让他明白只要不断地循环计算这个公式,直到前后差别小于某值就可以了。然后别忘了给那个函数取一个叫sqrt的名字。 大多数程序员会说:哇哦,原来只用加减乘除就可以算平方了,真神奇!而更大多数的程序员则只需要从标准库调用就好了,开平方函数和一个能在Word文档中加水印的函数没有区别。这恰恰就是编程最基础的能力要求——抽象能力。
个人分类: 随笔|1300 次阅读|9 个评论
分享 学习编程
热度 22 空气精灵 2012-1-12 13:23
算法+数据结构=程序 这是PASCAL语言的发明人,图灵奖获得者 Niklaus Wirth 的一本精典代表之作 如果不能理解这个公式,那就白学编程了 永远只会是表面之作 如果不能理解算法,嘿嘿 算法是有逻辑的,如果本身头脑里就缺少逻辑二字,嘿嘿 不怕逻辑过于强大的人,就怕没有逻辑的人,更怕没有逻辑偏认为自己很有逻辑的人......
945 次阅读|33 个评论

手机版|小黑屋|Archiver|网站错误报告|爱吱声   

GMT+8, 2024-11-22 14:37 , Processed in 0.027811 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

返回顶部