简明现代魔法 -> 编程思想

面向对象设计的一些原则

遵循这些原则可以更好地设计出优秀的系统

面向对象设计的基石是“开—闭”原则。“开一闭”原则讲的是:一个软件实体应当对扩展开放,对修改关闭。这个规则说的是,在设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展。从另外一个角度讲,就是所谓的“对可变性封装原则”。

发布于 2010-10-02 分类:program

如何理解类中的this指针

this指针的生命周期在成员函数中

在类的定义过程中,经常会使用到this关键字,那么我们来理解一下this指针在类定义中的作用。全局函数、静态函数都不能使用this。实际上,成员函数默认第一个参数为T* const this。这个生命周期同任何一个函数的参数是一样的,没有任何区别。当调用一个类的成员函数时,编译器将类的指针作为函数的this参数传递进去。

发布于 2010-09-07 分类:program

关于IoC控制反转的设计原则

静态类的使用会导致IoC设计原则受到限制

静态类的使用是一个有争议的话题,有人甚至提倡不要在类的名称上使用作用域限定符。关于静态特性争论的焦点在于一个被称为IoC控制反转的设计原则。IoC这个设计原则试图在面向对象编程中去掉所有相互依赖的现象。这个原则对于复杂的系统来说是很重要的。它使得对象具有更好的多态性和封装性。相互依赖的现象越少,就越容易单独测试某个组件。

发布于 2010-09-04 分类:program

如何编写规范的函数

学会编写规范的函数

每个函数指完成单一的功能。单一功能的函数容易理解,容易测试,也容易预测其行为。给已输入,就能知道其输出。在设计的时候,将函数分为:查询和命令。查询函数:仅仅查询对象的状态,而不改变对象的状态。命令函数:只修改对象的状态,而不返回对象的状态。

发布于 2010-08-03 分类:program

高级编程语言的发展历程(六)

了解编程语言的产生能让你更好地掌握她

Scheme 是 LISP 的一个方言(dialect)。著名的 SICP 书就是以 Scheme 为教学语言(实际上 SICP 的作者就是 Scheme 的作者)。虽然 Scheme 本身只是一个精简化的适合教学的语言,可它首先提出的一些重要的思想,引领了新一代的LISP语言的出现。实际上, LISP 语言发展的历史是连续的。

发布于 2010-07-27 分类:program

高级编程语言的发展历程(五)

了解编程语言的产生能让你更好地掌握她

早在 McCarthy 这一代人提出 AI 之前,冯诺伊曼等人就开始研究什么是智能以及如何实现智能的问题了。所不同的是,他们更加偏重于研究大脑的内部工作机理,并且试图通过在模拟大脑的工作机理,来实现智能。

发布于 2010-07-25 分类:program

高级编程语言的发展历程(四)

了解编程语言的产生能让你更好地掌握她

翻开任何一本介绍各种编程语言的书,都会毫无惊奇的发现,每每说到 LISP,通常的话就是“LISP 是适合人工智能(AI)的语言”。我不知道读者读到这句话的时候是怎么理解的,但是我刚上大学的时候,自以为懂了一点 LISP 和一点人工智能的时候,猛然看到这句话,打死我也不觉得“适合”。

发布于 2010-07-24 分类:program

如何生成不重复的随机数

总结这类问题的各种方法

通常的生成随机数的做法是不考虑重复的,因为即使重复也属于概率意义上的正常情况。但某些情况下需要不重复的随机数据,怎么办呢? 我想从大方向上来说,应该只有两个方法。要么牺牲时间要么牺牲空间。

发布于 2010-07-23 分类:program

高级编程语言的发展历程(三)

了解编程语言的产生能让你更好地掌握她

在高级语言是怎么来的子系列的第一篇中,我们结合当时硬件的特点,分析了 FORTRAN 为什么一开始不支持递归。但是 FORTRAN 本身是怎么来的这个问题其实还是没有得到正面回答,本节我们就谈谈 FORTRAN 语言本身是怎么来的。 其实,FORTRAN 语言也是现实驱动的。

发布于 2010-07-22 分类:program

高级编程语言的发展历程(二)

了解编程语言的产生能让你更好地掌握她

我们21世纪的程序员,凡要是懂一点编程技术的,基本上都知道虚拟机和字节码这样两个重要的概念。所谓的字节码(bytecode),是一种非常类似于机器码的指令格式。这种指令格式是以二进制字节为单位定义的(不会有一个指令只用到一个字节的前四位),所以叫做字节码。所谓的虚拟机,就是说不是一台真的计算机,而是一个环境,其他程序能在这个环境中运行,而不是在真的机器上运行。

发布于 2010-07-21 分类:program

高级编程语言的发展历程(一)

了解编程语言的产生能让你更好地掌握她

高级编程语言的创始纪上写道:“初,世间无语言,仅电路与连线。及大牛出,天地开,始有FORTRAN,LISP。ALGOL 随之,乃有万种语。” 我们都知道,LISP 是基于递归函数的,FORTRAN 是做科学计算的。现在的C 等等,都比较像 FORTRAN 而不像 LISP。可是很少有人知道,最初,FORTRAN 是不支持函数递归调用的。

发布于 2010-07-20 分类:program

如何学习面向对象编程

尽量少走弯路去学习面向对象

面向对象是一种思想理论,要远远高于编程语言。不深入理解面向对象理论就无法做到编写比较高级的软件,而且往往这些软件不能有效应对变化,不能复用,不能扩展,不能维护等。使用抽象方法还能应对软件的复杂度,因为抽象是对事物的简化方法。

发布于 2010-07-06 分类:program

程序如何在内存中运行

你了解程序运行的原理吗

内存管理是操作系统的核心功能,无论对于开发者还是系统管理员内存管理的重要性都是不言而喻的。我会在接下来的几篇文章通过计算机的实际运行过程谈谈内存管理,当然在必要的时候我也会从底层原理去阐释这个问题。

发布于 2010-06-21 分类:program

x=x 1,x =1,x 的效率比较

一个编程效率细节问题

之前一直习惯性的认为x=x 1、x =1和x 仅仅是书写表示方法的不同,没想到细细研究,差别还是不小的。……从上面的过程可以看出,x 比x =1少了一个写的过程,而x =1比x=x 1少了一个寻址的过程(查找左面x的地址),所以三条语句的效率是x = x 1 < x = 1 < x 。

发布于 2010-05-24 分类:program

选择你该学习的下一个编程语言

介绍一下主流的编程语言

今天筛选出一些主流编程语言,对语言特性与环境稍作介绍,希望可以帮助到一些编程初学者与有兴趣学习编程的朋友,供大家了解与选择,少走弯路。Java、 C++、C#、Python、PHP……当然,这些仅是我推荐的。我还将介绍其他主流语言与适于初学者学习的编程语言与一些编程学习指导。

发布于 2010-04-21 分类:program
 

copyright © 2009 简明现代魔法    学习、分享、进步

power by Gonn 感谢所有关心和支持本站的朋友们