(不知道什么原因,用google输入法,标点符号总是出现两个~奇怪了.)虽然讨论这两个似乎都是很屌的计算机“权威”,但是有时也要面不改色的人说点闲话。计算机算法我的感觉是很大程度基于一个迭代原则,也就是从分析问题,找出相同的子问题,,然后不断的循环解决子问题,,从何解决整体的问题。。因为计算机是一个计算速度非常快的工具,,并不在乎迭代多少次。。这应该算是计算机算法的一大特点吧。。
面向对象按我的理解,最关键在于多态这点。而多态最关键最本质的实现,就是接口。而接口的作用就是隐藏细节,这样可以不修改接口的情况下进行一些变动。因此,面向对象的作用和做要目的是便于修改,某种层度上和c++的宏是差不多的东西。当然宏的局限性很大,远没有面向对象的机制成熟。在说面向对象的时候,习惯于什么封装,继承,多态这些实现方法,而不去考虑他的目的是什么,这样写代码就会很累,明明是一个函数能搞定的事情,非要做成一个类,这里面代码量就提升了。某种层度上,面向对象也是不断发展中的,对象不是凭空出现,硬生生的一个函数转到一个类,而是需要屏蔽某些细节,预见到修改的可能,才用类来实现,这个并不是为了编写无畏 ...
中国有很多技术不错的开发人员,但是却很少有优秀的作品。原因何在?下面我来分析一下。缺少标准化,统一的基础平台;很少人愿意去做无法直接产生效益,而又要耗费庞大的基础建设,因此,上层建筑一个是采取简化掉的,拙劣的基础代码;或者干脆降低上层建筑的设计规模。基础和上层建筑的关系,举个例子,就好象dos平台下开发程序,同样的付出,出来的产品却粗糙得多。当我们还是兢兢业业的在dos基础(打个比喻)下建设我们的产品时,别人却已经搭上了windows的高速列车,即使再有才能,再勤奋,加班再多也无法缩短这个差距。科技是残酷的,就好象人工计算圆周率,花其一生也不如计算机几秒钟,这个领域要的不是蛮干,要的是精明,善 ...
作为自学成才的编程者,有热情,有心态,有经验,但是往往缺少一样东西——知识。知识是别人的智慧,而且是很多个人的,一个人是固然不能与众人来斗智。我们往往会根据已有的知识进行很大程度的扩展和掌握,对某些事情能够玩弄得出神入化,夸张了一点。但是知识之所以难得,是因为他有着超越人们一辈子所能独自探索的宽广领域,就好像这本书,类似神一般的存在!程序员一般是从语言底层开始学习,然后学习怎样加快程序开发效率的手法,比如编程库,可视化设计工具等。因为对某些问题的研究归纳,我们懂得了算法和数据结构。然而始终没有跳出“兵器使用者”这个范畴。一个大师,是需要思想,需要 ...
在设计对象的过程中,我认为设计并不是从内而外,而应该是从外而内。对象的存在,是因为它所呈现的外观特性。就好像人,你看一个人不是看他内心,因为你也看不到,你是通过它的行为表现,观其行,听其言来确立他的个性的。设计一个对象,首先不是看他到底有什么,而是看我们需要他有什么;不是从独立个体的角度出发,而是看其在整体中,在作为服务器的角色中,提供那些别人需要的服务。然后我们才开始思考内部应该如何设计,才能呈现这些接口。因此,“人”可以生老病死,但对于有限的环境来说,我们只需要完成他所担当的角色便足已。设计一个对象的初期,首先确立接口和使用的环境,是很重要的。一个可以为你提供清晰的 ...
 程序编写是一项很费精力的事情,主要在于一个合理的结构需要慢慢的摸索,而达到和谐的状态是件很痛苦的事情。一个失败的结构,往往造成逻辑的冗余,造成各种细节的局部的问题来干扰抽象实现。这些就好像脸上的小疙瘩,让你郁闷不已。如果一开始就有一个比较合理的框架,你会发现一切都很美好,做的事情都是有效的,而不是修修补补,将精力浪费在杀死旧的代码身上。但是如何设计一个比较理想的框架,那可不是一件容易的事情。你会想着面向对象,将一切都用类来封装好。实际也不是那么美好,不经深思熟虑的类结构,只是一个命名空间。这只比在一个空间填代码的过程化好一点点。然而深思熟虑似乎并不太适合我。因此借助一些工具来帮助设 ...
设计模式分3种,一种是创建型,其余两种是结构型和行为型。创建型:工厂方法抽象工厂单件生成器原型结构型:代理桥接适配器外观享元装饰组合行为型:备忘录策略访问者观察者解释器命令模板迭代器职责链中介器状态创建型,讲的是创建的时机和方式,其中工厂方法,抽象工厂,生成器都有负责决策的类,也就是决定时机(条件)和创建的方式。单件限定创建对象的数目,原型是克隆对象。结构型,讲的是组建的方式。代理,桥接,适配器通过中介来组建结构,外观是一组对象组合而成的外貌,享元对组建的共同部分进行共享,减少开支,装饰建立包裹类,对内部的对象进行装饰,组合,相当于树结构。行为型,讲的是对象的通信和状态的变动。备忘录保存和恢复 ...
面向对象设计已经诞生n久,但是很多人无法深刻理解其含义, 一个原因是面向对象是翻译过来的,可能中西语义细微的差异误导了大家.更主要的是面向对象的语言形式对语言学习者造成了"眼见为实"的错觉.在c++, c#, java等语言中,都是通过编写类来实现所谓的面向对象的.很多人误以为编写类就是面向对象了, 也有很多人奇怪,为何不叫做面向类设计呢?事实上类只不过是语法形式,而面向对象是脱离语言的抽象概念. 他的地位就类如算法于程序语言,算法是思想层面的,程序语言是具体实现层面的.因此, 类并不等同与面向对象设计,如果类的编写上缺了面向对象的思想,那么类不过是一个语法糖果,一个空壳. ...