机器人编程语言用什么语言?

共有 6902 人关注过本帖
标题:来,你也可以用 C 语言写一个聊天机器人
等 级:论坛游侠
帖 子:64
专家分:157
&&问题点数:0&&回复次数:12&&&
来,你也可以用 C 语言写一个聊天机器人
你是不是一直在面对着枯燥的 C 语言特性、摸索着前人写过的各种算法,不是因为自己的兴趣,而是依靠自身的毅力,学得很苦吧。
好吧,我们找一个好玩一点的东西,一起来写个聊天机器人吧。我知道只是个简单的例子,看完也不一定真有人去写一个聊天机器人,但如果你真想去写的话,这里的内容,可以帮助你实现你的目标。
噢,可以直接去看原文:
/articles/36106/chatbot-tutorial
聊天机器人就是让你能够对他做出动作(姿势或语言),然后他会根据你的行为对你做出反应的程序。当你为它输入自然语言中的一些问题的话,他也可以给你一些看起来有意义的同一语言的回答。
下面是一个非常基本的聊天机器人的代码,很简单的几行:
// Program Name: chatterbot1
// Description: this is a very basic example of a chatterbot program
// 描述:这是一个聊天机器人程序一个非常基本的例子
// Author: Gonzales Cenelia
#include &iostream&
#include &string&
#include &ctime&
int main()
&&& std::string Response[] = {
&&&&&&&&&我听到了!&,
&&&&&&&&&你是在和我说话。&,
&&&&&&&&&继续说,我在听。&,
&&&&&&&&&哈哈,真是非常有趣的谈话。&,
&&&&&&&&&后来呢?&
&&& srand((unsigned) time(NULL));
&&& std::string sInput = &&;
&&& std::string sResponse = &&;
&&& while(1) {
&&&&&&&&std::cout && &&&;
&&&&&&&&std::getline(std::cin, sInput);
&&&&&&&&int nSelection = rand() % 5;
&&&&&&&&sResponse = Response[nSelection];
&&&&&&&&std::cout && sResponse && std::
&&& return 0;
很简单吧?但要做到适当的响应,它可能是很难写的一个程序。1951,图灵提出了一个测试,现在被称为图灵测试。在这项测试中,测试的双方,一方是计算机程序,另一方是一个真正的人类,法官用来判断谁是真正的人。
聊天机器人一般被认为属于弱人工智能领域,但这并不意味着聊天机器人就没有潜力。由于它相当的简单,正好方便大多数爱好者去尝试实现更智能的聊天机器人,所以说,它会是是一个伟大开始的地方。
现在,让我们回到我们以前的程序,前面那个代码存在哪些问题?
嗯,是的。我们可以清楚地看到,这个程序是不是真的想理解用户所说的,相反,他只是随机选择一个已经存在的句子,响应每次用户在键盘上的输入。我们还注意到,程序经常重复自己。这其中的一个原因是由于内含的句子数据库非常小(只有5句),另一个原因是我们还没有实现任何机制来控制这个不太受欢迎的行为。
那,我们该如何改进它?很简单,我们需要引入关键词匹配。
关键词只是一个句子(不一定是完整的)或一个字,程序可以从用户的输入里识别出来,然后让自己的回答对应它。让我们继续改进刚才那个聊天机器人,现在我们称其为 chatterbot2。
// Program Name: chatterbot2
// Description: this is an improved version
// of the previous chatterbot program &chatterbot1&
// this one will try a little bit more to understand what the user is trying to say
// 描述:这是一个改进版,相比于前面的聊天机器人程序,这次将尝试一点点更多地理解用户说什么
// Author: Gonzales Cenelia
#pragma warning(disable: 4786)
#include &iostream&
#include &string&
#include &vector&
#include &ctime&
const int MAX_RESP = 3;
typedef std::vector&std::string&
vstring find_match(std::string input);
void copy(char *array[], vstring &v);
typedef struct {
&&& char *
&&& char *responses[MAX_RESP];
record KnowledgeBase[] = {
&&& {&WHAT IS YOUR NAME&,
&&& {&嗯,我的名字叫瞎聊。&,
&&&&&&你可以叫我公主...,是啊,我是大小姐啊。&,
&&&&&&为什么你想知道我的名字?下一步是要交换QQ号吗?&}
&&& {&HI&,
&&& {&哈哈,好啊!&,
&&&&&&你是谁?&,
&&&&&&噢,你好!&}
&&& {&HOW ARE YOU&,
&&& {&我干得不坏!&,
&&& &你干得怎么样?&,
&&& &为什么你会想知道我是怎么做到的?&}
&&& {&WHO ARE YOU&,
&&& {&我尼玛就是个程序啊。&,
&&&&&&表说,我知道你知道我是谁。&,
&&&&&&为什么还问?&}
&&& {&ARE YOU INTELLIGENT&,
&&& {&是的,当然是的。&,
&&&&&&你是怎么想的?&,
&&&&&&哈哈,事实上我确实很聪明。&}
&&& {&ARE YOU REAL&,
&&& {&这对你真的是个问题吗?&,
&&&&&&啥意思啊?你?&,
&&&&&&我尽量让我看起来像个真正的人类。&}
size_t nKnowledgeBaseSize = sizeof(KnowledgeBase)/sizeof(KnowledgeBase[0]);
int main() {
&&& srand((unsigned) time(NULL));
&&& std::string sInput = &&;
&&& std::string sResponse = &&;
&&& while(1) {
&&&&&&&&std::cout && &&&;
&&&&&&&&std::getline(std::cin, sInput);
&&&&&&&&vstring responses = find_match(sInput);
&&&&&&&&if(sInput == &BYE&) {
&&&&&&&&&&&&std::cout && &和你聊天太愉快了,下次再来!& && std::&&
&&&&&&&&&&&&
&&&&&&&&else if(responses.size() == 0)&&{
&&&&&&&&&&&&std::cout && &我,我,我不确定我是否能理解你说的是什么 ...& && std::
&&&&&&&&else {
&&&&&&&&&&&&int nSelection = rand()&&% MAX_RESP;
&&&&&&&&&&&&sResponse =&&&responses[nSelection]; std::cout && sResponse && std::
&&& return 0;
// make a&&search for the&&user's input
// inside the database of the program
vstring find_match(std::string&&input) {
&&& for(int i = 0; i & nKnowledgeBaseS&&++i) {&&
&&&&&&&&if(std::string(KnowledgeBase[i].input) == input) {
&&&&&&&&&&&&copy(KnowledgeBase[i].responses, result);
&&&&&&&&&&&&
void copy(char&&*array[], vstring &v) {
&&& for(int i = 0;&&i & MAX_RESP; ++i) {
&&&&&&&&v.push_back(array[i]);
现在,程序有了点进步了,它可以尽可能地选择一些接近的句子来做出反应。你可以尝试输入:
WHAT IS YOUR NAME, HOW ARE YOU, ARE YOU INTELLIGENT ... 等语句来测试。
搜索更多相关主题的帖子:
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
吐槽:你这明显是C++
来 自:宜昌
等 级:职业侠客
帖 子:215
专家分:338
你醒了?快起来敲代码!!
等 级:论坛游侠
帖 子:56
专家分:164
自己写过程序解闷还是可以的,宅男们
来 自:重庆邮电大学
等 级:论坛游民
帖 子:173
专家分:30
显然这是c plus plus
C语言好难啊~
等 级:论坛游侠
帖 子:64
专家分:157
&&各位大神,好专业啊,真是惭愧死我了。 得改,一定要改改,C 版绝不用带尾巴的代码。
允许我用代码框简单改写成 C 代码,当然,我努力要写得看起来比 C++ 更加简单,最起码也不能比原始 C++ 更复杂,C 是优秀语言嘛&&
全部代码包括了上面的二个例子代码:
程序代码:
#include &stdlib.h&
#include &stdio.h&
#include &time.h&
#include &string.h&
&&& 描述:这是一个聊天机器人程序一个非常基本的例子 chatterbot1
void chatterbot1()
&&& char* Response[] = {
&&&&&&&&&我听到了!&,
&&&&&&&&&你是在和我说话。&,
&&&&&&&&&继续说,我在听。&,
&&&&&&&&&哈哈,真是非常有趣的谈话。&,
&&&&&&&&&后来呢?&&&&
&&& srand((unsigned) time(NULL));
&&& char sInput[<font color=#] = {<font color=#};
&&& char* sResponse = NULL;
&&& while(<font color=#) {
&&&&&&&&printf(&&&);
&&&&&&&&scanf(&<font color=#s&, &sInput);
&&&&&&&&fflush(stdin);
&&&&&&&&if(sInput[<font color=#] == <font color=#x71 || sInput[<font color=#] == <font color=#x51 ){
&&&&&&&&&&&&printf(&和你聊天真的很愉快, 下次再见。\n&);
&&&&&&&&&&&&_sleep(<font color=#0);
&&&&&&&&&&&&break;
&&&&&&&&int nSelection = rand() % <font color=#;
&&&&&&&&sResponse = Response[nSelection];
&&&&&&&&printf(&%s\n&, sResponse);
&&& 描述:这是一个改进版聊天机器人程序 chatterbot2
const int MAX_RESP = <font color=#;
typedef struct {
&&& char *
&&& char *responses[MAX_RESP];
record KnowledgeBase[] = {
&&& {&WHAT IS YOUR NAME&,
&&& {&嗯,我的名字叫瞎聊。&,
&&&&&&你可以叫我公主...,是啊,我是大小姐啊。&,
&&&&&&为什么你想知道我的名字?下一步是要交换QQ号吗?&}
&&& {&HI&,
&&& {&哈哈,好啊!&,
&&&&&&你是谁?&,
&&&&&&噢,你好!&}
&&& {&HOW ARE YOU&,
&&& {&我干得不坏!&,
&&& &你干得怎么样?&,
&&& &为什么你会想知道我是怎么做到的?&}
&&& {&WHO ARE YOU&,
&&& {&我尼玛就是个程序啊。&,
&&&&&&表说,我知道你知道我是谁。&,
&&&&&&为什么还问?&}
&&& {&ARE YOU INTELLIGENT&,
&&& {&是的,当然是的。&,
&&&&&&你是怎么想的?&,
&&&&&&哈哈,事实上我确实很聪明。&}
&&& {&ARE YOU REAL&,
&&& {&这对你真的是个问题吗?&,
&&&&&&啥意思啊?你?&,
&&&&&&我尽量让我看起来像个真正的人类。&}
size_t nKnowledgeBaseSize = sizeof(KnowledgeBase)/sizeof(KnowledgeBase[<font color=#]);
record* find_match(char*&&input) {
&&& for(int i = <font color=#; i & nKnowledgeBaseS&&++i) {
&&&&&&&&if( !stricmp( KnowledgeBase[i].input, input ) )
&&&&&&&&&&&&return &KnowledgeBase[i];
&&& return NULL;
void chatterbot2()
&&& srand((unsigned) time(NULL));
&&& char sInput[<font color=#] = {<font color=#};
&&& char* sResponse = NULL;
&&& while(<font color=#) {
&&&&&&&&printf(&&&);
&&&&&&&&scanf(&<font color=#[^\n]&, &sInput);
&&&&&&&&fflush(stdin);
&&&&&&&&record* responses = find_match(sInput);
&&&&&&&&if(sInput == &BYE&) {
&&&&&&&&&&&&printf(&和你聊天太愉快了,下次再来!\n&);
&&&&&&&&&&&&_sleep(<font color=#0);
&&&&&&&&&&&&break;
&&&&&&&&else if( !responses )&&{
&&&&&&&&&&&&printf(&我,我,我不确定我是否能理解你说的是什么 ...\n&);
&&&&&&&&else {
&&&&&&&&&&&&int nSelection = rand()&&% MAX_RESP;
&&&&&&&&&&&&sResponse = responses-&responses[nSelection];
&&&&&&&&&&&&printf(&%s\n&, sResponse);
// 太久不写代码了,我不确信 main 是否是这样声明的...
int main()
&&& chatterbot1();
&&& chatterbot2();
&&& return <font color=#;
等 级:新手上路
楼上改的很好
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:731
专家分:1546
怎么样能嵌入到QQ群,QQ的聊天界面中去呢?
我恰巧最近在做这么个功能的东西
学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Black Cat&&&&&&Hello Tomorrow~
等 级:友情版主
威 望:201
帖 子:14771
专家分:61594
以下是引用AleTiff在 13:15:36的发言:
&&各位大神,好专业啊,真是惭愧死我了。 得改,一定要改改,C 版绝不用带尾巴的代码。
允许我用代码框简单改写成 C 代码,当然,我努力要写得看起来比 C++ 更加简单,最起码也不能比原始 C++ 更复杂,C 是优秀语言嘛&&
全部代码包括了上面的二个例子代码:
#include&&
#include&&
#include&&
#include&&
&&& 描述:这是一个聊天机器人程序一个非常基本的例子 chatterbot1
void chatterbot1()
&&& char* Response[] = {
&&&&&&&&&我听到了!&,
&&&&&&&&&你是在和我说话。&,
&&&&&&&&&继续说,我在听。&,
&&&&&&&&&哈哈,真是非常有趣的谈话。&,
&&&&&&&&&后来呢?&&&&&&
&&& srand((unsigned) time(NULL));
&&& char sInput[5] = {0};
&&& char* sResponse = NULL;
&&& while(1) {
&&&&&&&&printf(&&&);
&&&&&&&&scanf(&%4s&, &sInput);
&&&&&&&&fflush(stdin);
&&&&&&&&if(sInput[0] == 0x71 || sInput[0] == 0x51 ){
&&&&&&&&&&&&printf(&和你聊天真的很愉快, 下次再见。\n&);
&&&&&&&&&&&&_sleep(1000);
&&&&&&&&&&&&
&&&&&&&&int nSelection = rand() % 5;
&&&&&&&&sResponse = Response[nSelection];
&&&&&&&&printf(&%s\n&, sResponse);
&&& 描述:这是一个改进版聊天机器人程序 chatterbot2
const int MAX_RESP = 3;
typedef struct {
&&& char *
&&& char *responses[MAX_RESP];
record KnowledgeBase[] = {
&&& {&WHAT IS YOUR NAME&,&&
&&& {&嗯,我的名字叫瞎聊。&,
&&&&&&你可以叫我公主...,是啊,我是大小姐啊。&,
&&&&&&为什么你想知道我的名字?下一步是要交换QQ号吗?&}
&&& {&HI&,&&
&&& {&哈哈,好啊!&,
&&&&&&你是谁?&,
&&&&&&噢,你好!&}
&&& {&HOW ARE YOU&,
&&& {&我干得不坏!&,
&&& &你干得怎么样?&,
&&& &为什么你会想知道我是怎么做到的?&}
&&& {&WHO ARE YOU&,
&&& {&我尼玛就是个程序啊。&,
&&&&&&表说,我知道你知道我是谁。&,
&&&&&&为什么还问?&}
&&& {&ARE YOU INTELLIGENT&,
&&& {&是的,当然是的。&,
&&&&&&你是怎么想的?&,
&&&&&&哈哈,事实上我确实很聪明。&}
&&& {&ARE YOU REAL&,
&&& {&这对你真的是个问题吗?&,
&&&&&&啥意思啊?你?&,
&&&&&&我尽量让我看起来像个真正的人类。&}
size_t nKnowledgeBaseSize = sizeof(KnowledgeBase)/sizeof(KnowledgeBase[0]);
record* find_match(char*&&input) {&&
&&& for(int i = 0; i & nKnowledgeBaseS&&++i) {
&&&&&&&&if( !stricmp( KnowledgeBase.input, input ) )
&&&&&&&&&&&&return &KnowledgeB
&&& return NULL;&&
void chatterbot2()
&&& srand((unsigned) time(NULL));
&&& char sInput[20] = {0};
&&& char* sResponse = NULL;
&&& while(1) {
&&&&&&&&printf(&&&);
&&&&&&&&scanf(&%19[^\n]&, &sInput);
&&&&&&&&fflush(stdin);
&&&&&&&&record* responses = find_match(sInput);
&&&&&&&&if(sInput == &BYE&) {
&&&&&&&&&&&&printf(&和你聊天太愉快了,下次再来!\n&);
&&&&&&&&&&&&_sleep(1000);
&&&&&&&&&&&&
&&&&&&&&}&&
&&&&&&&&else if( !responses )&&{
&&&&&&&&&&&&printf(&我,我,我不确定我是否能理解你说的是什么 ...\n&);
&&&&&&&&else {
&&&&&&&&&&&&int nSelection = rand()&&% MAX_RESP;
&&&&&&&&&&&&sResponse = responses-&responses[nSelection];
&&&&&&&&&&&&printf(&%s\n&, sResponse);&&
&&&&&&&&}&&
// 太久不写代码了,我不确信 main 是否是这样声明的...
int main()
&&& chatterbot1();
&&& chatterbot2();
&&& return 0;
} 来学习的 谢谢
等 级:新手上路
回复 楼主 AleTiff
LZ我想学习,目前C语言是最有效(编程简单,实现效果比较多)的编写机器人聊天软件的工具吗?&&好像还有易语言也可以编写,那个效果如何?
版权所有,并保留所有权利。
Powered by , Processed in 0.057656 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights Reserved机器人编程一般用的何种语言?_百度知道
机器人编程一般用的何种语言?
编程时更多考虑的是与其他设备的配合以及怎么优化动作。从风格上来讲,实际项目中。日本的感觉很像汇编一些。两大类其区别是欧洲人认为你应该先在电脑上编程。但实际上。但现在即使是日本的,比如MOTOMAN,再去用示教盒设定工具点坐标和机器手姿态,主要分欧美的。具体到编程语言风格上讲,观看设备测试,保持压力的状态下是最高效的, SolidWorks等)导入离线编程软件中, CATIA,比如KUKA各厂商的机器人编程语言各不相同,将项目的三维图(Pro E,如果你用过数控机床应该就很熟悉。日本人认为你应该先用笔记本把思路写下来再用示教盒一点一点吧程序按出来。亦即,直接进行编程,然后规划动作模拟路径,欧美的类似高级语言(相对来说),可以先了解一下面向对象编程;和日本的,ABB,楼主想学习机器人编程,也在向离线编程与图形化的方向发展, FANUC,然后多去装配车间。所以,类似C或者Python,与工人交流。在工作中学习
其他类似问题
为您推荐:
您可能关注的推广
机器人编程的相关知识
其他4条回答
人工智能一般用LISP,底层驱动一般用C吧
汇编语言和C语言
一般是汇编
一般使用c 和vb之类的,然后在它们独有的软件里面调用c函数和vb函数。
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁工业机器人的编程语言的种类
内容摘自论坛
一般用户接触到的语言都是机器人公司自己开发的针对用户的语言平台,通俗易懂,在这一层次,每一个机器人公司都有自己语法规则和语言形式,这些都不重要,因为这层是给用户示教编程使用的。在这个语言平台之后是一种基于硬件相关的高级语言平台,如C语言、C++语言、基于IEC61131标准语言等,这些语言是机器人公司做机器人系统开发时所使用的语言平台,这一层次的语言平台可以编写翻译解释程序,针对用户示教的语言平台编写的程序进行翻译解释成该层语言所能理解的指令,该层语言平台主要进行运动学和控制方面的编程,再底层就是硬件语言,如基于Intel硬件的汇编指令等。商用机器人公司提供给用户的编程接口一般都是自己开发的简单的示教编程语言系统,如KUKA、ABB等,机器人控制系统提供商提供给用户的一般是第二层语言平台,在这一平台层次,控制系统供应商可能提供了机器人运动学算法和核心的多轴联动插补算法,用户可以针对自己设计的产品应用自由的进行二次开发,该层语言平台具有较好的开放性,但是用户的工作量也相应增加,这一层次的平台主要是针对机器人开发厂商的平台,如欧系一些机器人控制系统供应商就是基于IEC61131标准的编程语言平台。最底层的汇编语言级别的编程环境我们一般不用太关注,这些是控制系统芯片硬件厂商的事。
各家工业机器人公司的机器人编程语言都不相同,各家有各家自己的编程语言。但是,不论变化多大,其关键特性都很相似。比如Staubli
机器人的编程语言叫VAL3,风格和Basic相似;ABB的叫做RAPID,风格和C相似;还有Adept Robotics
的V+,Fanuc,KUKA,MOTOMAN都有专用的编程语言,但是大都是相似.而由于机器人的发明公司Unimation公司最开始的语言就是VAL,所以这些语言结构都有所相似。
VAL语言是美国Unimation公司于1979年推出的一种机器人编程语言,主要配置在PUMA和UNIMATION等型机器人上,是一种专用的动作类描述语言。VAL语言是在BASIC语言的基础上发展起来的,所以与BASIC语言的结构很相似。在VAL的基础上Unimation公司推出了VAL&#8545;语言;而后来staubli
收购了Unimation公司后,又发展起来了VAL3的机器人编程语言。
学习的话,一般来说各家机器人的官方网站都会有这些介绍资料,但是详细的资料就会比较欠缺。对于ABB的信息,可以下载一个Robot
studio30天试用版 ;其他也都可以得到,但是有一些小型市场的公司就比较麻烦了。
ABB机器人 编程语言 RAPID 是几个词的首字母组合,Robotics
Application Programming
Interactive Dialogue
。wikipedia上有一些介绍 http://en.wikipedia.org/wiki/RAPID ,详情参看
/forum/default.asp
Comau 柯马机器人 的编程语言叫做 PDL2,即 Programming
Description Language 2,详情参看
Fanuc 是使用karel语言,类似pascal语言,下戴可试用30天
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。一种机器人程序设计语言--《机器人》1988年03期
一种机器人程序设计语言
【摘要】:本文论述我们自己设计和实现的机器人语言 ZDRL。这是一种面向运动的语言,用户程序采用解释执行的方式。语言系统提供了一个良好的程序开发环境,用户可进行对程序的编辑、调试、执行和存取操作。该系统已在 IBMPC 微机上实现。并已应用到 Rhino 机器人的控制上。
【作者单位】:
【关键词】:
【基金】:
【正文快照】:
1引言 机器人语言是人与计算机及机器人进行对话的工具及通讯接口。六十年代,工业上广泛使用的机器人都是示教再现的工作方式。这种方式对于简单的任务是足够了。但随着机器人技术的不断发展和机器人使用领域的扩大,示教再现的工作方式已经越来越不能满足要求。而七十年代初
欢迎:、、)
支持CAJ、PDF文件格式,仅支持PDF格式
【同被引文献】
中国期刊全文数据库
胡鹏;方康玲;刘晓玉;;[J];微计算机信息;2006年11期
潘炼东,黄心汉;[J];华中理工大学学报;2000年04期
别卫春,朱志红,叶伯生,张毅;[J];机电一体化;2000年03期
孙斌,杨汝请;[J];机器人;2001年04期
万俊君,戴先中,孟正大;[J];现代电子技术;2004年15期
周延佑;[J];中国机械工程;1998年05期
中国博士学位论文全文数据库
武传宇;[D];浙江大学;2002年
中国硕士学位论文全文数据库
苏伟;[D];天津大学;2005年
孙玉敏;[D];北方工业大学;2007年
【相似文献】
中国期刊全文数据库
徐毓良,陈宝康;[J];机器人;1988年03期
;[J];网络科技时代(数字冲浪);2002年01期
方天培;[J];机器人;1987年06期
;[J];机器人情报;1994年02期
司艳姣,王琪;[J];国外科技动态;1995年12期
李忠东;[J];机器人技术与应用;1995年06期
;[J];机器人技术与应用;1997年03期
刘进长;[J];机器人技术与应用;2000年03期
蔡自兴;[J];南京化工大学学报(自然科学版);2000年04期
戴兴忠;[J];消防月刊;2000年06期
中国重要报纸全文数据库
吴洣麓;[N];北京科技报;2007年
冰丘;[N];工人日报;2007年
记者 卞晨光;[N];科技日报;2006年
陈璞;[N];大众科技报;2007年
李菁?本报记者
冯国梧;[N];科技日报;2008年
周宁;[N];四川科技报;2008年
本报记者  董映璧;[N];科技日报;2007年
乐绍延;[N];新华每日电讯;2005年
王金元;[N];北京科技报;2006年
耿德根;[N];电子报;2006年
中国博士学位论文全文数据库
张连东;[D];大连理工大学;2004年
范红;[D];浙江大学;2003年
姜春福;[D];北京工业大学;2003年
干方建;[D];合肥工业大学;2003年
詹建明;[D];吉林大学;2002年
刘庆波;[D];北京工业大学;2009年
温淑焕;[D];燕山大学;2005年
谭跃刚;[D];武汉理工大学;2005年
焦国太;[D];北京工业大学;2002年
刘晋浩;[D];东北林业大学;2003年
中国硕士学位论文全文数据库
刘玉军;[D];浙江工业大学;2002年
刘辉祥;[D];华中科技大学;2004年
龙海燕;[D];四川大学;2005年
焦尚伟;[D];大连理工大学;2006年
程军;[D];哈尔滨理工大学;2004年
王兰兰;[D];大连理工大学;2005年
卢瑾;[D];浙江工业大学;2006年
李建红;[D];华北电力大学(北京);2006年
赵春光;[D];吉林大学;2009年
所丽娜;[D];哈尔滨理工大学;2003年
&快捷付款方式
&订购知网充值卡
400-819-9993
《中国学术期刊(光盘版)》电子杂志社有限公司
同方知网数字出版技术股份有限公司
地址:北京清华大学 84-48信箱 知识超市公司
出版物经营许可证 新出发京批字第直0595号
订购热线:400-819-82499
服务热线:010--
在线咨询:
传真:010-
京公网安备75号换种方式学编程:如何训练你的机器人 - 文章 - 伯乐在线
& 换种方式学编程:如何训练你的机器人
伯乐在线注: 上午我们在微博推荐了这篇非常有意思的文章,抛开编程语言,抛开计算机,Dr Techniko 讲述了他是如何通过游戏来教孩子们学会编程的一些基本原则。感谢 的热心翻译,以下是全文。
上周日,我教六个5到7岁的小朋友学习编程。“用什么编程语言?”你可能会问。其实我没有用编程语言,至少不是你所知道的。事实上,我就没有用电脑。取而代之的,我发明了一个叫做“怎样训练你的机器人”的游戏。在我解释怎么玩这个游戏之前,请让我说说我的动机。
当我19岁读大一的时候,我在MIT(麻省理工学院)学习了编程。那并不是因为家里没有电脑或者我压根没听说过编程语言。而是因为:①我认为编程是件枯燥的事 ②没人告诉我为什么我要为此烦恼。事实上,我的高中计算机老师告诉过我,“你没必要浪费自己的时间去学习怎么编程。现在我们有了可视化工具去构建程序。编程语言已经过时了。”那是1994年,他提到了Visual Basic。对我来说,幸运的是,在MIT几周的时间内,这件事就烟消云散了。但一个人是不是非要等到大学才能接受适当的教育呢?
学习如何编程正成为今天我们能教给孩子们最有用的新技能。我们的生活比以往任何时候都更加依赖于我们给计算机指示的命令程序有多么智能。计算机掌握着我们的个人数据,它们为我们做决定,它们为我们互相通信,它们正逐渐成为我们大脑的延伸。如果我们不把学习编程作为童年的一部分,我们永远不会进化。正如著名的未来学家
说的,“唯一你应该担心你孩子学习的第二语言是编程(语言)。”
怎样训练你的机器人
这个游戏操作如下:每一个孩子作为“机器人指挥者(robot master)”,他们的妈妈或者爸爸作为他们的“机器人(robot)”。我给每个孩子一本“机器人语言字典”并且告诉他们这是他们的机器人能理解的语言。这本字典有“向前移动左腿”,“左转(turn left)”,“抓起(grab)”,“放下(drop)”等符号。
游戏的目标是让机器人们穿越障碍训练场,捡起一个球并把它带回来。孩子们需要写一个程序来告诉机器人怎么做那些事。每次他们写一个程序,就交给他们的机器人,然后机器人就执行程序。为了这么做,我给了每个孩子一支笔和一张纸,让他们从(机器人)字典复制符号来写出他们的程序,然后交给机器人们动起来!
每个机器人拿回球的时候,有趣的事情就开始了。现在我让孩子们发明他们自己的动作和符号,添加到字典中并且教会他们的机器人们。对于孩子们想出的(符号等)是没有限制的。
这是我最喜欢的程序(一个五岁的小女孩写道):
我设计这个课程去教一些计算机科学与编程非常基本的原则:
编程语言仅仅是另一种与实体交流的方式。(通过程序)
程序是自动操作事物的秘方。
但是,令我感到惊喜的是孩子们学会了多少。(在30分钟的时间内,)他们自己就弄明白了下面这些东西:
程序参数化:为了替代写10遍“向前走1步”,他们在“步”符号前面写了10(一个五岁的孩子想出来并且问我她能否这么做)
创作:将一套动作编组(“左腿向前,然后右腿向前并做这个组合10次”)
抽象:“绕圈跑,然后说‘我晕了’,然后叫这个为‘跑晕’程序并且执行100次。(出于某些原因,孩子们喜欢让他们的父母重复做超过100次同样的事)”
单元测试:他们会写一个测试程序让他们父母移动几步,让父母运行程序,然后修正并且再次运行程序,最后再加入一些步骤直到达到目标。
我现在已经开课两次了,并且我看到了相同的模式,当孩子们玩得快乐时,在编程时他们会变得非常聪明并且有创造性,这坚定了我的信念。许多父母计划在生日聚会时玩这个游戏。如果你对怎么设置游戏有疑问,毫不犹豫得写下来吧。你可以在
找到我的联系方式。
,你也能看到如何教授这门课程的指南和资料。
我希望我们今天学到了一些有用的东西。
Dr Techniko
关于作者:
可能感兴趣的话题
真是非常棒的创意。
关于伯乐在线博客
在这个信息爆炸的时代,人们已然被大量、快速并且简短的信息所包围。然而,我们相信:过多“快餐”式的阅读只会令人“虚胖”,缺乏实质的内涵。伯乐在线内容团队正试图以我们微薄的力量,把优秀的原创文章和译文分享给读者,为“快餐”添加一些“营养”元素。
新浪微博:
推荐微信号
(加好友请注明来意)
&#8211; 好的话题、有启发的回复、值得信赖的圈子
&#8211; 分享和发现有价值的内容与观点
&#8211; 为IT单身男女服务的征婚传播平台
&#8211; 优秀的工具资源导航
&#8211; 翻译传播优秀的外文文章
&#8211; 国内外的精选文章
&#8211; UI,网页,交互和用户体验
&#8211; 专注iOS技术分享
&#8211; 专注Android技术分享
&#8211; JavaScript, HTML5, CSS
&#8211; 专注Java技术分享
&#8211; 专注Python技术分享
& 2016 伯乐在线

我要回帖

更多关于 类人机器人 的文章

 

随机推荐