敝司搞了个IT技能竞赛,说白了就是搞编程竞赛,就是做算法题那一套。但是题目限定了语言只能用Java和C,不能用C++。然而我没写过Java更别提参加过Java项目,只能写C语言,所以一切都得从头来,这就吃了大亏。比赛居然还要专门的电脑上提交代码,上面没有C++的开发环境。眼看比赛要开始了,20个G的visual studio铁定是复制不过去的,安装也是很费时间的。所以需要一个迷你的开发环境。我突然想起了Dev-C++,大学的时候用过这个东西,当时体验是起码看起来比VC6要好一点。
google了下才知道,2021年Dev-C++居然还在更新。现在是Embarcadero,那个Delphi现任的维护者在维护这个项目。代码提交还很活跃,GitHub上看到最新的提交日竟然是六天前。看到更新日志里说,现在最新的版本还加上了对C++17/20的语法支持,好像还可以的样子。所以2021年用Dev-C++写代码是什么样的一种体验呢?怀着好奇的心理我把Embarcadero维护的Dev-C++下载了下来。毕竟标榜自己是C++的IDE,代码提示和调试这些可能不会差到哪里去。没想到等待我的是噩梦般的体会。
绑定mingw和gdb的 Dev-C++ 很快下载好了。首先是启动界面, Embarcadero为这个古老的IDE加上了时髦的自定义界面主题,还贴心地问你要不要关联h/cpp文件(算了)。再进到启动画面,这界面和喷气大脑和巨硬的竞品比好像也没差到哪里去。可惜,当我把代码复制过来的一瞬间,我被雷到了。代码里的中文字符怎么都消失了?按了下Ctrl+A全选,咦,原来中文还是在的,很明显这是个挺严重的BUG:中文字符不能正常显示。忍了吧,毕竟C语言用中文标识符是作死的一种行为,不影响写代码那就忽略掉。
然后是搬代码的体验,Dev-C++的自动完成还是功能还是像旧版本一样蛋疼。输入括号引号尖括号之类字符的时候,它还是会自作主张地给你多补一个对应的括号。举个例子,输入”{}”在新版本的Dev-C++里面还是会打成”{}}”。在以前这种类型的自动完成可能还不错,适应下就可以了。但是这已经是2021年了,自动完成做成这个样子还是不要标榜自己是IDE了。
代码写完了来看看调试,这个是我感到最蛋疼的地方。首先是看变量的值,不像visual studio和别的商业IDE,Dev-C++要看某个变量的值必须在界面里手动添加才可以。它没法自动把函数里的局部变量的值都给你展示出来。然后是显示指针指向的东西,这个就更蛋疼了。调试界面只给你显示指针的值,不告诉你指针指向的东西到底是什么样的。虽然加个*p的监视也可以,但是这样仍然很不方便。尤其是你需要调试链表和树这种用指针构建起来的数据结构的时候。写的编程题要用到树,调试的时候把我给搞疯了。更蛋疼的是,Dev-C++在调试的时候总会崩溃,甚至还没法把gdb.exe结束掉,任务管理器都没用。
所以到2021年了,被Embarcadero接手继续维护的Dev-C++可以用吗?我的看法是,算了吧。确实得承认,无数OIer对它有深厚的感情。我也祝愿Delphi的维护者能成功让Dev-C++这个老项目焕发第二春。然而2021年如果有人还在推荐它作为初学者入手C/C++的软件,这就是在谋财害命了。我觉得残废的自动完成和不友好的调试界面对初学者的打击是很大的,只会疯狂劝退。不在乎大小和专有软件,Visual Studio一直有Express版,甚至本家Embarcadero自己的C++ Builder也出了免费版,嫌卸载麻烦不便携,然而自己的电脑根本没有这个问题。至于打开cpp文件就可以编译出程序更方便,嗯,vs新建个项目真的那么麻烦吗?最最重要的是,已经没有人用Dev-C++写项目了,举个例子,CMake根本没有给你生成Dev-C++工程文件的选项,然而Code::Blocks却是有的。 那些根本不能用IDE的地方,例如内核开发,更没有Dev-C++什么事情。它真的老了,千万别再说它适合初学者这种话了。
Dev-C++被你说的这么垃圾,对你说的你的比赛有什么影响吗?我当时卡在了怎么从头实现一个环形缓冲区上,数据结构真的忘记了,题还是得刷。然后调试太蛋疼,看不到数据结构的样子,对我也是帮了很大的倒忙。不管怎么说还是感谢下吧,不然连工具链都没的用也就别干活了。
ps: 我知道Dev-C++一些国人的Fork对这些不足是做了改进的,例如小熊猫版解决了局部变量的问题。然而实际项目没有人用才是最大的问题。