其实就是一个原因——遇到困难了,难了我三天。今天是第四天,终于拨开乌云见月明了。
看这个标题其实有点标题党的感觉,不过这确实是我的一个小感想。
我想所有做开发的人都会有这样的经历:
学习一些新的技术,兴奋——用这个新的技术解决问题了,成就感——遇到问题百思不得其解,郁闷——解决问题时突然发现自己除此之外还有很多问题,纠结——搜索所有可以搜索的资源,但相关内容很少,无助——很幸运的从网上找到了解决的办法,可是看不懂,自卑——忽然之间觉得自己是不是要这么一直干下去,迷茫——一咬牙,一跺脚,继续研磨,奋进——逐渐懂得问题所在,喜悦——发现得不到正确的结果,苦恼——调试再三,终于找到bug所在,高兴——运行得到需要结果,亢奋 。。。。(继续下一轮循环)
我想这些状态应该可以表示程序员的大多数状态吧,这也就是我这三天来的所有状态了。
从前段时间开始做毕业论文,是关于密码学方面的——《软件实现对于三轮S—DES的差分攻击》,之所以选这个题目,是因为我对此不是很了解,不知道什么是S-DES算法,也不知道什么是差分攻击,但是有一点我知道,那就是这个题目对我来说含有很大的信息量(未知量),并且软件实现也是和我兴趣相关的。
开始写论文的时候也是一边学习,一边实现,一边也把学到的东西写到博客里面。刚开始挺顺利,有了算法毕竟是好做的,从《DES加密算法java实现(核心算法+源代码)》到《使用java实现真实数据DES加密(java源代码)》再到《S-DES算法java实现(源码下载)》,兴奋感在逐渐增加,这个感觉有时并不是一个好现象,因为你爬的越高就摔的越疼嘛。
得到了算法都实现完了,开始差分攻击了,发现这才是重头戏。一方面因为资料比较少,第二方面因为这里面的算法确实复杂。在找了很多相关资料之后发现,内容千篇一律,看来能把资料写出来的都是牛人,根本不涉及到细节。哎,要是人人都有我这种啰嗦的精神就好了——生怕读者不知道,把正在我眼前飞的小蚊子也写进来,好让大家理解此时的场景。
既然千篇一律,那不如就看一个,索性就只看《现在密码学基础》。于是就翻呀翻呀,算呀算呀,六七页的内容,翻了不下百十来边。要理解定义,要理解定理,也要理解专业术语,这时发现自己数学基础不够用了,脑袋也有点“秀逗”了。达尔文果然有先见之明呀,用进废退,绝对的用进废退。框架用多了,脑袋也变懒了。
研读了两天那六七页的“圣纸”之后终于得悟了,原来如彼呀。
写出大概框架,把问题划分出来,变成若干个小问题,(不得不说两句,这个分治法是比较有效的,但是你要保证你分成的小问题没有错误,我就栽到这了)。
数学有很多令我头疼的地方,但最令我头疼的是里面经常会用这样的话:“我们都知道****,因此*****”(真的是地球人都知道吗?)、“由前面的推论我们可以得到这里的结果”(貌似前面的那个推论还没有给出过程吧,哪来结果)。不得不佩服数学家们那天马行空般的思维。
因此,因为书上的一个没有给出大体依据的一个由已知而得到的结果,我开始奔走了,找不着北了。
运气不错的从网上找了一篇中国人写的英文论文,附带C源码。论文内容比书上还要简洁,我猜想这个应该比较合理,因为论文就是要让大多数人都看不懂才能体现其价值(苍天,这是真的吗)。
看完这篇论文及其源码之后我彻悟了,原来我所谓的学过的C语言等于白学。确切一点说是面对这样的源代码,我知道我以后再也不敢说我会用C了。精干的论文加上精干的代码,我再次明白,学习是无止境的,你现在可能连门都没入呢。
这样的代码对于我来说无疑是画饼充饥,关键问题是这饼他给画墙上了,还真不好下嘴。不过为了不饿死,也只要把墙皮啃掉。
一边看着代码,一边看着课本,一边在本上写着疑难点,在三线程超负荷的状态下,终于崩溃了又好了。
到现在也终于把问题解决了,不过还只是核心问题,依然有其他的问题等着呢。等都梳理完了,把文章再写上了,也算是弥补网上中文资料的不足吧。(自己阿Q一下,呵呵)
大家可以对比一下这两个链接:
链接1 (英文)
链接2 (中文) - from the5fire.com
----EOF-----
微信公众号:Python程序员杂谈
微信公众号:Python程序员杂谈