万博官方app下载 自然与人工智能新闻与分析
亮光开发人员 - 编程和编码 - 技术 - 网站 - 设计 - 塔赫社会世界 - 网络空间 - 概念 - 储备 - Adob​​e - 股票
明亮的开发人员编程和编码技术。网站设计的安全塔河社会世界网络空间的概念。
通过Adobe Stock授权

乔纳森·巴特利特:采访作者

“学会用汇编编程”教会程序员更好地理解他们的计算机所需要的语言

“学习汇编语言就是学习处理器如何看待你的代码。它是关于获得机器的思想。”

乔纳森•巴特利特学习汇编编程:新程序员的基础学习,p。1

乔纳森·巴特利特(Jonathan Bartlett)是一个多才多艺的人:工程师、软件开发人员、数学家、研究人员和作家。他一直是这里的忠实贡献者万博官方app下载消息多年来,关于题目的编程和编码向技术教育。他的书籍已成为普林斯顿和沃斯大学的阅读。

现在,他写了一本新书,学习汇编编程:新程序员的基础学习,他坐下来万博官方app下载谈论它。


问:说说你的新书吧

巴特利特:这本书表面上讲的是汇编语言编程。然而,更一般地说,它是关于你的计算机如何工作以及程序和操作系统如何相互工作的。

问:什么是汇编语言?

乔纳森·巴特利特

巴特利特:汇编语言是计算机本身能够理解的程序设计语言。在大多数语言中,您编写代码,代码得到编制转换成计算机自己的语言,而程序员永远不会看到它是什么样子的。在汇编语言中,你使用的指令计算机可以理解的指令。这里有一个很小的翻译,它允许你写“MOV”而不是计算机的数字(实际上变化了一点,但其中一个是“88”)。但无论如何,你发出的指令与计算机正在读取的内容相匹配。

问:你为什么决定写一本关于汇编语言的书?

巴特利特:在计算机编程中,高级语言和低级语言是有区别的。低级语言是那些更接近计算机硬件的语言,而高级语言试图将硬件抽象出来,使编程语言的特性更直接地与解决问题联系在一起,而不是与硬件打交道。汇编语言是目前仍可读的最低级别语言。

大多数程序员在高级语言中的程序有充分的原因 - 这需要更少的时间来做。但是,我发现许多现代程序员都有只有用高级语言编程。这里的问题是,它消除了他们用来编程的计算机的任何感觉。他们不理解为什么某些功能快或缓慢,其中某些编程限制来自,并且在较低级别出现问题时,它们会受到许多错误消息的困扰。低级语言的经验缺乏经验意味着今天许多程序员基本上是无论他们的计算机如何运作的方式。

如果我开一辆家用汽车,通常我只关心方向盘、油门踏板、刹车踏板,也许还有其他一些让我到达目的地的功能。我不需要知道任何关于化油器或引擎来帮助我。然而,一个NASCAR赛车手,尽管他自己可能不做汽车的维护工作,但他会知道所有的内部部件是如何工作的。尽管他仍然使用与你家汽车相同的基本界面驾驶,但他可以做出更好的驾驶决定,从而最大限度地发挥他的汽车,因为他更清楚地知道汽车的引擎盖下是如何工作的。

汇编语言也是如此。大多数程序员永远不需要用汇编语言编程。然而,了解汇编语言将使他们熟悉计算机的实际工作方式。了解汇编语言将使程序员对高级语言中实际发生的事情有更好的直觉,并帮助程序员在实现和权衡方面做出更好的决策。当事情不顺利时,他们会更好地意识到背后可能存在的问题。

乔纳森•巴特利特的书学习汇编编程:新程序员的基础学习

问:那么汇编语言目前在哪里使用?

巴特利特:正如我提到的,大多数程序员自己不会直接使用汇编语言,但知道它是他们做其他事情的基础。然而,在某些情况下,汇编语言仍然是最佳选择。如果你想要编写一种新的编程语言,或者想要为一种旧的或新的语言构建一个编译器,汇编语言通常是由这些系统生成的,所以你必须熟练地使用它才能使它工作。此外,如果您使用的是操作系统本身,通常会有一些任务需要具备汇编语言的知识。如果你为小型设备编写代码,有时在这些情况下,汇编语言不仅是必需的,有时它比编写更高级别的代码更容易,因为你要处理的东西硬件。There are some microprocessors for devices (such as the PIC10F220) that don’t even have enough writeable memory to fit the text of the words “small microprocessor” in them, and so you need assembly language to be able to take control over every byte available. Occasionally, people will also write very time-critical parts of their code in assembly language just to guarantee that it is fast. For instance, there are some graphics code libraries and math code libraries that have some of the functions implemented directly in assembly language to make them faster.

问:你在书中提到了其他话题吗?

巴特利特:这本书分为四个部分。第一部分是汇编语言的基础知识——汇编语言指令是什么样子的,如何将它们组合成一个程序,等等。第二部分是关于与操作系统的接口。它涵盖了如何调用操作系统来处理操作系统任务,比如访问文件。它展示了如何利用系统代码库,以便重用其他人的代码,即使这些代码不是用汇编语言编写的。它还展示了如何编写代码,以便可以从其他程序和其他语言中使用它。第三部分展示了如何用汇编语言实现其他编程语言中的概念。从汇编语言的角度来看,面向对象编程、异常处理和内存管理是什么样子的?文中给出了每种方法的简短实现。最后,还有附录,其中许多是简短的教程。 For instance, one of the appendices is on floating-point and vector programming. Another appendix is on using a debugger to find errors in your program. That sort of thing.

