编辑器与编译器有什么区别?有什么好用的编辑器?
编辑器
编辑器的概念在360百科上是这么写道:
编辑器时软件程序,一般是指用来修改电脑档案的编写软件,但也有人称 PE2、HE4(汉书)……等文书软件为编辑器。常见的编辑器有文本编辑器、网页编辑器、源程序编辑器、图像编辑器,声音编辑器,视频编辑器等。
编辑器其实就是对一个文件、一个视频、一串数字等进行编辑或职责再次编辑的工具。在这里主要讲的是代码编辑器,它可以提供方便的开发环境,你可以用他们来编写代码,查看源文件和文档等。
编译器
编译器的概念在百度百科上是这么写道:
编译器就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序。
区别
总的来看,对于一门编程语言,你可以用任何一个文字编辑软件编辑,代码编辑器多了很多功能,如实现语法高亮等。代码本质上都是一个不同格式的纯文本,如C语言.c,c++语言的.cpp,python的.py等,这些都需要通过编译器编译之后才能成为目标程序。
简单来说,编辑器是用来写代码的,而编译器就是对编写的高级语言代码翻译成相对低级语言的一段指令或者程序。
编辑器推荐
下面简单的介绍几款最常用的代码编辑器:
Notepad++编辑器
Notepad++是是Windows操作系统下的一套文本编辑器,是时下众多码农所青睐的编辑器之一,最最重要的是它是免费的!
下载链接(点击即可前往官网下载页面)
Sublime Text编辑器
Sublime Text具有非常漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。它主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。它同时支持Windows、Linux、Mac OS X等操作系统。Sublime Text虽然是个收费软件,但可以无限期使用,只是会有激活提示弹窗。
下载链接(点击即可前往官网下载页面)
源代码文件、可执行文件、“xxx.sln”、项目文件、文本文件
源代码文件
源代码(source code),也称源程序。它是指一系列人类可读的计算机语言指令。
可执行文件
可执行文件(executable file),指的是可以由操作系统进行加载执行的文件。当然在不同的操作系统环境下,可执行程序的呈现方式不一样。如在windows操作系统下,可执行程序可以是 .exe文件 .sys文件等类型文件。
sln文件
sln(Solution) 是在开发环境中使用的解决方案文件。通过为环境提供对项目、项目项和解决方案项在磁盘上位置的引用,可将它们组织到解决方案中。
项目文件
项目文件本质就是个容器。当我们用VS创建一个新项目时,会生成一个项目文件夹。项目文件夹还包括其它文件夹,它们用来存储编译及链接项目时所产生的输出。
文本文件
文本文件是一种由若干行字符构成的计算机文件。文本文件存在于计算机文件系统中。通常,通过在文本文件最后一行后放置文件结束标志来指明文件的结束。
文本文件是指一种容器,而纯文本是指一种内容。文本文件可以包含纯文本。
一般来说,计算机文件可以分为两类:文本文件和二进制文件。
IDE与编辑器、编译器、调试器等有什么关系?
IDE
集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,包含代码编辑器、编译器、调试器等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一系列的开发软件服务。
我们常用的IDE有 Visual Stdio、Dev C++、Eclipse。
调试器
调试器(DeBugger)是作为软件维护与错误修正的一个最重要、最直接,也是必不可少的一种机制。
关系
通过对IDE、编辑器、编译器和调试器的定义,我们可以得出下面这个式子:
即IDE是集辑器、编译器和调试器为一体甚至功能更强大的应用程序
在Visual Studio中,按一下ctrl+F5就可以“直接运行”.c或.cpp文件。原理是什么?中间经历了什么步骤?实际上执行了什么命令?使用了g++、gcc这两个命令吗?
原理
所有的IDE本质上都是对源文件做编译、连接接、生成可执行程序,然后进行执行而已。他实则就是对命令行编程,只不过是通过一些可视化界面和底层架构将它隐藏掉。
步骤
编译
它包含四个阶段:
- 预处理 :由预编译得到的信息与程序其他部分一起,组成一个完整的、可以用来正式编译的源程序
- 编译:对源程序进行检查,如果存在语法错误,则报错;如果不存在语法错误,则将源程序转换成汇编语言
- 汇编:由汇编生成的文件转换为二进制目标文件(格式为:.obj)
- 链接:将目标文件与函数库连接成一个整体,生成计算机可执行的目标程序(格式为:.exe)。
运行
将可执行文件.exe输入到计算机,运行,得到结果。
整个执行过程中是有用到gcc和g++这两个命令的,在编译过程中,其实则是g++调用gcc来完成编译步骤的1到三的。由于gcc无法完成库的链接,所以编译的步骤四则是由g++自己完成的。
g++、gcc这两个命令有啥区别?
g++是GNU C++ Complier (c++编译器)
gcc是GNU C Complier (c编译器)
但并不能认为gcc只能编译c文件,g++只能编译cpp文件,实则两者都可以编译c或者cpp文件。
上述有提到,gcc无法完成库的链接,所以链接用了g++,但不意味着编译只能使用gcc,链接只能使用g++。编译用gcc或g++都可以,而链接可以用g++或者gcc-lstdc++命令。
命令行编译:
-x language filename //设定文件所使用的语言,使后缀名无效,对以后的多个有效。
例:
gcc -x cpp hello_word.pig
即可以将c++程序文件hello_world的后缀名修改成.pig。
-c filename //只激活预处理,编译,和汇编,也就是他只把程序做成obj文件
如:
gcc -c hello.c
他将生成.o的obj文件。