前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >感悟:谈谈编程中的哲学,数学,基础,理论,思考与经验

感悟:谈谈编程中的哲学,数学,基础,理论,思考与经验

作者头像
wangxl
发布2018-03-07 14:45:17
8070
发布2018-03-07 14:45:17
举报
文章被收录于专栏:PHP在线PHP在线

做为一个新人,我是无上尊崇理论的,很遗憾,我却看到不少人对理论和书本嗤之以鼻。 今天在一个web群里,突然又有人问到,md5(a)=b,那么已知b,那么如何解密出a.针对这个问题,却掀起了轩然大波,这本来是一个很没有讨论价值的东西,遗憾的是,很多人还对此争论个不休,却鲜见明白人。 首先,MD5不是一个加密函数,这点我还看到很多人在争论,吵个喋喋不休。说是加密函数的理由是他们在做网站中一直用MD5加密的,如果它不是加密函数那是什么。那么,我用我刷牙的杯子舀水洗菜,那是否可以断然说我的口水杯就是炊具呢?很简单的逻辑,其实,逻辑上的混乱是基础的不扎实。稍微学过信息安全学的人,都知道在信息安全领域,存在各种安全算法,如非对称加密,信息摘要等。这些概念都是很清晰的,都是有定论的,是没有任何争论的价值和必要的。 其实,询问如何MD5从密文还原到明文的,这就已经不是有没有学过信息安全的事,而是有没有用哲学和数学的逻辑思维来思考的问题了,一个人的悟性就往往体现在这里。我们都知道,MD5的结果是128位(不是16位,也不是32位,这个问题不该再争论了。),它可以表现为一个长度为16位或者32,甚或24位的16字符串。但是基本的形式是长度为16的字符串。好了,假如说MD5可以还原的话,我们就可以把它看做一个压缩函数。那恭喜你,你的硬盘可以装下10亿部高清电影了,因为我可以把一个1G多的高清电影MD5“加密成”只有16个字节的“密文”,我要看电影,那我只要把这16个字节还原了就可以了。这么看来,这个世界真是美妙。但这是不可能的,所以MD5还原时不可能的,就这么简单的逻辑。 很快,又有人提出反驳意见,说到04年王小云教授的报告,甚至还截图网上的报告,报告中清晰地写着王小云破解了MD5,以此来反驳我。并以数学不是绝对 的来反驳我的数学分析。也有人提到只要计算机的性能足够,就可以做到破解密码。在这里,首先我们要明白,其一,媒体总喜欢故意夸大说辞来吸引眼球;其二, 破解的定义,什么是破解,什么能叫做破解。我们学习,万万不能涉浅不涉深。至于王小云教授的破解到底是怎么回事,我也不想再细说,这又是一个长篇大论了。 可以了解下强无碰撞和弱无碰撞,有限集的概念。至于破解网站,那都是暴力字典比对。 其实,大多web程序员都是非科班出身,抑或半路出家,大多没有系统的学习,在基础的算法,数学和数据结构上都是弱项。但是,就针对MD5的是否可 还原,可破解,我只是用了一个很简单数学模型就证明了这是荒谬的。我一直在强调数学。是的,数学。作为一个经济专业的我,尤其看重数学的重要,但也要注意 到一些数学形式主义的存在。 很多编程中的问题,困惑,我们只要拿出数学和哲学这两个宝贝,就能迎刃而解。对于一些不能理解的基础性问题,多从数学和哲学的角度来理解,我们就清楚这其中的道理了。 还有一个就是理论和经验。有不少同学都很鄙视书本和理论知识,唯经验至上。这里我要大声地告诉你,你错了。何解? 首先,理论的定义应该是:理论=教科书+课外书(参考书)+工具书(手册)+Google+知识分享。而不是单纯的书本。即使是书本,那也是蕴含了极大的智慧的,尤其是教科书。至少写技术类的教科书的都是专家教授。理论不存在有没有用,只存在你到不到那个境界,用不用得上的问题。有很多我们自以为debug了半天才解决的问题,自以为得到了经验而沾沾自喜的时候,其实这些所谓的“经验”大多已经在手册上明晃晃地摆着了,或者早就被人描述过了。而 90%的情况大多如此.理论来自于实践,我们多花时间和精力把理论学好,那就可以少花点“经验”,也就是工作时间了。当然,我的观点不是否定经验的重要 性,因为一个人很难在不长的时间内学完所有的理论,他需要在工作中学以致用和不断调整,不断比对经验和理论。能重视起理论来,那我的长篇大论的目的就达到 了。 另外的一点就是多思考。我不是很赞同有人问基础的问题,除非遇到我也解决不了或者很困惑,或者我认为应该讲解一下的时候,一般我都是六个字回答“看手 册,找谷歌”。网上也有《提问的智慧》一问,也提到了,除非你花了两个小时的努力,还没解决一个问题点的时候,那你就可以提问了。这样的方式虽然看似冷酷 和缓慢,但是在经历一个略微漫长的爬升后,你就会迅速起步,掌握更多的基础和调试技术。而这,就是你的经验了。 至于说我是做web的,该不该去碰其他东西呢?是不是要专呢?我的回答是,要先把基础牢固了,基础不是歪门邪道, 不要把比如凡是和PHP无关的全部视作旁门左道。算法,数学,英语是所有程序员的基础,他们不是旁门左道。另外,对于其他知识呢?我的观点是,你可以不 懂,但你至少得理解或者听说过,起码知道有这个东西。web程序员也可以完全花点时间关注下架构,操作系统,数学啊,英语啊,seo啊,营销啊,经济啊这 些东西。不要怕它们害了你。 其实我也是个菜鸟级的新人,一个半路出家的土八路,花和尚。之所以提到这些,也正是在自己的发展中也有类似的问题和误区。也是自己经常困在代码领域中的困惑。谨在此交流愚见,欢迎切磋。 白菜博客:http://aiyooyoo.com。一个在程序员道路上奔跑的童鞋。欢迎切磋交流。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2014-11-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 php 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档