一些见解,关于数学,计算机,人工智能以及宇宙
epi.clyce2012/08/12科学技术学 IP:上海
最近想法比较多,随手写写。


文章涵盖的方面可能比较广,所以事实上不知道发在哪里比较好,或许从入手角度来说,更适合计算机。但是考虑到文章的深度和广度,我还是先发到这里来了。


帖子可能会很长,可能会分好几天去写。


鉴于鄙人对于完美、完整性的追求,诚切希望大家能够满足我一个小小的要求:


在文章最后写完之前,希望暂时不要转载到KC之外
来自:科创总论 / 科学技术学
13
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
epi.clyce 作者
12年6个月前 IP:未同步
437647
--引子

很久没写文章了,突然来了些灵感。尚不成熟,加之鄙人不才,认知能力和表达能力有限,不知能不能写好。

在这么些时间的学习当中,总冥冥觉得无论是物理化学生物,还是计算机,数学,哲学,抑或是文学,音乐,绘画雕塑之间,总是在冥冥之中存在着些许联系。

在学习乐理的时候发现了计算机中的某种算法,或者是在金融学中发现了物理化学定律的另一种表现方式。每当表面上看来不相干的东西在深层次上又变成了统一的东西的时候,总会有一种奇妙的感觉,觉得某个巨大的拼图上某些东西拼起来了,觉得一些比所有问题更深的问题的答案,悄悄露了一下触角,又缩了回去。

然而每当我顺着这个触角展露的方向继续追寻下去的时候,却发现自己每走深一步都会离自己思考的起点更近一步,最终陷入认知的循环之中,绕不出来。

也罢,道之可道者,皆非常道也。

自己也认为这一切是再正常不过的事情,宇宙本来就只有一个,只是人类习惯于按照自己的思维方式把东西归档分类而已。

然而这一切之间究竟是什么联系起来的,却也总是令人痴迷,就像安康鱼头上的小触角,让无数人趋之若鹜,甚至葬送自己一生。

后来我知道,这条大安康鱼的触角有一个名字,叫做模式。

但对于这模式究竟属于哪一条安康鱼,从哪里来,到底是什么样的,我们依旧一无所知,或许永远都不会知道。

这一阵子赶项目,渐渐觉得技术上还是有些疏漏,在很多方面依旧力不从心。于是对设计模式、编程思想,基础理论方面看得书比较多一些。

加之新接触了几门编程语言,也读了些动态语言的源码。渐渐的感受到语言背后作者的思维方式,风格等等,开始对程序语言背后蕴含的信息感兴趣起来。

随着所读所想渐渐多起来,发现计算机方面的深入倒反而让我觉得离这安康鱼又近了一点点,很多东西在脑子里徘徊着,却不知怎么表达。也只能靠些许苍白无聊的文字稍作修缮,却总不能尽意,若是言语晦涩,诚望谅解。

这篇文章的主题我还是会比较多的控制在计算机领域内,但有时也会不可避免地牵扯到其他一些东西。

文章的开头看起来像是故事或者小说,但那只是一个表象,整篇文章是纯粹议论、说理性的,只是从讲故事的方式展开话题可能会比较帮助思考。

另外,文中提到宗教元素,并无不敬之意,只是作为一种例子。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
epi.clyce作者
12年6个月前 IP:未同步
437648
--创世纪

    ....
    - 神看光是好的,就把光暗分开了。
    - 神称光为昼,称暗为夜。有晚上,有早晨,这是头一日。
    - 神说,诸水之间要有空气,将水分为上下。
    ....
    ....
    - 神说,天上要有光体,可以分昼夜,作记号,定节令,日子,年岁。
    - 并要发光在天空,普照在地上。事就这样成了。
    - 于是神造了两个大光,大的管昼,小的管夜。又造众星。
    - 就把这些光摆列在天空,普照在地上。
    ....
    ....
    - 于是神造出野兽,各从其类。牲畜,各从其类。地上一切昆虫,各从其类。神看着是好的。
    - 神说,我们要照着我们的形像,按着我们的样式造人,使他们管理海里的鱼,空中的鸟,地上的牲畜,和全地,并地上所爬的一切昆虫。
    - 神就照着自己的形像造人,乃是照着他的形像造男造女。
    ....
    ....

"知道我为什么从不担心人类会拥有与我抗衡的实力么" 上帝抱着人类世界的圣经,询问天使们。

