注:因为场地的原因,目前没法给各位报名参加我的免费编程培训,就转到这里来开公开课,喜欢的拿去看,我会慢慢填坑,逐步把整个产业链的方方面面都涉及到,给大家当入门。

古老而又新鲜

大概三千年前,周穆王时代,四川就已经有了偃师的木甲术,六百多年后,到了春秋时期,鲁班制造了机关人,而墨子则制造了最早的飞机,它们都是具备了一定的智能,但这种智能很难控,因为其利用了一种动物的能量和部分可控智能:老鼠!

机器心脏藏着一只甚至多只老鼠,老鼠在机关人的心脏里活动,通过线牵动机器的四肢,使得机器能够动起来。

这有点像我们平常所见到的木偶戏一样,只不过木偶是靠人控制,而机关人是靠里面老鼠的活动。

之所以选择老鼠,是因为老鼠生命力很强,又很活跃,闲不住,能够给机关人提供一定的能量,并且使得机关人看起来像是活的。

墨子和鲁班同时还根据老鼠的活动规律,设计了一套与之匹配的操控流程,比如听到猫声,老鼠就会瑟瑟发抖,比较安静,把这种行为设定为机关人停止活动——这也就是我们现在很熟悉的声控。

这叫机关术,可以在游戏 轩辕剑外传枫之舞 里面玩到。其精妙程度后来成了精妙巧智的代名词:机关!经常在考古类电影里看到这些,一般是早就设计好一整套机器,然后等着人去触动,触动则整套机器运动起来。

总结下,机关人和机关,这些都是最古老和精妙的程序,是融合“软硬”知识,综合生物、物理、材料等学科专业知识,设计制造出来的。

当然,这种机关的缺点也很明显:

不过,即使有这些固有的缺陷,但这套技术却并没有完全失传:一部分被用来制造古代的生产和战争用的机械,比如纺织机和弩机;一部分被用来设置机关暗道,据说秦皇陵就是这样,真假不明;一部分则演变成日常的游戏:木偶戏。

智能的核心:软件

在上面提到的机关人中,硬件就是:木头制造的各种部件,还有连接这些部件的各种线。另外就是驱动力:能量!比如动物能,电,汽油什么的。

但有这堆木头、线和能量,组装起来的机械还是比较简单的,需要人去操控,才能发挥其巨大威力。

就像汽车,如果不用人或者智能程序控制,汽车自己开着开着就会掉沟里去。

人虽然全能,但人毕竟是肉体,会累,会情绪不稳,需要吃饭,需要休息,如果有那么一种东西,能够让机器自动而且还正确地运行,那多好啊!

有!这东西有,古代人是设计一整套程序,然后靠某些条件去触发,而现代人则从简单的控制电路,到单片机,到智能芯片,到全能芯片,到超算…… 控制方式越来越智能,运算能力越来越强大,可以实现的事情越来越多。

从简单的在电脑上设计程序,让程序去控制机械,到模拟木偶戏,用电脑去演戏——说的就是在电脑上打游戏、看电影、上网灌水啊!

啥?看电影打游戏上网灌水也是在控制机械?对的,没说错,不过你控制的是:显示器的每个非常小的像素点和网关的收发操作。这些你都没感觉到而已,因为程序会根据你打字和发送动作,自动帮你完成了。

计算机的历史:什么样才算计算机

  1. 只要有“寄存”功能,就是计算机!
  2. 只要能运算四则运算,就能运算所有数学问题,只不过是计算时间长短而已。

发展历史:算筹——》算盘——》珠算——》算尺——》机械计算机——》电子计算机——》集成电路后的计算机——》联网时代的计算机(超算)

手工计算器

算盘

算盘不简单,一点不比现代计算器弱!因为其有“暂记”功能。 是一个可以复杂计算的计算机!尤其是高阶的算盘。

下面是最常见的9档算盘

| 1 | 1 | 1 | 1 | 1 || 1 | 1 | 1 | 1 |
| 1 | 1 | 1 | 1 | 1 || 1 | 1 | 1 | 1 |
|   |   |   |   |   ||   |   |   |   |
| --| --| --| --| --|| --| --| --| --|
|   |   |   |   |   ||   |   |   |   |
| 1 | 1 | 1 | 1 | 1 || 1 | 1 | 1 | 1 |
| 1 | 1 | 1 | 1 | 1 || 1 | 1 | 1 | 1 |
| 1 | 1 | 1 | 1 | 1 || 1 | 1 | 1 | 1 |
| 1 | 1 | 1 | 1 | 1 || 1 | 1 | 1 | 1 |
| 1 | 1 | 1 | 1 | 1 || 1 | 1 | 1 | 1 |

