非常感谢你给我的正在完善中的程序取了一个恰当的名字,我会认真考虑的.
ngggo的开发完全是基于gnugo的,我觉得这没有什么不好,但在另一个论坛上有朋友不能理解,我回了一个封山的帖子,就到这里来混了,下面将有关ngggo的搞法的步骤贴在这里,供你一笑,我这人脾气怪,用了人家的代码就要大张旗鼓的喊出来,在去某个论坛之前,好像我的代码从来还没有被人称为侵犯了谁的产权,我借鉴了什么代码,一定清楚讲明,我的搞法,比于我借鉴了大量的威美达的代码,但原作者还是非常认可我的代码是全新的程序,我不明白为和搞CG的人对版权的概念这么敏感呢,你实际的尊重人家的版权,重写了就行麻.
开放源代码的价值在于使专业人员省却了大量的重复劳动,我在这里公布一种专业级的程序员(包括微软)使用开放源代码构件非开源软件的常规技术,仅仅供你参考:
1-如有可能,找一份与自己的开发项目最为接近的开放源代码;
2-将这份开放源代码重写为vc下的一个工程(不使用MFC),如果原件是非c代码,就重写为c,如果原件是c++就重写为c代码(当然这些都是使用专用的c2cpp或者cpp2c来完成,速度极快.),调试通过;
3-使用某个字符串替换工具,例如UE,将这个工程中所有可能涉及到版权的名字都改为自己希望的名字,这一步包括工程名,文件名,函数名;
4-使用某个字符串替换工具,例如UE,将源代码的风格改为你希望的风格,例如微软的代码风格;
5-将项目最主要的数据结构,修改为自己认为感觉更好的数据结构,并将相关的函数一并修改好;
6-找出最主要的算法,修改为自己写的认为更好的算法;
7-如果有必要,对程序的体系结构做必要的修改;
8-编译,调试,发布之.
完成了上述8步,就认可你完成了一个新的软件的创作过程,你将依法拥有这个新的软件的全部知识产权.
凡原代码中不可能申报专利,不可能拥有独创思想权的命名,构思,架构如果你没有扩展的需求,就都没有必要改动,直接使用了就好,这样可以极大地节省你的时间.
例如.我打算开发一个类似gnugo的围棋机器人,完全没有必要一切重头开始,直接下载最新的gnugo3.7.12的源码,按照上述步骤,在纯净的windows xp sp2 + vc6.0 + sdk for sp2 环境下,我严格按照上述步骤,在不到24小时之内,我已经完成了1,2,3,4步,目前(从开始到现在不到2星期)已经完成了第5步和初步完成第6步,估计再有1个星期就全部完成了.
gnugo3.7.12 变成了 ngggo1.0.12, 在整个工程目录里,再也找不到一个"gnugo"串了,也找不到一个"GNU Go"串,也找不到一个"gg_"串,一共13个工程顺利编译完毕,ngggo1.0.12降生了.
这是在8小时内完成1,2,3步后的编译结果:
--------------------Configuration: board - Win32 Debug--------------------
board.lib - 0 error(s), 0 warning(s)
--------------------Configuration: dfa - Win32 Debug--------------------
dfa.lib - 0 error(s), 0 warning(s)
--------------------Configuration: engine - Win32 Debug--------------------
engine.lib - 0 error(s), 0 warning(s)
--------------------Configuration: fuseki - Win32 Debug--------------------
extract_fuseki.exe - 0 error(s), 0 warning(s)
--------------------Configuration: ngggo - Win32 Debug--------------------
ngggo.exe - 0 error(s), 0 warning(s)
--------------------Configuration: joseki - Win32 Debug--------------------
joseki.exe - 0 error(s), 0 warning(s)
--------------------Configuration: mkeyes - Win32 Debug--------------------
mkeyes.exe - 0 error(s), 0 warning(s)
--------------------Configuration: mkpat - Win32 Debug--------------------
mkpat.exe - 0 error(s), 0 warning(s)
--------------------Configuration: uncompress_fuseki - Win32 Debug--------------------
uncompress_fuseki.exe - 0 error(s), 0 warning(s)
--------------------Configuration: patterns - Win32 Debug--------------------
patterns.lib - 0 error(s), 0 warning(s)
--------------------Configuration: utils - Win32 Debug--------------------
utils.lib - 0 error(s), 0 warning(s)
--------------------Configuration: sgf - Win32 Debug--------------------
sgf.lib - 0 error(s), 0 warning(s)
--------------------Configuration: sgfgen - Win32 Debug--------------------
sgfgen.exe - 0 error(s), 0 warning(s)
我想,如果全部重头来,最少需要数月时间.毫无意义的浪费生命不必说,让开源的资源浪费也是一种罪恶.这8步转换技术中含有创造性的劳动,这也是严格遵循这8步作业的软件获得国际认可的原因,重要的是这8步劳动保证了既100%地尊重了开源代码的版权,也充分体现了对使用开源代码的程序员付出的劳动的尊重,其实这正是开放源代码软件运动的本意.
开源的本意就是不要重复劳动和集智,这种实际的功能并不能使得它能存活到如今,开源软件能存活至今的真实原因是国际大型软件公司台前的争斗和台后的大笔暗金的支撑,你没有加入这个明睁暗斗的体系,空着肚子奢谈什么GNU精神,对这些使用热情和兴趣支撑的自费CG人来说没有丝毫的帮助,只会将他们引入歧途!
这些话是我转过来与你探讨的,有些话不是应该在这里说的,希望你不要介意.
有空去kgs看看ngggo的下棋风格,目前还是有 明显的gnugo的痕迹,我想要在影响函数,局面评估,和核心算法上有大的改动后,就应该是一个全新的面貌了. |