boost 1.33 仍然没有network library

来源:互联网 发布:c语言中exchange 编辑:程序博客网 时间:2024/06/06 01:28
boost 1.33 出来了, 仍然没有我期待很久的network library. boost中, 有不少是语法甜头, 或者接近语法甜头, 例如lambda, bind, assign, tuple等等, 不过不要小看这些甜头, 有时候, 例如bind的存在, 可以影响整个library的设计.

regexp library据说是boost中用得最多的一个库, 它就是一个比较实用的utility library, 结果使得C++标准委员会不得不将它作为下一个C++0x标准库的成员, 希望C++委员会能够从中注意到这点, 与过多的理论, 美学, 完整性来比较, 对于程序员来说, 还是实用为王.

例如C++98标准库, vector<bool>据说根本就没有C++程序员使用, std::string缺少uppercase等类似的函数, why? 我无从得知. 大概是基于理论完整性, c的upper函数没有考虑locale, 因此在C++中就干脆就不提供这个极大多数程序员都需要的函数. 在std::string 103个成员函数中没有一个大小写转换的函数简直是一种"羞耻". Java中的 startWith/endWith 函数在std::string中也没有提及, 就startWith, 大多数程序员的"非标准"实现就是低效的:   str.find(substr) == 0 .
即使find提供了4个重载的成员函数, 仍然没有一个可以用于在string的某段区间查找一个子串. string的设计总有一种挥之不去的"学院派"风格.

boost的线程库已经出来了, 功能也不弱, 也比较好用, network库仍然在讨论中, 一个叫asio的网络库至少语法上是最舒服的, 是否会纳入boost?
 暂时还不能确定. 不过如某位booster所说, 一个 network + thread + regexp + ... , 特别是前两者, 可以对整个boost起到一个leverage 杠杆作用, 能够使得boost被更多的C++程序员所接收和使用. 因为这些utility classes可以极大的简化开发.

ACE是C++中最富有盛名的一个网络库, 保罗万象, 跨平台的能力据说超过Java, 支持很多你从未听过的操作系统和编译器. 因此也就将自己限于一个交集的地步, 渗透在source code中的ACE_NEW_RETURN等等, 真是3步一小宏, 5步一大宏, 造成了源代码很难阅读. 而且它的framework本色也有一些学习曲线. 但是, 它似乎是整个C++ network library的一个权威实现. 很多term都是从它而来.

还是期待boost中的network library. 即使支持的编译器不是那么多, 跨平台能力不是那么强. 但是至少windows+posix可以覆盖. 如果有一个boost的network + thread library, 我想可以极大的提高开发效率, 拉近Java/C#开发效率之间的差别.

另外, ACE和boost都是可以免费用于商业用途而无需公开源代码的, 比GPL是宽松多了.
原创粉丝点击