算盘形状:

计算尺

手工:发展到珠算+计算尺 已经算是极限,即使进一步发展也无法超越同时代的机械计算器了。

机械计算器的发展

机械:发展到机械计算器已经开始超越手工

帕斯卡加法器:第一台机械计算器,10进制,加减法 机械钟表(60进制)

1674年,莱布尼茨 改进机械计算器(四则运算) 从八卦中获得灵感,提出以二进制设计计算器,系统提出了二进制运算法则

提花编织机:手工的提花——》简单编程的提花(先打好孔)

1725年,布乔:纸带,通过编织孔控制提花机的提花动作——这种方法,标准化考试的时候那些答题卡还在用。

1805年,杰卡德:自动提花编织机,同时操控1200个编织针

注:提花技术至今仍然非常重要,比如在印刷多层电路板上

1822年 巴贝奇: 差分机 1834年,分析机设想

分析机:现代计算机的模型

构思了 送入和取出数据的机构, 存贮室和运算室间运算数据的部件 其伙伴:拜伦独生女 阿达 编制了一批函数程序

1888年 霍列瑞斯(Hollerith)从杰卡德的自动提花机获得灵感,为了人口统计数据处理,制造 自动制表机:二进制,多个统计项目,根据打孔情况进行自动统计。

1944年 艾肯,从巴贝奇和阿达 那里获得灵感,用机电方式替代巴贝奇的机械方式。领衔造出 马克一号,3000继电器,通过电磁铁控制开关动作。 霍波(Hopper,cobol设计者)编写程序 臭虫(bug):在马克一号里发现一只飞蛾卡住计算机。——硬件故障

1883年,爱迪生效应(电子管原理) 1895年,弗莱明为了无线电讯号检波问题,根据爱迪生效应,发明 热离子阀(第一只电子管,真空二极管,把交流电整流成直流电) 1906年,福雷斯特为了提高二极管检波灵敏度,发明真空三极管(加入栅栏式金属网,栅极可以微小电流控制阴极和屏极——屏极可获得较大电流,也就是放大作用) 1912年,福雷斯特,在硅谷利用真空三极管制作了 放大器

电子管:无线电装置中用于检波,整流,放大,振荡元件

1939年,阿坦那索夫 完成电子计算机设想,1942年装配出 ABC计算机,第一台电子计算机 1943年 英国巨人密码机(2015年才能解密 Colossus) 图灵 1943年,莫尔学院开始设计制造电子计算机,1946年2月14日,第一台实用的电子计算机(大众情人ENIAC)诞生:电子数学积分和计算机。运算速度在马克一号1000倍以上。 弱点:程序和计算分离,程序指令被放在机器的外部电路里

密码机 科郝 秘密写作机 德国二战 谜 密码机(Enigma):加密 1939年,英国罗宾逊

打孔机的优势: + 打孔机是2进制,而算盘是5进制或者说是简化了的10进制,二进制是抽象度更高更纯粹机械上可更容易实现的方法 + 打孔机记忆能力更强:打在纸上,不会被人推倒桌子算子就乱 + 运行更稳健:运行速度有保证,并且这种运行效率可以轻易复制(培养一个珠算高手需要耗费的资源和时间相对来说太长)

问题: 如何用简单的四则运算算高阶数学?或者如何让高阶数学变为简单的四则运算?

在建国初期,面对复杂的数学,是用算法把计算量分解,最后汇总。

第一台电子数字计算机 ENIAC 加法器 大约400个电子管 两个加法器可以完成乘法运算

软件可以干啥?

从上面我们知道,软件就是帮人更灵活控制各种机器的,从小到显示器的像素点,到大型机械。

那么,我们现在还有必要逐个去细致控制每个像素点么?现在已经几乎不用这样麻烦了。

现在控制整个屏幕的像素点,简单的只需要一句话就可以了。

机械控制?现在也在大发展,有些领域已经不用再对机械的每一步进行人工设计了,比如目前的热门话题3d打印,可以做到在电脑上做设计图,不需设计生产流程,电脑自动调用设备进行堆叠浇筑成型。

