瞎扯Boost、Code::Blocks和D

来源:互联网 发布:数据图表可视化工具 编辑:程序博客网 时间:2024/06/10 15:07

瞎扯BoostCode::BlocksD

本文最初发表于赖勇浩(恋花蝶)的博客(http://blog.csdn.net/lanphaday),如蒙转载,务必保留全文完整,未经许可,不得商用。

我这几年的开发工作已经以python为主,C++只是偶尔在自己的一些实验中才用了,所以可以说不用C++已经好多年。最近家里的台式机和笔记本已经全部转成ubuntu ,也就有了更方便的C++ 环境,再加上一直以来的C++ 情结,便又重拾了它。孔夫子曰过温故而知新,这一重回C++ 世界便有些话想来瞎扯一下。

Boost1.35 的发布是我重新回到 C++的动力之一。1.35 新增了12 个新的库,其中Asio无疑是最吸引眼球的。最近自己的工作也以 linux 平台下的游戏服务器开发为主,虽然整个服务器几乎是纯python 开发的,但毕竟与网络等接触面增大,关注asio 是必然的。BimapCircularBuffer是新增的两种容器,感觉上它们的存在使得C++ 的数据结构空前地丰富了,甚至比python 还要多一些?Intrusive库提供了”侵入“式的容器,性能更好,内存占用更少,但相应地用户要承担更复杂的对象生存期管理和更为困难的线程安全分析。InterprocessMPI库分别提供了共享内存和分布式并行编程的支持,与thread 库一起为多核时代的C++ 编程铺设了一条更为平坦的道路,它们加入boost 显然也是大势所趋。Function Types, Fusion,Math/Special Functions, Math/Statistical Distributions, 以及System因为自己在开发中普遍应用它们的可能性较小,所以没有能够挤出时间来了解它们。但1.35中不得不一提的就是GIL 库,它是由 adobe贡献的图像处理库,因为之前对图像处理方面做过一些实验,所以也看过官网的一些视频教程,深为其高水平的设计与实现所折服,如果我是专业做图像处理的程序员,我一定会好好关注、学习这个库的。

1.35来看,boost从一开始的作为 stl的补充(注重实用),到充分地挖掘 C++的特性(注重理论),现在又回归到了以增加某一领域专用的库为主的基调,比如asiogil和对并行开发的支持都可以看出boost 1.35 新增特性非常实用。

如果使用 C++ 进行开发,没有一个好用的IDE 是比较难受的。我以前习惯使用 VC6,后来升级为VC2005,中间的 VC2003一直用不惯,可惜的 python2.5 等许多我需要用到的开源软件都是用 VC2003编译的,我又懒得在 win32平台下把它们都重新编译一遍,便就不得不常常把编程的平台转移到脚本和linux 上来,尽量不在win32 下碰 C++。老早就听说过Code::Blocks 的大名了,也下载来安装过,但都没有能够在win32 下通过 beta版本 build 成功。直到ubuntu 8.04 发布之后,把家里用的笔记本换成了ubuntu,便又记起这个号称跨平台的IDE。当时正在公司上班,跑上官网一看,竟然出了正式版了,版本号与ubuntu一样采用了年月的方式,当前版本是 8.02。下载了一个带了MinGW 的版本,不过是19M,比起动不动几GVS系列实在算是骨瘦如柴。装在公司用的本本上,打开一看,端的是漂亮,尝试新建几个样板项目编辑、编译了一下,感觉非常舒适,便决意不装VS 系列了。


一张从官网“借”来的 CB截图

回到家里再去下载for ubuntu的版本就九经周折,下载速度非常慢。几次放弃,几次重来之后,终于下载了源码版本。解压、配置、编译、安装,除了中间需要先装上wxWidgets 2.8之外,一切还算顺利。安装完后在[应用程序]菜单下的[编程]子菜单中可以找到Code::Blocks的启动项,谁知认真点击之后硬盘灯亮了一阵,啥也没显示出来。后来在命令行敲入codeblocks 才看到原来出了这样的错误:

codeblocks:error while loading shared libraries: libcodeblocks.so.0: cannot openshared object file: No such file or directory

请教 Google大神之后得到的解决方案是这样的:

sudovi /etc/ld.so.conf #编译该文件
/usr/local/lib#
将该行加入到该文件的末尾,然后保存
sudoldconfig #
重新配置

这样就能够解决问题了。

CB的确是非常漂亮,上手度也很好,配置界面极为舒适,值得推荐。我又因为在CB 中看到 D语言的支持,不由得就又跃跃欲试。在去年的时候就关注过一段时间的D语言,对其好称有编译型语言的执行速度和脚本语言的开发效率极感兴趣。尤其是它的契约式编程,我觉得对于团队协作是一个很有用的特性,另外原生的单元测试支持也为它加分不少,属性、元编程等现代面向对象特性和对C库的二进制兼容都让我不得不关注他。

Code::blocksD的支持可以说是非常完备的,难怪D 语言已经是流行度极高的语言,随着D 2.0进入预发布阶段,它的实用性越来越高了,我得找时间学学新东西了!

与开源接触越多,越觉得这个自由的世界尤为精彩,现在是时候把WinXP 换成 ubuntu,把VS 换成 CB,再学一门新的语言了。

Google