20

只是好奇,我想知道你们所有有经验的程序员或新手(比如我)都做了什么。那么你写过的最难最复杂的程序是什么?

4

20 回答 20

35

我在 2005/6 年创建的应用程序让人们可以创建以不同颜色绘制的房屋/汽车等的可视化。现在这当然可以在 Photoshop 中完成,但它还有很多很多。

Viresol 输出预览

于 2009-04-18T14:19:39.357 回答
20

编译器

于 2009-04-18T13:50:43.793 回答
16

我不想写的,也不想写的。

于 2009-04-18T14:11:13.417 回答
10

我曾经不得不编写一个使用 BWT(Burrows Wheeler 变换)的压缩算法,并且在算法中有一个步骤,您必须创建一个 HUGE 矩阵。我遇到了内存问题和速度问题,因为矩阵太大了。来发现,有一个非常简单的算法我可以使用并完全避免使用矩阵。

我还必须在 ASM 中编写一个简单的操作系统,这非常棘手。

于 2009-04-18T14:29:05.933 回答
8

用于求解非线性偏微分方程的库。我们在一个理论物理小组中使用它来解决在非常特殊的低温环境中出现的薛定谔方程的非线性适应。

让一个简单的求解器工作相对容易,但将其泛化使其快速运行是一个挑战。

它目前在谷歌代码上是开源的:fdtl

于 2009-04-18T14:33:34.440 回答
8

我曾经做过一个实时多摄像机视频处理软件,做运动检测和累积直方图魔术,所有这些都在 33MHz 的处理器和 640Mb 的 RAM 上。困难的部分是让它快速进行。在大约 4 年的时间里,大量的哈希、位移、作弊、咒骂和深夜与比萨饼和顿悟。哦,我也做了一个处理颜色的版本。哦,还有一个模块可以在大房间里看到蒸汽和白烟之间的区别(就像核反应堆一样)。哈,你试试看!你不会在任何教科书中找到这样的例子。:)

于 2009-04-23T13:21:13.340 回答
7

使用一个代码库在 Windows 和 Mac 上编译和运行的应用程序。

于 2009-04-18T14:05:43.213 回答
6

任何与加密和安全有关的事情总是比看起来要难 1000%!

于 2009-04-18T14:36:36.803 回答
5

用于不稳定在线服务的通用调制解调器驱动程序。它还必须支持 30 种类型的调制解调器(在 Hayes 调制解调器之前)。它们都有不同的时间特性。

对于我们产品的 CP/M 和 DOS 版本,它必须用 8086 和 Z80 汇编程序编写。我仍然对某个半双工调制解调器做噩梦......

于 2009-04-18T15:28:18.410 回答
4

使用 COM 实现自动化,跨网格执行

于 2009-04-18T14:10:15.650 回答
4

可能是平局:使用可满足性模理论的集合决策问题求解器和在 UNIX 操作系统之上运行的 C/ASM 中的协作进程调度器。第一个非常困难——在使用 SMT 之前从未做过,并且将高度理论的论文翻译成在不同环境中的实际实现是很困难的。第二个涉及挖掘到 OS 数据结构以理解它们,然后替换零碎在程序中的函数之间来回跳转,就好像它们是单独调度的线程一样。

于 2009-04-18T14:56:13.950 回答
4

使用 ffmpeg api 的专有视频流类 - 在处理数据包和在正确的时间显示帧的级别,与音频同步。不像列出的其他一些那么难,但它踢了我好几个星期!

于 2009-04-18T15:08:52.420 回答
3

调试器

于 2009-04-18T14:00:49.370 回答
3

我在 1998 年开始编写的矢量图形库,它广泛使用分层细分来提供 O(log n) 中的许多操作和 OpenGL 显示列表中记忆的各向异性镶嵌,以保持动态场景的高帧率。特别是,它可以流畅地放大复杂的矢量图形,因为它可以将它们分解成树并有效地剔除它们。多年来,它一直是世界上最快的消费级矢量图形渲染器。

