竞争编程与实际编程的不同

本文探讨了竞争编程与现实编程的区别。现实编程如同在丛林中用各种方法杀狮子,可不断改进;而竞争编程需在短时间内完成,如两分钟杀狮子。竞争编程注重快速选择算法编码,不考虑维护文档等;现实编程则更多使用算法类库,花在写代码上的时间较少。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  英文原文:Competitive Programming: How is competitive programming different from real-life programming?

  你在丛林里,有一把小刀,有人要求你去杀掉一只美洲狮。任何人都会问“美洲狮在丛林里到底在做什么?!”,除了程序员。不过,这不是你被训练为程序员要去做的事情。你在这里要解决问题,而不是对问题提出质疑。

  数年的训练已经教会你了很多,你用小刀削尖木棍,砍断藤条来甩动一端的尖锐石头。或许你来自于一流大学,你已经学会了从周围植物和昆虫体内榨取必要成分,以增加武器的毒性。

  你坚信,你有一种杀掉狮子的、有效的、有能力的方法,你开始为了完成任务而努力。或许你的木棍太短,或者你的毒液不起作用。没关系,你能够活着改善方法,并在明天再次试验。

  随后有人找到了一种方法,收集丛林里的化学东西制作了轻度爆炸物。你的精加工梭镖的方法对于完成任务,远远不是最好的方法了。然而,它仍然是简单的方法,并继续在学校里教。每个猎狮人都要被教会如何从头建造他的工具。

  这是“现实中”的编程。

  在竞争编程中,你从同样的资源(小刀)开始,期望你用两分钟杀死狮子。

  作为初学者,你会盯着狮子,什么也没做。

  很快,你就明白,如果你杀了一只松鼠,说不定裁判认为它是狮子,就这么干吧。

  一名更有经验的程序员,只是坚持刺狮子,希望狮子及时死掉。很快,你知道狮子身上有一些破坏免疫的固定部位,你知道甚至刺这些部位根本不用费力。有时候,狮子没有暴露这些部位,因此你真正擅长的是杀死松鼠。

  那么,为了成为伟大的、有竞争力的程序员,你需要能够做两件事。

  首先,你必须学会如何找到狮子的致命弱点并一击毙命。

  其次,你必须学会如何让你的小刀更方便,你要在一分钟内做一个尖木棍,用剩下的一分钟把狮子刺死。

  但是,你从来没有足够时间去制作炸药来对付狮子。

  ————

  Balajiganapathi Senthilnathan 的观点

  它们就像和 Python 和 Brainfuck 语言【注1】的不同。

  在竞争编程中,你不得不选择首先想到的、你认为可行的算法进行编码。编程的目标只是搞定它,并最少出错。你不必担心维护文档等等。没必要考虑如何命名变量、切割代码为函数等等。还有,竞争编程是短暂的,你将不必在一个问题上花上几天时间。你大部分时间是在编码。

  虽然,竞争编程让你对算法以及如何实现有了重要的理解,你在大部分工作中将发现,程序员只是在使用算法方面的类库。因此,竞争编程最有用的地方就是,对于手头的问题,使用哪种算法。在工作场所,你花在写代码的时间只有很少一块,大部分时间花在了决定去编码、测试、文档和……

竞争编程与真实编程的区别

  注1:Brainfuck,是一种极小化的计算机语言,它是由 Urban Müller 在 1993 年创建的。由于 fuck 在英语中是脏话,这种语言有时被称为 brainf*ck 或 brainf***,甚至被简称为 BF。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值