好奇一下,我想知道你们这些有经验的程序员或像我一样的新手都做过什么。那么,你写过最难、最复杂的程序是什么?
好奇一下,我想知道你们这些有经验的程序员或像我一样的新手都做过什么。那么,你写过最难、最复杂的程序是什么?
使用ffmpeg api的专有视频流类 - 在处理数据包和在正确时间显示帧以及与音频同步方面。相比其他一些难度不算太大,但我为此奋斗了好几周!
我在1998年开始编写的矢量图形库(vector graphics library),它广泛使用分层细分来提供许多O(log n)操作和各向异性镶嵌,OpenGL显示列表中的存储也使其在动态场景下保持高帧率。特别是,它可以流畅地缩放到复杂的矢量图形,因为它将它们分解成树,并高效地消除了它们。多年来,它一直是世界上最快的消费级矢量图形渲染器。
原始版本有200kLOC的C++代码,但其设计基础的理论问题花费了我2年时间才解决。
有两件事情:
1)一个编译器。这种语言的名称是“3-balls”(向一位做了手术的朋友致敬)。
2)一个Windows汇编程序,没有一个宏,所有东西都被推到栈上,并且地址都是相对的。它可以在所有的Windows系统中工作(没有硬编码的地址)。基本上,它是一个简单的窗口,带有一些按钮和标签。但是好玩的是,从对象和可执行文件中,我提取了操作码并生成了一个shellcode。因此,我可以利用程序中的任何缓冲区,真正地在运行的程序之上创建自己的应用程序!很棒的是,在远程计算机上显示屏幕,远程计算机将执行一个在他的计算机上不存在的程序,你实际上将程序发送到远程计算机上执行。
当然,这对于无意义的头疼来说太过复杂了...但这值得我输入的所有字节!
调试器
几周前我在面试中被问到了这个问题(我还没有听到是否得到了这份工作)。
对我来说,最困难的任务是在我的第一门编程课程中完成的。在基础介绍课程之后,我的大学首次开设了网页设计课程。由于这门课程很新,有几位即将毕业的高年级学生报名参加,占据了班级的一半左右。讲师习惯于教授高年级课程,并且已经认识班上的许多人。基本上他按照他们的水平来教授,而不是为那些经验不足的学生授课。
最困难的任务可能是编写一个纯文本浏览器。我在解析各种标签方面遇到了问题,并寻求帮助。讲师说:“好吧,如果你上过编译器课,你就可以写一个简单的程序了。” 那时,“编译器”是一个黑盒子,在程序运行之前做了许多神奇的事情。我真的不知道它是什么,更不用说能够写一个了。
使它困难的是没有必要完成工作的工具,包括理解我在谷歌上搜索时得到的结果。(如果你已经理解你要寻找什么,手册和API是很好的,但对于教授新手来说并不适用。)在我的合作经历中,我学到的最多的是有一个导师说:“如果你卡住了超过几个小时,请告诉我,这样我就可以让你摆脱困境,继续前进。” 这比那些除了每周一次之外都不想听我说话的人好多了。
我正在开发另一个PHP框架,这是一段非常有趣的旅程。
我目前正在编写一款iPhone应用程序。这绝对是我写过的最难的程序。不是因为语言难,代码难或其他任何原因,而是因为设备上的所有内容都必须如此流畅。
一切都必须看起来和感觉自然。由于我是一个真正的程序员(对流畅性、平滑性或设计没有任何理解..所以看起来是这样),这使得我非常困难。从代码方面来说,程序可以工作,但从用户界面方面来说,我很难完成任务。
另外线程也很糟糕;-)
没有什么特别的,只是一个函数可以用三角形绘制"球体",具有n x n个点,并在两种颜色之间插值三角形(因此输入是半径、细分数、颜色1和颜色2)。这很难,但当它工作时非常有趣:)