工作了之后真的很无奈,被项目拖着鼻子走感觉很不舒服,但学习还是不能停的,要开始有意识的自我规划了。
Solaris转移到Linux
虽然目前的工作平台还是Solaris,但是已经打定主意切入Linux了。好在一直很注意跨平台的问题,所以C++的功底应该不会在Linux上荒废太多。
小小试用了一下Ubuntu,发现*nix在日常办公开发过程中还是和Windows不能比。所以基本流程就变成:VC6+Intel Cpp+Visual Assist写代码编译,VMWare+cygwin X Server远程调试。
最开心的一件事情是Sun Studio Express 3发布了,竟然有了PerfLib的Linux版本,啧啧。顺带说一下,Sun Studio Express3好像多了很多Linux版的工具(包括C++编译器),大家快去捧场啊。
学习Perl
一直对脚本持怀疑态度,一方面一直很怕无类型无定义变量,一方面对跨平台时候ksh/bash或者awk/gawk什么的参数差异耿耿于怀。甚至连自动生成Makefile这种事情,我也是不惮于自己写Java程序的。但是随着开发的深入,发现的确需要一个可以快速开发的脚本环境来作为粘合剂。最后放弃大红大紫的Python和Ruby,而选择各大系统都默认安装的Perl,个人感觉也是一个十分务实的选择。同时也要强迫自己学习一直没有机会接触的正则表达式了,嘿嘿。
OpenMP
大公司们对多核多线程的炒作如火如荼,而我还是只会用ACE的Thread Wrapper写点服务器端Thread Per Request应用,或者用Java操作一下UI Thread,感觉这些都只是伪多线程,大多数时候自己的思维还都是禁锢在单线程的简单流程中。OpenMP则大大开放了我的思维,比如循环内自动fork线程,如此低粒度的算法级并行,真的是以前没有想过的。顺带说一下比OpenMP成名更早的MPI,感觉这种强调分布式运算的东西太专业了,不适合我们平时的运算环境。
矩阵计算
在这个领域,我的浮躁本性暴露无疑,一直一山望着一山高,不肯定心好好研究一个东西。先是Fortran接口的BLAS和Lapark,紧接着就觉得MTL这种模板实例化才是可维护性和运行效率的最佳结合点,然后又发现uBLAS的表达式模板更加精妙,最后又对ITL的迭代子羡慕不已。一直到今天,发现有了OpenMP,又在鄙视uBLAS之流对多核多线程的短视。老是静不下心来钻研一个东西,也许这是比技术短板更可怕的东西。