什么是编译器_什么是集成开发环境

我们平时所说的程序,是指双击后就可以直接运行的程序,这样的程序被称为可执行程序(executable program)。在 windows 下,可执行程序的后缀有 .exe 和 .com(其中 .exe 比较常见);在类 unix 系统(linux、mac os 等)下,可执行程序没有特定的后缀,系统根据文件的头部信息来判断是否是可执行程序。
可执行程序的内部是一系列计算机指令和数据的集合,它们都是二进制形式的,cpu 可以直接识别,毫无障碍;但是对于程序员,它们非常晦涩,难以记忆和使用。
例如,在屏幕上输出“vip会员”,c语言的写法为:
puts(“vip会员”);
二进制的写法为:
你感受一下,直接使用二进制是不是想撞墙,是不是受到一吨重的伤害?
在计算机发展的初期,程序员就是使用这样的二进制指令来编写程序的,那个拓荒的年代还没有编程语言。
直接使用二进制指令编程对程序员来说简直是噩梦,尤其是当程序比较大的时候,不但编写麻烦,需要频繁查询指令手册,而且除错会异常苦恼,要直接面对一堆二进制数据,让人眼花缭乱。另外,用二进制指令编程步骤繁琐,要考虑各种边界情况和底层问题,开发效率十分低下。
这就倒逼程序员开发出了编程语言,提高自己的生产力,例如汇编、c语言、c++、java、python、go语言等,都是在逐步提高开发效率。至此,编程终于不再是只有极客能做的事情了,不了解计算机的读者经过一定的训练也可以编写出有模有样的程序。
什么是编译器
c语言代码由固定的词汇按照固定的格式组织起来,简单直观,程序员容易识别和理解,但是对于cpu,c语言代码就是天书,根本不认识,cpu只认识几百个二进制形式的指令。这就需要一个工具,将c语言代码转换成cpu能够识别的二进制指令,也就是将代码加工成 .exe 程序;这个工具是一个特殊的软件,叫做编译器(compiler)。
编译器能够识别代码中的词汇、句子以及各种特定的格式,并将他们转换成计算机能够识别的二进制形式,这个过程称为编译(compile)。
编译也可以理解为“翻译”,类似于将中文翻译成英文、将英文翻译成象形文字,它是一个复杂的过程,大致包括词法分析、语法分析、语义分析、性能优化、生成可执行文件五个步骤,期间涉及到复杂的算法和硬件架构。对于学计算机或者软件的大学生,“编译原理”是一门专业课程,有兴趣的读者请自行阅读《编译原理》一书,这里我们不再展开讲解。
注意:不了解编译原理并不影响我们学习c语言,我也不建议初学者去钻研编译原理,贪多嚼不烂,不要把自己绕进去。
c语言的编译器有很多种,不同的平台下有不同的编译器,例如:
windows 下常用的是微软编译器(cl.exr),它被集成在 visual studio 或 visual c++ 中,一般不单独使用;
linux 下常用的是 gun 组织开发的 gcc,很多 linux 发行版都自带 gcc;
mac 下常用的是 llvm/clang,它被集成在 xcode 中(xcode 以前集成的是 gcc,后来由于 gcc 的不配合才改为 llvm/clang,llvm/clang 的性能比 gcc 更加强大)。
你的代码语法正确与否,编译器说了才算,我们学习c语言,从某种意义上说就是学习如何使用编译器,让编译器生成可执行程序(例如 windows 下的 .exe 程序)。
编译器可以 100% 保证你的代码从语法上讲是正确的,因为哪怕有一点小小的错误,编译也不能通过,编译器会告诉你哪里错了,便于你的更改。
什么是集成开发环境
实际开发中,除了编译器是必须的工具,我们往往还需要很多其他辅助软件,例如:
编辑器:用来编写代码,并且给代码着色,以方便阅读;
代码提示器:输入部分代码,即可提示全部代码,加速代码的编写过程;
调试器:观察程序的每一个运行步骤,发现程序的逻辑错误;
项目管理工具:对程序涉及到的所有资源进行管理,包括源文件、图片、视频、第三方库等;
漂亮的界面:各种按钮、面板、菜单、窗口等控件整齐排布,操作更方便。
这些工具通常被打包在一起,统一发布和安装,例如 visual studio、dev c++、xcode、visual c++ 6.0、c-free、code::blocks 等,它们统称为集成开发环境(ide,integrated development environment)。
集成开发环境就是一系列开发工具的组合套装。这就好比台式机,一个台式机的核心部件是主机,有了主机就能独立工作了,但是我们在购买台式机时,往往还要附带上显示器、键盘、鼠标、u盘、摄像头等外围设备,因为只有主机太不方便了,必须有外设才能玩的爽。
集成开发环境也是这个道理,只有编译器不方便,所以还要增加其他的辅助工具。
选择哪种集成开发环境
c语言的集成开发环境有很多种,尤其是 windows 下,多如牛毛,初学者往往不知道该如何选择。
当然,你不用全部都了解,如果你使用 windows,那么请忽略 mac os 和 linux;如果你使用 mac os,那么请忽略 windows 和 linux。

dfrobot路虎5履带底盘简介
借助技术同时拥有原型和仿真两种选择
北京大学综述量子材料超快光学特性研究进展
美格信-骨传导成品耳机测试
电弧炉炼钢供电系统的无功动态补偿
什么是编译器_什么是集成开发环境
XR应用越来越广 预计2024年的广告收入将达到110亿美元
Spring认证_什么是Spring GraphQL?
分布式光伏电站安装防孤岛保护装置的必要性
物联网应用带动低功耗物联网技术的发展
精装房没留消毒柜位置?卡萨帝厨房完成安装后用户马上再下单
嵌入式实现OTA升级的常见技术
Vitis HLS的基础知识科普
可剥离的阻焊膜
TI升压和升降压直流-直流变换器助力无线充电设计
西门子S7-1500Modbus TCP通信
无处不在的无线智能:6G网络的关键驱动与研究挑战
芜湖市推电子产业项目扶持新政策,单个项目补贴最高达2000万
天津力神方型锂离子电池
STC12C2052AD单片机控制的改进型调压电路