我想描述啥计算机科学主题?

Posted

技术标签:

【中文标题】我想描述啥计算机科学主题?【英文标题】:What computer science topic am I trying to describe?我想描述什么计算机科学主题? 【发布时间】:2011-01-22 04:57:51 【问题描述】:

我已经编程了大约... 6-> 8 年,我已经开始意识到,当我做类似的事情时,我真的不知道在低级别会发生什么

int i = j%348

问题是,我知道 j%348 做了什么,它将 j 除以 348 并找到余数。我不知道计算机是如何做到这一点的。

同样,我知道

try

 blah();
catch(Exception e)
 blah2();

将调用blah,如果抛出blah,它将调用blah2...但是,我不知道计算机如何执行此操作而不是错误...崩溃或结束执行。

而且我认为,为了让我在编程方面“做得更好”,我可能应该知道我的代码到底在做什么。 [这可能还可以帮助我优化并且...错误...不要做愚蠢的事情]

我认为我所要求的可能是大学里教授的大量内容,但老实说,如果我能学到一点,我会很高兴。

问题的重点是:我要问什么主题/计算机科学课程?因为老实说,我不知道。

由于我不知道这个主题叫什么,我实际上无法找到一本书或在线资源来了解这个主题,所以我有点卡住了。如果有人帮助我,我将永远感激不尽 =/

【问题讨论】:

【参考方案1】:

如果您不想花钱,可以通过here(PDF 链接)获得一本名为“计算机组织和设计基础”的好书。我还推荐微软出版社出版的 Charles Petzold 的“代码”。

【讨论】:

【参考方案2】:

Noam Nisan 和 Shimon Schocken 所著的上述书籍“计算系统的元素:从基本原理构建现代计算机”以整体方式解决了您提出的各种问题:从架构到虚拟机再到编译器到操作系统。

【讨论】:

【参考方案3】:

没有人在谈论模数的数学吗? 媒体信息学第一学期(我在第五),课程:数学:

10 % 3 = ?x % y = z

计算:

    10 / 3 = 3.33333 3.3333 舍入为 3 3 * 3 = 9 10 - 9 = 1

作为一个公式: 10 - (Math.round(10 / 3) * 3) = 1

带变量: x % y = x - (Math.round(x / y) * y)

理解二进制,你就会明白,每个数学运算都是基于加法的。

【讨论】:

【参考方案4】:

用于计算模数的实际机制可能会因语言而异,然后会因每种语言的实现而异。有一些关于算法here 的信息。

也许算法是您感兴趣的一般领域?

【讨论】:

【参考方案5】:

您应该首先研究汇编,然后然后进入编译器设计。如果您不了解汇编,您将完全迷失在编译器设计中。我个人只是从汇编开始,因为你的确切原因 - 我想了解我的代码在较低级别上做什么。

我找到了这个资源,很酷:http://en.wikibooks.org/wiki/X86_Disassembly

基本上,它是一本汇编书,解释了如何在汇编中执行高级代码的一些概念,并提供了一些示例,展示了编译器如何在汇编中生成函数等。

【讨论】:

+1 用于汇编,它绝对可以帮助您深入了解您的语言为您提供的所有这些漂亮的语法糖“背后”发生了什么。 我决定按照你的建议去做。我将学习汇编,然后,我将进入编译器设计。感谢您的建议。 更新:几个月过去了,进展顺利。为一种简单的语言编写一个简单的解释器。还没写编译器,但希望我能在明年左右这样做。 @ItzWarty:酷!感谢您的跟进。那么你决定走哪条路呢?您是否研究过汇编,或者您是否专注于词法分析/分析?您使用了哪些资源等? :) 两者=P。所以现在,我正在开发一个程序来将脚本解析为解析树,然后我们将步行/执行...在此之前,我学会了使用 nasm 和一些类似 Z80 的 asm [gameboy]...漂亮有趣的。解释器是用 c# 编写的,它只是解析类似 javascript 的语法。有大量优化要做,但我已经在 0.0002 秒内解析了 hello world >_>[它只是 1 行,类似 JS,再次]【参考方案6】:

听起来你好像在谈论编译器构造和语言设计。

可以实现异常的(最)通用的“CS 事物”可能是延续(在Scheme 中可以找到)。如果您还没有阅读过“计算机程序的结构和解释”(SICP,Web page here, including full text),可能值得快速通读一遍,它对编译器的构造进行了简单的介绍。

【讨论】:

【参考方案7】:

我认为您正在研究编译器如何将高级语言代码转换为机器指令。看看编译器设计。这是经典的book。

【讨论】:

哇!我认得封面!我知道我爸爸有那本书!当我还是个孩子的时候,我常常看这本书的封面,以为这是一本童话书。_. @Itz - +1 认为龙书是童话:) @Itz +1,感谢有一个拥有龙书的父亲。【参考方案8】:

我会说第一部分是计算机体系结构,而第二部分是编程语言。

如果您有兴趣进一步了解计算机如何执行程序,一些关于计算机体系结构的好书是:

The Elements of Computing Systems: Building a Modern Computer from First Principles, 作者:Noam Nisan 和 Shimon Schocken Structured Computer Organization,作者:Andrew Tanenbaum

我不知道该推荐什么来理解编程语言结构,例如捕获异常。可能是一本不错的编译器书籍。

特别是在您的第二个示例中,不同的编程语言的实现可能会有很大的不同。例如,在 Java 等虚拟机上运行的语言会使用虚拟机来保护它并抛出某些类型的异常,而在 C++ 中这会有所不同。

【讨论】:

+1 表示计算系统的元素。那本书太棒了!【参考方案9】:

第一部分可能被认为是计算机工程,但第二部分只是语言设计。

【讨论】:

以上是关于我想描述啥计算机科学主题?的主要内容,如果未能解决你的问题,请参考以下文章

在计算机科学环境中,“语义”一词是啥意思?

计算机科学中的术语多路复用是啥意思?

计算机科学与技术(软件开发Net方向或Java方向)是啥意思?

计算机科学数学[关闭]

计算机科学概论:计算机科学中的百科全书

计算机科学概论:计算机科学中的百科全书