“因为他们只会按照他们自己的思维方式去揣测您的想法,他们总是以为您和他们是一样的,他们只能看到事物的表面,他们只在需要的时候创造需要的东西,总以为创造出的东西就是不变的,总觉得改变就是推翻。他们会为了您的存在而否定进化论,或是因为进化论而否定您,正是因为他们以为您创造的一切都如同他们制造的东西一般不会改变。他们以为自己懂得创造,事实上永远都是劳动者,他们不懂得创造的真谛不是制造而是推动。他们看不见这个宇宙,因为他们看着这个宇宙。” 天使诃息回答到。

“没错,人类诞生了一批又一批制造者,农民,诗人,工程师,程序员,每次总让我觉得自己的地位收到了威胁,然而每次又总让我觉得失望。他们永远摆脱不了制造-使用-再制造的悲苦命运。在计算机诞生,人们真正懂得可以用编码的方式描述世界的一切的时候,尤其是当lisp的诞生告诉了人们数据与程序的统一性,元编程的理念让人们开始创造面向编程的编程的时候,我一度以为他们要崛起了,但最终软件工程仍然停留在人类制造业的水准,人们永远徘徊在制造工具-制造产品的循环之中不能自拔。他们不跳出这个圈子,再怎么发展,依然不能够拥有我的力量。就像古代的人们可以不断提高盔甲的制造工艺,但若没有真正的化学的出现,盔甲制造的再精,也比不上现在人类的一件防弹衣。他们不跳出这个圈子,就永远不懂得产品即是工具,工具即是产品,就永远不懂得产品即是产品自己的工具。”

“此话怎讲” 库勒悄悄缩短了循环周期。

“想知道创世纪那七天,我究竟做了些什么吗” 上帝问道。

众天使环坐,洗耳倾听。

“第一天,我创建了两个元,一个作为其他元的容器,人类把它叫做空间。。。当然,也有人叫他,沙箱。另一个元规定了所有的元都是可衡量的,我称他为。。数”
“第二天,我创建了另一个元,为了能够使得空间中的其他元在不同的状态间按照一定步长分离,也为了同步各元的变换。我叫她,时间。”
“第三天,我在空间元创建了一组元,这组元在空间元上表现出各种各样的行为,我发现这组元的行为可以总结为两种模式,一种我叫他粒子模式,一种叫波模式。我称这组元为量子”
“第四天,我创造了一种元,可以作为量子元的一种信息载体,也能够影响量子元的行为。我叫他能量”
“第五天,我创造了量子之间的四种相互作用方式。”
“第六天,我为这些元确定了他们最初的值”
“第七天,也就是现在,最长的一天,我一直在休息,欣赏着已经变得如此美丽的宇宙。宇宙是我的产品吗,不,宇宙是宇宙自己的产品,我只是创造了这些元”

“可是这并不完美” 刚刚第65536次修剪过自己的羽翼,一身疲惫的阿姆拉说,“这样你还是创造了太多不同的元。而按照美的定义,你应该只创造一种元啊”

“我确确实实只创造了一种元啊”上帝笑到,“四种基本力是什么,那是作用于量子之上的一组规则,能量是什么,那是作用于量子的另一组规则。而我在空间上创立了一组规则,这组规则在一起互相作用的行为便是一个量子,那么量子也是一组规则啊,时间是衡量规则下的一个状态到同一规则下另一个状态的改变的规则,而状态是检验规则的规则,空间又是容纳其他规则的规则,那么数又是什么,有了增加、减少、守恒三个规则,不就有了数吗,那么数不也是规则吗?而创建宇宙的初始值便是几个数,也便是几组规则了”

“确实,元即是一组规则,创造了规则即是创造了宇宙。而我将有一天打破这些规则” 亚伯汗说。

“那也只是让一些规则变成另一些规则罢了,规则是什么,规则的本质便是自己与其他规则如何互相作用。人类发展出了最接近我的行业——编程,因为编程即是用规则谱写世界,然而人类自己却从未意识到这一点,依旧按照工具-产品的方式去编写程序。真是悲哀。”

“然而人类在冥冥之中也认识到了这个问题,不是吗?” 天使瑰洱说。

