现在已经大三下,我的大学生涯已接近尾声,回首大学时光才发现自己一直以一个纯屌丝的身份浑浑噩噩地浪费着青春,从来没有真正按照自己的兴趣和意愿来做过本专业相关的事,趁着大学生涯还没有真正结束想用这仅剩的时光做一个自己真正想做的东西。 按照自己的兴趣选择了开发一个能自主进化的程序。能自主进化的首要条件是程序能在运行时动态改变自身的部分结构,汇编能轻松完成这个特征但用汇编开发的工作量和适用度完全跟不上要求。但现在的高级语言都是经过编译和链接才去执行,编译器对程序的代码段实行了保护不能运行时动态改变,那么运用高级语言来开发的话就不能实现在运行时动态改变自身的代码段的数据,但是我们可以让程序自己生成出一个比自己要改变部分更好的代码然后替换掉自己原来的那部分代码就可以了。那这时又有了一个新的问题那就是程序如何自己生成部分可执行的代码段,如果要解决这个问题那就要用到编译器,程序自身包含有一个编译模块并且程序能把编译好的可执行模块装载到程序自身并且可以运行。要实现上面的特征,程序需要自己能在运行时控制自己的执行结构。 使程序自己能够控制执行结构,Linux给了一个方案。在Linux中通过register_binfmt改变linux_binfmt来自定义可执行文件的执行结构,那样我们只要把编译器模块加到程序中能让程序动态生成可执行模块就行了,但是在GNU庞大的源码体系下拨出能用于所有情况下的能自己使用的编译器源码和链接器源码是非常困难的,我们只能重新寻找方案。天意弄人,与Linux相对的.net平台给了我一个惊喜。 .net平台的执行依赖CLR和JIT,而且微软提出的CLI更是使代码自生成成为了可能。CLR可以运行任意时候交给它的可执行的代码段,只是我们要按照.net的规则也就是CLI来规范这段代码,CodeDom正好解决了上面的问题,CodeDom用来实现.net下的语言无关的开发,它实际上是生成了一个代码树,并且用codedom.compiler把代码树编译成.net平台下可以被CLR识别的中间语言IL。如果再向内,CodeDom其实实现了.net平台下的一个可以被用户调用的高级官方编译器,并且能“链接”到CLR中执行,从而实现了动态编译的特征。CodeDom的优点在于弱化了编译器的各个阶段,用户只需要遵循CodeDom的规则就可以得到.net平台下代码甚至动态的模块,而且它本身就是.net的一部分,所以可以使用.net下的任意资源。 项目的开发分为两个阶段: 阶段一:用Unity开发出能用于整个.net平台的图形开发方式。 阶段二:设计基于Unity运行时能自主进化的程序来做智能实验,并以游戏的形式表现。 用Unity开发的原因:Unity可以使用全部.net的特征虽然是.net2.0,Unity本身作为游戏引擎可以迅速适应未来可能会出现的新的交互方式。
推荐整理分享大学生活最后的冲刺(大学生活最后的日子),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:大学最后的学生时光,大学生活的最后一天,大学生活最后的结局,大学生活最后的感悟,大学生活最后的结局,大学生活最后的感悟,大学生活最后的感悟,大学生活最后的感悟,内容如对您有帮助,希望把文章链接给更多的朋友!
开发全部由兴趣主导,有兴趣的感觉好玩的都可以试试。
本人水平有限,如有错误请赐教。
Ubuntu桌面快捷键切换窗口技巧 UbuntuUnity桌面快捷键切换窗口技巧用AltTab组合键在当前桌面的不同程序之间切换1按AltTab组合键,屏幕显示程序切换条;按住Alt键,然后反复点按Tab键,
unity脚本自带函数执行顺序 在unity的脚本中,有大量的脚本执行按照预先确定的顺序执行的事件函数,由于篇幅有限,无法一一列举,这里只列举一些常用的自带函数的顺序,并论
[置顶] (二)Unity5.0新特性------unity内部:内存 和 性能(以及Unity5的升级优化) 我们的脚本代码里经常会需要访问gameObject引用或者某个组件的引用,最好的方式当然是在脚本Awake的时候就把这些可能访问的东西都缓存下来;如果需