ROBACUS Joe Ching (郑佐) 李佳敏 (Jamie Li) DECEMBER 2018 CONTENTS ROBACUS INTRODUCTION ROBACUS INSTALLATION COMPUTING LANGUAGE ROBACUS CURRICULUM NAMING CONVENTION SPECS USER INTERFACE SPECS EDITOR SPECS DIAGNOSER SPECS NATURAL LANGUAGE SPECS SOFTWARE ROBOT SPECS FORTRAN SPECS DATA FILE SPECS ROBACUS VIDEO CLIPS ON YOUTUBE ROBACUS INTRODUCTION Abacus, slide rule, calculator and computer have served engineers well as valuable tools. But two characteristics of these tools have limited their usefulness. The first is the private-ness, each communicating with and serving only one private owner. And the second is the subservient role they play in relation to their users. How can we make a tool that is public and open, and acting as a partner rather than a servant? How would such a tool increase our ability to do engineering and other analyses? Briefly, this tool is both a translator of engineering capabilities and a communicator of analysis collaborations. As a translator, it translates language humans understand to a language that computers understand. But the real advantage is its ability to burden the difficulties in thinking for humans. As a communicator, it uses a technology called software robot to make sure that all the analyses done by one engineer can be understood, reused and added onto by others. The software robots are simply executable documentations that allow the computer to redo exactly what are formally documented, on its own independent of the engineers who created them. The ROBACUS project shall initiate itself by creating a core of developers in the academic environment. Courseware and software are to be passed on to interested teaching staff. Once the communication links are put in place among collaborative R/D nodes, this tool will start to grow by being used, maintained and developed by users. The translator, communicator and a third component, OUTERNET, would be described below, with a focus on how they would be constructed. I. TRANSLATOR - NATURAL LANGUAGE PROGRAMMING The natural-language programming program translates user's English answers to questions asked by the computer into Fortran statements that computers can understand. In practice, a user would be generating functional modules for specific tasks. Eventually, the Fortran statements would be mostly CALL statements of modules already constructed. A core of software engineers would be responsible to develop and maintain this natural-language programming program. But the users of this program for productions would contribute new modules to it in their routine chores. The technical aspects of natural-language programming program is described in the section on Natural Language Specs. II. COMMUNICATOR -- SOFTWARE ROBOTS In ROBACUS, the user is either engaged in the generation of a robot or using an existing robot to perform a prescribed task. The variety of tasks that the robots are capable of performing ranges from writing a program to preparing an input model or an output plot. Besides documenting what the task is, a software robot also performs the task verbatim documented. Thus, ROBACUS shifts the focus from "what has been done" to "how it is done". But the most important impact is that now we can communicate among ourselves without ambiguity thru the software robots, or more exactly, their executions. The technical aspect of software robots is described in the section on Software Robot Specs. The spontaneous accumulation of a knowledge and experience in the software robots in each ROBACUS node points to the benefits of their shared uses. This brings us to the concept of OUTERNET. III. OUTERNET -- WWW OF SOFTWARE ROBOTS OUTERNET is a network of distributed personal servers made up of ROBACUS'ized home PC's. It can be looked upon as an encyclopidia of how-to's. After the initial stage of development by software experts, the next stage could be a coming together of generations -- the old, previous generation and the young, next generation. With letters enlarged and computer skills simplified, many of the retired technical professionals can learn to help develop ROBACUS. Without the pressure of short-term returns, the focus can be concentrated on future. Once all the inner working of ROBACUS is made operational and natural, the youngsters would be introduced by the elders to a virtual world of computing that is void of all the idiosyncrasies that hallmark our irrational world of expediencies. The long term development of ROBACUS would be spontaneous, since these youngsters will find themselves in a robotically computerized world that they grew up in. ROBACUS INSTALLATION I. Install Linux Mageia 5 Install mageia 5 0. create a user "robacus" with password "000000" (our universal password, for authorless software) 1. choose KDE (GNOME will lock keyboard and mouse) 2. get all mageia updates and archives downloaded 3. goto Mageia Control Center(option MCC) 4. click "Install & Remove Software" 5. turn upper left option boxs to "All" 6. search for "gcc", and click to uninstall "gcc 4.82"... and click "Apply" 7. search for "gcc" again and click "gcc3.3"(if nonexistent, then download other config media and updates ) 8. search for "tcsh" and install("Apply")(insert the dvd, but take out after done with all the installs) 9. search for "ncurses" and click all the "libncurses*" and install 10. search for "libx11" and click all "libx11-devel" and install 11. also install "ncftp" and "gnuplot"(which only mageia4 has) the same way 12. quit and goto the "boot" option and select it autologin to IceWM 13. take out the dvd and restart(be sure to get back on IceWM) II. Install ROBACUS 0. switch to the iceWM windows manager and open a xterm (select from(lower left corner)Tool/More/Konsole, not "Terminal", which will hang the keyboard) in the directory robacus. 1. get a version of "robacus.tgz" or download and save it 2. open a "Konsol,NOT "Terminal"" and enter & execute "cp Downloads/robacus.tgz robacus.tgz" 3. "tar -xvf robacus.tgz" 4. enter "su" then password(000000) 5. enter "./instal" 6. enter a "./useint" 7. use only the [Enter] and [End] keys to see how the software robots work 8. try the right mouse key to show robot in slow motion 9. when u r ready, u can start move the mouse and pick ur own options 10. once u r sure of how a problem is solved, u could enter over the yellow letters to modify the problem 11. finally, u can use the [ADD] suboption to add a new problem/robot and answer each of the questions like how robot does it. Beyond this point, u have to be a developer. there u have to learn the naming convention used by the computer, thus, also the users. and u need know how to use the robotic editor and diagnosing debugger. 电算盘安装 I.安装Linux Mageia 5 安装Mageia 5 0.创建一个密码为"000000"的用户"robacus"(我们 的通用密码,用于无作者软件) 1.选择KDE(GNOME将锁定键盘和鼠标) 2.下载所有mageia更新和档案 3.转到Mageia控制中心(选项MCC) 4.单击"安装和删除软件" 5.将左上角的选项框转为"全部" 6.搜索"gcc",然后单击卸载"gcc 4.82"...并单击"应 用" 7.再次搜索"gcc"并单击"gcc3.3"(如果不存在, 则下载其他配置媒体和更新) 8.搜索"tcsh"并安装("Apply")(插入DVD,但 在完成所有安装后取出) 9.搜索"ncurses"并单击所有"libncurses *"并安装 10.搜索"libx11"并单击所有"libx11-devel"并安装 11.同样安装"ncftp"和"gnuplot"(只有mageia4) 12.退出并转到"boot"选项并选择它自动登录到 IceWM 13.取出DVD并重启(务必回到IceWM) II。 安装ROBACUS 0.切换到iceWM窗口管理器并打开一个xterm(从(左下角)Tool / More / Konsole中选择,而不是"终端",这将挂起键盘)在 robacus目录中。 1.谷歌"robacus下载"并下载并保存 2.打开"Konsol,NOT"终端""并输入并执行"cp Downloads / robacus.tgz robacus.tgz" 3."tar -xvf robacus.tgz" 4.输入"su"然后输入密码(000000) 5.输入"./instal" 6.输入"./useint" 7.仅使用[Enter]和[End]键查看软件机器人的工作方式 8.尝试用鼠标右键以慢动作显示机器人 9.当你准备好了,你可以开始移动鼠标并选择你自己的 选项 10.一旦确定问题是如何解决的,你可以输入黄色字母来 修改问题 11.最后,你可以使用[ADD]子选项添加一个新问题/ 机器人并回答每个问题,比如机器人如何做。 除此之外,你必须是一名开发人员。 你必须学习计算机使 用的命名约定,因此用户也要学习。 你需要知道如何使用 机器人编辑器和诊断调试器。 COMPUTING LANGUAGE ENGLISH WORDS 英语计算机单词 EDIT,DOWN,WHAT,SINGLE,KEY,FOLLOW, 编辑, 下, 什么,单一, 键, 依照, VANPOOL,CHANGE,ALL,SUBSEQUENT, 共乘制度, 变, 所有, 随后, BOTTOM,AGAIN,DOWNWARD,SUBROUTIN E, 底部, 再, 向下, 子程序, AWAY,GET,EXTERNAL.GUIDE.THE.INSERT.JA CK. 离开, 得到,外部. 引导; 这。 插入; 举 起; OVER.FROM.REVERSE.MOVE.BLOCK;LINE;O VER; 以上; 从 ; 相反 ; 移动 ; 块 ; 线 ; 以上; TOP;PUT;QUIT;DONT;SAVE;ANY;RESTORE. 顶部; 放 ; 停止; 不要 ;保存;任何; 恢复。 ORIGIN;AFTER;BEFORE;UPWARD;CONSTRU CT; 原点 ; 后 ; 以前 ; 上升 ; 构 造 ; SEQUENCE;WRITE;NUMBER;BE;SPECIFY; 序列 ; 写 ; 号码 ;是; 指明 ; 》》》》》》》》》》》》》》 FARSIDE;SCROLL;TAB; EXTREME;LOCATE. 远边; 卷起; TAB键; 极值 ; 查找 HOME;FORM;WHILE;COPY;AT;COLUMN;CA N; 家 ; 形成; 当 ; 副本; 的; 柱 ; 能; FOR;WITHOUT;IS.SET;BY; INTERNAL;EACH; 为; 没有; 的,置;靠; 内部 ; 每 ; DIAGNOSE;AUTOMATE;INNER;ONLINE;TRA CK; 诊断 ; 自动化; 内 ; 在网上; 跟 踪; ALSO;MANUAL;RECOVER; MENU;READ; 也 ; 手工的; 恢复 ; 菜单 ; 读; METHOD; ENTER; COMMAND;CLICK; OR; 方法; 输入; 指挥 ;按下鼠标器;或; BACKSPACE;ADD;REMOVE;MESSAGE; 退一格; 增加; 删除; 信息; TASKS;HELP;RESEARCH;DEVELOPE;XEROX; 任务; 帮助; 研究; 发展; 复印; WINDOW;NATURAL;LANGUAGE;PROGRAM; 窗口; 自然; 语言; 程序; SELECT;MODEL;FOR;PROCESS; ANALYSE; 选择; 模型; 为; 进程; 分析; WEBPAGE;DOCUMENT;OPERATE;PROCEDU RE; 网页; 文件; 运作; 程序; PHYSIC; SIMULATE;SPORT;HEALTH; 物理; 模拟; 体育; 健康; PREPROCESS; GENERATE;POSTPROCESS; 预处理; 产生; 后期处理; COMPONENT;TO;MODIFY;LIST;NONE;STRIN G; 构成要素; 到; 改; 名单; 无; 字符 串; SEARCH;SKIP;SAME;MARK;WITH;NEXT;OCC UR; 搜索; 跳过; 相同; 标记; 与; 下一个; 发 生; END;REPEAT;STATEMENT; DESCRIBE;VALUE; 结束; 重复; 陈述句; 描述; 价值; INPUT;VARIABLE;SUBTRACT;MULTIPLY;DIVI DE; 输入; 可变素; 减去; 乘; 除; ARRAY;BRANCH;ANIMATE;PREPARE; 一系列; 支线; 动画; 准备; DOCUMENT;INCREMENT;MODULE;ARITHM ATIC 文件; 增一量; 模块; 算术; DELETE;UPGRADE;FIRST;SECOND;THIRD; 删除; 升级; 第一; 第二; 第三; CONFLICT; FILE;TEXT;GRAPHIC;FUNCTION; 冲突; 文件;文字; 图; 函数; GEOMETRY;DO;YOU;WANT;SINGLE;YES;NO; 几何; 做; 你; 要; 单; 是; 不; INTEGRATE,CHARACTER;CONVERT;MAXIM UM; 结合; 字; 变换; 最大; OF;TWO;VALUE;MINIMUM;A; OTHER; 的; 两个; 价值; 最小; 某一; 其他; STRING;WHICH;PROBLEM;DISPOSE;SUBMIT; 字符串; 哪些; 问题; 处理; 提交; DISPLAY;FLOW; CHART;ROBOT;MAIN;TIME; 显示; 流动; 图; 机器人; 主; 时间; MONTH;DAY;YEAR; DONE;DATA;BASE; 月; 日; 年; 完成; 数据; 基础; CONTROL;NETWORK; OPTION;SCHEDULE;ICON; 控制; 网络; 选择; 时间表; 图标; THEIR;SUB-TASK;LIST;OUT; UP;GIVE; 他们的; 子任务; 清单; 出; 上; 给; QUESTION;ANSWER;IF;THEN;UNIT;HOUR;W EEK; 问题; 回答; 假如,然后;单位; 小时; 周; PERFORM;GO;ON;RESPONSE;ACTION;THIS; 执行; 去; 在上; 响应; 行动; 这; STEP;PARAMETER;BELOW;RADIUS; NAME; 步骤; 参数; 下面; 半径; 名; INITIAL;EXECUTE;SPACE;NUCLEAR;DESIGN; 初始; 执行; 空间; 核; 设计; OPTIMIZE;LOWER;LEFT; COMPUTE;TYPE;POINT; 优化; 更低; 左; 计算; 类型; 点; INTEREST;DRAW;FACTOR;ZOOM;IN;HERE;S TOP;兴趣; 绘; 因子; 画面推近;在;这里; 停止; FULL; VERTICAL,HORIZONTAL,VIEW, 满; 纵向; 横向; 看景; BOUNDARY,GROUP,BEGIN,SCALEUP,BALL, 边界; 团体; 首先; 扩大; 球; BOUNCE,BACKGROUND; RECTANGLE;OVAL; 弹起; 背景; 长方形; 椭圆 形; TRIANGLE;DIMENSION;ARBITRARY;SHAPE; 三角形; 层面; 任意形; 形状; CIRCLE;SIZE;AGAINST; SIDE;LABEL;OBJECT; 圆形; 大小;以...为背景;方面; 标记; 物体; COORDINATE;RANDOM;VALUE;VELOCITY; 坐标; 随机; 价值; 速度; EQUAL;NOT;GREATER;LESS; LEFT;RIGHT;LINK; 相等; 不是; 大于; 小于; 左; 右; 链 接; LOGICAL;CONDITION;CONTINUE;FINISH;CL OSE; 逻辑; 情况; 继续; 完成; 关闭; ELSE;START;NOW; DEFINE;AVAILABLE;GRAVITY; 其他; 开始; 现在; 定义; 可有的; 地心 吸力; ACCELERATE;INTERVAL;STEP;FLOW;TABLE;G OLF; 加速; 间隔; 步骤; 流动;表/桌;高 尔夫; WATER;RATE;PUMP;TOTAL;MASS;CYCLE;AR EA; 水; 率; 抽水机; 总数; 质量; 循环; 面 积; LENGTH;PIPE; HEIGHT;WIDTH;TAX;RETURN; 长度; 输送管; 高度; 宽度; 税; 返回; AMOUNT;PAYMENT;BASE;INTERPOLATE;H OW; 数额; 付款; 基础; 插算; 如 何; MANY;ELEMENT;THESE;HUMAN;DOCTOR; 许多; 要素; 这些; 人; 医生; PINGPONG;WIN;CONTROL;PARAMETER;US E;IT; 乒乓; 胜; 控制; 参数; 用; 它; SETUP;EXIST;LOSE;EXPRESS;CONSTANT;PLU S; 设置; 存在; 失; 明示; 常数; 加; SHOULD;AMONG;SUB-OPTION;SUB-LEVEL; 应该; 在...之中; 子选项; 子分段; POINT;COUNT;STATISTICS;RANGE;THEY; ARE; 点; 计数; 统计; 范围; 他们; 是; LOW;HIGH;LIMIT;QUANTITY;SERVICE;LOWE R; 低; 高; 极限; 数量; 服务; 更低; HIGHER;RACKET;CHARACTER;BLOCK; 较高; 球拍; 性质; 块; SHAKE;HAND;MATCH;STYLE;KUNGFU;LETTE R; 握; 手; 比赛; 风格; 功夫; 信; EMAIL; NEW;RANK;PLAYER;ADDRESS; 电子邮件; 新; 等级; 运动员; 地址; YOURS;HANDICAPE;VIRTUAL;WEB;SHUTDO WN; 你的; 残障比赛; 虚拟的; 网; 关机; POWER;EXIT; 电力; 退出; ROBACUS CURRICULUM The following are the subject matters to be taught in schools from elementary schools onward: 1. Installation of ROBACUS on mageia linux 2. Learn some computer English 3. Know the naming convention 4. User-interface 5. Robotic editor 6. Diagnostic debugger 7. Natural language programming 8. Software robots 9. Basic fortran, unix, c 10. Data linkage 11. ROBACUS video and files The following schedule should be used to get students familiar with the inner working of ROBACUS: Grade 1 to 3: * Learn some computer English Grade 4: * Know the naming convention Grade 5 and 6: * User-interface * Robotic editor * Diagnostic debugger * Natural language programming * Software robots Grade 7: * Installation of ROBACUS on mageia linux Grade 8 and 9 1. Basic fortran, unix, c 2. Data linkage 3. ROBACUS video and files In high schools onward, qualified students will be taught to become developers of ROBACUS. And in colleges, the selected few will learn the control and coordination of the ROBACUS network, OUTERNET. Finally the most innovative and reasonable among the ROBACUS developers will be recruited to expand and maintain the Universal Centralized Processor, UCP. But only those among them who have managed to dissociate themselves from all worldly lures of money, power and fame will be invited onboard UCP as policy makers. NAMING CONVENTION SPECS Programming is essentially an exercise in naming. If only the computer can do the naming itself, it could do the programming itself also. This is where naming convention comes in. So, in a way, naming convention is aimed at making the computing environment nameless to the user -- no files and no variables! This is the criteria for full automation and natural-language programming. But, before we make computer follow the naming convention, we must ourselves follow it, too. I. NAME STRUCTURE * All names for files and variables are 6 lettered. * Each name is divided into two 3-letter parts, except for single-word name, which can use its first 6 letters, padded by 0's if needed. II. PROGRAM FILE NAMES 1. The first 3-letter part describes the program, and the last 3-letter part describes the data. 2. Program Description (1)Each program is identified with 2-letter unique prefix. It will be chosen from the first 2 letters of the program name, on a first come first use basis, and also special priority may be given to important programs to use their first 2 letters (see file, namrec). (2)The types of processors for all programs are identified in the third letter as follows: * i = input processor * e = execution processor * o = output processor * 1 = generator of preprocessor * 0 = postprocessor generator * l = library source * m = menu files (robmen) for processors possessing robots * r = reserved for hardwired menus 3. Data Description * The file type is identified in the fourth letter by: * r = robot file (robcod=list of code robots) * i = input file * e = execution file * o = output file * u = update source listing of processor * s = schematic boxes representing components in a model that processing can be skipped to * f = figure schematics of components * g = graphics data * m = menu file(men)(mencod=list of code menus) * h = how files * a = absolute module of machine instructions * l = library or base module of machine instructions * p = plot data file * b = box data file for selection * t = tabulated data file or tree structure * d = data files summary listing out all the linking data files named with the 4th letter, d, replace by 0 thru 9 and their respective data argument list and any format(if not binary). (1)The last two letters are used to uniquely identify the problem model, which is formed by the 1st letter of the 1st 2 keywords of the model description, unless conflict with other models occurs. (2)Listings of identifiers(to avoid conflicts) for files are automatically kept in files: * namrec = names of programs and their prefixes * menrec = menu names and descriptions structure(updated manually) * rob*** = names of robots for a prefix(***) for duplication check * men*** = names of menus with prefix(***) of processors possessing robots * ***nam = code subroutine names and description * **dvar = code variable names( only available for generated programs) * mailog = names of current file being editted or diagnosed,etc. * namlog = name of file being processed * roblog = robot name file being processed * autlog = automation control file for demonstration * collog = color identification numbers for menu display * ibmlog = 0 if PC or IBM workstation, 1 if SUN (4)VARIABLE NAMES and UTILITY FILES * Two key words are to be picked from the description of the file or variable. When picked automatically by the computer, either the first 2 words or words preceded by an extra blank are considered key words. * Names are formed with the first 3 letters of the first key word and first 3 letters of the second key word. If only one key word is available, use it as is with '0' padding or truncate it to 6 letters if longer than 6. * Temporary or local names have repeated letters such as "nnn", instead of "num"ber or "vvv", instead of "var"iable. * Temporary, dummy indices use "i", "j", "k", "l", "m" or "n". * Temporary, dummy real variables use "x", "y", "z", "u", "v" or "w". 5. MAJOR SOFTWARE LIBRARIES AND FILES * iolupd = i/o library source routines in c-language and Xwindows calls * useupd = user interface fortran source * edeupd = editor fortran source * dieupd = diagnoser fortran source * ge1upd = code generator fortran source * na1upd = natural-language programming program fortran source * pauupd = to pause the user interface by showing the background output * ???lin = the linking file where ??? are 'use', 'ede', 'die', 'na1' and 'pau'. * anrmen = the main menu * edev?? = built-in hardwired editor's robots where "?" typically represents the basic command, but can be easily expanded to include combination or vanpool of commands. 6. FORTRAN GRAMMAR * limit statement length to 40 columns * use statement numbers ending in '0' for DO loops * use statement numbers ending in '5' for GOTO/CONTINUE statements * the rest(1 to 4 and 6 to 9) are used for ending FORMAT statements * for diagnostic debugging statement's formats, use 4 digits starting with '9' * dont use any fortran rules that are not specified in file forrul.html 7. I/O FILE UNIT NUMBERS * 1 = for the major output generated, such as the generated fortran program, the input data deck from preprocessor, or debugging source files, etc * 2 = the major input file * 50 = the input robot file * 60 = the output robot file * 70 = the debugging output, normally at the start and end of subroutines executed 8. QUESTION/ANSWER routines with robot -reading and -writing capabilities *QUEREA/QUEINT/QUEALP/QUEST A/QUESTC/QUEMST ... are, respectively, for answers in real, integer, alphanumerical, statement, capital-letter statament, multiple statements... 9. Menu selection routines(calling c routine, selop?): * MODSEL = select from a menu * SELMEN = select from internally described options * MENPR? = menu processing used in the user interface 10. Writing out statements: * WRIMEG = writing out long messages in one or multiple windows * WRISTA = writing out direct onto terminal screen 11. Debugging considerations * The following statements are placed, respectively, at beginning and end of a subroutine: IF(LOGBUG.GE.1)WRITE(LOGDEB,90 01)... CALL BUGFLU 9001 FORMAT('$$$ ENTERING SUBROU') IF(LOGBUG.GE.1)WRITE(LOGDEB,99 99)... CALL BUGFLU 9999 FORMAT('$$$ ENTERING SUBROU') along with the COMMON/AUTDAT/ in which contains the control variables, LOGBUG and LOGDEB. The BUGFLU routine is used to flush out the debugging statement right after they are written, in case the code bombs out unexpectedly. * Other normal debugging write are done with such statement as: IF(LOGBUG.GE.2)WRITE(LOGDEB,99 11)... And for long output, use IF(LOGBUG.GE.3)... * When debugging the editor, the output unit should be the same as the editor robot, or 60. USER INTERFACE SPECS User interface is a graphic display using plain English that are originally created by users. The user interface provides the major categories of analysis. Click to invoke the particular category of interest. You can also type in 1,2,3... for the 1st, 2nd, 3rd ... category. Pressing the [Enter] key invoke the robot value, which is indicated by where the mouse pointer is situated. The super-options at the upper corners, Edit and Diagno, can be clicked or invoked by entering 'e filnam' and 'd', respectively. Simply entering an 'e' edits the previously edited file. Similarly, the sub-options at the bottom can be invoked by clicking or the first letter of the option name. Besides the e and d, and other sub-option commands, you can set up (3-letter) alias by entering ALI=actual command, which can be either ROBACUS or unix command strings. Enter an = will display all available alias. Doing an ALI= will delete the "ALI" command. Pressing [Backspace] brings you to the background terminal display, which is just the unix environment showing the processing of ROBACUS. Pressing [Enter] brings back to the user interface. [Ctrl+C], [Esc] or [Tab] closes the user interface. "u" will restart it. When processing is deep into an actual analysis, the press of the right button of the mouse will cause the execution to perform on its own automatically, with possible user intervention by clicking the mouse at a specific step. The use interface is invoked by file 'useint', which iteratively execute file 'tooexe' and 'useabs'. 'tooexe' contains the next process requested by the user, and 'useabs' is just the absolute module of the user interface program, which also does automated bug check to see if the process runs successfully. If not, it proceeds to do automatic debugging. EDITOR SPECS Today's editors, though useful, still carry much unnecessary baggage. The extra pressing of the [Ctrl] and [Enter] keys are a truly waste for a multitude of users. Unreasonable designations of commands put a strain on the brain, not to mention the mistrust it contributes to the users toward computing. And finally the future of editing is forever doomed, in that we will be doing editing forever into the future, as manual editing is in essence a bottle neck for software automation. The ultimate objective of a good editor is doing away with editing altogether. ROBACUS' editor is designed to be an extension of our hands, and possibly also that of our brain. For example, it's made as much case-insensitive as possible. Also, it is testing out a feature in which typing of a string would mean automatic search of the string without first to have to type the searching command -- kind like the editor will go whereever the user is thinking to. This editor is robotic so that eventually all editing sessions can be performed by editing software robots that can perform the necessary string manipulation or even programming thru editing, all transparent to the users. In short, this editor's mission is to make itself disappear. Another indispensable function of the editing robot is in debugging. The robot can be made to provide as extensive a record as a user wants of what truly occurred under the hood, with the help of the diagnoser's command option that is set beforehand. The use of the mouse is avoided as much as possible, even though some features have been programmed in it. Any user, who wants to use the mouse, needs to make a strong argument to reactivate these features. Thus, it's deemed the mouse is too clumsy for ultra-fast computing that ROBACUS is designed for. On the other hand, whenever the mouse click is the most natural way to go, ROBACUS go to extra effort to provide equivalent key press whenever possible. So, as expected, this editor, during its development, can be as handy as it's unstable, much like our own hands. The debugging can also become extremely uncanny, much like diagnosing our own brain. However, this is the only way to avoid the dead end to automation mentioned above. The users definitely need a lot of patient with many of its defects. Why, it's only human. The editing commands are presented and explained below: I.HELP commands h=summary list of commands ?=summary list of vanpool, or users-generated string of, commands II.POSITION commands [Page Down],[Page Up], up, down, left and right arrows [Tab] first go to middle of nonblank part of the statement, second pressing to end of line, then bottom of page, then top of page t=Top of file and search in downward mode. Second pressing of a 't' will display the top-down tree structure of the subroutine name entered. b=Bottom of file and search in upward mode. Second pressing will display of bottom-up tree structure of the subroutines name entered. d=Downward search to the string, which is entered immediately afterward u=Upward search to the string, same as in 'd' &=Repeat previous search in downward direction ^=Repeat search in upward direction n=Number of the line to go to, 2nd 'n' gives current line number, and next 'n' gives total number of lines in the file s=Go to start of subroutine e=Go to end of subroutine l=List of subroutines is displayed to go to c=Repeat previous string change command in its next occurrence. The old string is first searched to, and then it is being typed over in a uniquely defined area by the new string with the use of left/right arrows, Insert/Delete and Backspace keys. The typing is terminated by End or Enter keys. r=Restore original line after unwanted change with 'c' a=Change all occurrences following the current statement(caution, the changed string must be made unique) [End]=Move the cursor to leftmost so that single-key command can be entered. Also in combination with first [Home] to forms a block of coding to be moved, inserted or deleted, written out, with, respectively [Ins], [Del] and 'w' key pressing. [PgUp],[Pgdn]=In column > 1, allows search up or down. But next pressing gives the desired intends. The above 1-letter command used with an [Enter] is also applicable when a question is asked to prompt a command or a string. In column>1 mode, any command can be invoked by simultaneous pressing of the [Ctrl] key. A better way is the use of [PgUp] and [PgDn] first. The far right - and + can be used to scroll the screen, respectively. III. MODIFICATIONS 1. REPLACE Simply type over the characters to be replaced. The entire string surrounded by the leftmost and rightmost characters typed will be considered as the replacement segment. This replacement can be repeated to other string in the previously specified direction by entering a 'c' in column 1. End the replacement with [Enter] or [End]. Enter an 'a' in column 1 will change all occurrences following the current statement. [Ctrl/] deletes everything to the left, then moves down 1 line [Ctrl\] deletes everything to right, then moves straight down 1 line 2. INSERT (1) New Text - start with 'i' and end with [End]. [Space] means blank line. (2) Imbedded String - start with [Ins] and end with any arrow or [End] (3) z=Zero in on a FORTRAN statement to write out all of its variables for future debugging write. 3. DELETE (1) Delete a Line -- [Backspace] in column 1 (2) Delete a Character -- [Del] in column > 1 (3) Delete a Block - - [Del] in column 1 VI. END SESSION f=Finish and save q=Quit and discard change(note: the robot recording is saved, however, to be used later if needed.) V.BLOCKING 1. Create a block by typing [Home], then reposition and end with [End]. 2. Immediately after forming a block, a question will be asked for the file name to which the block can be extracted and appended (same as 'w'riteout command). But single-key command with [Enter] is also allowed here. 3. Use [Ins] and [Del] to insert and delete the block (no [End]ing is necessary, as it would be automatically inserted by the Insert and Delete command. 4. [Home] and [Insert] duplicate the line, same as 'x'erox command. 5. m=Move the block to the current position 6. g=Get external file 7. j=Jack a subroutine from other ROBACUS update source files. 8. w=Write out the block to external file 9. p=Print block as hardcopy( no [End]ing the block is necessary) VI. SPECIAL FEATURES A. ROBOTICS 1. All editing actions are recorded 2. The last editing session can be reenacted out a line at a time with the [Enter] key 3. The default action activatable by [Enter] is displayed at the top of the page 4. '$%' causes the robot to perform rest of the editing (To enter a character '$', enter '$' twice) 5. The robot file can be shifted up or down with '$^' and '$&' to align with the current editing B. VANPOOL COMMAND 1. v=create vanpool, or combination of, commands and make them available to be invoked by a digit. The '?' gives description of available vanpool commands and '#' for deleting existing commends. First "v" is used to start forming the vanpool COMMAND, when done specifying all editing commands, a second "v" terminated the process. 2.Digits "0" to "9" (and letters "a" to "z", though not recommended) can be used for vanpool commands for used as "[1-letter]" 3.*=a variable command inside a vanpool command 4. Vanpool commands, once created, can be manipulated externally and issued to perform a capsulated task(to be completed in a background batch mode). C. ZERO IN ON A STATEMENT The "z" command writes debugging statements around the statement to be zeroed in on and causes a pause after the execution of the statement and writing out of the debugging statements. D. FAST-TYPING SEARCH COMMAND(temporarily disabled due to varying speed of the computer.) An automatic search command is invoked when the first two letters are entered in rapid succession in column 0 or in full screen editing mode during a searching processing. This feature needs more work to eliminate the risk of unintentional editing and timing adjustment of pc of varying processing speeds. E. KNOW VARIABLE DESCRIPTIONS IN A STATEMENT The "k" command would give the description of each variable in the statement, if a 'variable description' section is available. This file is automatically generated in natural-language programming by the software generator. A 2nd "k" would explain the fortran rule used.(i forget what the 3rd "k" does。 go try it out yourself.). F. YANK IN AN EXISTING SUBROUTINE CALL STATEMENT The "y" command provides easy accessing of available library and program subroutine modules. G. JACK OVER A SUBROUTINE FROM AN EXTERNAL FILE The "j" command jacks a subroutine over from another file. H. EXTRACT COMPILATION AND LINKING BUGS The "x" command xtracts the bugs occurred during compilation and linking if the execution is submitted to be offline in the background. The editing robot that performs this debugging exercise also can display the actual error message by 'i'nserting the statement when the [Enter] key is pressed after the bug position is located. I. BRACKET A BLOCK OF CODING AND MAKE IT A SUBROUTINE The 'o' command converts a block of coding into a subroutine or object and replace the block with a CALL statement to the subroutine. VII.EDIT TIPS Some simple rules to remember are: * Ctrl+letter, when entered anywhere, is the basic editor command. But the most handy way to use the editor is to avoid the Ctrl key. Instead, make a habit of pressing the [End] key after a full screen edit sequence, so that the 1-letter command can be issued from column 0. * Once in column >0 full screen editing is invoked(with space, right arrow or tab keys) * column 0 and after every question(in combination with [Enter] key) will honor the 1-letter command. * [Enter], [Home], [End] and moving to column 0 cause editing to leave full screen mode * When it is important to keep a record of the editing session for someone else to see, "q"uit out the edit session so the robot can be used to repeat verbatim every step of the session by simply pressing the [Enter] keys, or '$%' to do it all at once. VIII. EDITOR DEBUGGING * The editor is debugged by writing debugging statements into the robot(60). * An old file 'edeabo' should be copied from the current 'edeabs' so that it can be copied back in case the editor is disabled after modification. * For extensive modification, relevant subroutines should be moved to the small 'na1uuu, from which the editor can be modified at a faster speed. IX. FINAL WORD * This editor is handy and powerful, rather than complex and stable, in order to relieve the mind to think about the problem at hand. * To let computer do as much of the work as possible, the user needs to adjust to a bilateral interaction with the computer. In practice, the user needs to do more anticipating than dictating. Remember: The scenarios we anticipate are those we set up for ourselves, not that dictated by the computer. * The ultimate goal for ROBACUS is to make editing unnecessary. This can be realized once we identify all the individual and combinatorial functions that the editor performs. All we need to do then is to transparently send the robot to perform those functions we desire. The full-screen data entry as if one is filling a standard form is an example of the application of the editor. IX.PLANNED MODIFICATIONS When running into a bug in editor, the user can send for help, by providing either the file fil060, if bomb out unexpectedly, or the file eder??, where ?? is the prefix of the file being editted, if the editting session ends normally. * implement the fast-typing, direct search(without typing the "d" or "u") * clean up full screen editing involving multiple use of [Ins] and [Del] in one line * clean up [Ins] and [Del] of [linefeed](or [Enter]) at the end of statement * catch a scenario in which the editor mysteriously inserts a "C" or some Cntrl* in column 1 * why does repeated [Ins] of a block at different locations produces infinite loops? * "o" option lacks some external files * block changed by deleting( or inserting) lines * move block addresses to new locations with insert, move, and get * use '*' as wildcard letters in search * 'c'hange move to 1st character changed(use ctrl+c afterwards) * automatic paging * automatic inserting of [linefeed] at column 41 * dont cover the top or bottom line with question, such as "SEARCH...?" * e at bottom of file goes to end of last subroutine(above the job control statements) * "c" should change upward if previous search is ^ or ctrl ^ DIAGNOSER SPECS Debugging can be as nerve racking as programming can be fun. ROBACUS tries to balance the two by put enough discipline in programming that debugging becomes manageably predictable. In fact ROBACUS has made debugging so systematic that it can be fully automated. ROBACUS' commitment to full automation, when it applies to debugging, however, represents by far the greatest challenge undertaken by any software group in the world of computing. This is where software robots become indispensable. We just need to create some real hardworking robots to handle the works that are too cumbersome to do manually. The time-consuming, iterative nature of debugging fits nicely with the emerging, new, processing-hungry computers. The basis of debugging is diagnosis. We simply let the bug reveal itself by revealing the processing around it. This is done by systematically putting "IF(LOGBUG.GE.1)WRITE(LOGDEB,9. ..)..." statements at the start and end of each subroutine, as well as: "IF(LOGBUG.GE.2)WRITE(LOGDEB,9. ..)..." in places relevant to the troubled area, where LOGBUG can be set to 1,2 or 3 and LOGDEB can be set to 70 or 6 or, 60 for editor. Pushing this to the limit, ROBACUS actually perfected a scheme where every statement is written out dynamically in the path of the subroutine's execution. This allows revealing of the execution flow path and pinpointing the statement where the execution gets bombed out. To diagnose/debug, simply enter: 'd' or click the Diagno button at the upper right. Then select one of the following option: 1. TRACK ROUTINES 2. ALSO INTERNAL VARIAB 3. MANUAL DEBUG AND TRACK 4. AUTO DEBUG COMPILE EXE 5 LINE TRACK OF ROUTINE These are 5 levels of background tracking of the execution. In the case of the editor, we can also take advantage of the robot file that keeps a log of all the commands issued. In this robot file, we could also write in it via unit 60 all the debugging statements, and when intermingled within the sequences of editing command, it gives a clear picture of what's going on during the editing session. The diagnoser will set up two update source files that contain debugging statements. The first file, codu0c, where 'cod' is just the 3-letter ID of the code, does a full compilation of all the subroutines to generate the new library for linking. The second file, codu0d, then can be used iteratively to only modify and compile the troubled subroutine. The line-by-line tracking is pretty much a full-brute-force, fool-proof way of tracking down the bug. It guarantees to pin down where the bug occurs and the statement-by-statement execution that leads to it. But this process may be very lengthy, so it will be automated soon. In the automated debugging process, the diagnoser would automatically bring you to editing the troubled statement, inside the troubled subroutine, and also make it ready to be submitted and executed again. The detailed auto debugging strategy is described below: 1. search out in which subroutine the bug exits 2. search out at which statement the bug exits 3. the file containing the subroutine is edited and the subroutine and then the statement are searched so that the cursor will end up at the bug position 4. this file can be modified and recompiled iteratively until the bug is resolved The automated process involving: * read the last record of unit 70(fort.70) to see if the "SUCCESS..." statement exits(written out in SUBROUTINE AUTPUT) that indicates no bug occurred * if SUCCESS is nonexistent, then unit 70 is searched backward to locate the 1st 'ENTERING...' that does not have a matching 'EXITING...' statement for the particular subroutine. This indicates a subroutine, that has been entered, but never exit, thus, contains the bug. * generate codu0c and codu0d for the file that contains the bug subroutine. * codu0c is compiled to produce an executable that produce a line-by-line tracking, capable of pin-point the line at which the execution bombs out. * problem is automatically re-executed by the problem's software robot using codu0c's executable * the bug statement will be read as the last statement in the debugging output * codu0d is then edited by an 'edirob' which robotically search for the bug statement. * if the nature of the bug is known, a bug-fixing robot will be used to fix it automatically. * otherwise, codu0d can be used iteratively to fix the bug. * if the same kind of bug is expected to occur in the future, an editing robot can be constructed to fix the bug automatically. A search and selection scheme is also constructed to selectively activate the bug-fixing feature during automated debugging. NATURAL LANGUAGE SPECS Natural language is the most natural way to express a physical phenomenon or an operational procedure, through native language, which we should use an abbreviated set of English that we call universal language. "Natural", however, does not imply natural only to human, although it intends to mean ultimately the most natural to humans. This is because many of what humans consider to be natural are really what are only most familiar to them. It is therefore only making sense that humans should give themselves ample chances to become familiar with new environments that are potentially more natural such as a fully automated computing platform in a logical society. And also, the computer does have its preferred ways of behavior and the human can definitely benefit from learning and appreciating some of them before deciding what is natural. In fact, being not aware of the better ways, with which computer could perform certain tasks, has been the downfall of previous attempts to naturalized programming language. In a way, natural language is built upon the foundation of computer intelligence, rather than human artificial intelligence. Practically, the whole effort is one in which we are trying to shift the burden of thinking from human to the computer. It is hoped that once the difficult work of thinking is taken over by the unlimited capacity of the computer, the limited precious resources of the human brain could be put to more high-quality, specialized uses. So what are natural? Let's count the ways. First, in all derivations in the solution of a problem, the starting point should be the question for the final answer. Once the human describes the answer he is seeking, the computer would take over the line of questioning. Leading the human down a structured and disciplined way of answering the questions, the computer would lead the human on a logical path of processing while, at the same time, carrying on the cumbersome chore of bookkeeping the variables and the conditions, or equations, toward bring in the solution to a close. Once the computer determines that the problem is solved, it would flip the whole processing procedure upside down and translate them into computer coding, which we shall make it universally Fortran, plus some c-language whenever necessary. In converting operational procedures to computer programs, the natural language programming program simply guides the user in a structured way down the procedures. In this case the computer would track all branch points and, in turn, bring each to termination. In graphics and animations, most of the programming should be built-in. User should be facilitated to pick and choose from a self-sufficient set of features, which could be generated either manually or by natural language beforehand. Eventually all programming will be done with the natural-language programming language. And as much as possible everything will be vocalized, instead of using keyboard and mouse control. The natural language programming has thus far tried to address all the basic areas in computer analyses. These include: 1. Analysis automation is achieved with the help of preprocessors and postprocessors. The automation loop is completed when the preprocessors and postprocessors themselves are generated in natural language. 2. Operation procedures are automated by using a systematic and versatile truth-table constructor. The result is a graphics-driven operational procedure that can be generated and executed in the same session. 3. Flow network of various types of components, such as those found in piping system and any dynamic structure, can be set up to produce the graphic analysis model for large production codes or built into such codes themselves. 4. Schedulings of projects and inventory control are hardwired into the natural language program based on previously constructed, natural language programs. 5. Multi-level-menu driven modeling of various physical or social phenomena, such as health care and sport analysis, have been naturalized to allow an expert in certain field to computerize his knowledge and experience without having to know anything about computer. 6. Simulation of general physical phenomena, often via animation, will be the major thrust of the natural language programming effort. The goal is to rewrite in natural language all the existing simulation programs that have been written in computer languages. Extensive benchmarking efforts need to be carried out between the natural-language programs and those of the computer language, as well as with experimental data. This would be the only way that the computing community can free itself from the restriction by the large sizes of the programs and the large numbers of programmers that can be involve in its development. Natural language programming, with the aid of software robots, is designed for collective programming that would be comprehensible to all the programmers, whose number, therefore, can be unlimited. SOFTWARE ROBOT SPECS All the processing on ROBACUS are recorded into verbatim document files. These files are called software robots, as they can re-enact the processing on their own. To invoke robot processing, simply click the option down the processing route you want, Or use the [Enter] key to accept the robot default value and mouse click(indicated by the mouse pointer). Clicking the left mouse button invokes the step-by-step processing. Clicking the right button invokes automated processing by robot. You can always interrupt and take over the control by clicking the left button. At that point, you can just modify the processing by entering new data. For lengthy processing, a schematic is displayed at the beginning of the processing that contains all the components of the processing. By clicking a component box will direct the robot to execute to that component offline, so that the user can start processing at that component. A clicking of the right button would again direct the robot to execute automatically to the end of processing, unless interrupted by a left button press. Press the [End] key would take a user directly to the end results. The robot file is named with the fourth letter being 'r'. The first 2 letters indicate the program. The 3rd indicates type of processing - input, output, generation, preprocessing and post-processing. The 5th and 6th letters indicate the problem model. In certain cases it is possible to modify the robot file directly to make the desired modification to the problem. But this does not guarantee the processing will be consistent and correct. So such practice is not recommended. FORTRAN SPECS FORTRAN is used to develop ROBACUS because of its simplicity. In fact, only a subset of FORTRAN is allowed to be used to achieve maximum simplicity. All English alphabets are capitalized for easy visibility. Furthermore, a variable naming convention and strict grammar is followed to allow users to expect maximum consistency and structure in the program modules. All this is extensively planned out in preparation for the ultimate aim of finally passing all the programming to the computer. The FORTRAN rules are described with the help of actual sample statements. The naming of variable and FORTRAN grammar are explained in the naming convention file, namspe.html. 1. Comments are precede by a "C" in column one: C*** EXECUTION FLOW CONTROL *** 2. Subroutine statement with name, SUBNAM, starting in column 7, with arguments, ARGNA1 and ARGNA2, which are passed between the subroutine and its calling routine: (6 spaces)SUBROUTINE SUBNAM(ARGNA1,ARGNA2) 3. Character strings are declared for argument and other variables with length=40. (6 sp)CHARACTER*(*) ARGNA1(1) (6 sp)CHARACTER*40 TITLES,QUESTI where the character length for a string only needs to be declared as '*(*)' and the size of an array as (1). 4. the RETURN/END statements are used to end a subroutine (6 sp)RETURN (6 sp)END 5. Calling statement of this subroutine: (6 sp)CALL SUBNAM(ARGNA1,ARGNA2) 6. Dimension statement declare array dimension: (6 sp)DIMENSION REAARR(10) 7. Integer variables are prefixed by I, J, K, L, and M. All else are real variables. 8. Common block, AUTDAT, declares common use of variables in different subroutines. Any numbers enclosed in parentheses(see rule 7) are the number of elements in the arrays: (6sp)COMMON/AUTDAT/LOGAUT, NUMAUT,LOG 9. Continuation signal is a '+' in column 6: (5sp)+COL(20),LOGBUG,LOGVER,IDE AUT(1050) 10. Character string operation where the resultant string is equal to 1st NUMCHA characters combined with the segment between 5th and 10th character and attached by the last LASCHA characters of, respectively, RESSTR, STRONE and STRTWO. (6 sp)CHARACTER*40 RESSTR,STRONE,STRTWO ... (6sp)RESSTR=RESSTR(:NUMCHA)//S TRONE(5:10) (6 sp)+//STRTWO(LASCHA:) 11. Assign a string value to QUESTI (6 sp)QUESTI='TIME INCREMENT?' 12. Initialization of variables is done with DATA statements: (6 sp)CHARACTER*6 ANIFIL(2) (6 sp)DATA ANIFIL/'table0','boubal'/ 13. GOTO statement goes to a CONTINUE statement: (6 sp)GOTO 155 ... 155 CONTINUE 14. IF/THEN/ENDIF block enclose a contingent execution process: (6 sp)IF(LOGFIR.EQ.1)THEN ... (6 sp)ENDIF 15. DO loop indexes sequential execution involving elements of arrays: (6 sp)DO 100 I=1,IM (6 sp)SUMVAL=SUMVAL+EACVAL(I) 100 CONTINUE 16. Arithmatic operators are: +,-,*,/,** for add, subtract, multiply, divide and raising to the power, with precedence start with: (**),(/,*),and (+,-) ,and parentheses can be used to force the operations enclosed to be executed as a group prior other executions. * Relational operators are: .EQ.,.NE.,.GT.,.GE.,.LT.,.LE.,.AND. and .OR. for equal, not equal, greater than, greater and equal, less than, less or equal, logical AND and logical OR. * External files can be OPENed with: (6 sp)OPEN(11,FILE='extfil') where both '11' and 'extfil' can be replaced by an integer and a character variables, respectively. 17. READ and WRITE statements are used to read in data from keyboard(on unit 5), robots(50), and other files, and write out data to screen(6),robots(60), debugging file(70, except editor on 60), and other files: (6sp)WRITE(NUMINP,1111)REAVAR, INTVA1, (5sp)+INTVA2,CHAVAR 1111 FORMAT('REAL VARIAB=',1PE12.4/ (5sp)+'INTEGE VARIABS=',2I5/ (5sp)+'CHARAC VARIAB=',A40) 18. Unformatted READ(N)/WRITE(N) can also be done without specifying a format number. 19. Where the format statement 1111 FORMAT specifies the format of the variables to be outputted, with real number formats being the floating format, 1PE12.4, meaning 1 non-zero digit to the left of decimal, a total of 12 spaces and 4 spaces to the left of the decimal, and also the fixed-point format, F10.2, with similar meaning except the exponential part,...E0?, absent. 2I5 means 2 integer variables in 5 spaces and A40, 40 spaces. The single quotes are used to enclose string to be directly displayed in the output. Double quotes can also be used when single quotes are to be displayed. 20. A check for the end of file can be included in a READ statement: (6sp)READ(11,1111,END=185)STATE M ... 185 CONTINUE 21. Files can be released or deleted, respectively, by: (6 sp)CLOSE(11) (6 sp)CLOSE(12,STATUS='delete') 22. Main-program subroutine does not need a subroutine statement C***** MAIN PROGRAM ********** C SUBROUTINE MAIN 23. The execution can be stopped by: (6 sp) STOP DATA FILE SPECS ROBACUS would have a difficult time understanding the big fuss people made about data base. This is because ROBACUS never needs to be conscientious about the existence of a data base. Everything is done in the natural course of action, with data files automatically managed by ROBACUS via a unambiguous naming convention built into the software modules. The only time things becomes nontrivial is when data files are used to link independent processing. Yet, still, everything is in the names. We need a versatile naming convention with a file bookkeeping system that is clearly understood by all ROBACUS modules. As described in the file namspe.html, or naming convention html file, the file bookkeeping is done by the data file that has the alphabet, 'd', as the 4th letter. This data file summarizes all the linking data files named with the 4th letter, d, replaced by 0 thru 9 and their respective data argument list and any format(if not binary). At the beginning of a processing where data or graphics files are generated, the user would be asked whether where each of the files is linked to. This and other information about the file would be stored in the file, ???d??, where the 1st 3 '?'s are the prefix and type of the processing module to be linked and the last 2 '?'s identifies the problem modeled of the linked processing. Specifically, after prompting for the information about ???d??, a check of the file would be performed to see if the generated file is already listed in the ???d?? file to determine if writing it in is needed. Then at the beginning of the linked processing, a check would again be made of the existence of the ???d?? file. If it does, the data file names would be read off and provided for selection by the user during the processing. In the menu for the selection of all the files in ???d??, an option for removal of a particular file should be provided in case a file is found that is now useless. ROBACUS VIDEO CLIPS ON YOUTUBE ROBACUS DEMOS FOR BALL DROP AND SPACE NUCLEAR REACOR DESIGN https://www.youtube.com/watch?v =jzEj6rQOWfU ROBACUS song -- RObotic aBACUS, in Chinese https://www.youtube.com/watch?v =nGoMIqJx120 ROBACUS song -- RObotic aBACUS, in English https://www.youtube.com/watch?v =_8SqrU4nfeo Video presentations of ROBOCOM, predecessor of ROBACUS ROBOCOM PREFACE -- Robotic Computing https://www.youtube.com/watch?v =aUhNe1l6spc ROBOCOM Overview -- Part I https://www.youtube.com/watch?v =jr91NedvVV4 ROBOCOM -- Overview -- Part II https://www.youtube.com/watch?v =4EKZNTOK6vM ROBOCOM -- Introduction -- Part I https://www.youtube.com/watch?v =QXRn-agiIeo ROBOCOM -- Introduction -- Part II https://www.youtube.com/watch?v =H_XcpqtU6-I 0:03 / 5:18 ROBOCOM Development -- Part I https://www.youtube.com/watch?v =p9X4iS6xW-I ROBOCOM Development -- Part II https://www.youtube.com/watch?v =BNYeaOj-6Ak THE DREAM MACHINE, the ultimate computer game for materialist https://www.youtube.com/watch?v =RmvitF6LEss Major program sources of ROBACUS: iolupd = c-language program(with xwindows system) for i/o and windows management na1upd = natural-language programming language in fortran, interpreted by f2c edeupd = robotic editor(use "e filename" to edit filename) enter "h" to get help dieupd = diagnostic debugger useupd = user interface controller