范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

以史为鉴初代程序员自述七十五年前的编程心得(二)

  书接上文,继续初代程序员 Grace Hopper 的精彩演讲摘记。她的心得在今天看仍然极有现实意义。
  That December 1953 report proposed to management that mathematical programs should be written in mathematical notation, data processing programs should be written in English statements, ... I was promptly told that I could not do that. And this time the reason was that computers couldn"t understand English words. [ Laughter]
  "不能用英文语句写代码,因为计算机不懂英文"——这句话听起来是那么熟悉,70 年后的今天,还有很多人拿"计算机不懂中文也不懂英文"来推出"没有英文编程,也没有中文编程"。
  This is the preliminary definition of a data processing compiler, dated 31 January, 1955. The language -- the pseudo-code -- is to be variable-length English words separated by spaces, sentences terminated by periods. One of the first things we ran into was nobody believed this. So we adopted an engineering technique. It"s one that I wish more people would adopt...When an engineer designs or builds something, he almost always builds either a pilot model or a bread board. He proves feasiblity, he uncovers any difficulties he hasn"t thought up theoretically, and he gets valid cost estimates. Best reasons in the world for building a pilot model.
  这里的"伪代码"似乎是初代的自嘲,因为该语言语法与英文自然语言的相似性(词汇不等长,句号结束等等),当时看起来就像是"伪代码"。相比上文的助记符 ADD MUL 等等,明显是向自然语言语法接近了一大步。
  没人信,就干工程师能干的——造原型。可行性论证、发现问题、估计成本,都是好理由。至今也是如此。
  An operation list, a subroutine list, a jump list, and a storage list. Of course we quickly realized that management wouldn"t know what a list was, and we changed that word to the word "file" and kept "files" so they"d understand all right.
  在与管理层沟通时,需要用对方能理解的词汇,也是浅显但经常被忽视的道理。
  下面有一段插曲,由于主存放不下他们的所有"list",他们不得不把一些部分用子程序临时放到磁带存储,需要用时,再调用子程序将其放回主存。而这一技术在 12 年后被 RCA 重造了轮子并叫做"虚拟存储",又在六、七年后在 IBM 发现之后才被认真对待。说到这台下听众哄笑。—— 然而,好技术往往要商业推手这点在六十年后的今天仍然。
  下面到了关键。她们完成了个小编译器,可以接受 20 个语句。在她们的预算申请报告书上,写着:
  亲爱的管理层:如果你们到机器室来,我们很乐意为您运行这段程序:(为易读我分了行) INPUT INVENTORY FILE A; PRICE FILE B; OUTPUT PRICED INVENTORY FILE C. COMPARE PRODUCT #A WITH PRODUCT #B. IF GREATER, GO TO OPERATION 10; IF EQUAL, GO TO OPERATION 5; OTHERWISE GO TO OPERATION 2. TRANSFER A TO D; WRITE ITEM D; JUMP TO OPERATION 8. REWIND B; CLOSE OUT FILE C AND D; STOP.
  (所以这就是最早借鉴自然语言语法的编程语言了吧。看上去的确挺自然,尤其对商界人士来说,也没有什么费解的符号)
  但她们越看这段代码越觉得渺小,尤其是她们申请的金额之大是从未有过的。于是,她们把所有的英文词换成了法语。接着,又换成了德语。
  结果,管理层看到这里就炸了。对他们来说,一台本土制造的美国计算机,当然不可能懂得法语或者德语!导致她们花了四个月来澄清,她们并不打算用英语之外的语言来编程。
  这里很值得琢磨。对技术人员来说,编程语言的语法用词修改成另一种自然语言易如反掌,但对管理层来说,这却意味非常。接下去这段她的原文:
  What to us had been a simple -- perfectly simple and obvious -- substitution of bit patterns, to management we"d moved into the whole world of foreign languages, which was obviously impossible. That dangerous, dangerous point of something that"s obvious, evident to the researcher, to the programmer -- when it"s faced by Management, is out of this world.
  那时美国的管理层的这种"编程不能用非英文"的思想,似乎在今天仍然盛行,即使在非英文母语的开发者中。比如前两年关于 unicode 命名标识符的论战中就很明显。
  下面是个有趣的技术细节:
  ...we didn"t know anything about parsing algorithms at that point in time -- and what happened was you picked up the verb, and then jumped to a subroutine which parsed that type of sentence. In order to do that quickly, and also to make it easy to manufacture that jump, the first and third letters of all the verbs in FLOW-MATIC were unique. That survived until last year in COBOL...
  就是说,不需复杂的语法分析算法,而是从每个语句开头(?)动词的第一+第三个字符映射到了对应的处理子程序。这机制也许在现在看有些原始,但抓得住老鼠就是好猫。
  下面是两点小结:
  two things influenced FLOW-MATIC over and beyond math and beyond programming languages. One was that we wanted to write the programs in anybody"s language, which meant all the statements had to be imperative statements, because that was the only type of sentence in German that began with a verb. [ Laughter]
  她们想支持多种自然语言语法应该是真的(选择了法语和德语,大概是由于组里有懂这两个的)。但就因为德语只有祈使句才是动词开头,决定了所有的语句都是祈使句,这听起来总有点玩笑意味。个人感觉祈使句式和之前的助记符式语法是一脉相承。
  And the second was that we had to select the verbs, so that the first and third characters would be unique. One of our most difficult situations was of course display and pide, and that"s why it had to be first and third characters. And there are certain of the other verbs which ran into that problem as well.
  选择第一和第三字符的理由没完全看明白,似乎是在选择动词和字符位置时作了综合考虑。
  【待续。下面一段很有意思,让我想到 UI 设计的一个原则:尽量让用户作选择,而不是自由输入。】
  The data descriptions in that case weren"t informal. We had forms, and you entered the data description in it.

