网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
07月13日漏签0天
人工智能吧 关注:115,966贴子:507,872
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 首页 上一页 1 2 3 下一页 尾页
  • 40回复贴,共3页
  • ,跳到 页  
<<返回人工智能吧
>0< 加载中...

回复:如何实现自编程序?

  • 取消只看楼主
  • 收藏

  • 回复
  • ruiaijun
  • T1000
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
  作者: 125.77.120.* 2008-7-27 20:16 
  要把一个程序功能充分切分成最小的功能块,来达到自编程,好像不可行,因为,不可能确保,功能块的最小化,而且,不能确保一定顺序的运行这些子过程就是符合功能需要的。极大可能出现错误。 
  以上程序性错误,也体现在二进制程序的指令程序中,如果打乱指令行,就会出现竟想不到的后果 
------------------------------------ 
  这是根本没看我的帖子的人的随便一说。其积极思考的态度可嘉,但是其不认真阅读的方式不可取!
  我在第二十二楼,介绍“小程序”时就已经指出:“自编程序算法”提供的词汇不是别的,而是在原来语言基础上运行成功的若干“小程序”。 
  由于函数指针表示的函数——“小程序”,是可以单独运行,且运行成功的程序,因此它绝不会出现你说的程序性错误。

  而且你也可以试试,四十七楼的程序即便是把次序颠倒了,它只不过是不会产生正常的计算结果,并不会出现你说的那些问题。
  这一点我在设计这个程序时已经考虑过了。


  • ruiaijun
  • T1000
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
  作者: 智能傀儡师 2008-7-28 11:08
  无非这样的程序设计是个脚本设计,而脚本这个东西也不是什么新玩意了 
-----------------------------------
  简单的“自编程序”用批文件、脚本、虚拟机都可以实现。但是它们都没有延伸为一个强人工智能系统的可能!


2025-07-13 08:37:43
广告
  • ruiaijun
  • T1000
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
  作者: 智能傀儡师 2008-7-28 12:43
  你说的可能,难道就是加上你那个反射算法吗?
---------------------------------
  不仅如此,除去“反射算法”“自编程序算法”还有六个算法。
  另外,强人工智能的“小程序”不是你说的“先把所有函数和功能写到一个程序中”。它仅需要数量不超过十个,与智能有关的“小程序”,由它们来组成各种智能系统的自编程序。
  它们的效果会与任何批文件、脚本程序、虚拟机上运行的程序不一样。也会于47楼的“函数指针原理程序”效果大不一样。


  • ruiaijun
  • T1000
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
  4、程序说明。
  这个程序定义了一些函数:zhixing()、zhixing1()、zhixing2()、zhixing3()、zhixing4()。它们分别只有一个语句。

  另一个函数fuzhi()把前面定义的函数赋值给函数指针数组aaa[]()。(这个操作完全可以用一个语句完成,这里这样做仅仅是为了统一)。

  主函数先调用fuzhi()给函数指针数组赋值。然后用依标号调用数组中的各个函数的方式,执行各个语句(也可以在主函数利用循环语句依次执行各函数指针的内容)。

  读一个说明某个原理程序,主要不是看热闹,而是看它的关键,这个程序里,该程序运行的结果不过是热闹,关键是“依标号调用数组中的各个函数”。它就是这个程序要演示的,“用函数指针数组组织程序”的原理。
  这个“用函数指针数组组织程序”的原理,用在程序的自组织上,就是我们需要的自编程序了!

  这个程序已经经过调试,可以顺利运行。

  至于这个程序运行后会产生什么样的结果。我们看了下面的等价程序,就会知道它非常简单!

  这里我再一次指出,上面这程序既不是自编程序的程序,也不是人工智能程序。它只是对函数指针表示“小程序”,再由函数指针数组把小程序组织成大程序的一种演示。
  在上个程序的主函数中,函数指针的运行次序是我编程序时安排的,自然算不上自编程序了!


  • ruiaijun
  • T1000
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
  5、等价程序。
  上述演示程序仅仅是为了演示函数指针数组组织程序的作用。
  它实际的运行内容非常简单,不过是要求你输入两个加数,计算加法后输出结果。
  它的等价程序如下:

