众所周知,编程离不开数学和逻辑。诚然,很多程序员数学能力并不强,也没有系统的逻辑能力。但是,他们在无意识中,日常工作中,有意无意的就在使用逻辑和数学,并将它们运用于代码中。先看看下面几个例子:
- 我是程序员
- 小婷是测试工程师
- 小强是设计师
上面的三句话在日常生活中我们说的非常多,可能这种句子形式过于简单,所以没人去思考过他们。这三个句子都是主谓宾的形式,可以抽象为:
主体+是+职位
这就是命题,在数学中,一般把判断某一件事情的陈述句叫做命题。从上面三个命题我们可以提取共同的部分,构造成函数:
F:{我,小婷,小强} -> {程序员,测试工程师,设计师}
为了便于记号,我们用小写字母表示职员,用大写字母表示职位,上面的公式可以记作下面的形式:
F: {a, b, c} -> {A, B, C} (a, b, c ∈ 职员, A, B, C ∈ 职务)
通过上面的例子,我们从逻辑(命题)过渡到了函数。那么,在编程阶段,我们通常是怎么做的呢?我们会定义一个函数,通过调用这个函数来达到某个目的得出结果。首先,我们需要定义对象,即命题中的主语和宾语:职员、职务。参考如下:
class User{}
class Duty{}
为了表示关系,我们通常将职务定义为人员的属性:
class User{
Duty duty;
// getter setter
}
从上面这个例子,我们可以很容易思考出来逻辑、数学、编程三者之间的关联。逻辑用于描述事物,表达事物之间的关联关系;数学将逻辑抽象为函数,并对逻辑进行规范化公式化的定义;而编程则是将逻辑和函数用一种规范书写出来,通过输入、执行、输出来表述逻辑与函数。
如果你是程序员,那么逻辑和数学对你而言是非常重要的。要成为一个优秀的程序员,这两门学科的知识,你可能需要学习很多。