问:你写这本书用的是什么操作系统?

巴特利特:这本书是针对Linux操作系统编写的。然而,我创建了一个Docker镜像,这是专门为这本书设置的,你可以使用它来让相同的程序在Windows或Linux下运行。唯一的要求是一台64位的计算机,这在现在很常见。目前大多数计算机都是64位的。

问:你是不是写了另一本关于汇编语言的书?

巴特利特:事实上,我的第一本书,从地上编程他讲的是汇编语言。这本书本质上是对那本书的重写,但关注的是更现代的64位计算机。自2004年以来发生了很多变化,所以这本书反映了这些变化。此外,这本新书更进一步。最初的书没有讨论浮点数、面向对象编程、异常处理或垃圾收集。这一个。甚至还有一个用汇编语言编写的垃圾收集器,以便读者更好地了解它在底层是如何工作的。

当它第一次发布的时候,从地上编程出于各种原因,开发了一些邪教。首先,它是第一个开源教科书之一。其次,它是在Linux热潮的开始时,因此Linux定向为其吸引力添加。最后,我实际上把它写作了第一个编程书。很多人将汇编语言编程视为“艰难”,但我记得在有任何真正的编程语言之前将其作为一个少年学习。所以我决定制作一个更易于获得的汇编语言书,任何级别的任何级别都可以编程。

当技术博客斜面时,它会产生速度拾起这个故事.这篇文章有上千条评论,关于我尝试这样做是不是疯了的争论相当激烈。总之,我发现很少有人把这本书作为他们的第一本编程书籍,但很多人欣赏它是用一种易于理解的风格编写的。

问:这本书和你写的其他书有什么联系?

巴特利特:我花了很多时间写下我所说的“那些人不知道他们需要阅读的书籍”。有些人写的是流行的。我并不反对,人们需要他们对他们感兴趣的主题的书籍。但是,我发现人们需要知道他们不认识到他们需要知道的事情。它使营销变得困难,因为你不仅要说服人们你的书是有趣的,你有时必须说服他们对这个话题感兴趣。尽管如此,我认为这是一个重要的空间。

我写书的方式通常是同时从两个角度思考——一个是一无所知的人,一个是专业从事这方面工作的人——并试着把这两个角度联系起来。有些书过于关注其主题的基础或机制,以至于你永远不会看到它是如何在更广泛的领域中使用的。另一些人则认为你已经掌握了所需的所有知识。我的目标是帮助人们跨越鸿沟。它已经足够入门了,你可以从那里开始,但目标是帮助你发展成为一名实践者所必需的直觉。

例如,在我的电子产品对于初学者来说我意识到很多电子学的书要么只是“项目”,所以你不会被教导如何把所有的东西结合在一起,或者本质上是研究生水平的物理教科书,需要高等数学。即使是这些先进的文本也没有包含太多关于艺术做电子产品。为了知道这个,你基本上需要做很多。所以我写这本书是为了把一个人从“我什么都不知道的阶段”带进“初级艺术实践者”的阶段。现在,在一本书中你只能做这么多,但我的目标是帮助别人,让他们能够真正地说专业人员所说的语言,并理解在电路示意图中发生了什么,他们可能会看到“在野外”。

所以这基本上是这本书发生的事情。大多数程序员都不认识到他们需要了解汇编语言,大多数关于汇编语言的书籍更加关于它的机制,而不是帮助某人从汇编语言角度思考事物。我试图掩盖中间地面 - 帮助某人知道没有什么可以对他们所做的事情充满信心。再次,你只能在一本书中覆盖这么多,但我想我足以让有人能够很容易地了解其休息,或者如果他们问道,可以理解某人的答案。在本书结束时,您可以在汇编语言中执行大多数编程任务,并识别使用下面的汇编语言实现更高的级别语言。目标是让您更直观地了解计算机实际工作,我认为这本书很好地击中了目标。


你可以购买学习汇编编程亚马逊Barnes & Noble沃尔玛,以及出版商施普林格链接.你可以看看Bartlett的其他书在亚马逊,并收集了他的学术论文工研究所


以下是Bartlett最近在软件和编程方面的一些文章万博官方app下载心灵重要新闻:

“无代码”软件的神话.“无代码”软件有它的位置,但不能代替程序员。为了使用“无代码”工具制作一个安全的应用程序,你需要能够理解你所构建的内容的深层含义。

对通用算法的探索仍在继续.为什么机器学习似乎总是在拐弯,但最终却碰壁?通用算法受到提供给它们的公理的限制,这就是为什么通用算法是不可能的。

代码债务不是真正的债务.等同于货币债务的代码债务可能导致战略技术错误。“代码债务”一词有助于我们记住某些决定意味着我们现在节省时间,以便在以后花时间。


万博官方app下载思想重要新闻

在Mindmatters.ai的自然和人工智能令人兴奋的世界中打破和值得注意的消息。

乔纳森·巴特利特:采访作者