#include <stdio.h>
#include <iostream.h>
#include <string.h>
int static s[4];
void main()
{
cout<<"请输入两个加数"<<endl;
cin>>s[0];
cin>>s[1];
s[2]=s[0]+s[1];
cout<<s[0]<<"+"<<s[1]<<"="<<s[2]<<endl;
}


  • ruiaijun
  • T1000
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
  显然由这个等价程序看出,该程序的实际内容很简单,简单得几乎是幼儿班的水平。
  但是人们不要在乎它的实际内容简单与否,关键是看到它是如何用函数指针组织这个简单程序的。

  看到又是这个加法程序,可能一些无知的人又该嘲笑、讽刺了。实际上为了说明复杂的原理,往往要用一些简单的主要程序,以免主要程序掩盖复杂的“用函数指针组织程序”的原理。


  • ruiaijun
  • T1000
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
  前两天查一个程序资料,顺便翻看一下其中关于WINDOWS图形调用的介绍,有趣的是:那里经过几页的篇幅,讲解了上万字,仅仅在屏幕上显示出一个“你好”的文字图形。
  我说这话的意思,不是认为它这样做不好,它做得好好,很对。因为在这里人们主要需要了解的是,如何WINDOWS状态下,编写程序,调出一个图形来显示。至于图形是复杂,还是简单,没有什么意义!
  那些嘲弄“加法程序简单”的人,恐怕在看书时,连这样的问题都没想过。


  • ruiaijun
  • T1000
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
  作者: 机器在思考 2008-7-31 09:52
  问题就在于,进化的前提你没有提到,那就是建立类似DNA功能的结构体系,
----------------------------
  进化实际上也是一种学习,它是用DNA记录学习结果的一种学习。DNA是“进化学习法”的记忆机制,但是这种记忆方式会导致上一代物种的灭绝。
  学习也是一种进化。它是不以物种灭亡为代价的进化。与造成物种灭绝的DNA记忆设备不同,“学习进化法”采用神经网络记忆,这样就保证了在物种不变的前提下,功能发生进化。


2025-07-13 08:31:43
广告
  • ruiaijun
  • T1000
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
  接第五十八楼
  6、程序的另一种形式。

