browser icon
You are using an insecure version of your web browser. Please update your browser!
Using an outdated browser makes your computer unsafe. For a safer, faster, more enjoyable user experience, please update your browser today or try a newer browser.

自由的悖论

Posted by on 2013 年 12 月 01 日

你可以任意转载本文,但请在转载后的文章中注明作者和原始链接。
媒体约稿请联系 titilima_AT_163.com(把“_AT_”换成“@”)。

真是浑浑噩噩的一个周末。是前,本雄心勃勃计划要好好堆堆码的,但是到了现在却一!个!字!母!都!没!写!

好吧,我来说说我都干了些什么。这段时间我在写一个 Linux 下的服务器端程序,但是为了堆码方便,实际的开发环境是 Sublime Text + Cygwin;至于调试的环境……我不愿意用纯命令行的 GDB,想找个 GUI 的解决方案——于是,我选择了 Code::Blocks

C::B 确实是一个优秀的集成开发环境,我很顺利地使用 Cygwin 下的 gcc 和 g++ 配置好了编译工具链,也将调试器指向了 Cygwin 的 gdb.exe。

问题至此出现:Cygwin 下 gcc/g++ 编译出的 Debug 版本程序之中,调试符号的源文件位置为以“/cygdrive”开头的 *NIX 路径格式,最终导致 C::B 无法定位源文件。然后我 Google 了半天,各种方式都试过了一遍,最终还是没有成功。

不过,这个问题并不是完全无解的。有网友指出,可以修改一下 C::B 调用 GDB 的相关代码,使之能够兼容 Cygwin 的路径格式……

我很不满意,于是有了我本篇 blog 的中心议题:自由的悖论。

——— 开始议题的分隔线 ———

我很喜欢引用侯捷先生在《STL 源码剖析》中的一句话,曰:“源码之前,了无秘密。”每每读到这句话时,都会有一股能够掌控一切的万丈豪情涌然于胸。然而,这句话背后还可以解释出另一层意思:

妈蛋源代码都给你了还要啥自行车啊!

此话杀伤力超强,只要一出必然无可辩驳且难与争锋,因为开放源代码本身就是一种代表着奉献精神的行为,伸手党使用者们无论从道义还是现实的角度都无权提任何得寸进尺的要求,只能含泪咬碎门牙和血吞。

换句话说,除了奉献和分享之外,开放源代码另一层隐含的意义是淡化了对开发者的责任约束,使之能够仅凭个人的喜好来更新代码。然后,我为了不使自己的观点失之武断,又专门前往 gnu.org 上学习了一遍《自由软件的定义》。读罢觉得我的理解大抵是正确的,只不过 GNU 在说法上显得更加高端大气上档次一些。

然而,责任约束在被淡化之后,会使得所谓的“自由”无论从任何一个角度而言,都不能称得上是一个令人愉悦的体验。以我遇到的这个问题为例,它是 2011 年被人提出的,但是现在还是没有能够得到修复。

话说,自由软件的目的难道不是让我们的数字旅行更加愉悦吗?从一点来看,就出现了自由的悖论

事实上,如果考察大部分著名的、生机蓬勃的自由软件,就会发现它们都有两个共同点:

  • 开发人员的组织是松散的,但开发的步调却都是按部就班的。软件实际的版本发布,与正规的非自由(商业)软件并无二致。
  • 虽然软件本身免费,但背后无一不是拥有着大公司或基金会的支持。

其内在的生态关系是:受欢迎的自由软件→经济实体对该软件存在需求→资金支持→约束发展方向、制定开发计划→打磨软件的舒适度、可用性→软件更受欢迎。如此才是一个良性循环,方可生生不息,源远流长。

当然,我无意冒犯似 RMS 这般的神;但是,这世上的神也就那么屈指可数的几个,于我等凡人而言,或可有得道封神之日,但是在这之前,还是要面对柴米油盐的。

——— 回到现实的分隔线 ———

我的问题还是没有得到解决。如果我要真是自己去做的话,就需要配置 C::B 的编译环境、了解 wxWidgets、学习源代码的大致架构,还要调试验证我的修改是否正确……等这些玩意儿都搞定的时候黄花菜都凉了,我怎么能不要自行车呢?

所以我还是不得不屈驾于命令行的 GDB 了。别以为 Win32 程序员离了 GUI 就图样图森破了,哥用 WinDbg 和 LLDB 一样玩得遛遛的。

订阅本站

3 Comments

  • At 2013.12.16 10:52, zhengzr said:

    妈蛋源代码都给你了还要啥自行车啊!

    常有同感,无力吐槽。。。

    • At 2013.12.26 20:30, Kronos said:

      大神,你现在还在北京工作吗?有机会想跟你喝酒。

      • At 2013.12.31 12:45, 李马 said:

        是的。未知尊驾何人?

      (Required)
      (Required, will not be published)