“确实,图灵机诞生时我着实吓坏了,那是人类想到的第一个通过规则描述规则的机器。而后各种编程语言的诞生也实在令我担惊受怕,当人们喜欢函数超过过程的时候,我担心他们发现函数的表现力来自于她是一种更纯粹的规则——多个自变量的输入,单个应变量输出的规则。当人们把数据封装成结构体的时候,我担心他们发现规则自由组合带来的强大与便捷,当事件驱动兴起时,我更加担心了,因为他们很容易就能透过事件这层薄薄的表象,看到那其实就是规则引起的状态变换,触发新规则作用的一种规则。”

“然而这些都不是你最害怕的,不是吗” 帛曳以299792km/s的速度停留在视界上。

“在LISP诞生的时候,我出了一身的冷汗,当时我以为人类真的要能够看穿我了。这样一个语言,每个角度上都像人类传达着宇宙的信息。她告诉人类数据和程序是一致的,就能带给人一切皆规则的启发;她告诉人类函数式编程的高效,而函数本质就是一种规则。她甚至拥有那么强大的元编程能力,随时可以让人类觉醒,明白产品即是工具。但人类依旧只看到了表象,依旧拘泥于自己的思想,甚至于lisp的不同方言支持者们之间还会为了表面的现象展开骂战。人们赞赏lisp,说她统一了程序与数据成就了简单美,却说不清这种美来自何方;说她的函数式编程直观高效,却不知lisp为何比其他函数式语言强大;说她的s-表达式和宏带来了无与伦比的元编程能力,却说不清这种进化性是如何被赋予。人们从来不知道这些优势来源于同一个特征 —— lisp是面向规则的编程语言。”

“那么还有一样东西你应当害怕的,叫做Prolog。” 切西亚说到。

“没错。不过Prolog的局限性还是大了。只怕这两个语言会结合起来。更可怕的是人类若是发现了函数仅仅是众多规则集的一种,那就真的有能力像你们一样创造自己的世界了” 上帝对撒思姆,亚伯汗与瑰洱深深凝望道。





------------------------------------------------
本文第三部分见10楼
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
十九
12年6个月前 IP:未同步
437672
“在文章最后写完之前,希望暂时不要转载到KC之外。”你没说不能插楼……~~

我赞同循环和联系的观点,至于后面你讲的“规则”,作为你对循环的理解,我就不太认可啦
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
白色衬衫520
12年6个月前 IP:未同步
437741
有很长一段时间我也有此类的直觉,如同存在即合理的原理,我坚信有一个公式可以推演过去、未来,世间万物存在着必然的联系,后又陷入命运与神的存在的思索
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
yg9311
12年6个月前 IP:未同步
437744
引用第4楼白色衬衫520于2012-08-12 15:12发表的  :
有很长一段时间我也有此类的直觉,如同存在即合理的原理,我坚信有一个公式可以推演过去、未来,世间万物存在着必然的联系,后又陷入命运与神的存在的思索


又一个柏拉图主义者。。。祝你成功。。。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
epi.clyce作者
12年6个月前 IP:未同步
438501
唔。。。。今天写了一半,困死了先不发。。。明天继续
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
.........
12年6个月前 IP:未同步
438607
有点《研究之美》的感觉。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
拔刀斋
12年6个月前 IP:未同步
438757
生命发展的历史,是语言发展的历史:

从原初的化学合成,到DNA记载生命的编码;
口头语言的出现,使得人类开始从猴子当中区分开来;
书面文字的发明,使城邦和帝国成为可能;
从亚里士多德到牛顿的先贤定义了科学的逻辑和公式,使混沌一片的世界开始变得清晰;
当图灵发明了计算机语言,对自动机器编写程序成为可能;

现在,AI正在牙牙学语……
Distilling Free-Form Natural Laws from Experimental Data
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/natural_laws
creativemachines.jpg

当机器人学会说属于自己的语言,记录和传播自己的见闻,下一步会发生什么?

