您目睹过的最令人印象深刻的编程壮举是什么?[关闭]


26

每个人都知道一句古老的谚语,那就是最好的程序员可以比平均水平好几个数量级。我个人曾经见过好的代码和程序员,但是从来没有如此荒唐的东西。因此,问题是,您目睹或听说过的最令人印象深刻的编程壮举是什么?

您可以通过以下方式定义令人印象深刻的内容:

  1. 即将完成的任务的范围,例如John单手为他的公司开发了框架,这项工作的范围堪比其他200名雇员的合并工作。

  2. 速度,例如Stu在一周内就对整个实时多任务应用程序OS进行了编程,包括其自己的C编译器和Shell命令行工具

  3. 复杂性,例如Jane重新整理了我们整个10密耳LOC应用程序,以在服务器集群中工作。她在一个下午做了。

  4. 质量(例如Charles的代码)每LOC的缺陷率比公司平均水平低100倍。此外,他的代码干净而且所有人都可以理解。

显然,这些特征组合得越多,每个特征越极端,这一壮举就越令人印象深刻。

所以,让我来。您能叙述的最荒唐的壮举是什么?请提供尽可能多的细节,并尽量避免城市传说或夸张。仅发布您可以实际担保的内容。

奖励问题:

  1. 艰巨的任务是其中一项,还是个人经常使人惊讶?
  2. 您如何解释如此出色的表现?
  3. 程序员如何被如此出色的工作认可?

5
我曾经看到一个家伙卧推2 KLocs(对不起,无法抗拒)
DevSolo 2010年

“速度,例如Stu,在一周内就对整个实时多任务应用程序OS进行了编程,包括其自己的C编译器和Shell命令行工具。”-Erm ..您可能希望保持其真实性。
Jas

根据到目前为止的答案,有些人会很容易被打动。我已经做了一堆这里列出的“壮举”。
史蒂文·埃弗斯

嗯,我想昨天几乎要复制一份;)非常感谢您提出这一要求!
mlvljr 2010年

@DevSolo嘿,如果这是我们正在谈论的打孔卡或卷纸,那可能是身体上的壮举。
Mark C 2010年

Answers:


39

尽管我不能正式为其担保,但克里斯·索耶(Chris Sawyer)几乎完全用汇编语言开发了过山车大亨,这给我留下了深刻的印象。


4
太疯狂了!!!
nanda 2010年

1
-.- +27,我们已经在此站点上至少讨论了两次。
Mark C 2010年

31

快速反平方根。某人如何提出类似的东西完全超出了我。


1
嗯...(可能)非常聪明,但这就像6行代码,只是更大应用程序的一个很小的构建块。我不了解我列出的任何维度中的极端情况。
David Reis 2010年

11
戴维·里斯(David Reis),这很有可能以巧妙的方式优化了关键瓶颈。不要将行数与编写它们所需的工作量混淆。

2
@David,我不知道您为什么坚持要在很短的时间内完成编程才能成为一项壮举?

2
是的,这更像是一项壮举:一天编写600行代码,而100天编写6行代码,如果两者都等效的话?我认为是后者,但是您的里程可能会有所不同。
乔纳斯·普拉卡

6
@David,我不同意任何问题都可以在无限时间内解决。您可能需要阅读joelonsoftware.com/articles/HighNotes.html。“使用许多平庸的程序员而不是几个优秀的程序员的真正麻烦是,无论他们工作多长时间,他们所产生的东西永远都不会像伟大的程序员所能产生的那样好。”

16

早期的街机游戏。

完全受限于内存,处理能力,I / O ...

这些程序员在这种环境下所取得的成就是惊人的。

例如Pacman-完美。这些年来仍然可以玩。


2
吃豆子的人并不完美。当电平计数器溢出一个字节时,它会产生非常严重的故障。;)
Mason Wheeler 2010年

优秀!根据Wikipedia的说法:“吃豆人有一个著名的杀戮屏幕,通常被称为吃豆人炸弹屏幕。游戏的等级计数器是一个8位字节,因此只能存储256个不同的值(0–255) 。达到第256级会导致一个计数器,该计数器在绘制水果溢出到零时使用,导致绘制256个水果和七个空白。但是,可以用补丁将其固定。”
科纳尔

1
也许早期的航天飞机???
工作

吃豆人女士表现出色
Tim Goodman 2010年

1
@梅森,你甚至可以穿一件T恤! errorwear.com/shirt-pacman.php

15

我工作的是一位程序员,在多个场合下都做了以下工作。