当然,仅仅控制机器还是不够的,田野的田用机器可以控制灌水和停水,但没法知道什么时候需要水,此时,需要添加监控装置,有了装置还不够,还需要能够自动发短信提醒。

最终成品可见我之前发过的文章:用通用的智能控制芯片(比如arduino),外加一个通信模块(比如:gsm),再加几段代码,就完成了这个设备的简单自动化。完整代码在此

注意:不要被代码吓到了,后面会说到这些代码的规律。

密码和代码

我发的链接里那段代码,大家看了估计会一片模糊,甚至会被吓退,但那仅仅是因为陌生,其实,代码并没有那么复杂。

我们日常经常就经常接触,比如玩游戏的时候,会喊土豆土豆,我是地瓜,这里的“土豆”代表的是友好的同盟一方,而地瓜则代表着自己的身份,这就是最简单的代码。

代码,就是用来代替某样东西的码表。

地瓜 = 我 = 操作者
土豆 = 友好的盟友一方 =  被操作方
呼叫 = 查询
呼叫完毕等待接收状态 = 服务器伺服状态

这实际上就是一道简单的人肉程序,代表两个人——服务器间的简单沟通。几乎所有的计算机程序都可以还原成如此简单的模式,只不过目前用的是各种大家还陌生的代号而已。下面我会说到这些代号的掌握方法。一点也不用被吓倒。

这么简单的人肉程序,当然破解起来很容易,战争的发展,促使人们发明越来越复杂的密码,直到超出人脑所能推测的范围。——计算机也就是为了这种加密,解密需要发展出来。

代码的本质

西游记中,孙悟空头上有个紧箍圈,唐僧只要一念紧箍咒,猴子就会头疼欲裂,痛不欲生。

这其实和我们前面说到的机关是很像的:

这其中,唐僧念的紧箍咒就是我们这里要说到的代码,禁锢圈解码器就是电脑。

好吧,我们烧香拜佛烧的符咒,本身也是一种代码,不过其作用方式和我们电脑有点不同。

这可见,代码不仅仅是写在电脑上的,也可以是用嘴说的——声控!其实还可以是看的——手势隔空操作,甚至可以是想的。

大概是2012年吧,有个身体瘫痪如霍金的程序员去世,他用的是摩斯码,用摩斯码来改gnome的界面,有人调戏说是累死的。

就目前来说吧,声控和手势隔空操作,或者是意念还是触控操作,对于写代码来说,还是太简单原始的。目前代码最高效的生产环境仍然是电脑+键盘。

所用代码的便捷性和实用性是很重要的,或许有的人眼睛不行,那么对他而言,最好就是编码语言就是不用眼睛最好,就像念咒语一样。

选用什么语言呢?其实是每个人各异的,比如刚刚说到的累死的程序员,他除了摩斯码,别的选择对他来说都是太遥远的事。

不过我们有手有脚的,不能和他比,如果我们选用的东西不顺手,也是可以自己改造,除非遇到不可抗力。

什么叫不可抗力呢?就是客户需求!比如我们很流行的浏览器ie6,多么老迈,但因为用的人很多,而我们写程序就是为了给这些人用的,于是,我们不得不捏着鼻子,去屈就这些乱七八糟的东西。

楼上有人好奇会具体教什么语言,应该说是会涉及四种类型:

一段简单的代码

软件用什么制造?

接下来说说代码是怎么制造的,先看看一个图:

多屏编程.png

有点复杂是吧?其实,编程的软件可以简单,也可以复杂。有个比较简单的方法是使用记事本,没错,就是你windows开始菜单附件里那个记事本。

但这还不是最简单的,最简单的命令行模式下的vi和nano。

nano.png

从工具的简单,说明一件事:编程并不是复杂的事情,因此,我们没必要被吓到!

从实际使用上,nano这个更简单的工具,使用起来反而比记事本方便快速。——我就用了好长时间nano。

但nano等简单工具明显是不方便的,可以说,编程会有三种模式:

那么一个起码的编程生产线需要什么要素呢?

软件生产线需要的要素

如果觉得说的太慢,可以跳入下一步: 软件环境 由于windows系统本身使用的是 gb18032 或者其他两个 gbk gb2312 ,为了减少出错,统一换用 utf-8 。——我可以说这几套逐个穷尽编码设计严重缺脑么?建议编写新华字典的去把那些当年设计这套方案的砖家放猪圈里喂养几天,然后可以送上案板。