打游戏可以使用无线鼠标吗打游戏可以使用无线鼠标吗?看这篇文章的各位小伙伴中一定有很多的游戏爱好者。你们在玩游戏的时候有没有感觉到这个鼠标线影响了你的实力发挥呢?而且这个带线的鼠标桌面看着也没有无线鼠标桌面让旧手机重新为你的生活发光发热近日,网络上传出二手手机交易可能存在个人信息泄露风险,引发社会广泛关注。我们的老旧手机究竟应该如何正确处理?有数据显示,2021年我国手机社会保有量达到18。56亿部,废旧手机产生一则数据出炉,华为鸿蒙或抢占安卓份额,谷歌安卓受到挑战目前,在手机行业有三大系统苹果系统iOS安卓系统和鸿蒙系统。苹果系统iOS,只提供给自家的手机平板等等数码产品使用而安卓系统则是大家都非常熟悉了,市场上除了苹果产品,大部分的智能手新技能GET!五一出行,江苏移动超级手机卡显身手身份证钥匙钱包,这是以往假期出行必不可少的三件套,但在数字时代,出门只需一张特殊功能的手机卡就能全部搞定。这就是江苏移动的超级手机卡,基于手机NFC功能,打造出适用交通出行社区门禁华为Mate50Pro曝光国产顶级屏1英寸大底,这才是主角在手机市场中,外观设计硬件性能以及产品体验是决定一款产品好与坏的重要标准,同时这三大要素也是很多消费者非常看重的地方。华为手机是一家技术驱动型的手机厂商,华为手机拥有强大的自主研发世界级难题吸引世界级人才!华为再招天才少年,10大问题和挑战如何跨越金融界4月27日消息,华为轮值董事长胡厚崑在华为第19届全球分析师大会上表示,在华为,谈到创新,我们首先想到的是顶尖人才。我们希望用世界级的难题,吸引世界级的人才,来共同迎接挑战,基金2022Q1持仓点评新能源汽车新能源工控均有所上升电新基金2022Q1持仓点评新能源汽车新能源工控均有所上升投资要点新能源汽车正极隔膜电机电控持仓上升较多。新能源汽车板块总体2022Q1持仓占总市值比重为8。37,环比(下同)上升全人类感谢,全世界首个DDR510004MHz超频达成IT之家4月26日消息,近来,硬件圈流传着超频到10GHz,全人类感谢你这样的话。今天,微星团队成功将DDR5内存超频到了DDR510004MHz(GTs)。今天,微星表示,其OCiPhone14Max价格比想象中更香,果粉没有白等资深果粉应该都知道,苹果每一次推出大屏iPhone,都会得到消费者的热捧。iPhone6创造了销量奇迹,iPhone13ProMax的销量更是比iPhone13Pro要好。相比之下国产GPU的发展历程及芯片性能详解一国产GPU的发展历程二国产GPU进口代替的紧迫性三景嘉微具有完全自主知识产权,打破国外GPU长期垄断四景嘉微国产GPU芯片概述五景嘉微国产GPU芯片性能详解六景嘉微国产GPU生态基于Android12的LineageOS19发布了自定义ROM是一个垂死的品种,但不可否认LineageOS的受欢迎程度它仍然是您可以在设备上试用的最好的第三方ROM之一。在2月淘汰基于Android10的LineageOS17。
AnsiblePlaybook超详细讲解,值得收藏Playbook是一个由一个或多个play组成的文件play是针对特定主机或主机组执行的一组有序的任务每个playbook必须包含两部分hosts运行playbook的一组主机taAnsibleregister变量详解在Ansible中,我们可以通过register捕获task的输出,并将它保存到一个变量中,方便在以后的任务中调用编写playbook,我们通过whoami这个shell命令去查看OPPO开发者大会小布虚拟人OPPO智行健康套件发布OPPO开发者大会2021OPPO开发者大会在上海世博中心拉开帷幕。还记得去年的开发者大会,OPPO推出了ColorOS11启能行动2。0和HeyTap健康平台。而今年在Color错过血亏!一文详解Redis集群部署Redis集群部署1。编译安装cdusrlocalsrcwgethttpdownload。redis。ioreleasesredis5。0。0。tar。gztarzxvfredis分享几个Linux实用shell脚本,附实战范例说明,建议收藏练习6。1信号捕捉traptrap触发指令信号进程收到系统发出的指定信号后,将执行自定义指令,而不会执行原操作trap信号忽略信号的操作trap信号恢复原信号的操作trapp列出自定义2个文档学会Shell脚本编程,基础进阶篇,0基础也能一学就会Shell脚本作为Linux中运行的一些命令的集合,虽不是正式的编程语言,但却起着十分重要的作用它能帮助我们实现具体的需求,可以说功能很强大很全面,批量化自动管理提高了不少工作效率跨系统远程操控,让使用更加便捷向日葵UUPro随着5G的普及,未来的生活必定更加舒适便捷。与此同时许多老人使用的2G3G手机将逐步不能使用,因为信号将不再覆盖传输。传统的老人机以其操作简单深受老年人的喜爱,但他们也需要体验5G闭关编写的shell脚本100例!学习提升面试必备精品闭关编写了一份shell脚本100例,融汇了Shell脚本所有知识点,集大成之作。实在是学习提升面试的必备精品!适合新手学习收藏!1。编写helloworld脚本!binbasheNILLKIN耐尔金小咪无线充电支架,让无线充电更优雅目前,各大手机厂商的旗舰机型都已经采用了无线充电,照此趋势,无线充电大有普及之势。与此同时,各类第三方厂商的无线充电器也应运而生。今天就为大家介绍一款与众不同的无线充电器NILLK新iPhone或支持25W快充AirPods3或9月发布苹果研发A13显示器苹果研发配备A13的显示器据外媒9to5Mac报道,有传言指出苹果正在研发一款显示器,该显示器带有支持神经引擎的A13芯片,芯片可能会用作eGPU,目前尚不清楚细节。报道称,在外部几个学习网站,每个都值得你收藏1人人自学网免费教学网站,有电脑知识,办公教程,设计软件教程,编程教程等等,最全的自学教程网站。可在线观看免费视频教程,如3dmax视频教程,cad视频教程,excel视频教程,f