#include <stdio.h>
#include <iostream.h>
#include <string.h>
int static s[4];
void zhixing()
{
cout<<"请输入两个加数"<<endl;
}
void zhixing1()
{
cin>>s[0];
}
void zhixing2()
{
cin>>s[1];
}
void zhixing3()
{
s[2]=s[0]+s[1];
}
void zhixing4()
{
cout<<s[0]<<"+"<<s[1]<<"="<<s[2]<<endl;
}
void (*aaa[10])()={zhixing,zhixing1,zhixing2,zhixing3,zhixing4};
void main()
{
for (s[3]=0;s[3]<=4;s[3]++) aaa[s[3]]();
}


  • ruiaijun
  • T1000
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
  7、程序说明。
  与第三段的程序相比,这个程序作了两个变动:

  第一是主程序采用循环语句,来把函数指针组织为程序。
  这里还体现出“母程序”的控制循环的作用。前面说过,“小程序”本身没有循环之行的语法,但是可以有“母程序”控制循环。这里主程序的循环,就表现出“母程序”控制循环的方式。
  我在第3段不采用循环,而采用依次写出的方式,也就是为了在这里突出这个“母程序”控制的循环。

  第二是赋值采用直接向函数指针数组变量里填写。省去了赋值函数fuzhi(),也省去了主函数对赋值函数的调用运行。
  这一点在技术上没有什么特殊的。仅是是想表现一下,函数指针数组的不同赋值方式而已。

  这样,第六段的程序的通用性就比较好,可以作为我们利用“函数指针和函数指针数组”组织程序的一个程序模型来使用。


  • ruiaijun
  • T1000
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
  三、自主学习的“自编程”程序。

  1、“模拟语句学习”的“自编程”程序。
  要想用比较简单的方式,演示出自编程序的效果,但是找到一些“小程序”组成一些自编程序,既能形象地演示出组合效果,又不至于因为它们的复杂,而冲淡自编程序的主结构。
  于是我经过两个多月的考虑,终于想到了用对语言的自主学习过程,来作为自编程序的“程序模型”。

  人类的语句是利用重新组织的形式表达出来的。而不是像计算机那样,调用字符串调出来的。
  人类对于语句的组织,就是一个自编程的过程。
  这往往反映在小学生学习造句的过程中。

  人类对语句的学习,有两种学习过程可以实现,一种是通过自主学习过程来实现,另一种是通过模仿学习过程来实现。它们都是“自编程”过程。而且对于热人类的大多数语句,都是通过模仿学习而来的。

  我们先编写一个用自主学习过程学习语句的程序。它既向我们演示了自编程的基本原理。又向我们演示了自主学习过程的基本原理。


  • ruiaijun
  • T1000
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
  2、将编写的“自编程”程序的目的。
  我下面设计的这个以“自主学习算法”完成的“自编程序”程序模型,其目的是学会把几个字正确地连接成语句。
  这几个字(字符)是“我”、“要”、“吃”、“糖”、“!”。

  我选择这几个字,是因为它们的组合里只有一个完全合格的,即“我要吃糖!”。还有一个不大符合语法“要我吃糖!”和一个符合语法、不合常规的“糖要吃我!”。

  这个程序并不是采用调用字符串的方式输出语句,它是用把单独输出以各自的程序组成整体语句输出程序。这样它既是利用“自主学习算法”学习一个语句,又是利用“自编程序算法”编写一个输出正确语句的程序。
  当然,我们也可以用组合字符串(而不是组合显示程序)的方式学习正确的表达语句。但是那种学习已经与自编程序无关。因此不是我们此处要讨论的问题。
  顺便指出:用组合字符串的方式进行语句表达学习,也属于“自主学习”,也是“自主学习算法”的任务范围。但是它不是“自编程序算法”的任务范围。也就是说,那时,“自主学习算法”与“自编程序算法”不再重叠。这也表明,这两个算法虽然有时重叠,但是它们并不是一回事!

  这个程序,在不断显示出各个字符组合后,终于出现正确的组合,此时用户可以确认这个输出正确。该“母程序”就会把正确输出的程序记录下来,作为它的“自编程序”保存。
  学习以后,该“母程序”就会调用这个“自编程序”,只显示出一个正确的语句。

  不过这个程序里,我没有设计存盘部分。因此在退出运行后,对学习结果的“自编程序”的纪录也就消失。再次运行还要重新学习。


  • ruiaijun
  • T1000
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
  3、“遍历组编问题”归结为“数字组合编号问题”。
  什么是遍历组编问题?
  由于正确的“自编程序”一定是这些“小程序”组合中的一个。而我们的这个“母程序”又是一个无智能程序,它不会自己分析各个“小程序”的内容,做出正确的选择。(甚至更有趣的是,它因为没有设计“知道程序”,计算机程序并不“知道”那些“小程序”有什么作用?)。
  因此要从“小程序”的组合中选择出正确的语句表达方式来,就需要遍历“小程序”的所有组编,把它们一一组合后执行。

  那么,这个问题如何发生转变了呢?
  因为我们采用了函数指针数组,用它来保存显示各个字符(词汇)的“小程序”。
  于是,要想从所有的“小程序”组合中找到一个合适的组合,由这个组合表示正确的语句。就是要从函数指针数组的不同编号顺序中选择出一个合适的编号组。


  • ruiaijun
  • T1000
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
  7、“数字标号组合”发放程序的说明。
  A、变量与被调函数的介绍:
  s[10]:这是一个全局变量,它负责纪录由组和函数发放的组合标号。也由主函数来执行这个数组里的标号。当正确组合出现后,由于组和函数不再被调用,这里也就成为运行结束前保存正确组合标号的地方了。

  qw:组合记录变量。它记录后三位的移位次数。
  qq:组合记录变量。它记录前一位的移位次数。
  q:这是一位中间变量,暂时保存移动的数据。

  zuhe():组合发放函数。它负责前一位移动的开关语句判断。
  zuhe1():组合发放函数。它负责后三位移动的开关语句判断。
  dao0():移位函数。它负责后两位移动操作。
  dao1():移位函数。它负责后一位与第二位的移动操作。
  dao2():移位函数。它负责后一位与第一位的移动操作。


2025-07-13 08:25:43
广告
  • ruiaijun
  • T1000
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
  第七十八楼有错误,重发:
  7、“数字标号组合”发放程序的说明。
  A、变量与被调函数的介绍:
  s[10]:这是一个全局变量,它负责纪录由组和函数发放的组合标号。也由主函数来执行这个数组里的标号。当正确组合出现后,由于组和函数不再被调用,这里也就成为运行结束前保存正确组合标号的地方了。

  qw:组合记录变量。它记录后三位的移位次数。
  qq:组合记录变量。它记录前一位的移位次数。
  q:这是一位中间变量,暂时保存移动的数据。

  zuhe():组合发放函数。它负责前一位移动的开关语句判断。
  zuhe1():组合发放函数。它负责后三位移动的开关语句判断。
  dao0():移位函数。它负责后两位移动操作。(A型交换)。
  dao1():移位函数。它负责后一位与第二位的移动操作。(B型交换)。
  dao2():移位函数。它负责后一位与第一位的移动操作。(C型交换)。


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 首页 上一页 1 2 3 下一页 尾页
  • 40回复贴,共3页
  • ,跳到 页  
<<返回人工智能吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示