一般来讲...没学过C\C++就跟编程文盲差不多...C\C++是基础,在这之上才能看很多.包括数据结构和算法(用汇编实在难以描述),或者学习其他编程语言.
让我难以理解的是,学习编译原理应该需要学习数据结构,但是楼主又没有学过C\C++,又是怎么学会数据结构进而理解编译原理??我很纳闷....楼主有无写过一个简单的编译器?纯汇编是很难写编译器的,在编译器的词法分析,语法分析,语义分析,中间代码等都基本用C\C++写,只有当要生成特定的CPU汇编指令的时候需要用汇编语言.
学习操作系统基本不需要过多编译原理的知识,只需要 汇编+C语言+数据结构和算法基础,基本就可以了.
附加一段:楼主好像对编译原理的理解有所偏差.编译原理主要是讲解编译器的构造,而汇编语言应该属于一种编程语言,和C\C++一样可以应用于很多场合.编译器原理就是如何把高级语言转换为低级语言的过程.
一般操作系统使用 汇编语言+C语言写成.(以下是Intel IA-32平台机器的一般开机过程)在计算机启动时,操作系统从汇编代码开始运行,因为这时处于实模式状态,也没有操作系统,因此首先启动BIOS程序,然后CPU通过编译好的汇编代码从实模式转入保护模式.接着逐步把PC的控制权交给操作系统内核,当内核启动后,由于有了操作系统的支持,此时的机器就可以通过高级语言编译好的代码(比如C语言)来管理PC的所有资源.因此,学习操作系统必须有汇编语言和C语言基础.不然例如进程调度和控制等这种核心问题是不可能看的懂的.
学过编译原理去看C/C++的一些你觉得莫名其妙的地方会知道为什么会这样,你能更好的理解C/C++为什么这么设计。
C语言很重要的,其实语言都是想用的,语言类的学习关键是练习,常写些程序调些程序也就会了。我觉得C没什么难的,我国二九考了92,我觉得最重要的就是要上机练习,自己写些程序
做的
不过其他的语法分析,状态转换应该不是什么难事
数学知识用的很少,好好听课,自己做个简单的编译器就算学会了
最基础的C语言学学`