或许是累了,思维开始发散

    在高歌猛进了近一个月之后,这几天似乎找不到感觉了。之前发现的几个技术难点也一直没有解决的思路。而且我发现自己的想法总是停留在表面和高层,如果深入进技术细节,就力不从心。我愿意,也可以跟踪追赶上业界的技术前沿,也能够认识到哪些技术是精彩的,是需要重视和认真研究的,但如果跟我较真它们的细节,我往往就说不清楚,每每这种时候,那种感觉都很不爽。前两天写文档的时候,渐渐的就有了这种感觉,所以就写不下去了,堆了一些文字和图表,质量差的都不好意思check in。这个时候陈老师让我缓一下,尝试他建议的一条新路。

    陈老师是个非常善解人意的老师,也可能是太了解我了,他都能看出我的工作状态曲线。什么时候该猛攻技术难题,什么时候该停一停总结一下,写些东西,什么时候又该写写代码……安排的总是那么得当。从刚进实验室什么都不懂的时候开始,到现在三年多,从本科到现在博士,一直能跟着这么好的老师学习工作,觉得自己跟其他同学比起来,真是幸运——这是常常会从心底油然而生的感觉,以致于在"十五"后期青黄不接,我奉命去支援其他项目组的时候,更加感觉到和陈老师一起工作是多么幸福的事情。

    我现在关注的就是自己的课题和OO设计模式/软件应用架构模式两个方面,其中后者又以MS .net平台为主要关注点。

    课题不用多说,我喜欢自己现在所从事的研究工作,这是从12年前通过Pascal接触计算机开始,到上完博士课以后终于能够得以实现的梦想——全日制、全身心的按照自己的想法,以coding为手段实现有实用价值的系统,无上课之乱耳,无考试之劳形。这也是我对这次学校劳务输出式的 "第二次公派留学高潮"并不感兴趣的原因之一,出去能有这么好的课题做吗?放弃好不容易争取到的自己喜欢的研究课题,跑到外面去给那些外国包工头们干活,实在是难以接受。关于这次出国留学的话题,这里也没必要多说,如果要一言以蔽之,那么我就送两个字:浮躁。

    虽然博士生的主要任务是进行原创性的研究工作,但其实我更希望做一些有实际意义的事情。比起把一个本来很简单的问题用复杂的公式和晦涩的语言堆砌出来然后发表在xx学报上,我更愿意去做一些提高效率、减少浪费、消除瓶颈的实际工作。然而无奈,我们生活在一个迂腐落后的教育框架之下,除了做一些对人类进步有意义的事情之外,还要做一些额外的事情——否则就难以毕业拿到学位。没办法,有很多事情就是这么诡异。

    关于OO设计模式/应用软件架构模式,我已经关注一段时间了,这个应该要从我的《倒退的历史》系列(未完成,也不可能完成了)发布在cnblogs首页引起巨大反应说起。那时正是我暂时离开陈老师去支援其它项目组的时候。那也是一个MIS项目,也是一个Web应用,也是一个采用ASP.net构建的系统。这里用了三个"也"是因为早在2002年上本科的时候,我和另外几个哥们就一起申请本科生创新基金,用ASP.net做过WebMIS,虽然大家经验非常少,但是现在回头想想,那次开发过程中其实包含了很多我们自己都没有意识到的先进思想,而且分工明确,大家合作非常愉快,小组气氛很好,效率也很高。遗憾的就是对OO完全没有深入的认识,就是拿着OO语言写着结构化的代码,以最原始的方式进行着MIS的开发。其实这也不能怪我们,那时那些讲编程的书都是用ADO.net直接写sql,没有哪本详细介绍分层架构的,当时也想不到去剖析petshop(估计以当时的水平也看不懂)。然而当我已经读了硕士之后,再次加入这样一个同样性质的项目,我看到的不但不是更加先进的软件过程方法论、更加清晰的分工和对OO的优雅实践,反而看到了比我们本科时更加糟糕的场景——需求不断变化带来的代码地震反反复复的出现。于是我愤而写下了《倒退的历史——切"五花肉"式的分工》,引来无数讨论,大部分都是支持我的,但也有一些不同的声音,这些不同的意见让我思路开阔了许多,让我体会到了社区的力量。于是趁热打铁推出了第二篇《为什么不用存储过程》,这次也是评论如潮,但不少人提到了ORM,并表达了对我还在讨论存储过程这种老掉牙问题的bs。这时我才开始注意到ORM,并开始在园子里注意阅读idior、wayfarer等牛人们的文章,也渐渐了解了一些基础概念。同时,我也发现了吕震宇的《c#设计模式》系列,看得让人感觉茅塞顿开,一下子让我踏入了设计模式这片始终心存敬畏的领域。后来,我看了《Design Patterns Explained》,这是我看的第一本关于DP的书。再后来又开始看李建忠的c#面向对象设计模式纵横谈Webcast,有了更多的了解,这才慢慢入门。然而遗憾的是,这些知识始终没有在实践中应用的机会。

    后来去广州的时候(那又是一个"倒退"的MIS项目),我又抽空看了MS Practice&Patterns的Enterprise Library DAAB代码,才发觉其实我们今天很多大系统写成这种恶心的样子微软应该负主要责任,在微软的开发资料中,无论是MSDN还是技术图书,对分离业务逻辑层与数据访问层一直没有明确的技术指导,只有DAAB这种探索性的半官方尝试稍微体现了一些这种思想。至于ORM,似乎到目前位置微软就没有往这个方向考虑(也许未来的ADO.net Entity Framework是个类似的东西,但至少现在还没有出现)。

    去年,我又被抽调去支援《倒退的历史》那个项目,情况依旧,我又抽空看了孙亚民的《构建面向对象的应用软件系统框架》,并尝试把这种分层和OO的思想向那里的老师们推荐,然而正如我所预料的,阻力很大。一方面因为他们已经脱离技术前沿太久了,对新技术已经没有太大的兴趣,另一方面是我自己无论在理论深度还是实践经验方面都还差的远。不过前两天听陈老师说那个项目已经开始用NHibernate了,心中不由得一阵激动,以为是终于认同了我的观点,但仔细一问原来是那里有位教授极力推荐的缘故,不禁又黯然神伤了一会……

    我关注这个领域一是兴趣使然,二是我觉得MIS是我们实验室的传统领域,我们做过不少项目,也创造过辉煌,但是那些时候的开发方法和技术已经严重落后了,而且我们做了那么多类似的项目,完全能够将其中一些共有的部分总结出来,形成自己的框架,作为实验室知识的积累,也便于以后重用。这才是我们做软件的人的有形的资产,一笔宝贵的财富。随着项目越做越多,软件开发技术不断发展,这个框架也需要不断更新,不断重构。

    这样,我们的实验室才能不断与时俱进,更加高效的完成更多的科研任务。

    新的梦想能够实现吗?

