And to whom we are eternally grateful!

我们永远感激谁!

Debugging is a vital part of programming. A breakpoint — which by definition is an intentional stopping or pausing place in a program — is often key during the debugging process. They allow developers to gain insights into a program’s values during its execution — at which point said values may change to produce unexpected results upon completion. Having breakpoints means the execution will pause at different stages for the developer to inspect a certain value. By having the opportunity to then run each line of code after the breakpoint one by one, it is very easy to spot where things went wrong.

调试是编程的重要组成部分。 断点(按定义是程序中有意停止或暂停的地方 )通常是调试过程中的关键。 它们使开发人员可以在程序执行期间洞悉程序的值,这时,这些值可能会更改,以在完成时产生意外的结果。 具有断点意味着执行将在不同阶段暂停,以供开发人员检查某个值。 通过有机会在断点之后一个接一个地运行每一行代码,很容易发现问题出在哪里。

Every integrated development environment (IDE) nowadays will contain an integrated debugger allowing for these breakpoints to be put in place. And what’s more, it’s very easy to do so! All IDEs I’ve worked with have adopted the same method for applying breakpoints — you click outside of a particular code line just before its number. That line of code will more often than not contain a condition that needs to be met, and when it has been met, voila. Your application will pause when it hits that point — allowing you to look at the current state of variables, classes, config objects, and many more. This is extremely useful in cases where your program is returning an unexpected value. By hitting the breakpoint and gradually executing the code that comes after it, developers can gain a deeper understanding as to where an incorrect value is being set and why.

如今,每个集成开发环境(IDE)都将包含一个集成调试器,以便将这些断点放置在适当的位置。 而且,这样做非常容易! 我使用过的所有IDE都采用了相同的方法来应用断点-您可以在特定代码行的编号旁边单击它。 这行代码会往往不是包含一个条件,即需要得到满足,而当它满足,瞧。 达到该点时,您的应用程序将暂停-允许您查看变量,类,配置对象等的当前状态。 这在程序返回意外值的情况下非常有用。 通过触及断点并逐步执行其后的代码,开发人员可以对设置错误值的位置以及原因有更深入的了解。

I find the origins of such programming features fascinating. Recently, I wrote about software bugs and how they got their name. This time, I went back in history to learn about the origin of the breakpoint.

我发现此类编程功能的来历令人着迷。 最近,我写了关于软件错误以及它们如何解决的文章 。 这次,我回顾了历史,以了解断点的起源。

从哪里开始 (Where it all started)

It all started with a 30-ton digital computer and its first-ever programmers. During the 1940s, 6 women were selected as programmers for the Electronic Numerical Integrator and Computer, better known as the ENIAC. Funded by the US military, and designed to help win World War II, it was able to solve thousands of numerical problems and execute up to 5000 additions in a second.

一切始于一台30吨的数字计算机及其首创的程序员。 在40年代期间,6名妇女被选定为程序员为电子数字积分计算机更好地为ENIAC 。 由美国军方资助,旨在帮助赢得第二次世界大战,它能够解决数千个数值问题,并在一秒钟内执行多达5000次加法运算 。

Unlike the ubiquitous computers we see today, however, the heralded ‘Giant Brain’ was more a collection of adding machines controlled by electronic cables. Its architecture was extremely complex with over 6000 switches through which specific data and coding were routed. Sometimes it took days to rewrite a new program into the machine. Nonetheless, what would take a human-computer approximately 2 years to solve, the ENIAC would solve in just 2 hours. Making it a pretty efficient machine in its time!

但是,与我们今天看到的无处不在的计算机不同,被称为“巨人大脑”的是更多由电缆控制的添加计算机的集合。 它的体系结构极其复杂,有6000多个交换机,通过它们路由特定的数据和编码。 有时需要几天的时间才能将新程序重写到计算机中。 尽管如此,用人机解决大约需要2年,而ENIAC只需2小时即可解决 。 使它成为当时相当高效的机器!

Being the first digital computer in history, of course, it wasn’t perfect at first. There were many technical glitches that the chosen 6 had to solve. It was Betty Holberton — one of the 6 programmers — who realised that it would help to have a moment in which you could stop a program midway through its execution to debug an issue. In the initial design of the ENIAC, the program flow was set by plugging cables from one unit to another. To make the program stop at a certain point, a cable was simply removed. The removal of such cable midway through the program’s execution was named as the “breakpoint” we all love and use today.