最近的例子是我们小组中分配给3个人的项目。这是一个复杂的LOB应用程序,具有6个月的计划(这是一个非常激进的时间表)。

一周的编码开始,三人中的一人(出于个人原因)辞职,另一人因突然的病假而离开。剩下的唯一一名程序员回到家开始编程,并在3个月后返回完整的应用程序。

编辑

只是添加一些说明。最终的代码几乎是完美的,完全符合要求,我们的质量保证小组仅能记录3个缺陷。


他/她必须花费100多个小时的工作时间才能完成这项壮举。我敢打赌他/她喝了很多咖啡因。
阿里2010年

3
行动中的神话人物月。让2个人脱离项目==将时间线减半!尽管从某种意义上说,一个专注的开发人员比协调3个人可以更快地完成工作。
CodexArcanum 2010年

如果该人曾以恶劣的条件离开公司(没有知识权衡期),那么公司将陷入大麻烦……
Onion-Knight

3
@bjarkef-代码是一流的。该编码器是我们公司最好的编码器,而且很短的时间并没有降低我们通常从他那里得到的正常质量。
Walter 2010年

1
@Walter,只有在实际完成时才需要准确地估计,这与何时需要该数字矛盾。当您之前完成任务时,这会使估算工作变得很困难,而当您不知道它时,这会使估算工作变得困难。只要您不会低估客户的满意度,客户就会很高兴它最终比预期的便宜。

13

也许我只是在展示自己的年龄,但是我认为编程中一些令人印象深刻的壮举被忽略了。

史蒂夫·沃兹尼亚克(Steve Wozniak),Apple Disk II / RWTS

史蒂夫(Steve)使用软件中非常酷的技巧一起设计了硬件和软件,从而消除了硬件的许多复杂性(和成本)。普通软盘驱动器在磁盘中心附近使用LED和光电传感器,以通过在磁盘基板上打孔的方式发光。光电传感器的输出连接到处理器中断,因此处理器将知道何时启动其定时例程,以等待磁道上的正确扇区位于读/写磁头之下(尽管有一些使用过的“硬扇区磁盘”)它有一个洞来指示每个扇区的开始,而不是一个音轨的开始。

史蒂夫(Steve)通过设计软件对数据进行编码,从而消除了硬件,从而使您可以从磁盘上的任意位置开始读取数据,不仅可以解码数据本身,而且可以(从逻辑上)弄清楚您在磁道中的位置。Disk II驱动器没有安装LED /光传感器,因此完全忽略了软盘上的孔。

HPFS的Gordon Letwin

Gordon Letwin是OS / 2团队的架构师(兼编码员)。至少如我所听到的那样,有一次他去度假避开一切,花了三个星期左右的时间在游艇上航行(是的,早期的MS员工可以负担得起这样的费用... )...但为了避免感到无聊,他决定随身携带笔记本电脑。

当他返回时,他使用HP FS编写,调试和工作了HPFS,完全使用Intel 386汇编语言。他编写的代码最终以“ HPFS386”的形式出售,这是(至少在当时)专有的OS / 2 LAN Manager Edition。然后另一个团队用了大约六个月的时间,用C编写了一个版本,该版本成为OS / 2普通版中包含的“普通” HPFS(在IBM和MS崩溃后,IBM更新并重新编译了C代码以获取他们的 “ HPFS386”)。尽管此后已经进行了修改和更新,但是如果您对事情不偏不倚,则NTFS可能会被称为“ HPFS 2.0”(或者也许是3.0)-毫无疑问,微软目前最好的文件系统仍然紧密地源于他的设计。

Burroughs B220胶带

这些体现了(至少是IMO)面向对象编程的真正开端。在IBM磁带上(例如)带有“标签”以说明磁带上数据的格式的地方,Burroughs磁带制定了一项惯例(我不知道有人确定谁启动了它),将一小套例程放在可以理解数据以及如何格式化的磁带,因此您可以正确操作数据而无需了解有关如何格式化的详细信息。换句话说,磁带上的前几个“块”基本上是永久形式的vtable。您基本上已经将vtable读入内存,然后使用其定义的方法来处理磁带其余部分上的数据。一切都非常简洁明了(如果仅比完全可移植的略少)。


11

John Carmack经常以他史诗般的编程壮举打动我。根据一个故事,他在酒店房间里很无聊,所以他在一个周末用笔记本电脑写了《毁灭战士3》的照明引擎。


2
可惜他没有写一个真正的游戏来配合它。
DeadMG

10

