❶ c++各种编译器有什么不同,应该不存在哪种编译器最好的说法吧是不是只要学会用一种编译器就可以了
gcc过去是指gnu组织的c语言编译器,
现在gcc包括gcc命令在内都是gnu的各种语言的编译器集。
在类linux环境输入gcc可以指定编译各种语言。c/c++,objc,ada,pascal,d,fortran等等
g++是专指gnu c++的编译器,属于gcc的一个编译器。
而且要指出g++, dev c++, codeblocks, mingw,等等其实都是在用gcc编译器中c/c++的部分。
各适合做什么?
vc++在win下优势最强,在x86指令下性能优化、标准支持是最好的之一,性能仅次于intel cc,但综合性能最强。
borland c++,现在已经被c++ builder 2012取代了。这个版本的优势也是同vc++类似,在win加x86的cpu下。特别之处是丰富的组件和快捷向导方案,自动生成代码很多。做常用的网络、数据库,桌面应用,很多时候都不用敲什么代码,直接鼠标一阵拖拉就出来了,适合做又快又脏的应用。性能优化不如vc++
gcc是开源软件的核心组件,linux/unix,全靠它编译,支持几乎世上所有的32位以上芯片,什么手机、龙芯、pc,power pc, arms,大设备小设备都靠它。最朴素,但性能强大。适用于任何需要计算的场合。经过多个巨头砸巨资优化过的编译器,性能是一流的。移植性一流。标准化程度也是一流。就是开发工具—打字码字的工具IDE,没有像前2个那样商业化,。
❷ 下面是关于解释程序和编译程序的叙述,正确的是()
C、D
解释程序是一种语言处理程序,在词法、语法和语义分析方面与编译程序的工作原理基本相同,但在运行用户程序时,它直接执行源程序或源程序的内部形式(中间代码)。因此,解释程序并不产生目标程序,这是它和编译程序的主要区别。
解释程序它逐条地取出源程序中的语句,边解释,边执行。编译的话就是只要编译一次,下次再执行就不用再解释了。
(2)关于编译器的说法中扩展阅读:
解释程序的工作方式非常适于人通过终端设备与计算机会话,如在终端上打一条命令或语句,解释程序就立即将此语句解释成一条或几条指令并提交硬件立即执行且将执行结果反映到终端,从终端把命令打入后,就能立即得到计算结果。
这的确是很方便的,很适合于一些小型机的计算问题。但解释程序执行速度很慢,例如源程序中出现循环,则解释程序也重复地解释并提交执行这一组语句,这就造成很大浪费。
对源程序边解释翻译成机器代码边执行的高级语言程序。所以,解释程序的功能是:解释执行高级语言程序。由于它的方便性和交互性较好,早期一些高级语言采用这种方式,如BASIC、dBASE。但它的弱点是运行效率低,程序的运行依赖于开发环境,不能直接在操作系统下运行。
网络-解释程序
❸ 12. 编译程序和解释程序同属于语言处理程序,下列关于它们的叙述中正确的是____________ A. 只有解释程序
b呗 给你详细解释一下
A、解释程序所谓解释程序是高级语言翻译程序的一种,它将源语言(如BASIC)书写的源程序作为输入,解释一句后就提交计算机执行一句,并不形成目标程序。就像外语翻译中的“口译”一样,说一句翻一句,不产生全文的翻译文本。这种工作方式非常适合于人通过终端设备与计算机会话,如在终端上打一条命令或语句,解释程序就立即将此语句解释成一条或几条指令并提交硬件立即执行且将执行结果反映到终端,从终端把命令打入后,就能立即得到计算结果。这的确是很方便的,很适合于一些小型机的计算问题。但解释程序执行速度很慢,例如源程序中出现循环,则解释程序也重复地解释并提交执行这一组语句,这就造成很大浪费。B、编译程序这是一类很重要的语言处理程序,它把高级语言(如FORTRAN、COBOL、Pascal、C等)源程序作为输入,进行翻译转换,产生出机器语言的目标程序,然后再让计算机去执行这个目标程序,得到计算结果。编译程序工作时,先分析,后综合,从而得到目标程序。所谓分析,是指词法分析和语法分析;所谓综合是指代码优化,存储分配和代码生成。为了完成这些分析综合任务,编译程序采用对源程序进行多次扫描的办法,每次扫描集中完成一项或几项任务,也有一项任务分散到几次扫描去完成的。下面举一个四遍扫描的例子:第一遍扫描做词法分析;第二遍扫描做语法分析;第三遍扫描做代码优化和存储分配;第四遍扫描做代码生成。值得一提的是,大多数的编译程序直接产生机器语言的目标代码,形成可执行的目标文件,但也有的编译程序则先产生汇编语言一级的符号代码文件,然后再调用汇编程序进行翻译加工处理,最后产生可执行的机器语言目标文件。在实际应用中,对于需要经常使用的有大量计算的大型题目,采用招待速度较快的编译型的高级语言较好,虽然编译过程本身较为复杂,但一旦形成目标文件,以后可多次使用。相反,对于小型题目或计算简单不太费机时的题目,则多选用解释型的会话式高级语言,如BASIC,这样可以大大缩短编程及调试的时间。
❹ 下列是关于解释程序和编译程序的叙述,正确的是( )
B编译程序能产生目标程序,而解释程序不能
❺ 关于编译器的产生
编译器本身也是程序,通常也是C语言写的,世界上第一个编译器的部分内容肯定只能用机器码写。。。但机器码建立的一些文本处理功后,自然就用这个功能处理宏文本来代替机器码。。。当然第一台计算机能用一种文本语言来代替机器码,自然可以用这个简单的编译器去编译复杂的编译器,一个复杂的去编译更复杂的。。。。
当然最终结果就是C语言编译器本身也会是C语言写的,区别只是PC机的C语言编译器,去编译一个非PC机上运行的程序的
程序的编译器。。。。即使编译器编译编译器。。。 比如java编译器是C/C++写的。。。还有现在的某款芯片的汇编编译器,本身会是C/c++语言写的,因为编译器也是程序,当然可以用C语言编译器去编译一个汇编编译器。。。 只就是锤子可以做机器,当然机器也可以生产锤子。。。
❻ 有以下代码,关于代码的编译,正确的说法是( )
选A呗~
❼ 关于编译器
看来你还没入门哦,就想写一个操作系统了
嗯!有志不错,相信有一天你会成功的。
一般地说写一个OS你要会一门高级语言(如C++)一门低级语言(如汇编asm)高级语言用来做界面这方面比较容易一点。而低级用来做低层驱动这方面是高级语言所不能相比的。
当然C语言介于两者之间,也能对硬件编程,但C是16位的程序对于图形处理不是很好,我个人建议你低级语言用汇编,对硬件编程时没有那么抽象,想传送的数据很清楚知道来去的方面,但要对硬件这方面的知道要了解。还有就是像要懂操作系统原理还要知道怎么去实践这些原理这些才是重要的,选择语言不是难事,给你一个组合吧(C和asm)虽然不能做出XP这种效果来,但这个图形操作系统还是很的,就看你自己的功夫了。
对于你补充的问题呐,程序的位数好像指CPU的寄存器的位数吧,在386以前的CPU好像一条指令大是16位的(当然有的指令没这么大,有8位的)在386后的新加的指令中才有32位的,为了使386以后的CPU能使用以前的指令,规定在16位指令加上不同的指令前缀,形成32位指令形式,这里的32指令就是32位程序的指令,而你说的64位程序。。在我所学的指令里没有64位的指令,但以以前的指令在在64位上运行,也要兼容的问题吧!之所以有64位的CPU所来是指CPU一次处理数据的位数,比如说32的CPU一次能处理32位的数据,而要处理64位的就要分两次从内存中取数据而占用总线,这样会使CPU有空闲,而64位的CPU只要一次就行了,所以你理解错了,
最后一个问题是人家生在那个年代,和人家有远见,成绩不好并不代表实践不好,理论和实践是两回事,理论在好不会实践也是废话,所以人家敢做,在实践中学习,在加上机遇。这个事不是你我能说清的,只能说说个人见解罢了。。
对于计算机硬件的知道只能告诉你这么之了,,大家相互学习,共同进步吧!!
如果你想找资料的话!你把你的邮箱留下,我这有硬件,操作系统,指令这些用于写操作的资料!!
❽ 叙述编译器和解释器的相同点和不同点
编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快;
而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的.
这是因为计算机不能直接认识并执行我们写的语句,它只能认识机器语言(是二进制的形式)
❾ delphi编译器效率高到底是指什么
所谓delphi编译器效率高,一般指的是以下三方面:
1、编译连接时间短,这一点是其他任何编译器都无法相比的(一般来说,VC, VB编译过程所用的时间是Delphi的几倍),原因很简单:Pascal语法限制严格,用户必须规范地编码,省去了编译器的很多麻烦。
2、编译出的程序执行速度快,产生的代码长度短。这一点比VB强,但和VC基本一样,谁也没有优势。不过很多人有误解,以为Delphi类库庞大复杂,加一个控件就要把整个一个源文件全部加进来,代码长度太大,效率太差。其实真实情况是,拥有众多VCL控件类库,是Delphi的一个独特之处,VC的MFC库无法与之相比——MFC有的底层简单封装的类,VCL库都有,但VCL有的上层组件,MFC却根本没有。使用VCL上层应用控件后,代码长度的确比VC大,不过VC却没有这方面的选择,而VC所用的从底层一砖一瓦地编码的方式,Delphi完全支持,而且绝对没任何劣势,代码长度也不长(VC的语法复杂,按C程序员一般习惯做的话,代码长的反而会是VC)。产生误解的原因,是多数Delphi程序员是应用级的,而VC程序员是底层些的,应用程序员大多不太懂得底层代码的编写,只会搬控件、响应事件,以为底层的东西Delphi做不来。
3、对应用级的程序开发周期短——这也就是Borland一贯吹捧的“快速开发工具”的含义。正因为VCL的存在(封装了很多界面组件以及通讯、数据库、internet应用等很多后台功能),对高层应用不再需要一砖一瓦地受累,使开发周期缩短了很多倍。
单纯从技术角度说,编译器效率应该指编译出的代码是否短小/运行速度是否快,以及是否能用较少的源代码高效地实现复杂功能。前一方面Delphi并不比VC差,而比VB强,但并非一骑绝尘;后一方面则的确有一骑绝尘之象。
Delphi的致命缺点,其实不是技术——技术它是领先的,毫无疑问,问题是市场策略和公司实力(Borland只是家小公司),微软“携操作系统以令诸侯”,误导了众多软件开发公司,让它们以为微软的才正宗和好用,造成了事实上的VB,VC用户群远比Borland的庞大,源代码数量也一样是C/C++远远占优,而Borland的C++ Builder却开发得太晚难以形成市场优势。
概括来说,如果你要开发上层应用为主的程序,特别是数据库方面的程序,那么Delphi能让你省不少时间;而若开发底层些的软件,为能有更多相关代码可以参考利用,为能容易地招聘到更合适的程序员,以及为了代码维护方便,都适合用C/C++去做,当然,C++ Builder从技术上说是个不错的选择,只是用户群还太小。
❿ 我们经常看到书上面说的 某某变量的内存单元是编译器在编译时候分配的 是什么意思
所谓在编译期间分配空间指的是静态分配空间(相对于用new动态申请空间),如全局变量或静态变量(包括一些复杂类型的常量),它们所需要的空间大小可以
明确计算出来,并且不会再改变,因此它们可以直接存放在可执行文件的特定的节里(而且包含初始化的值),程序运行时也是直接将这个节加载到特定的段中,不
必在程序运行期间用额外的代码来产生这些变量。
其实在运行期间再看“变量”这个概念就不再具备编译期间那么多的属性了(诸如名称,类型,作用
域,生存期等等),对应的只是一块内存(只有首址和大小),
所以在运行期间动态申请的空间,是需要额外的代码维护,以确保不同变量不会混用内存。比如写new表示有一块内存已经被占用了,其它变量就不能再用它了;
写delete表示这块内存自由了,可以被其它变量使用了。(通常我们都是通过变量来使用内存的,就编码而言变量是给内存块起了个名字,用以区分彼此)
内存申请和释放时机很重要,过早会丢失数据,过迟会耗费内存。特定情况下编译器可以帮我们完成这项复杂的工作(增加额外的代码维护内存空间,实
现申请和释 放)。从这个意义上讲,局部自动变量也是由编译器负责分配空间的。进一步讲,内存管理用到了我们常常挂在嘴边的堆和栈这两种数据结构。
最后对于“编译器分配空间”这种不严谨的说法,你可以理解成编译期间它为你规划好了这些变量的内存使用方案,这个方案写到可执行文件里面了(该文件中包含若干并非出自你大脑衍生的代码),直到程序运行时才真正拿出来执行。