转载于:https://www.cnblogs.com/rib06/archive/2007/04/01/695909.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/380369.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML边框百分比,CSS:以百分比和边框表示的宽度

使用该box-sizing: border-box属性。它修改了盒子模型的行为,以将填充和边框视为元素总宽度的一部分(但不包括边距)。这意味着元素的设置宽度或高度包括为填充和边框设置的尺寸。在您的情况下,这意味着元素的宽度及其边界的宽度将占用30%的可…

Collection 和 Map接口及其实现类总结

Collection 和 Map接口及其实现类总结 Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SD…

C和汇编-----for循环

环境:VC for循环有三个表达式,第一个表达式是初始化,在for循环之前执行一次,后面就不执行了,第二个是循环条件,在执行循环体之前求值,如果为真,执行循环体,如果为假&…

茵茵的第一课

描述 茵茵今年已经六年级了,爸爸给她报了一个学习程序设计的班。 第一节课上,老师讲的就是如何输入一个数,再原样输出出来。 以现在的你看来,挺容易的是不? 那么,就请你也写出一个一样的程序吧 输入 第一…

python 立方体_Python | 创建三个数字列表,分别是正方形和立方体

python 立方体Take a range i.e. start and end, and we have to create three lists, list1 should contains numbers, list2 should contain squares of the numbers and list3 should contain cubes of the numbers in Python. 取一个范围,即开始和结束&#xff…

WPF关于WindowInteropHelper的一个BUG

在Windows SDK中关于WindowInteropHelper类的介绍中,关于其Owner属性的说明和实现有些问题。 原文是:An example scenario is if you need to host a WPF dialog box in a Win32 application. Initialize the WindowInteropHelper with a WPF window obj…

韩国的计算机科学家,韩国科学技术院用普通相机为AR/VR复刻真实世界物理对象...

