编程哲学之C#篇:02——学习思维
《代码大全》的第二章:介绍隐喻(类比)的思维方式,
《经济学原理》的第二章:介绍怎么像经济学家一样思考,
《计算机的心智操作系统之哲学原理》的第一章:介绍学习操作系统的思维,
所以我也尽早地介绍我写本系列中会经常运用的学习思维。
类比
你知道什么是驱动程序吗,你会怎么向一个小学三年级的学生解释什么是驱动程序呢?
我会跟这个小学生说,现在假设你要准备一个宣传活动,为了这个宣传活动,
- 你请了一位来自奥地利的音乐家,他能演奏各式各样的音乐,他的名字叫声卡,他是说德语的。
- 你请了一位来自法国的艺术家,他能画各式各样的画,他的名字叫显卡,他是说法语的。
- 你请了一位来自意大利的行政,他能收集和准备乐谱和色彩,他的名字叫网卡,他是说意大利语的。
- 你请了一位来自美国的主管,他能安排任务中的各种细节,他的名字叫操作系统,他是说英语的。
现在为了让声卡,显卡,网卡了解操作系统的安排,你觉得还缺少什么?
这时候是不是有一个答案从你脑海中冒出来,请记住这种感觉。
通过上面的一个例子,你是否已经get到类比的威力
类比(英语:Analogy,源自古希腊语),或类推,是一种认知过程,将某个特定事物所附带的讯息转移到其他特定事物之上。类比通过比较两件事情,清楚揭示二者之间的相似点,并将已知事物的特点,推衍到未知事物中,但两者不一定有实质上的同源性,其类比也不见得“合理”。在记忆、沟通与问题解决等过程中扮演重要角色。
类比是人类思考方式中的一种重要途径,可以用于辨识问题,解释概念,及发现新的事物或功能。
简单来说:类比的学习方法,能让自己一下就想明白了一件事情。
如何更好地应用类比思维
- 存取已知的类比来源物概念
- 将已知的类比来源物进行和标的物的比对
- 评估类比物以及标的物之间配对的吻合度
- 存取类比物与标的物之间的推论
- 并提取类比物与标的物之间的共通性
思维穿越
很多穿越剧讲述穿越到历史某个时间,然后利用自己的现代的知识,闯出一片天地。那么如果现在有机会让你穿越到1983年之前,和比尔盖茨一起打造Windows操作系统,你愿意么?
穿越时空,目前还不可能,但思维可以。思维可以让你设想在1983年之前,你和比尔盖茨一起讨论未来的操作系统应该是怎么样的,具备有那些特性等。
为什么要这样设想呢?
- 如果你和比尔盖茨一起打造Windows操作系统,你会不了解Windows操作系统么?
- 如果你阿基米德一起泡澡,你会不熟悉浮力原理么?
- 如果你和牛顿...
使用思维穿越,能让你参与到每个知识点诞生的过程,这样还有谁比你更加了解它呢?
那么应该怎么做呢?
当你用电脑在愉快地听着歌写着文档,突然由于文档软件的bug导致电脑死机了,你会提出什么样的解决方案?
当你用电脑在愉快地听着歌写着文档,每当听歌软件切换歌曲的时候,文档软件有几秒卡住不动了,你会提出什么样的解决方案?
这些都是以前操作系统创造者面对过的问题,他们会记得他们遇到什么样的问题——这些记录就可以让你的思维假设你穿越到和操作系统创造者一起打造操作系统,思维可以让你假设和之前操作系统创造者一起讨论,对比你们之间各种提出的解决方案。通过这样的思维假设来让你参与到操作系统设计中,这样还有谁比你更加了解操作系统?
神造与人造
如果我们仔细看看身边的事物,就会发现所有的东西可以划分为两类,一类是本来就存在于自然中,人类所做的只不过是发现;另一类是本来并不存在,人类所做的是发明,第一类事物我们称之为神造事物或者自然存在的事物,第二类事物我们称之为人造事物。
自1946年诞生计算机(电脑)后,计算机发展十分迅速,其原因是因为计算机对现实世界的依赖极少,如果你要打造一辆汽车,你必须考虑能量转换啦,地面摩擦啦,空气阻力啦等等等,你必须一一遵守现实世界的种种规则才能让汽车运行起来,但在计算机世界呢,为了让两台计算机通信,我们提出了七层网络模型,但实现起来貌似太过繁琐,所以现在的通信用五层网络模型就好了,其他学科能干这么任性的事情么?(文学,语言这种100%由人创造的也可以,所以编程语言也可以任性,哇咔咔~)
对于现实世界(神造)我们能做的世界基本就是遵守,而对于计算机世界(人造),由于我们是这个世界的神,所以更多的概念和机制是由我们人类提出的。
人造学科的特点 | 神造学科的特点 |
---|---|
不精确,具有相对性 | 精确、绝对 |
从对人类活动的观察得出 | 从对自然存在的观察得出 |
依赖于人的主观判断力 | 不依赖于人的主观判断力 |
通常符合人的直觉 | 通常违反人的直觉 |
由于计算机知识和编程语言很多概念,术语,机制都是由人提出的,我们按照人造事物的特点来进行学习,从而易如反掌地掌握该知识点。
当人们面临困境时通常的做法就是:发明新的概念,新的术语或新的机制来解脱困境。——《计算机的心智操作系统之哲学原理》
人们面临困境时的通常做法在电脑世界中(含编程语言)更加发挥的淋漓尽致!为什么羽毛和铁球在同样高度没有空气阻力的情况下同时到达地面,你可能很难get到神的用意(万有引力→引力波→??);但同为人,为什么要这么设定,你只要站在和提出人的视角看看,想想,应该很容易get到。
结束语
本章介绍了使用类比作为切入点让你快速地对某个知识点有个大概的了解,然后再使用感同身受让你参与知识点诞生的过程,从而了解知识的全貌。
下一章将介绍我为什么选择的是C#语言。
最后留下一道思考问题:你自己有什么方式方法来认识这个世界?或者遇到一件你从来没有遇到过的问题,没有人可以给你答案,你会怎么起手去分析它?
扩展阅读
我发布了《编程哲学之C#篇:01——创世纪》后有人留言
把两个完全没有关系的东西,往一块生搬,真不知道易经和二进制有什么关系?易经不是天下最厉害的内功心法吗?出自少林。
我对易经被用于算命,太极八卦图被用于辟邪,如同火药被用于制造烟花爆竹的心情是一样一样的。我以前读书的时候,也不明白为什么古代诗人看不惯世俗然后归园田居,吟诗两首。我们就要:啊,中华文化博大精深。
大部分编程书都会这么写,面向对象的三个基本特征是:封装、继承、多态。而作为被应试教育过来人的我们也会惯性地在封装、继承、多态下面画上横线,然后在考试试卷上妥妥地填上答案,得到分数,完成任务。然而我有幸自学编程,有幸看了《苏菲的世界》,猜想到面向对象思想起源于古希腊三圣的柏拉图、亚理士多德提出,然后我开启了大量的阅读,最后再次得出:啊,中华文化博大精深。
既然古希腊有类比,那么中华文化对类比的描述是:
触类旁通——《周易·系辞上》:“引而伸之;触类而长之;天下之能事毕矣。”
《周易》也叫《易经》为群经之首。我觉得是中华文化的起源和核心。
《易经》讲阴阳协调平衡。
- 中医:如果你上火了,那么吃一些凉性的食物来平衡。
- 风水:如果你脾气暴躁(火),那么摆一个鱼缸(水)来平衡。
中华文化很难摆脱平衡的思维。
二进制与《易经》的关系:
莱布尼茨二进制算术体系,在1701以前已经形成,他于1701年初向巴黎皇家学会提交了一篇正式论文,即论述二进制的《数字科学新论》(Essay d'unne nouvelle Science des Nombres),但被婉言谢绝。科学院院长封单内(De Fontenelle)提出的主要理由是看不出二进制有何用处。1703年,在补充了伏羲六十四卦次序图和伏羲六十四卦方位图后,他将全部研究成果发表在法国《皇家科学院院刊》上,[14]标题为“二进制算术阐释——仅仅使用数字0和1兼论其效能及伏羲数字的意义”,莱布尼茨根据二进制来理解先天圆图(先天六十四卦方圆图),说先天原图已经包含了他所发明的东西。
2017年,我买了很多有关中华文化的书,但到现在都没有看,但还是尽可能地补上中华文化对应的知识,希望有一天,你也能再次:啊,中华文化博大精深。
编程哲学之C#篇:02——学习思维的更多相关文章
- 编程哲学之C#篇:01——创世纪
我们能否像神一样地创建一个世界? 对于创建世界而言,程序员的创作能力最接近于神--相对于导演,作家,漫画家而言,他们创建的世界(作品)一旦完成,就再也不会变化,创建的角色再也不会成长.而程序员创建的世 ...
- 编程哲学之 C# 篇:007——如何创造万物
上帝拥有创建万物的能力,本文介绍创造万物的道,让你也拥有上帝般创造万物的能力! 道 中国哲学家,道家学派创始人--老子,在<道德经>写到: 道生一,一生二,二生三,三生万物 那么,是什么 ...
- 【Windows编程】系列第九篇:剪贴板使用
上一篇我们学习了常见的通用对话框,本篇来了解剪贴板的使用,它常用于复制粘贴功能. 剪贴板是Windows最早就加入的功能,由于该功能非常实用,我们几乎每天都会使用到.通过剪贴板,我们就可以将数据从一个 ...
- Shell高级编程视频教程-跟着老男孩一步步学习Shell高级编程实战视频教程
Shell高级编程视频教程-跟着老男孩一步步学习Shell高级编程实战视频教程 教程简介: 本教程共71节,主要介绍了shell的相关知识教程,如shell编程需要的基础知识储备.shell脚本概念介 ...
- Scala进阶之路-并发编程模型Akka入门篇
Scala进阶之路-并发编程模型Akka入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Akka Actor介绍 1>.Akka介绍 写并发程序很难.程序员不得不处 ...
- 从编程哲学到开发应用:Spring的初步应用
一.前言 在学习Spring的过程中,我们学习了很多东西,可是实际应用中,我们究竟用到了那些?常用的又是那种方法呢? 二.书上与开发的差异 1.IOC 1) IOC,控制反转,是Spring框架的核心 ...
- Python黑帽编程2.1 Python编程哲学
Python黑帽编程2.1 Python编程哲学 本节的内容有些趣味性,涉及到很多人为什么会选择Python,为什么会喜欢这门语言.我带大家膜拜下Python作者的Python之禅,然后再来了解下P ...
- Linux shell脚本编程基础之练习篇
shell脚本编程基础之练习篇. 1.编写一个脚本使我们在写一个脚本时自动生成”#!/bin/bash”这一行和注释信息. #!/bin/bash ] then echo "请输入一个参数& ...
- SAP接口编程 之 JCo3.0系列(02) : JCo Client Programming
SAP接口编程 之 JCo3.0系列(02) : JCo Client Programming 字数545 阅读52 评论0 喜欢1 JCo3.0调用SAP函数的过程 大致可以总结为以下步骤: 连接至 ...
随机推荐
- day12:vcp考试
Q221. An administrator is creating a new Platform Service Controller Password Policy with the follow ...
- yii创建与设置默认控制器并载入模板
yii创建与设置默认控制器并载入模板 一.创建控制器 在protected下的controllers文件夹中创建自定义的控制器文件,比如: IndexController.php (文件名首字母大写) ...
- 构建openssl debug版
一.简介 作为一种安全协议,openssl囊括了主要的密码算法.常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用. 参考: http://www.linuxidc ...
- Scrum 团队成立 -- 软件工程
团队项目选题 : 金融工具:复利计算与投资记录项目继续升级,开发定位明确.功能专注的工具类软件 团队队员 : 蔡舜 , 林宇粲 , 王昕明 , 卢晓洵 团队目标 : 不断完善 团队口号 : 永不 ...
- POJ 1135.Domino Effect Dijkastra算法
Domino Effect Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10325 Accepted: 2560 De ...
- JVM 系列(一)类加载
JVM 系列(一)类加载 类加载机制是指把 class 文件加载到内存,并对数据进行校验.解析和初始化,最终形成 JVM 可以直接使用的 Java 类型的过程. ClassLoader 加载一个 cl ...
- 设计模式之flyweight享元模式
运用共享技术支持大量细粒度对象的使用 Flyweight模式(享元) Java深入到一定程度,就不可避免的碰到设计模式这一概念,了解设计模式,将使自己对java中的接口或抽象类应用有更深的理解.设计模 ...
- 复制文件描述符---dup
函数功能:复制文件描述符 头文件:#include<unistd.h> 函数原型:int dup(int oldfd) 参数说明:oldfd:旧的文件描述符 返回值:成功返回-个新的文件描 ...
- ApplicationContextAware学习--存疑问题
先看下ApplicationContextAware的源码: package org.springframework.context; import org.springframework.b ...
- jQuery DataTables插件分页允许输入页码跳转
背景说明 项目中使用jQuery DataTables插件来实现分页表格,但是默认的分页样式不能输入页码进行跳转,在页数非常多的时候使用很不方便,最主要的还是没有达到产品部门的设计要求,所以我需要寻找 ...