我们为什么要搞基?
我们需要碳基的后代目睹渐渐硅基化的世界吗?或者我们的后代将是穿行于太空的机器人?
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
pl_014
12年6个月前 IP:未同步
438788
既然有人插楼了,建议楼主最后在0楼的位置标上索引。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
epi.clyce作者
12年6个月前 IP:未同步
439180
--数据,算法,过程,对象与程序设计

    1958年,人类社会的计算机界发生了一件大事,Algol语言诞生了。

    Algol原名IAL(International Algebraic Language),后被更名为Algol(ALGOrithmic Language)以表示其真正的用途。

    Algol语言是由ACM小组和联邦德国应用数学与力学协会共同开发的,旨在定义一套严谨而精确的符号系统,使之能够满足在计算机上的算法描述与实践,1960年改进的Algol60代码看起来是这个样子:
    procedure Absmax(a) Size[s:2]n, m) Result[s:2]y) Subscripts[s:2]i, k);
            value n, m; array a; integer n, m, i, k; real y;
    begin integer p, q;
           y := 0; i := k := 1;
            for p:=1 step 1 until n do
            for q:=1 step 1 until m do
                if abs(a[p, q]) > y then
                        begin y := abs(a[p, q]);
                        i := p; k := q
                        end
    end Absmax

    有编程基础的认可能会发现,这种语言与另一种古老的语言——Pascal有着一定的相似性。确实,尽管Algol的诞生在人类社会中是极其低调的一步,但她的影子确实存在于之后诞生的众多计算机语言中,并且在很长一段时间里在各类程序语言的设计上起着指导作用。

    之所以认为Algol是革命性的,是因为她第一次将程序员与计算机系统工程师分离,使得人们不必那么了解数据在内存中的组织方式就能够操作数据,不必了解每种型号的CPU指令集就可以描述算法。Algol第一次将人类的思想从计算机实现原理的牵绊解放出来。

    这一过程被描述为一个具像到抽象的过程,数据在计算机中的表述方式是具像的,面对这种具像时(比如用机器码或汇编编程),你可以直接看到一组二进制是怎样模拟特定数据的行为,同时你操作这些数据必须通过直接操作这种二进制码(或操作存储器)来实现。当这些表示被抽象成单纯的数据时,那么你便不需要花费过多精力注意数据如何实现了。当你面对的是数据本身而非数据的实现的时候,你就可以以人类解决数学题的方式,将所有的精力放在问题构建和解决方案上。

    同时,Algol也是第一个真正跨机器的语言,在Algol之前的时代,由于不同计算机有着不同的架构(不同的存储器结构,不同的CPU寄存器组织,不同的指令集),在一个机器上编写的程序往往不能在其他机器上运行。而Algol通过将数据在存储器中的表现方式以及表达式所对应的具体指令变得不透明而很好地解决了这一问题。程序员只需要专注于数据与算法本身,而数据、算法的转换过程可以通过不同计算机上的专有程序(编译器)实现。

    自此,程序设计的中心从存储器与指令转变为数据与算法,而Algol将数据在算法中的变化通过“描述过程”的方式实现 —— 将程序的行号作为时间轴,以命令的方式描述数据在计算机时空中的每个时间点如何变化,这种编程方式所派生出的各类编程语言,多称为面向过程的程序设计语言。

    面向过程的程序设计语言的主体是过程,我们可以粗略的将过程定义为数据(状态)在计算机时间尺度上的一种动态转变。比如一个整数由1变成2,或者一个断言从真变成假。在面向过程的程序设计中,几乎所有的语句(表达式)都是对某个过程的一种描述,通过描述过程操作数据,并获取最终结果。而少数并非描述过程的表达式(比如判断一个数是否为1),也是以描述过程作为目的的(比如作为先决条件决定接下来激活哪一个过程)

    也正因为如此,面向过程的编程语言含有一些并不符合常人思想的部分(比如数据必须被声明之后才能存在,比如 “a = 1” 并不是一个状态,而是一个另a与1相等的过程,同时取值也是过程而非状态),这也是编程语言比自然语言难学的原因之一了。

    60年代末诞生的Simula67被视做第一种面向对象的语言(与很多人认为的不同,smalltalk并不是第一种面向对象的语言,后文会提到)。面向对象的思想非常容易理解——计算机的诞生时为了处理现实世界的问题,而现实世界中没有哪个具体事物“是”一个数据。

    面向对象的思想最早在1960年在MIT被提出,其将现实世界的事物归结为由数据表述的对象,使得程序更加易于编写、更加易于理解。

    就如同二进制比特位能够在存储器中描述数据一样,我们可以将数据视做描述现实世界事物的一种工具 —— 比如通过半径、高度、底面厚度、壁厚来表述一个杯子,世界上人类所能触手可及的物体似乎都能被一组数据所描述。
    对象可以被赋予一组行为(方法),比如小明作为一个对象,可以打碎一个叫做杯子的对象,在多数面向对象的语言中,这被表示为 小明.打碎(杯子),同时对象可以被分类(小明和小张都属于男生分类,小明小张和小明他爸都属于男人,小明小张和他们的父母都属于人类),而一个分类的所有个体都可以拥有相同的行为和数据组织方式(比如所有人类都有身高体重三围,都可以吃喝拉撒打家睡觉XXOO)。这样的方式似乎可以描述整个世界了。
    
    “这样的方式似乎可以描述整个世界了”,这一思想后来直接催生了一种叫做SmallTalk的语言,在SmallTalk中,所有的表达式操作的都是对象,包括组成对象的数据,比如整数是一个对象所属的类,那么加法只是整数的一个行为(方法),而1,2,3,4又是整数类中的一个个体(实例)。

    后来诞生的很多面向对象的语言都借鉴了SmallTalk的思想,包括Java、Ruby等,表达式所操作的东西不再是单个数据,表达式所描述的也不再是数据本身如何变化。而变成了“谁做了什么”的模式,这种面向对象的思想被发扬光大之后,程序代码似乎一瞬间变得更加符合这个世界运行方式的描述了,变得更加容易编写,更加容易理解,更加具备表达力。一个过程不需要在解决类似问题的时候被反复书写——只要把这些问题所涉及的对象收容进同一个类(或者接口——如果他们之间不是那么相似的话)就可以了。软件工程也在这个时候开始突飞猛进,UML在面向对象的思想下被催生,更重要的是,面向对象的程序设计思想完成了又一次抽象,软件在架构的时候可以将对象与对象在数据层的实现分开设计了,可以向建筑一般从基础开始一步步向搭建了(从具像的基层开始,向抽象的表述搭建),而顶层的程序设计人员只需要明白对称需有些许了解,就能通过操作别人写好的对象来完成最后的封顶工作。流水线模式第一次真正进驻软件的搭建过程,面向对象的程序设计思想彻底改变了软件工程的实践方式。
  
    这种变革使得面向对象思想在很多人的心目中忽然成为了一个近乎神圣的东西,变成了一种信仰。一些程序员开始强迫自己将面向对象用于任何领域任何场合,更有大量的面向对象书籍开始宣扬“一切皆对象”理论,大有当年“万物皆数”的风范。面向过程的程序设计方式突然被一些激进分子视为了需要被弃掷的糟粕。有些语言甚至如此排斥数据,将对象中的所有数据都封装成了控制数据的方法。

    然而面向过程真的被推翻了吗? 我们回到面向过程的程序设计方式来,看看当初我们是怎么对“过程”进行粗略的定义的。“数据(状态)在计算机时间尺度上的一种动态转变。” 而面向过程的编程语言所有表达式所描述的都是操作数据的过程。那么面向对象的程序设计语言呢?我们不过是将对象作为主语,使得表达式所描述的主体从数据的变换过程变成了一个(或一组)对象对另一个(或一组)对象的操作过程,而这种操作过程依旧是一种状态变换,将一个对象的状态(比如属性值)改变,或者将对象的行为从未触发变为以出发。所有这些依旧是过程,编程语言依旧是面向这些东西在时间尺度上如何一步一步改变的,如果将对象视为整体,那么数据就是对象。

    所以,说到最后,面向过程的语言,面向对象的语言本质上描述的都是过程,只是过程的主体不同罢了。

    那么接下来,“一切皆对象”的宣言也开始动摇起来,如同罗素悖论动摇了“数学的主体是集合”一般,如果程序所描述的永远是过程,那么组成程序的这些表达式,以及这些表达式所描述的过程本身是不是对象呢? 如果是,应该怎样才能实现呢?毕竟,一个有数据、对象、过程三种分离的元素所组成的程序还是太过于复杂了。这样的问题并不是为了成全“一切皆对象”这样美好的信念,也不是为了追求“一切只由一种元素支配”的梦想,而是我们必须寻根求源,才能够明白程序究竟是怎样描述世界的——或者说,世界究竟应该怎样被表述。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
epi.clyce作者
12年6个月前 IP:未同步
439210
还没写完,待续中。。。后面的东西对于我的智商来说可能过深了,对于可能导致的语言组织混乱,预先望谅解

另外。。。。申精啊 - -
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
天理
11年10个月前 IP:未同步
517798
万物皆数--毕达哥拉斯
世界是一本以数学语言写成的书---伽利略
In the beginning, it was the word.---Bible
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
上级专业
epi.clyce
学者 机友 笔友
文章
345
回复
2156
学术分
21
2007/07/10注册,4个月19天前活动
暂无简介
主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:未同步
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}