女王的Projet算是完成了,前几天就发给人家了。但是,问题却还有一大堆。总共两个Projet,一个是C,写一个波兰式的函数计算器。还有一个是算法,主要是图的遍历,实现两个最短路径遍历的算法,Dijkstra还有一个是Floyd。
但这三个程序都有一些问题,而且是大问题,甚至可以说,我写的代码根本就没有用。先说说C,这个东西单单运行功能都没有什么差错,尽管功能没有全部实现。但是这是一个Binome的项目,两个人做。所以就有问题了,很早就问女王要另一个人的程序,我要看他的结构定义。但是传说中的程序迟迟没有到来,因此就决定单干。这里面就缺少沟通,一切数据定义、API全部是自己的。现在,那个Binome的程序来了,发现自己做了很多重复的功能,而且最大的问题是整合不能。两个对于基本数据结构定义截然不同的程序怎么可能协同工作呢?不过我的程序本身还是比较完善的,应该可以单单拿我的程序去应付一下吧,具体怎样,Rene也不知道。
至于算法,呵呵,简直是笑话,天大的笑话。我拿到的是一个大项目中的一小部分,但还是老问题,基本结构定义迟迟不来。一个大项目,对于图的算法,图结构定义总要统一吧,但是我就是没看到(前天算是看到了)。那好,自己定义!到整合时又是问题,不过幸好,这个图定义是从文件中读取的,我就在那两个算法中再读了一遍定义,按自己的结构存放。这样算法是对了,但是输出又成问题。API定义是他人的,但是我不知道,结果还要修改。不知道人家改得怎样了
Floyd算是太没面子了,耍酷,玩指针,结果在VC编译下都好的程序,拿到GCC下面一编译、运行。算法根本不对!!估计是int类型的字长在VC和GCC下面的定义不一致引起的,但想想也不对啊!这个问题尚未解决,有待研究。
三个程序,三次失败。这个确实可以作为一个失败的案例了。首先是小组成员之间的沟通不良,造成了重复劳动和API、基本数据结构定义的不一致。其次就是小组中应该使用统一的编译环境。第三就是要把整合期提前,不能到最后再去整合、联调。第三点可以和第一点合并,其实这也是沟通的问题。
现在开始怀念Java,怀念Vincent。怀念Java的Write once, run everywhere自不必说。至于Vincent,貌似我们的合作总是比较成功的。但仔细想来,以前的那些个合作项目,其实还是一个人在具体实现。要么一个人专注新技术研究,另一个做实现。要么两个人做不同的模块,但这两个模块都没有什么耦合性,所以沟通不良的问题尽管有,但不明显。以前喜欢把小组任务单干,应该也是这个原因。毕竟要定义出整个小组都能接受且易用的API和数据结构是需要功力的。功力不够啊!!残念~~