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

做为一个新人,我是无上尊崇理论的,很遗憾,我却看到不少人对理论和书本嗤之以鼻。 今天在一个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。一个在程序员道路上奔跑的童鞋。欢迎切磋交流。

原文发布于微信公众号 - php(phpdaily)

原文发表时间:2014-11-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java学习网

程序员避免精神崩溃的8个建议

程序员避免精神崩溃的8个建议 1.独自待会 这可能是最重要的,因为它会影响你和他人(包括家人)之间的互动,也会影响你思考。所以每个月让自己有个一到两次的真空时间...

1856
来自专栏深度学习入门与实践

坑爹的2016年总结

  今天刚从医院复查回来,有时间更一下博客,就趁这个时候总结一下坑爹的2016吧   这个博客是去年年底的时候建的,但是今年3月才开始正式写,但是7月份开始又没...

1856
来自专栏CSDN技术头条

Quora 问答:不懂算法却善于开发,如何去大公司工作呢?

题主在很多面试过程中,因不懂基础算法而面试失败。正文的两个回答,分别从两种角度来回答了题主的问题。题目为译者自拟。 ? Jim的回答: 每个人都能有所成就,除...

1965
来自专栏企鹅号快讯

2018程序员必读书单

? “如果能时光倒流,回到过去,作为一个开发人员,你可以告诉自己在职业生涯初期应该读一本,你会选择哪本书呢?这个书单列表内容丰富,涵盖很多东西。”欢迎大家在国...

3069
来自专栏我和PYTHON有个约会

01.入门~Python前世今身

说起Python的由来,那是1989年的圣诞节的夜晚,龟叔(Guido van Rossn)由于孩子教育的原因和妻子吵架,一个人独守客厅中的壁炉,无聊之中突发臆...

862
来自专栏pythonlove

马哥教育学习

很有幸能够参加到马帮,因为这天还要工作,所以就没有到教室去,只是当天晚上看了开课的视频。马老师(我习惯于这么叫他,因为他的确是我的大学老师)风采依旧,而且还是那...

1145
来自专栏云计算D1net

程序员的IT笑话

这个,无语,自己捉摸:白天是软件工程师,晚上是硬件工程师。多少人中枪了? 我是个程序员,大学刚毕业去一家公司面试,老板语重心长的对我说:虽然薪水不多,但是你...

2907
来自专栏编程直播室

日更挑战打卡2018-07-26

比起赤裸裸纯粹的知识经济,引导用户参与其中显得更亲切些。一个人越想赢可能适得其反,迷失自我、乱了分寸、忘了初心,连本来能做好的事情都做不好了。 我一直都想实践...

642
来自专栏挖坑填坑

【读书笔记】坚持,一种可以养成的习惯03-反抗期

连续写了两篇读此书的读书笔记了,发现都是摘抄,并没有多大的意义。于是想着今后只列出作者的观点,然后结合自身经历谈谈想法。没有经历的就按照作者的案例简单写写。

722
来自专栏phodal

程序员提高效率之自我驱动的秘诀

一年多以前,参加过公司的一个『Management 3.0』培训。遗憾的是,没学会怎么当管理者,倒是学会了怎么驱动自己去做更多的事。 需求与驱动力 人呐,主动做...

1729

扫描关注云+社区