编程哲学之 C# 篇:007——如何创造万物
上帝拥有创建万物的能力,本文介绍创造万物的道,让你也拥有上帝般创造万物的能力!
道
中国哲学家,道家学派创始人——老子,在《道德经》写到:
道生一,一生二,二生三,三生万物
那么,是什么 道
可以创造万物?
古希腊的哲学家们曾做过这样的推理:
如果将水、沙子、肉无限切分,最后得到的将是相同的不可分的颗粒。
这些以不同的方式连接在一起的不可分的颗粒,希腊人称之为“原子”。
那么我们用同样的思维来推理,
如果将电脑世界中文字、图片、音乐、电影、游戏、无限切分,
最后能否得到的将是相同的不可分的东西?如果能?那么这个东西又是什么?
回忆一下初中的化学知识:
石墨、金刚石,它们都是由 C(碳) 原子构成的,但由于它们的 C(碳) 原子排列方式不同,从而造成了它们是不同的东西。
看来创造万物的 道
是:最小不可分割的颗粒
+ 排列方式
现实世界中的难题:
- 物理学家们依然在寻找
最小不可分割的颗粒
的最终形态。 - 即使想要将 原子 按意愿组织起来是极其艰难的。
怎么解决上面说到的两个难题?
在现实世界中,
我们想要合成一种新的元素极其艰难的原因之一是,排列是以三维立体的形式来呈现的。
如果我们能将三维降到一维,那么一切将会简单很多,那么一维排序能否创造出万物呢?
让我们来看看 7000 多年前的伏羲——华夏文明的人文始祖,是怎么用他独特的方式来描述这个世界的。
7000 多年前,人类还没有发明文字,
伏羲看到世界:有天、有地;有男、有女;有光、有暗......
悟出了天地万物的变化规律惟一阴一阳而已。
所以根据阴阳变化之理,创造了八卦
,以八种简单的符号来概括天地之间的万事万物。
符号 | 卦名 | 拼音 | 象征 |
---|---|---|---|
☰ | 乾 | qián | 天 |
☱ | 兑 | duì | 泽 |
☲ | 离 | lí | 火 |
☳ | 震 | zhèn | 雷 |
☴ | 巽 | xùn | 风 |
☵ | 坎 | kǎn | 水 |
☶ | 艮 | gèn | 山 |
☷ | 坤 | kūn | 地 |
可以看出,只要用三个位
,每个位置上要么是阳
,要么是阴
,就可以代表成八种不同的事物。
记作:2^3 = 2³ = 8
接下来看看由八卦
扩展到六十四卦
可以看出,只要用六个位
,每个位置上要么是阳
,要么是阴
,就可以代表成六十四种不同的事物。
以此类推,只要我们不断地增加更多的位
,就可以表示更多的事物,
用极限的思想来诉说。就可以表示用来表示万事万物。
我们运用古希腊哲学家的推理来无限切割六十四卦中的任何一个卦象,
也就是对半切,再对半切,再对半切...
直到最后,我们得到 最小不可分割的阳
或 最小不可分割的阴
貌似有两种 最小不可分割的颗粒
如果是只有一种 最小不可分割的颗粒
就好了。
再看看我们的 金刚石 和 石墨 的结构图吧。
在 金刚石 和 石墨 的结构图,
有原子的点,我们称之为有
,
没有原子的空白空间也有最小不可分割空间(刚好可以容下一个原子,但还没有),我们称之为无
所以,最小不可分割空间上要么有最小不可分割的颗粒
,要么没有(无
),只有这两种可能。
替换一下八卦中的阴阳:
阳
= 有
阴
= 无
(因为 阴 = 无了,所以我们只剩下 阳 了)
也可以:
阳
= 无
阴
= 有
(因为 阳 = 无了,所以我们只剩下 阴 了)
用更简单的符号来表示吧:
阳
= 有
= 1
阴
= 无
= 0
想象一下,将金刚石 和 石墨 的结构图中
有原子点用 1
代替,
空白空间用 0
代替(不是整片空白,而是刚好可以容下一个原子最小不可分割空白空间)
所以我们得到了 最小不可分割的颗粒
—— 1
,
而 0
则表示 最小不可分割空白空间
,也可以来容下 最小不可分割的颗粒
—— 1
,但目的是为了隔开 1
,让其呈现排列结构
符号 | 卦名 | 拼音 | 象征 | 新表示方式 |
---|---|---|---|---|
☰ | 乾 | qián | 天 | 111 |
☱ | 兑 | duì | 泽 | 011 |
☲ | 离 | lí | 火 | 101 |
☳ | 震 | zhèn | 雷 | 001 |
☴ | 巽 | xùn | 风 | 110 |
☵ | 坎 | kǎn | 水 | 010 |
☶ | 艮 | gèn | 山 | 100 |
☷ | 坤 | kūn | 地 | 000 |
前面说了,创造万物的 道
是:最小不可分割的颗粒
+ 排列方式
所以,在我们创造的世界中,由于我们是神,
因此我们可以指定 最小不可分割的颗粒
是 1
,
然后用 一维排列的排列方式
,就可以在我们创造的世界中创造万物!
在数字网络时代,你看到的文字、图片、音乐、电影、游戏,这一切都是由 1
和 0
组成。
二进制的发明者莱布尼兹首次接触到八卦图是与 1685年 来中国作为传教士白晋的联系中。
佛
在现实世界中,物理结构相同则是同样的事物,物理结构不同则是不同的事物。
然后佛且告诉我们,一切由心而生。
看山是山,看山不是山,看山还是山~
在现在的电脑世界中,同样的排列方式
可以表示多种事物,取决于你怎么“看”,
如:
01100001
= 可以表示:字母 a
01100001
= 可以表示:数字 97
如果我们将其相加,可能有多种结果:
01100001
+ 01100001
= aa
01100001
+ 01100001
= a97
01100001
+ 01100001
= 97a
01100001
+ 01100001
= 194
一切的因果
取决你心中的“看”
法
在数字网络中,一切的交流都是由 1
和 0
组成。
如果一台电脑将 01100001
发送给另外另外一台电脑,
另外一台电脑是否能明白取决于两个电脑是否拥有相同的“看”
法。
所以,戒酒戒色,练武功都不会让你成佛,
你是否能成佛,取决于你对这个世界的“看”
法是否和佛的“看”
法一样。
这里有点讲得有点玄了,下几章讲到编程中得类型
应该就会好懂很多了。
太极
八卦图是由伏羲画的,中间的太极图是由孔子画的。
太
由 大
和 点
组成,在孔子的哲学观中:
这个世界是由 大到极限(宇宙) 和 (点)小到极限(最小不可分割的颗粒) 的组成的。
下一章,我们将开始用 小到极限(最小不可分割的颗粒) 在 大到极限(宇宙) 中创建万物!
结束语
在很多计算机书籍中都会有下面一段话:
比特(bit)是英文 binary digit 的缩写,表示信息的最小单位,只有两种元素:
0
和1
。
本章的内容就是解释为什么只用 0
和 1
就能来描述我们现实世界中的一切。
最后说明:本章内容和思想是计算机与信息时代的根基,适合任意编程语言。
编程哲学之 C# 篇:007——如何创造万物的更多相关文章
- 编程哲学之C#篇:02——学习思维
<代码大全>的第二章:介绍隐喻(类比)的思维方式, <经济学原理>的第二章:介绍怎么像经济学家一样思考, <计算机的心智操作系统之哲学原理>的第一章:介绍学习操作系 ...
- 编程哲学之C#篇:01——创世纪
我们能否像神一样地创建一个世界? 对于创建世界而言,程序员的创作能力最接近于神--相对于导演,作家,漫画家而言,他们创建的世界(作品)一旦完成,就再也不会变化,创建的角色再也不会成长.而程序员创建的世 ...
- Python黑帽编程2.1 Python编程哲学
Python黑帽编程2.1 Python编程哲学 本节的内容有些趣味性,涉及到很多人为什么会选择Python,为什么会喜欢这门语言.我带大家膜拜下Python作者的Python之禅,然后再来了解下P ...
- Linux shell脚本编程基础之练习篇
shell脚本编程基础之练习篇. 1.编写一个脚本使我们在写一个脚本时自动生成”#!/bin/bash”这一行和注释信息. #!/bin/bash ] then echo "请输入一个参数& ...
- 浅谈.Net异步编程的前世今生----APM篇
前言 在.Net程序开发过程中,我们经常会遇到如下场景: 编写WinForm程序客户端,需要查询数据库获取数据,于是我们根据需求写好了代码后,点击查询,发现界面卡死,无法响应.经过调试,发现查询数据库 ...
- Scala进阶之路-并发编程模型Akka入门篇
Scala进阶之路-并发编程模型Akka入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Akka Actor介绍 1>.Akka介绍 写并发程序很难.程序员不得不处 ...
- 浅谈.Net异步编程的前世今生----EAP篇
前言 在上一篇博文中,我们提到了APM模型实现异步编程的模式,通过使用APM模型,可以简化.Net中编写异步程序的方式,但APM模型本身依然存在一些缺点,如无法得知操作进度,不能取消异步操作等. 针对 ...
- 从编程哲学到开发应用:Spring的初步应用
一.前言 在学习Spring的过程中,我们学习了很多东西,可是实际应用中,我们究竟用到了那些?常用的又是那种方法呢? 二.书上与开发的差异 1.IOC 1) IOC,控制反转,是Spring框架的核心 ...
- 并发编程之第三篇(synchronized)
并发编程之第三篇(synchronized) 3. 自旋优化 4. 偏向锁 撤销-其它线程使用对象 撤销-调用wait/notify 批量重偏向 批量撤销 5. 锁消除 4.7 wait/notify ...
随机推荐
- webpack.config.js====插件clean-webpack-plugin
1. 安装:主要是用来清除重复文件,生成最新的的插件 就是说在编译文件的时候,先把 build或dist (就是放生产环境用的文件) 目录里的文件先清除干净,再生成新的带有hash值的文件 cnpm ...
- 啊哈算法之宽搜BFS解救小哈
简述 本算法摘选自啊哈磊所著的<啊哈!算法>第四章第三节的题目——BFS算法再次解救小哈.文中代码使用C语言编写,博主通过阅读和理解,重新由Java代码实现了一遍,以此来理解BFS算法.关 ...
- Linux下常用的数据恢复工具
一.数据删除 命令:rm -rf,将任何数据直接从硬盘删除,且没有任何提示 建议做法: 把命令参数放到后面:rm -rfi 将删除的东西通过mv命令移动到系统下的/temp目录下,然后写个脚 本定期执 ...
- jQuery中slim版本与普通版本的区别
在jQuery3中,推出了一个slim版本.slim,百度翻译:细长的; 苗条的,纤细的; 微小的; 无价值的. 区别概述: slim即简化版,比普通版本缺少Ajax和特效模块模块. 官方发布地址:h ...
- Python+selenium之selenium Grid2
利用selenium grid2 keyi可以在不同的主机上建立主节点(hub)和分支节点(node),可以使主节点上的测试用例在不同的分支节点上运行.对不同的节点来说,可以搭建不同的测试环境(操作系 ...
- Android商城开发系列(四)——butterknife的使用
在上一篇博客:Android商城开发系列(三)——使用Fragment+RadioButton实现商城底部导航栏实现商城的底部导航栏时,里面用到了butterknife,今天来讲解一下的butterk ...
- github的pull Request使用
场景: teamA要一起做一个项目,选择用github管理自己的代码仓库,这时userA在github上新建了一个远程仓库,其他人需要通过pull request来实现提交.那么,问题来了,pull ...
- 关于火狐浏览器在ubuntu和安卓手机上的同步
最近在ubuntu使用火狐浏览器,感觉还不错.我想着,如果在我的安卓手机上装一个火狐浏览器,我就可以在手机上查看电脑上所收藏的网站了.然后我就去安卓应用市场下载了最新版的火狐浏览器.令人奇怪的是,我在 ...
- Windows UEFI 安装策略的一个细节
在计算机已连接任何带Windows Boot Manager的硬盘的时候,系统自己不会创建EFI分区,而是用之前的
- Ajax经典的面试题
1.什么是AJAX,为什么要使用Ajax(请谈一下你对Ajax的认识)什么是ajax:AJAX是“Asynchronous JavaScript and XML”的缩写.他是指一种创建交互式网页应用的 ...