最初的版本是 200kLOC 的 C++,但构成其设计基础的理论问题花了我 2 年时间解决。

于 2010-06-05T10:43:40.127 回答
3

2件事:

1) 编译器。语言的名称是“3-balls”(向一位做过他的球手术的朋友致敬)

2)一个没有单个宏的Windows汇编程序,所有东西都被压入堆栈并且地址都是相对的。它适用于所有 Windows(无地址编码)。基本上它是一个带有一些按钮和标签的简单窗口。但好消息是,我从对象和可执行文件中提取了操作码并从中生成了一个 shellcode。所以我可以利用程序上的任何缓冲区,并在运行的应用程序之上创建我自己的应用程序!很高兴在远程计算机上显示屏幕,远程计算机将执行他计算机上不存在的程序,您实际上将要执行的程序发送到远程计算机。

当然,这是太多的头缓存......但它值得我输入的所有字节!

于 2010-09-30T19:55:10.957 回答
2

我已经编写了几段代码,这些代码在多个空间维度(从 3 维到高达 7 维)进行建模。当您处理无法实际绘制甚至可视化的事物时,问题变得更加困难。

但实际上,作为一个花费我大部分时间为其他人在工作中使用的工具包构建的人,我认为我做过的最复杂的程序实际上是工具箱,一组工具可以在一个一致的方式。因为它们都是一起工作的,所以你可以说几十个实用程序实际上就像一个工具一样工作。(当然,任何模块化代码在这方面都是类似的。)在这里,我提供的一般都是建模工具,用于解决色彩管理问题。

于 2009-04-18T14:57:27.347 回答
2

几周前的一次采访中,我被问到了这个问题(仍然没有听说我是否得到了这份工作)。

对我来说,这是我在基本介绍课之后的第一个编程课上的几项作业。这是我的大学第一次开设网页设计课程。由于它是新的,几名即将毕业的大四学生报名参加了大约一半的班级。教官是教高年级的,已经认识班上的很多人了。基本上,他是在他们的水平上教授它,而不是为班上其他缺乏经验的人教授。

可能最困难的任务是编写纯文本浏览器。我在解析各种标签时遇到问题并寻求帮助。讲师说,好吧,如果你有编译器课程,你可以写一个简单的。那时,“编译器”是一个黑盒子,它在程序运行之前做了一些神奇的事情。我真的不知道它是什么,更不用说我能写一个了。

让这件事变得困难的是没有必要的工具来完成这项工作,包括理解我在谷歌上得到的结果。(如果您已经了解自己在寻找什么,手册页和 API 非常棒,但不适用于教菜鸟。)在我的合作经验中,当我有一位导师说,如果你被卡住时,我学到的最多超过几个小时,让我知道,这样我就可以让你摆脱困境并继续前进。比那些除了每周左右都不想收到我的消息的人要好得多。

于 2009-04-18T16:49:30.870 回答
1

我正在开发另一个 PHP 框架,到目前为止,这是一段有趣的旅程。

于 2009-04-18T14:07:37.013 回答
1

我目前正在编写一个 iPhone 应用程序。这绝对是我写过的最难的程序。不是因为语言难,代码难或其他原因,而是因为设备上的一切都必须如此流畅。

一切都必须看起来和感觉自然。因为我是一个真正的程序员(对流畅性、流畅性或设计一无所知......所以看起来)这对我来说真的很困难。该程序在代码方面有效,但在用户界面方面我很难完成工作。

线程也很烂;-)

于 2009-04-23T13:25:40.193 回答
0

没什么特别的,但是一个函数可以绘制一个带有三角形的“球体”,有 nxn 个点并在两种颜色之间插入三角形(所以输入是半径、细分数、color1、color2)。工作时很难但很有趣:)

于 2009-04-18T15:15:10.423 回答