Computer science 我想描述的是什么计算机科学主题?

Computer science 我想描述的是什么计算机科学主题?,computer-science,Computer Science,我一直在编程大约。。。6->8年,我开始意识到,当我做这样的事情时,我真的不知道在低水平上到底发生了什么 int i = j%348 问题是,我知道j%348的作用,它将j除以348,然后找到余数。我不知道的是电脑是怎么做到的 同样,我知道 try { blah(); }catch(Exception e){ blah2(); } 将调用blah,如果blah抛出,它将调用blah2。。。然而,我不知道计算机是如何做到这一点的,而不是错误。。。终止或终止执行 我认为为了让我在编程方面“更

我一直在编程大约。。。6->8年,我开始意识到,当我做这样的事情时,我真的不知道在低水平上到底发生了什么

int i = j%348
问题是,我知道j%348的作用,它将j除以348,然后找到余数。我不知道的是电脑是怎么做到的

同样,我知道

try
{
 blah();
}catch(Exception e){
 blah2();
}
将调用
blah
,如果blah抛出,它将调用
blah2
。。。然而,我不知道计算机是如何做到这一点的,而不是错误。。。终止或终止执行

我认为为了让我在编程方面“更好”,我应该知道我的代码真正在做什么。[这可能也会帮助我优化,并且……呃……不要做愚蠢的事情]

我想我所要求的可能是大学里教的一些很重要的东西,但说实话,如果我能学一点,我会很高兴的

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


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

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

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

如果您有兴趣了解更多有关计算机如何执行程序的知识,请参阅一些有关计算机体系结构的好书:

  • ,, 作者:诺姆·尼桑和西蒙·肖肯
  • ,作者:安德鲁·坦恩鲍姆
我不确定应该推荐什么来理解编程语言构造,比如捕获异常。可能是一本很好的编译书


特别是在第二个示例中,不同的编程语言的实现可能非常不同。例如,运行在java等虚拟机上的语言将有虚拟机来保护它并抛出某些类型的异常,而C++中的处理方式则不同。

我想你正在研究编译器如何将高级语言代码翻译成机器指令。看看编译器设计。这是一部经典之作。

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


可以实现异常的(最)通用的“CS事物”可能是continuations(如Scheme中所示)。如果你还没有读过“计算机程序的结构和解释”(SICP),也许值得一读,它只涉及到编译器的构造。

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

我找到了这个资源,非常酷:


基本上,这是一本汇编手册,解释了汇编中如何执行高级代码的一些概念,并举例说明编译器如何在汇编中生成函数等。

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


也许算法是你感兴趣的领域?

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

10%3=?
x%y=z

计算:

  • 10/3=3.33333
  • 3.3333四舍五入为3
  • 3*3=9
  • 10-9=1
  • 作为一个公式:
    10-(数学四舍五入(10/3)*3)=1

    带变量:
    x%y=x-(数学四舍五入(x/y)*y)


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

    上面提到的书,“计算系统的元素:从第一原理构建现代计算机”,由诺姆·尼桑(Noam Nisan)和西蒙·肖肯(Shimon Schocken)撰写,以整体的方式解决您提出的问题类型:从体系结构到虚拟机到编译器再到操作系统。

    如果您不想花钱,有一本很棒的书叫做《计算机组织与设计基础》(PDF链接)。我还推荐Charles Petzold的《代码》,由微软出版社出版。

    WOAH!我认出了封面!我知道我爸爸有那本书!当我还是个孩子的时候,我常常看着这本书的封面,认为它是一本童话书。uz-+1因为我认为这本龙书是一个童话:)@Itz+1因为有一个拥有龙书的父亲。+1因为组装,它肯定会帮助你洞察你的语言提供给你的那些漂亮的语法糖背后发生了什么。我决定按照你的建议去做。我将学习汇编,然后,我将进入编译器设计。谢谢你的建议。更新:几个月后,一切都很顺利。为一种简单的语言编写一个简单的解释器。还没有编写编译器,但希望我能在明年左右完成。@ItzWarty:酷!谢谢你的跟进。那么你决定走哪条路线呢?您是否研究过汇编,或者是否专注于词法分析/解析?您使用了哪些资源等?:)现在,我正在编写一个程序,将一个脚本解析成一个解析树,然后我们将遍历/执行它。。。在此之前,我学会了与nasm和一些Z80如asm[游戏男孩]。。。很有趣。解释器是用c#编写的,它只是解析类似javascript的语法。还有大量的优化工作要做,但我已经在0.0002秒内解析了hello world>\u>[它只有一行,JS