只需一个包含闪光灯的相机/摄像头(映维网 2018年12月10日)为虚拟环境捕捉和复刻逼真的现实世界对象十分复杂,而且耗时。所以,从移动设备和数码相机,你能想象只通过一个包含内置闪光灯的传统相机来简化这个任务吗?一支全球化的计算…

C和汇编混合编程---do while

环境:VC do while 会先执行do里面的循环体,执行完去执行while的条件判断,如果为真,继续执行do里面的循环体,如果为假,则结束循环 C程序: #include "stdio.h" int main() {int i1,su…

林子大了,什么鸟都有----.NET运用String的十八层境界

林子大了,什么鸟都有----.NET运用String的十八层境界 在上一文中,提到了一句相当常见但十分荒谬的代码:Request.QueryString["id"].ToString()。突然涌起一个想法,为什么不总结一下不同层次.Net开发者如何运用string的呢…

kotlin 查找id_Kotlin程序在矩阵中查找偶数和奇数的频率

kotlin 查找idGiven a matrix, we have to find frequencies of even and odd numbers. 给定一个矩阵,我们必须找到偶数和奇数的频率。 Example: 例: Input:matrix:[4, 5][6, 0][9, 2]Output:Even Elements Frequency : 4Odd Elements Frequency : 2在…

函数“”的返回类型不符合 CLS

林子在了啥鸟都有!怎么出这种错误了。 转载于:https://www.cnblogs.com/nanshouyong326/archive/2007/04/23/723457.html

The Famous Clock(著名的钟)

描述 Mr. B, Mr. G and Mr. M are now in Warsaw, Poland, for the 2012’s ACM-ICPC World Finals Contest. They’ve decided to take a 5 hours training every day before the contest. Also, they plan to start training at 10:00 each day since the World Final Conte…

计算机机场基础知识,全国机场频率_电脑基础知识_IT计算机_专业资料

全国机场频率_电脑基础知识_IT计算机_专业资料 (13页)本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!14.9 积分机场频率2009-11-28 15:29:251分类:默认分类I举报I字匕订阅中国主要机场管制…

c和汇编---函数

环境:VC 作用: 函数是完成特定任务的独立程序代码单元 1、创建和使用函数 函数原型:声明函数是什么类型,指明函数的返回值和函数接收的参数类型,函数和变量一样,有多种类型,任何程序在使用函…

Ajax_ASP.NET 添加 Ajax 和客户端功能_01

现在,基于不同开发思想的前端 Ajax 框架越来越多,功能越来越强大,UI 越来越炫,但随之复杂度也越来越高,尤其是UI做得漂亮的,比如 Ext.Net。 可是无论框架多么复杂,思想都一样的。因为&#xff0…

计算机常用英语1000个,1000个常用英语单词.pdf

[键入文字 ]常用英语单词 2000 个One 16 as [ ?z, ? z] ad. 同样地 prep. 当作conj. 随着 ; 因为1 the [e?, ei: ] art. 这,那 ad.[ 用于比17 not [n?t] ad. 不,没,不是较级;最高级前 ]18 on [?n] prep. 在 …上;…

三角形面积

描述 给你三个点,表示一个三角形的三个顶点,现你的任务是求出该三角形的面积 输入 每行是一组测试数据,有6个整数x1,y1,x2,y2,x3,y3分别表示三个点的横纵坐标。(坐标值都在0到10000之间) 输入0 0 0 0 0 0表示输入结…

python投骰子程序代码_用于双骰子(一个偏向一个法线)仿真的Python程序

python投骰子程序代码Here, we will be simulating the occurrence of the sum of the faces of two dice [i.e. dice(A) - 1, 2, 3, 4, 5 ,6 dice(B) - 1, 2, 3, 4, 4, 4, 5, 6, 6 ,6]. A dice is normal(each has an equal probability of occurrence) and another B dice i…

如何追踪每一笔记录的来龙去脉:一个完整的Audit Logging解决方案[上篇]

一、提出问题 在开发一个企业级 应用的时候,尤其在一个涉及到敏感数据的应用,比如财务系统、物流系统,我们往往有这样的需求:对于数据库中每一笔数据的添加、修改和删除,都需要有一个明确的日志,以便我们可…

执行shellcode的几种方式

首先写出汇编成功弹出计算器 #pragma comment(linker,"/section:.data,RWE") //data段可读写#pragma comment(linker,"/subsystem:\"windows\" /entry:\"mainCRTStartup\"") //不显示窗口#pragma comment(linker,"/INCREMENTAL:…