用自由/专有软件的角度看 LibreOJ 和洛谷

2024-10-05 18:47:28 [观点]

近一段时间,为了准备蓝桥杯,我一直在刷算法题。在刷题的过程中,我再一次对自由软件对于数字社会的重要性有了更加深刻的理解。

洛谷给了我很不好的体验

最开始,我了解到了有 LeetCode、洛谷等在线 OJ。其中,LeetCode 因为它的臃肿、繁多的付费项目以及频繁的营销电子邮件被我直接放弃,随后转到了洛谷刷题。但是,即使是洛谷,也给了我很不好的体验。

当我提交我的代码之后,我只能看到我各个评测点的情况,是 AC,还是 WA、TLE、MLE、RE。但是,各个评测点具体是什么情况,各个评测点的输入数据和标准答案都是什么,我完全看不到。我只能看到一个很低的分数,却不知道我的答案问题出在哪里,让我无法从错误当中学习,可谓丈二和尚摸不着头脑。我只能把我的代码发到讨论区求调,毫无疑问都石沉大海了。

洛谷让我最恶心的地方在于它将它的用户分三六九等。根据各个用户用户名的颜色,洛谷提供给这些用户评测点相关数据的下载次数。像我这样的灰名用户,自然是一次都下载不了。

专有软件思想的洛谷

洛谷把专有软件思想体现得淋漓尽致。它将所有题目垄断为自己所有,所有的评测数据用户都看不到,甚至连整个评测的过程,也是处于黑暗当中的

洛谷自诩是一个由大家共同建设的“社区”,但是从洛谷对于违规用户的处理方式却让我看到了洛谷牌坊背后的“婊子”真面目——洛谷允许违规用户使用“复活币”解除处罚,而“复活币”则是通过购买洛谷的付费产品来获得的。换言之,只要一个人有钱养肥洛谷背后的那帮牛鬼蛇神,他就能在洛谷“社区”肆意妄为。洛谷的这一规定,让我闻到了洛谷身上散发出的浓厚的铜臭味,服务于专有软件开发者不道德的利益的思想在洛谷身上体现得淋漓尽致

遇见净土——LibreOJ

直到有一天,我了解到了一个叫做 LibreOJ 的项目。它便是为像我这样苦洛谷久矣的 OIer 们而建立的。

LibreOJ 上面的所有题目,甚至在我还没有开始做题的时候,我便可以下载这道题所有的评测数据和 Special Judge 信息了。而在我提交我的代码之后,它更是详细地展现各个测试点是否通过、不通过的原因、使用的内存和时间、输入数据和标准答案、我提交的代码产生的答案,且所有信息均可以直接通过旁边的下载按钮下载,让我一目了然。

LibreOJ 还可以自由地查看其他用户的提交。我可以从他们的代码当中学到很多东西。在 LibreOJ 上,一切都是公开而透明的。

高下立判

洛谷封锁了题目的相关数据和评判的过程,让我做完题看到结果之后丈二和尚摸不着头脑,这道题刷了也等于白刷。而 LibreOJ 则透明而细致地、无死角展现出了整个题目的相关信息和评测的完整过程,让我一目了然,真正地做到从错误当中学习。

孰优孰劣,一目了然。

再看自由软件与专有软件

LibreOJ 充分体现了自由软件思想,而洛谷则充分体现了专有软件思想

从 LibreOJ 和洛谷的例子类比,我更加深刻地认识到——只有自由软件才能让大多数人的需求得到满足,才能让数字社会得以发展;而永远只能服务于少数人不道德的利益的专有软件,终归只能成为人类进步道路上的绊脚石。