1.函数式的思维方式:
就是输入输出的思维方式: output Function(input)
就是把你正在处理的事物当作一个整体(一个系统),你给它什么输入,它会有何种输出.
它是一个黑盒子,你不断的给它各种输入,它反馈给你对应各种输出,你能摸清它的内部大概是怎么样的构造.当你完全搞清楚了它的属性,构造时,你完全能预测你的某个输入会带来什么输出时,这套预测模型就是这个事物的属性.现在能做的就是将这套模型封装起来,你拥有了一个属于自己的黑盒子.
多说两句,比如这个盒子是这样的
double BlackBox(double x){
return x*(10.0);//括号里是系统的属性,括号外是输入
//即:系统做了这样一件事:对输入的数,乘以常量10
//不论输入什么数,系统都对其乘以10再输出结果,输入不会影响系统的行为
}
输入不会改变这个系统(BlackBox)的属性,这是一个线性系统.
这个线性系统的固有属性是"输出一个数,它的大小是输入的10.0倍"
double BlackBox(double x){
return x*(x);//括号里是系统的属性,括号外是输入,严格的说(*x)才是系统的属性
//即:系统做了这样一件事:对输入的数,乘以输入本身,再输出结果
//从上面这句话不难看出,输入会影响系统本身的行为.
}
此时,如果我们依旧按照上面的视角来看的话,在这里输入会影响系统的固有属性,这个属性跟着输入一起改变,输入会影响系统属性的,就是一个非线性系统.
"如果你处理的对象是人,很明显他不是一个线性系统,你给他什么输入,能预测到何种输出是很难的"
2.通信
1研究的是单个系统,通信,顾名思义,至少两个对象(系统)之间才有通信的必要.
你不会做一道菜,因为没人告诉你在室温多少,湿度多少下,把锅烧里的油烧到多少度,下多少克食材a,多少克食材b,在第几分钟加多少克哪种类型的酱油...
这些多少都是信息,除此之外,时间顺序也是信息.
这样看来,能不能做成一件事情,就看有没有掌握足够的信息,有些信息人们甚至不知道"我需要知道这种信息".
两个人面对面聊天是在通信,通信速度是声音传播速度.
你吃了很多饭,身体某个器官分泌了某种激素,一会儿随着血液带到了大脑,大脑发出"饱了,别吃了"的指令,通信速度是血液流动的速度.
过去人们写书信进行通信,现在打视频电话.通信速度越快,时代的浪漫程度越低.
a.cpp:
string message;
void XiaoHong(){
message = "上去坐会儿吗";
}
void XiaoMing(){
bool isOk = GetInformationFromMsg(message);
if(isOk){
message = "啊,这";
return;
}
message = "下次一定";
}
很明显,message在两个函数间通信.
所以说:在面向对象的语言的对象中,成员变量就是成员函数间的信使,成员函数靠成员变量进行通信.
为啥异地恋很痛苦,情侣们之间的通信方式是"传递爱与被爱",距离太远了,一个拥抱对比一晚上的语音,后者传递的爱,信息丢失太多.
降维打击:使得信息大量丢失的过程.
当然,之前说过,人是一个复杂得多的系统...
3.借
我是在高中数学课上被同桌点明白的,这是一长串很乱的玩意儿
(@#!%!)
你给它+a再-a,
就可以化为
(@#!%!)+a-a = b-a
这种简洁的形式.
你们或许听过这样一个离谱的故事:一个旅馆有无穷多个房间,每个房间都住满了人,
这天晚上来了三个旅客,掌柜的说:虽然我们的旅馆都住满了,但再给你们安排3个单间没一点儿问题,1号房的搬到4号去,2->5,3->6...
这不就腾出来了嘛.
听着有点熟悉?这不是大家都在干的事情:向无穷的未来借钱!
printf("来个换行符号\n");
我就想打印\n:
printf("\\n");
我就想打印\\n
printf("\\\n");
不不不,这样不行,得这样
printf("\\\\n");
这个例子不太好,我的意思是,你会发现很多"向无穷多借一个"这种情况.