当然,作为历史上第一台数字计算机,它一开始并不完美。 选定的6个必须解决的许多技术故障。 正是Betty Holberton(六位程序员之一)意识到,有一会儿您可以在程序执行过程中停止程序来调试问题,这会有所帮助。 在ENIAC的初始设计中,程序流程是通过将电缆从一个单元插入另一单元来设置的。 为了使程序停止在某个位置,只需拔下电缆即可。 在程序执行过程中删除此类电缆被称为我们今天都喜欢并使用的“断点”

“Betty had an amazing logical mind, and she solved more problems in her sleep than other people did awake” — Jean J. Bartik

“贝蒂有着惊人的逻辑思维,她在睡眠中解决的问题比其他人醒来的更多” –简·巴蒂克(Jean J. Bartik)

So there you have it! For the first time in programming history, programmers made use of the concept of breakpoints to debug!

所以你有它! 编程史上第一次,程序员利用断点的概念进行调试!

Now, you may be asking, how does one debug on the ENIAC?! It was engineered in such a way that it was very easy for a programmer to follow its progress or computation. The entire contents of the electronic memory were displayed on accumulators with neon lights. At this point, if any alterations had to be made, they could be made by changing a switch.

现在,您可能会问,如何在ENIAC上进行调试? 它的设计方式使程序员很容易跟踪其进度或计算 。 电子存储器的全部内容通过霓虹灯显示在累加器上。 此时,如果必须进行任何更改,可以通过更改开关进行更改。

But what about IDE breakpoints? The ones we all know of today. Was there a first for that? There must have been!

但是IDE断点呢? 今天我们都知道的那些。 是否有第一个? 一定有!

超越ENIAC (Beyond the ENIAC)

We’ve got things pretty good as programmers nowadays. Before IDEs, programmers would compose all of their code on punch cards which were then taken to a separate compiler to run and compile the code. Depending on priority, the cards could sit in an execution queue from a few minutes to a few days, after which some output is printed for the developer to review. If any errors were noted on the output, the process would start all over again.

如今,作为程序员,我们的处境非常好。 在使用IDE之前,程序员会将所有代码编写在打Kong卡上,然后将其带到单独的编译器中运行和编译代码。 根据优先级,这些卡可能会在几分钟到几天之间排在一个执行队列中,然后打印一些输出以供开发人员查看。 如果在输出中发现任何错误,该过程将重新开始。

I stumbled upon some mainframe debuggers when researching the topic, one of them known as OLIVER (1974), which facilitated the debugging of programs written in COBOL, PL/I, and Assembler. SIMON — used for batch debugging — was another released 6 years after OLIVER.

在研究该主题时,我偶然发现了一些大型机调试器 ,其中一个名为OLIVER (1974),它有助于调试用COBOL,PL / I和Assembler编写的程序。 SIMON (用于批调试)是OLIVER推出6年后发布的。

As for IDEs, after an intense search for the first one in history, Turbo Pascal — released in 1983 — cropped up a lot as the first IDE programmers remembered. It wasn’t until version 6.0 was released, however, that the debugger supported breakpoints and watches. Nonetheless, it is deemed to be the IDE that paved the way for the ones that followed.

至于IDE,经过对历史上第一个的深入研究, Turbo Pascal 1983年发布的产品,在第一批IDE程序员记得的时候,出现了很多情况。 直到6.0版本发布,调试器才支持断点和监视。 尽管如此,它还是为随后 IDE铺平了道路。

摘要 (Summary)

It was Betty Holberton — one of 6 women chosen as programmers to execute instructions on the ENIAC — who first coined the term “break point”. This came after the realisation that they would be extremely helpful to debug a program that was running incorrectly. To achieve this, cables were pulled out of the ENIAC’s units to stop the program’s execution, and allow for efficient debugging. Due to the nature of the ENIAC, the entire contents of its memory could be read easily on its accumulators. Thus once stopped, it was easy to pinpoint issues and alter any switches.

