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

War*_*rty 18 computer-science

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

int i = j%348
Run Code Online (Sandbox Code Playgroud)

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

同样,我知道

try
{
 blah();
}catch(Exception e){
 blah2();
}
Run Code Online (Sandbox Code Playgroud)

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

我认为为了让我在编程方面"更好",我应该知道我的代码到底在做什么.[这可能也会帮助我优化和...错误...不做蠢事]

我认为我所要求的可能是在大学或其他什么地方教授的东西,但说实话,如果我能学到一点,我会很高兴.

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

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

Avi*_*Avi 12

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

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

我不确定应该推荐什么来理解编程语言结构,例如捕获异常.可能是一本好的编译器书.

特别是在您的第二个示例中,不同的编程语言可能会以非常不同的方 例如,在诸如Java之类的虚拟机上运行的语言将使虚拟机保护它并抛出某些类型的异常,而在C++中,这将以不同的方式处理.


Cam*_*Cam 7

您应 首先查看汇编,然后进入编译器设计.如果您不知道汇编,那么编译器设计就会完全丢失.我个人刚刚开始组装,因为你确切的原因 - 我想了解我的代码在较低级别做了什么.

我找到了这个非常酷的资源:http://en.wikibooks.org/wiki/X86_Disassembly

基本上它是一本汇编书,解释了如何在汇编中执行更高级代码的一些概念,并且有一些示例说明了编译器如何在汇编中生成函数等.

  • 更新:几个月后,它进展顺利.为简单的语言编写一个简单的解释器.还没有编写编译器,但希望我能在明年左右这样做. (3认同)