N0---编程观念

写在前面

下面提到的计算任务、面向对象、声明式等,通常被叫做编程范式。

但是我想总结的【观念】还有其他东西,所有统称为【观念】。

需求vs硬件

从需求看,软件是一种产品,要满足用户的某种需求。

从硬件看,计算机本质上是一台会(数值化的)存储、(数字化的)计算、输入输出的机器。

而编程,是联系需求和硬件的桥梁,通过告诉机器按怎样的步骤工作,来实现需求。

从计算任务看编程

1.程序=数据结构+算法。

2.所以说,编程的核心问题有二。

一是,选择合适结构存储数据。

二是,对数据进行计算和操作。

3.大大小小的程序都可抽象为【定义变量】【计算】【返回结果】三个部分。(Main函数也有参数和返回值,Main函数和它调用的那些函数构成了一棵函数树)

程序可以说就是来描述变量是如何变化的。

可以说【变量是编程世界的第一定义】

4.基于以上事实,很多教科书都会先教你【变量类型】;然后教你【运算符+控制流】。

你有了数据结构,又有了表达算法的语法,你就可以开始编程了。

面向对象

1.基本

面向对象本质是人组织代码的一种方式。它能使代码更容易组织、理解、修改,也方便多人协作,但它对计算机的计算任务来说是没有意义的。

在面向对象中,类是一类事物的抽象。

类中的字段和方法是对事物的特征和行为的抽象。

构造方法,是用来创造对象的。它通过赋不同的初值创造有差别的对象。

2.继承和多态

通过继承,子类可以保留父类的行为,也可以产生新的行为。

子类可直接转为父类。------重写父类方法时------多子同父,由父类统一调同名方法,不同行为。

父类可强制转为子类。------隐藏父类方法时------同一对象,改变辈分后调同名方法,不同行为。

同一调用,不同实现,是为多态。

如果没有继承机制,我们只能通过静态方法去重用代码。

3.1红苹果问题

红苹果是苹果的子类,还是颜色属性为红的苹果?这是一个根据经验区分事物的问题。生物学上分界门纲目,必然是经过长期观察比较后得出的。

当然时间长了以后,我们能从中总结出合适的模式来。但是可能花更多时间。

3.2.简单与复杂

面向对象简化了事物的模型,复杂了事物之间的关系,并且允许凭空产生联系。

如果设计的不好,会让代码更难懂。

声明式编程

SQL和C#中的Lambda都可以声明式的编程。

在我看来,它有两个特点:

1.函数嵌套。

2.少写循环,因为有高阶函数。

sql更接近自然语言。

我最喜欢的

程序=数据结构+算法。

原文地址:https://www.cnblogs.com/fabao/p/8808054.html