贝蒂·霍尔伯顿(Betty Holberton)被选为程序员,是在ENIAC上执行指令的六名女性之一,她首先创造了“断点”一词。 这是在意识到他们对调试运行错误的程序非常有帮助的之后。 为此,将电缆从ENIAC的单元中拔出,以停止程序的执行并进行有效的调试。 由于ENIAC的性质,可以轻松地在其累加器上读取其存储器的全部内容。 因此,一旦停止,就很容易查明问题并更改任何开关。

38 years later, Turbo Pascal paved the way for the popular IDEs we use today. Albeit missing vital debugging features in its initial release, such as breakpoints and watches, these were later on introduced in 1990 when its version 6 was released.

38年后,Turbo Pascal为我们今天使用的流行IDE铺平了道路。 尽管在最初的版本中缺少一些重要的调试功能,例如断点和监视功能,但这些功能后来在1990年的第6版中推出。

I hope you enjoyed this brief story on the origins of what is now possibly the biggest facilitator in the debugging of code today!

我希望您喜欢这个简短的故事,它讲述了现在可能是当今代码调试中最大的辅助工具的起源!

Fun fact: this exceptional programmer was also known for inventing another concept for the first time — the Sort Merge Generator. Her innovation was the first example of using a computer to create a computer program!

有趣的事实: 这位杰出的程序员也因首次发明另一个概念而闻名- 排序合并生成器 她的创新是使用计算机创建计算机程序的第一个示例!

翻译自: https://medium.com/swlh/betty-holberton-the-brain-behind-the-breakpoint-882de19fb054


http://www.taodudu.cc/news/show-2549739.html

相关文章:

  • 谷歌分析数据导入4种方式
  • ActiveMQ学习笔记(4)----JMS的API结构和开发步骤
  • Java学习笔记(五):Java多线程(细致入微,持续更新)
  • Java学习笔记(六):Java泛型
  • 在Linux部署SSM项目
  • 操作系统基础概念大扫盲 - 操作系统系列(一)(持续更新,争取完整)
  • 半监督3D医学图像分割(一):Mean Teacher
  • 漫游红黑树之插入篇
  • PAT L3-001 凑零钱(01背包(布尔背包)+记录路径)
  • 我的appstore新游戏--LeBallon 拿码了
  • 【Eternallyc】函数PlaySound和sndPlaySound
  • 【gfs】google file system 之重点剖析
  • airflow(二)-使用说明简介及应用场景
  • 问题 F: 是你飘了,还是我拿不动刀了(字符串问题)
  • 2017吉首大学新生赛周老师的区间问题
  • 简单选择排序(Eternallyc)
  • 商业银行会计学(一) -- 基本核算方法
  • 兰大《银行会计学》命题作业离线作业
  • 基础会计【27】
  • 会计目录汇总
  • 银行会计科目表
  • 中央银行会计核算数据集中系统(ACS系统)
  • 银行会计记账方法的种类
  • 银行会计学3(特点、核算的前提假设、对象和标准)
  • 商业银行会计学个人笔记
  • 《商业银行会计》--概述
  • 银行那些事儿--银行会计
  • 银行会计
  • 商业银行会计
  • 银行会计凭证粗略整理