尽管其目的存在疑问,但我仍然对MegaUpload的验证码求解器用户脚本感到敬畏。这是一个用JavaScript编写的GreaseMonkey脚本,它具有位图解码器和可识别验证码图像中字母的神经网络,我重复一遍,所有这些都是使用JavaScript制作的。


1
向下一个向您抱怨的人,因为他们受到限制而无法做好工作。
乔恩·霍普金斯

10

Miguel de Icaza-Mono项目。

(他也非常有趣,机智和有趣-至少从我看过他的简短讲话以及在听播客访谈时)


+1那个家伙显然是双胞胎或三胞胎,全都是他的名字。一个人不可能以如此详细的方式参与到他的所有状态中。
Dan Rosenstark 2010年

8

Anders Hejlsberg:Turbo Pascal语言和编译器。这些年来,我仍然认为TPC是软件工程的杰作。它是我见过的最紧凑,最快的本机代码(从某些版本开始也在优化)。在Borland Pascal IDE中,基本上没有“编译”。您修改了代码,按F9键,然后看着程序立即在8MHz或12MHz的机器上运行。TPC后来演变为Delphi,然后Hejlsberg加入Microsoft,并共同撰写了C#。

我很想看一下TPC早期版本的来源,但不幸的是,尽管有很多要求,Borland从未打开过它们。

Hejlsberg的编译器的灵感来自于这本书:Niklaus Wirth,算法+数据结构=程序


Delphi仍然有一个非常快速的编译器。我猜这就是为什么不支持修改并继续的原因。
Joeri Sebrechts

6

我在Gemplus(现为金雅拓)的培训主管在他自己的3个月的大学培训期间编写了第一个JavaCard解释器和OS。他一手制作了规范中的代码。为了生产v.2,Gemplus成立了一支由30多人组成的团队,没有这个家伙,他们工作了一年多。完成后却无法获得令人满意的表现,他们打电话给他寻求帮助,几天后,他和他的同事指出了几十个瓶颈。

Java Card是Java的子集,旨在在非常小的设备中运行。他的实现在智能卡中运行,该智能卡具有几个MHz时钟和2或3 KB RAM。

只是为了好玩:他每天的另一项个人壮举是潜入工作tr中,没有回答我们的学员在房间里大喊大叫的问题,然后突然两小时后,工作完成后,他又活着跳了起来,回答了5或10连续提问。


1
我想我已经超过了200人,我想不起来了,那是10年前了。我还是把问题寄给他了!
加百利

1
该死的,那个家伙一定是半机械人
。– mlvljr

是的,他们是30
Gabriel

5

我记得很清楚;在高中时,一个同学在QB45(Quick Basic 4.5)的两个课程中编写了一款功能强大的驾驶视频游戏。垂直滚动,秒表,寿命,水平;我感到非常震惊。


1
我看到一个人在Lisp中使用文字冒险游戏来做到这一点。本身并没有令人印象深刻,但是在那段时间他做到了……哇。
Michael K

5

Git和/或Linux

Linus Torvalds从头开始编写了操作系统内核和版本控制系统。我不知道有谁拥有类似的生产力。


16
作为Linux的一种流行,它很容易夸大涉及的难度和/或创意。它几乎完全是现有系统的克隆。与(从一个明显的例子开始)Dave Cutler从头开始编写RSX / 11,VMS和Windows NT相比,每一个新的和独特的工作(对于那些关心的人,VMS文件系统包括版本控制),Linus并没有这样做。甚至还没登上地图
杰里·科芬

1
VMS的荣誉,但出于同样的原因,您必须打折NT。维基百科说:“由戴夫·卡特勒(Dave Cutler)负责构建Windows NT,该设计的许多元素反映了卡特勒(Cutler)的VMS和RSX-11在DEC方面的早期经验。” 无论如何,我发现Git令人印象深刻。
LennyProgrammers

@ Lenny222:虽然这是千真万确的,你可以找到VMS和Windows NT之间的基本相似性,它甚至没有接近到被克隆像Linux是。我也对Git表示很高的评价-但是,如果它不存在,我可以想到至少有另外两个或三个可以替代它的地方。
杰里·科芬

5
Linus难道不是一个人在Linux上工作了一个月左右,然后就把它变成一个非常成功的社区项目吗?确实是很棒的工作,但我不会将其归类为个人编程专长,而是将其归类为非常成功的协作开源项目。
戴维·里斯

1
我想我们得到的是这样一个事实,我们现在有X个用户在家中使用linux ...我想您家中有一个VMS盒?当然,这不是单个作者的任何一件作品……相反,如果他没有做过,那么关键人物是否愿意这样做呢?
RobotHumans

