C++入门(1):程序、编译器和操作系统

程序、编译器和操作系统

参考书目《C++ primer》《编译原理基础》

在开始任意一门语言的学习之前,很多人习惯于使用一个“软件”(如visual studio 2010),这个软件的功能是你可以把你的“hello world”程序写进去,点击编译,成功后运行,出现一个黑框,显示“hello world”。很多人把这个过程当成一个习惯,但可能没有想过,你写的代码和visual studio以及windows之间的关系。
但我觉得你还是需要简单了解它们之间的逻辑关系和简单的运行方式。此篇博客中,我将会简单的跟大家分享一下程序、编译器和操作系统之间的关系,不对原理做深入的说明,只是告诉你他们是如何一起工作的。这三个内容每一个都是很深的方向,如果你真的想要了解,可以参考《编译原理》及《计算机操作系统》。

程序(机器语言)

我们每天都在跟周围的人说话,使用的就是语言。很经典的一句话是:人有人的语言,机器有机器的语言。

机器的语言就是程序

人想要跟机器对话,让机器去做人想做的事情,那你要懂机器的语言是怎么说的,计算机的语言不就是0和1嘛(哭笑脸)。不过计算机刚刚问世的时候,确实是有人只用0和1进行编程的,很强大, 后来出现了汇编,算是计算机语言的一个很大的进步,但程序员还是需要按照机器指令的工作方式思考。后来次出现了C语言这些符合人类思维特征的语言,但这些语言具有很高的抽象程度,你本身的思维逻辑需要够强大,才能设计出好的机器语言。
看一段C++程序

int main()
{
    int a=0;
    int b=1;
    int sum=0;
    sum = a+b;
    cout<<"a+b= "<<sum<<endl;
    return 0;
}

能看得出来,其实我们已经可以很容易的理解到这段代码的含义,这就是程序的进步。
然而,上述这个程序计算机是不可能看懂的,为了能将人类思维写出来的程序“翻译”成机器能理解的程序,计算机领域的“翻译官”—-编译器(Compiler)被发明了,后边会详聊编译器。
总之,要学好编程,你首先得有做一个翻译的心理准备,而且你要具备强大的逻辑和抽象的思维。

编译器(编译器与IDE的关系)

说编译器之前,还需要补充一个关于编程语言的知识,很多人听说过编译器,但没有听说过解释器,其实这两个东西是需要在一起讨论一下的。
编译器的运行过程是,给一个源程序(程序员写的)—编译器编译—生成目标程序,目标程序—数据输入—程序运行输出结果。这里可以看出来源程序和目标程序是很独立的两个阶段。
解释器的运行过程是,源程序—翻译一段—执行一段。
打个比方,编译器就像翻译一本书,翻译完了,发给读者看就行了,写书的作者不需要在场;而解释器相当于同声传译,作者说一句,解释器翻译一句,同时还要有读者在场听。虽然这两种翻译方式不同,但需要注意的是,凡是可以采用编译方式的地方,几乎都可以采用解释的方式。
编程语言有的时候会根据翻译的方式不同分为编译型语言(如C/C++)解释型语言(如JAVA/C#),语言和语言各有优势,翻译的方式也各有优势。

说了这么半天,有人会问,我怎么从来没有感觉到编译器的存在,编译器在哪。其实很多新手习惯了使用上边说的“软件”,这种软件有个专业的叫法—IDE,集成开发环境。

visual studio 专业的集成开发环境

编译器作为其中的一个工具被集成在IDE中了,因此你可能感觉不到,但如果在windows控制台下用javac编译过java代码,或者你在linux的命令行下编译过程序,那个时候你就是直接使用了编译器。

javac一个java文件

操作系统

在提到一些编程语言的时候,比如Java,有人会说这是一个跨平台的语言,其实说白了就是跨计算机系统。
从我目前的理解来看,在编程语言运行在一台计算机上时,它的很多代码经过编译器之后是可以直接控制硬件进行相应的运算的,但是既然你是在这个计算机系统上运行的,你的输入和输出可能需要依赖操作系统(如windows下的图形界面,.net或mfc)。

所以说操作系统与程序的紧密程度要取决你的程序所要实现的功能,如果你是做UI的,那么你可能要深入了解windows系统的机制,如果你是做核心算法,可能你并不需要在操作系统上花费太多时间。

当然,具体问题还要具体分析,因为本身操作系统就是一门学问,如何能让你的程序更好的跑在系统上,需要你对他有足够的了解。

如有问题可留言

或发送邮件到:lifeliyan@163.com

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
原名《Turbo C/C++ for Windows 集成实验与学习环境》,现在已全面支持最新操作系统VISTA,它是从事一线教学的大学教师根据C/C++ 初学者的特点,量身定制的一个简单易用的 C/C++程序设计学习与实验软件(支持TC2/TC3、GCC、VC6四种编译器,没有使用日期限制)。与软件配套的《 C/C++程序设计教程(配有同步实验、流程控制语句动画演示、提供教程中所有程序实例、实验、作业中的源代码(全部用VC6编译器调试通过))》融入了作者多年的教学和学习经验、编程建议、编程感悟,新增读书笔记功能有利用户 记录教程中的重点、难点、学习心得体会,针对用户学习教程中遇到的问题开通了疑难问题解答论坛等,同时,为了便于C语言学习,加入C语言学习指导、入门程序实例、典型源程序、典型的函数算法,课程设计指导、课程设计源程序Visual C++6.0中英文编译错误信息同步显示功能(并配有60多种同步的语法错误程序实例、修改方法等)、 Turbo C2.0 中英文编译错误信息同步显示功能、Turbo C++3.0常见编译错误信息、C语言专业词汇的中英文对照、二级 C 语言的真题笔试试卷及答案与分析和上机模拟试题和详尽的答案与分析等大量的学习资源。另外 “编程日记” 功能可以让你记录你的 C 语言学习历程, “资料管理” 功能让你大量的下载资料不再难找。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gaosiy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值