贝蒂·霍尔伯顿(Betty Holberton)断点背后的大脑相关推荐

  1. Linux背后的大脑-传奇人物Linus

    Linus接受TED采访讲诉了创造的两个最重要的项目Linux和Git.他认为自己不是一个people person,不是一个擅长社交的人,但喜欢通过电脑和邮件与Linux社区的人交流.在Linus ...

  2. 【历史上的今天】12 月 27 日:第一台计算机背后的女性们;Box 创始人出生;开普勒诞生

    整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2022 年 12 月 27 日,在 2002 年的今天,南水北调工程开工典礼举行.南水北调是一个可持续发展的工程 ...

  3. 法国队夺冠!央视转播背后的骚操作

    法国队夺冠!央视转播背后的骚操作 文 | 史中 2018 世界杯,法国队第二次夺冠了.(我从没见过法国队夺冠,上次法国队夺冠的时候,你中哥还没出生呢.) 我和几位朋友,是在不同地方看的法国和克罗地亚这 ...

  4. 解密编程——程序诞生的基本工序

    老实说,我都有些怀疑这一章节的必要性.如今的程序员如果在大街上随手扔出一个键盘,砸中的很有可能就是同行.不光日新月异的IT行业吸纳着越来越多的从业人员,编程作为一项专业技能也大有进入中小学生基础知识体 ...

  5. ENIAC:第一台通用电子计算机

    研制背景 计算,是现代化武器的灵魂. 一颗看似做着简单的自由落体运动的炮弹,其实在出发前就被设定好了精确的飞行轨道.弹道的计算十分复杂,发射速度和角度的确定不仅要考虑炮弹本身的类型和炸药特性,还要考虑 ...

  6. 编程人生:15位软件先驱访谈录

    内容简介:世界顶尖的程序员是怎么走上编程道路的? 他们的编程工作创造和改变了人类历史,在这一过程中都有哪些经验和教训? 他们对计算机软件行业的过去.现在和未来有什么独到的看法和见解? 他们对培养.发现 ...

  7. Blockchain技术之区块链的概念和起源以及区块链的运行方式、发展前景和应用领域分析

    一.什么是"区块链"? 区块链起源于中本聪的比特币,作为比特币的底层技术,本质上是一个去中心化的数据库,是指通过去中心化和去信任的方式集体维护一个可靠数据库的技术方案. 区块链技术 ...

  8. 计算机编程语言历史_早期编程语言的历史

    计算机编程语言历史 From Babbage to Babel and Beyond is an article written by Linda Weiser Friedman. This text ...

  9. 数据仓库分层存储技术揭秘

    一  背景 据IDC发布的<数据时代2025>报告显示,全球每年产生的数据将从2018年的33ZB增长到2025年的175ZB,平均每天约产生491EB数据.随着数据量的不断增长,数据存储 ...

  10. 首席新媒体运营黎想教程:如何成为优秀的用户增长操盘手

    本文的标题"如何成为优秀的增长操盘手",正是抱有全面提升用户增长能力的美好期望,希望让志在投身用户增长的读者朋友,能够以最高的要求来作为自己提升的目标. 尽管目前能够满足这个能够力 ...

最新文章

  1. wattosR6中文化步骤
  2. java数据结构 队列_Java数据结构之队列
  3. 开启简单的laravel5 MVC模式
  4. [vue] vue能监听到数组变化的方法有哪些?为什么这些方法能监听到呢?
  5. 探索中国广电“智慧城市”未来转型路径
  6. linux怎么启动程序路径,linux查找启动程序的路径
  7. Docker设置容器CPU、memory、磁盘IO资源限制
  8. 命令(Command)模式
  9. 10条实用简洁的python代码,拿走即用(内附资料)
  10. 【工具】telnet用法
  11. 产品分析之美团_米米米米粒口红_新浪博客
  12. ppc手机用蓝牙和电脑同步上网设置教程
  13. 微信小程序开发:微信小程序里面集成百度地图的步骤
  14. php ecshop二次开发,ecshop二次开发对ecshop系统框架分析
  15. echart柱状图堆列实现百分比显示
  16. Cubieboard安装系统
  17. 鼠标键盘长时间无动作、电脑空闲超过一定时间自动关机、自动睡眠软件 —— 定时执行专家
  18. 自己整理的前端编码规范,各位码友们想到了其它的可以留言补充
  19. icp光谱仪的工作原理_ICP2060T ICP光谱仪工作原理
  20. softmax回归的简洁实现

热门文章

  1. 打造最美HTML5 3D机房(第三季,新增资产管理、动环监控等效果)
  2. 屏蔽非微信客户端和支付宝登陆登录操作
  3. 数据结构c语言版ppt答案,《数据结构(C语言版)》习题答案.ppt
  4. 物联网专业要学c语言吗,物联网应用技术专业是文科还是理科
  5. 利用python对资产收益率进行正态检验
  6. 51job的城市编号
  7. 简单的E_mail发送
  8. Aspect基础使用方法
  9. TI单芯片毫米波雷达代码走读(十四)—— 多普勒维(2D)处理之静态杂波滤除
  10. U盘装Win11教程 系统之家装机教程