C++基础(1)--输入输出与命名空间

复习一下基础知识。主要内容是C++的输入输出和命名空间。首先,了解下C、C++、C#等语言的区别,下面引用了一些知乎上的回答:回答一:C语言:C语言诞生得非常早,当时人们普遍还习惯用汇编语言编写软件,而且没有什么统一,通用的操作系统,基本上软件都是从0开始写的。C语言的目标就是比汇编方便易用,同时不要损失汇编的表达能力。所以C语言可以看成是“高级的汇编”语言。C语言的源代码
摘要由CSDN通过智能技术生成

复习一下基础知识。主要内容是C++的输入输出和命名空间。

首先,了解下C、C++、C#等语言的区别,下面引用了一些知乎上的回答:

回答一:

C语言:C语言诞生得非常早,当时人们普遍还习惯用汇编语言编写软件,而且没有什么统一,通用的操作系统,基本上软件都是从0开始写的。C语言的目标就是比汇编方便易用,同时不要损失汇编的表达能力。所以C语言可以看成是“高级的汇编”语言。C语言的源代码基本上可以非常容易地对应到汇编代码,而且可以不需要什么运行时环境的支持。C的特点,简单容易编译,灵活贴近底层。所以一直到现在,一些需要直接和硬件打交道的软件都还是用C语言写的,比如(但不限于)Linux Kernel和一些嵌入式领域。

C++语言:C++早期是基于C的,C++早期的编译方法是将C++的代码编译成C代码然后再调用C的编译器来生成机器码。C++的目标是提高编程人员的生产率,哪怕代价是增加编译器的复杂度。而提高编程人员生产率的方法有如下几种:提高抽象层次,支持模块化编程,模块内紧耦合,模块间松耦合,自动化的代码生成等等,这些在C++中都有体现(“有体现”不是说只有C++能做这些,理论上C++能做的事情C和汇编都能做,“有体现”是指C++里面你可以更直接,更自然地做到这些)。面向对象只是C++的一部分,现代的C++的目标是支持多种编程范型,同时并不会离硬件太远。所以C++是非常适合写一些基础架构级软件的,比如编译器,GUI库等等

C#以及.net框架。当进入21世纪的时候,Java的成功已经变成了铁一样的事实。背后的思潮就是managed code的崛起,与之对应的就是C/C++这种native code的衰落。当计算机的性能越来越好,但是好的码农却越来越少,然而对代码的需求却越来越高的时候,业界的选择只剩下一个:运行性能换开发效率,降低从新手到一般可接受水平的曲线。C#就是微软想要复制Java的成功。C#的特点就是:抽象层次高且基本只有一种(面向对象的),运行时支持丰富(垃圾回收等),类库丰富。所以它就是好学,易用,同时兼顾运行效率,尽量优化。说起这个,并不是说越高级的语言就越慢,运行时性能跟很多东西有关。

 

回答二:

C语言:它主要解决的问题是,不同机器平台上的汇编语言指令,功能相似但写法不一样。所以,C语言的发明者的想法是,我只要把这些不同的汇编语言的共同点提取出来,用一种相同的表达方式来描述这些共同点,那么程序只需要写一遍,就可以在不同的机器上去编译了。于是C语言大部分的工作是在汇编语言的层面上做抽象。(代表作:CURL 和 openssl)。

C++:它主要想解决的问题是,不同操作系统上的 API 功能相似但是形式不同;这些功能相似的代码很难用同一种形式的 C语言表达出来(所以要有面向对象和模版),硬要用C的话对软件工程组织的挑战太大。所以,C++发明者的想法是,我只要捏合一些规则,使得基于不同OS的但功能相同的代码能够以同一种形式写出来。于是现在我们用 C++ 的话可以比较容易地写出跨平台可编译的用户软件项目。较好体现上述思路的 C++ 作品,有 asio,尽管并不觉得它比 libev 或者 libuv 好,但是最能体现 C++ 的思维方式。超过这种复杂度的工程,用 C++ 来做的话很勉强了。

C#(以及很多机遇VM的编程语言,例如 Java):它们主要想解决的问题是,不同平台上的底层细节很多时候并不是最需要关心的内容,主要关心的是多机器上运行的同一款软件应该如何组织和实现,甚至这些机器之间的协作。所以,C# (或者Java) 发明者的想法是,我只要提取出图灵机的基本共同点(于是造出 VM),让写出来的程序都是基于这些共同点(于是发明了 IR 或者 Java byte code),让实际部署的时候再变成实际环境的二进制代码(通过 JIT 技术),那么成员就可以不必关心程序运行的细节,专心在软件的高级逻辑上。如果要选一个最能体现上述思路的作品,我会选 LinqToDb,目前这个作品功能还很弱甚至还不为众知,但是它的基本思想(将运算逻辑传递到实际运算的地点再执行)以及发展基础(C#, Linq 以及CLR)都是非常完备的。

 

回答三:

C和C++的关系:就像是win98跟winXP的关系。C++是在C的基础上增加了新的理论,玩出了新的花样。所以叫C加加。

C和C++的区别:

C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。

C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。 所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”。


C与C++的最大区别:在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”,而就语言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,错!算法是程序设计的基础,好的设计如果没有好的算法,一样不行。而且,“C加上好的设计”也能写出非常好的东西。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值