5

理查德·斯托曼(Richard M Stallman)浮现在脑海。这个人开始赋予GNU Emacs,GCC,GDB和许多其他著名程序以生命。他甚至继续撰写原始GPL。我听说过有关他的传说,他进入洞穴长达18个月,返回的代码超过15万行,这些代码构成了GCC套件的C编译器。150,000 LOC后来为g ++奠定了基础。用他自己的话说,Emacs最初是文本编辑器,后来成为一种生活方式,现在对我们某些人来说是一种宗教。即使在今天,Emacs的设计原理仍被许多成功的程序所采用。

Donald E Knuth的TeX系统是考虑编程奇迹时想到的另一个程序。


您应该尝试阅读TeXbook。是不是仅仅为了凡人。

编写GPL并不是一件令人印象深刻的壮举。就像用Singletons来相信自己一样。
DeadMG

4

在我的学位课程中,我的同学在30天内创建了一个OS(尽管非常基本,但它是从软盘启动并执行了必要的例程)。持续时间包括必要的阅读/研究和实际编码。

我记得os.com的邮件列表上的人劝阻他说他几天不会这样做,而且我还看到他在凌晨5点以半意识状态走过宿舍时胡言乱语。:-)

他是一位了不起的程序员。


4

我什么也不想说,但是有人说“ Ruby是一项壮举”,所以

约翰·麦卡锡(John McCarthy)拥有符号表达的原始递归函数及其通过机器进行的计算,即他在1960年定义Lisp的论文中,那时if人们才开始认真考虑这个概念。谈论超越自己的时间。


很好的参考。我是一位用红宝石吸引人的人,以求超越常规。这也提前了
RobotHumans 2010年

1
麦卡锡写了一篇数学文章。直到后来才发现可以将其转换为实际代码。

1
@ThorbjørnRavn Andersen-我很小心地使用“定义的”而不是“实现的”。
Inaimathi

@Thor这有点像否认亚瑟·克拉克(Arthur Clarke)发现(或发明)圆形地球同步轨道的功劳,仅仅是因为他无法制造火箭将卫星放置在那里,或者因为这项技术尚不存在。
Mark C 2010年

4

沃尔特·布赖特(Walter Bright)的Symantec / Zortec C ++编译器与庞大的程序员团队实施的编译器保持同步。后来,他设计和实现了D。




0

80年代计算机上的8位视频游戏程序员(即Commodore 64),一些相​​当不错的游戏是用机器语言编写的,并且它们的大小通常小于Windows图标的位图;-)最好的优化

Geos(用于Commdore 64的WYSIWYG操作系统)在当时非常令人印象深刻


-2

我不确定这真的很重要...但是开发了红宝石的家伙。我只是无法超越语言的优雅。而且我相信这是第一款支持动态打字的语言,尽管我不是从打孔卡和编写汇编开始的人,所以我可能会误会。


3
它不是动态键入的第一语言,不,您不应该从打孔卡开始就知道这一点。
Jas 2010年

-3

David Heinemeier Hansson创建了Rails。

我第一次安装Rails并针对数据库设置测试站点,它自动完成了所有框架和CRUD的工作,设置了测试站点,这就像我第一次睁开眼睛看到您可以做的事情之前开始编程。那真是令人印象深刻,从那时起,我就已经从其他语言/平台中看到了其中的想法。


编程的壮举如何?
David Reis 2010年

它在用简单的布局表方面做得很好,这是一个事实,它属于habtm ...此外,它还将数据库连接抽象为一个与数据库无关的类结构,在该类结构中几乎看起来像魔术,而您要做的就是添加新的Rails -d(dbtype)捆绑程序生成并耙db:create db:migrate命令集。生成脚手架的基础很好。看起来有人不喜欢红宝石/铁轨,因为当它们是超越传统的高雅新方法时,它们很难被
投票

经过一番思考之后,我认为这是因为我们对事物的艺术本质印象深刻,而不是对技术能力的深刻印象
RobotHumans 2010年

这是一种完全不同的思维方式-使所有内容完全面向理想的而非充分的。就像我们所有人都在T型福特汽车上开车一样,突然栏杆弯了起来,这是一辆现代化的宝马。在开发人员和用户方面,这在简单性和用户友好性方面发生了巨大变化,从那以后,我已经看到许多基于这些想法的其他平台。
glenatron

1
足够公平,但是请注意,您的问题没有提及这个人的名字,他做的事情,他做的时间等。它只是说:“ Ruby很不错”。好的,小狗也很好,但这不是这个问题的答案。
戴维·里斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.