c语言的设计和演化
C语言编程,顾名思义,就是用C语言来进行计算机编程工作。C语言是国际上广泛流行的,很有发展前途的计算机高级语言.它适合作为系统描述语言,即可用来编写系统软件,也可用来编写应用软件.
B. c++语言有哪些特点
优点
· C++设计成静态类型、和C同样高效且可移植的多用途程序设计语言。
· C++设计直接的和广泛的支持多种程序设计风格(程序化程序设计、资料抽象化、面向对象程序设计、泛型程序设计)。
· C++设计无需复杂的程序设计环境。
C++语言灵活,运算符的数据结构丰富、具有结构化控制语句、程序执行效率高,而且同时具有高级语言与汇编语言的优点,与其它语言相比 ,可以直接访问物理地址,与汇编语言相比又具有良好的可读性和可移植性。
总得来说,C++语言的主要特点表现在两个方面,一是尽量兼容C,二是支持面向对象的方法。它操持了C的简洁、高效的接近汇编语言等特点,对C的类型系统进行了改革的扩充,因此C++比C更安全,C++的编译系统能检查出更多的类型错误。另外,由于C语言的广泛使用,因而极大的促进了C++的普及和推广。
C++语言最有意义的方面是支持面向对象的特征。虽然与C的兼容使得C++具有双重特点,但他在概念上完全与C不同,更具面向对象的特征。
出于保证语言的简洁和运行高效等方面的考虑,C++的很多特性都是以库(如STL)或其他的形式提供的,而没有直接添加到语言本身里。关于此类话题,Bjarne Stroustrup的《C++语言的设计和演化》(1994)里做了详尽的陈述。
C++引入了面向对象的概念,使得开发人机交互类型的应用程序更为简单、快捷。很多优秀的程序框架包括Boost、Qt、MFC、OWL、wxWidgets、WTL就是使用的C++。
缺点
C++由于语言本身复杂。C++的编译系统受到C++的复杂性的影响,非常难于编写,即使能够使用的编译器如果存在问题,可能难于被发现。
由于本身的复杂性,复杂的C++程序的正确性相当难于保证。
C. 如何能将c语言学好,学了一个学期了。还是学不会。
新手的话建议可以看看谭浩强的C程序设计,基本语法会了,可以看下数据结构和算法,接下来看计算机组成原理-->编译原理-->操作系统-->计算机网络。这些学好了,可以深入研究算法,另外可以看点计算机图形学和人工智能。
程序最核心的是算法,所以数学基础要好,不能只能做一辈子码奴。
其次英语要好,只要能看懂一般的英文文档就OK了。
给你介绍一些书。
1、算法
计算机程序设计艺术-------Donald.E.Knuth----------算法“倚天屠龙”双剑
算法导论-----------------Thomas H. Cormen--------算法“倚天屠龙”双剑
离散数学及其应用----------Kenneth H.Rosen
具体数学—计算机科学基础--------Donald.E.Knuth
2、数据结构
数据结构 C++
数据结构算法与应用
3、C语言
C程序设计语言(第2版·新版)---C语言“倚天屠龙双剑”---Brian W.Kernighan“C语言之父”
C Primer Plus中文版(第五版)--------C语言“倚天屠龙双剑”---Stephen Prata
C程序设计(第三版)---------------------------谭浩强
C语言大全(第四版)---------------------------HERBERT SCHILDT
C语言接口与实现:创建可重用软件的技术-------------DAVID R.HANSON
C语言参考手册(原书第5版)--------------------------Samuel P.Harbison
C程序设计教程---------------------------------H.M.Deitel/P.J.Deitel
C陷阱与缺陷-----------------------------------Andrew Koenig
5、C++
C++程序设计语言(特别版)---c++八大金刚----Bjarne Stroustrup“C++之父”
C++ Primer (第3版)中文版----c++八大金刚---Stanley B.Lippman
C++ Primer (第4版)中文版----c++八大金刚---Stanley B.Lippman
C++标准程序库—自修教程与参考手册--c++八大金刚--Nicolai M.Josuttis
C++语言的设计和演化-----c++八大金刚----Bjarne Stroustrup“C++之父”
深度探索C++对象模型---c++八大金刚----Stanley B.Lippman
Essential C++中文版---c++八大金刚---Stanley B.Lippman
Effective C++中文版 2nd Edition-----c++八大金刚------Scott Meyers
More Effective C++中文版----c++八大金刚------Scott Meyers
C++编程思想(第2版) 第1卷:标准C++导引--------Bruce Eckel
C++编程思想(第2版)第2卷:实用编程技术 --------Bruce Eckel
C++程序设计--------------------------谭浩强
C++ 程序设计教程(第2版)--------------钱能
C++ Primer Plus(第五版)中文版---Stephen Prata
6、操作系统
深入理解计算机系统(修订版)-------RANDAL E.BRYANT
计算机操作系统(第六版)
7、编译原理
跟我一起写makefile
《编译原理技术和工具》------- Alfred ------- 龙书
《现代编译原理-C语言描述》 ----------- Andrew W. Appel ----------- 虎书
《高级编译器设计与实现》 ----------- Steven S.Muchnick ----------- 鲸书
8、网络
计算机网络第四版中文版-----------Andrew S.Tanenbaum -------网络编程三剑客
TCP/IP详解3卷本--------------------Richard Stevens----网络编程三剑客
UNIX网络编程2卷本--------------------Richard Stevens----网络编程三剑客
用TCP/IP进行网际互联-----------Douglas E. Comer
高级TCP/IP编程-------------------Jon C. Snader
C++网络编程-----------------------Douglas Schmidt
UNIX环境高级编程(第2版)--------------------Richard Stevens
9、Linux
Linux内核设计与实现
Linux内核完全注释
LINUX内核分析及编程
D. c语言学习
首先是纯C的教材
第一本:H.M.Deitel和P.J.Deitel的《C HOW TO PROGRAM》(C程序设计教程)。
作者是父子,从事语言教材的编写合计超过40年,本书被美国众多高校选用为教材,既可入门也可翻阅,甚好。本FAQ作者认为如果你只打算看一本的话,那就选他好了。
第二本:Brian W.Kernighan和Dennis M.Ritchie 的《The C Programming Language 》(C程序设计语言)。
此书简称K&R,由C语言的创建者撰写,是全球销售最多的C语言教材,其品质不容置疑。不过不适合入门,适于在入门之后巩固提高。实体书有原版和译本购买,电子版英文较多。
第三本:谭浩强的《C程序设计》。
优点在于,面向中国学生,语言易于理解,而且全书篇幅小,看过的人多,容易找到人请教。但是各方面的概念不深入,浅尝辄止,实际上还有些小错误,不是很严谨。因此适合第一次入门学习,例题做完基本就可以抛弃了。有实体书和电子版下载。同时配套有习题集和习题解答,适合自学。
第四本:王大刚先生的《C语言编程宝典》。
质量不错,与老谭的书一样非常适合中国学生,而且对于TC的图形编程讲解非常透彻。本人没有发现实体书,可能只发布在网络上,在VCgood论坛有转载:
http://www.vcgood.com/bbs/forum_posts.asp?TID=1560&PN=2
http://book.chinaz.com/C/C/index.html
第五本:无名作者的《C语言初学者入门讲座》
VCgood论坛转载,作者未知,质量同上一本。http://www.vcgood.com/bbs/forum_posts.asp?TID=1294&PN=4
第六本:Kenneth A.Reek 的《C和指针》
进阶读物,把指针一章演绎为一本书可见其技术精度。指针是C的灵魂,能领会本书中的理念,才能算是真正明白了C指针的奥妙,才算懂得了C。
第七本:Andrew Koenig 的 《C陷阱与缺陷》
进阶读物,在认真读完上面的入门书之前,暂勿阅读。本书畅销14年历久不衰,足证品质。
最后一本:ISO C89规范/C99规范
一切关于C语言的疑问,只有一件东西最权威,那就是ISO的规范。但这不是正式出版物,是类似法律文本的技术说明,而且只有英文版。新手阅读,提防吐血而亡。
然后是C++的教材
C++比C复杂的多,所以教材也就纷繁芜杂。既有综合性入门性的,也有专项深入的,阅读要循序渐进,以下分阶段介绍(以下文字有部分引用自他人评介)。
首先是毫无基础的时候,先要初步掌握语法并形成编程的概念
level 0:
H.M.Deitel和P.J.Deitel的《 C++ How to Program 》(C++大学教程)。
又是这对父子。有很多号称C++入门的书,但经我的观察,如果要选择能推荐给毫无编程概念的新手用的书,这本算是佼佼者了。此父子的《C程序设计教程》我已推荐了。
仍然是K&R,Brian W.Kernighan和Dennis M.Ritchie 的《The C Programming Language》(C程序设计语言)。
尽管C++之父亲口说,最好把C++看作一门新语言来学习,但我个人认为,一开始学习C至少有两大好处。相比C++,C还是非常简单的,易于掌握,避免你过早陷入C++的语法泥潭。同时,学C能让你对计算机的底层运行有所认识,建立良好的概念。
钱能的《C++程序设计教程》
国内C++教材中较好的一本,作者是教师,总结多年教学实践的经验写成的,比较适合国内学生。
PS:老谭也有一本C++教材,在此就不太推荐了,它完全是用C的思维来看C++。
当读者有一定c/c++基础
推荐的阅读顺序:
level 1
从Stanley B.lippman着 侯捷 译的《essential c++》开始,短小精悍,可以对c++能进一步了解其特性。Stanley B.Lippman的职业是提供关于C++和面向对象的训练、咨询、设计和指导。他也是Bjarne Stroustrup领导的Bell实验室Foundation项目的成员之一,负责C++程序设计环境中的对象模型部分。简单说,他是C++的创建者之一。
以Stanley B.Lippman,Josee LaJoie,Barbara E.Moo的《c++ primer》作字典和课外读物,因为太厚不可能一口气看完,当然你也可以用它作为主力教材。Lippman说过了,Josee LaJoie是C++标准委员会原负责人,Barbara E.Moo 是独立咨询顾问,参与了第一个使用C++编写的商业产品的开发,领导了公司中第一个C++编译器项目。
C++之父Bjarne Stroustrup的《the c++ programming language》,简称BS的TCPL,全面而深入的书,缺点也是太厚。
这个阶段 也可以延用前阶段Detiel父子的教材。
level 2 这个阶段就要养成好习惯
然后从Scott Meyers的《effective c++》开始转职,这是圣经,请遵守10诫,要经常看,没事就拿来翻翻
接着是 Herb Sutter的《exceptional c++》。此人是C++标准委员会的主席,主席说话,谁有异议。
顺下来就是Scott Meyers的《more effective c++》和Herb Sutter的《more exceptional c++》,请熟读并牢记各条款
level 3 这个阶段 把C++的类搞透
Stanley B.lippman的《insied the c++ object model》(深度探索C++对象模型)看过后如一缕清风扫去一直以来你对语言的疑惑,你终于能明白compiler到底都背着你做了些什么了,这本书要细细回味,比较难啃,最好反复看几遍,加深印象。
看完上一本之后,这本Bjarne Stroustrup的《The design and evolution of c++》(C++的设计与演化)会重演一次当年C++他爹在设计整个语言过程中的历程。
Stephen C. Dewhurst的《C++ Gotchas: Avoiding Common Problems in Coding and Design》(C++程序设计陷阱)会帮你在设计层面避免错误。
level 4 这个阶段深入STL吧
Nicolai M.Josuttis的《the c++ standard library》(C++标准程序库—自修教程与参考手册) 是stl的字典,什么都可以查得到。
Scott Meyers的《effective stl》,它和圣经一样是你日常行为的规范。发现没有,Scott Meyers先生一直在搞effective系列。
Matthew H. Austern的《generic programming and the stl》(泛型编程与STL)让你从OO(面向对象)向GP(泛型编程)转变。
光用不行,我们还有必要了解stl的工作原理,那么侯捷的 《stl源码剖析》会解决你所有的困惑。
level 5 彻底掌握模版泛型编程
对于c++无非是OO和GP,想进一步提升OO,Herb Sutter的《exeptional c++ style》是一本主席这么多年的经验之谈,是很长esp的。
一位stl高手是不能不去了解template的,《c++ template》是一本网络全书,足够你看完后对于GP游刃有余。
Andrei Alexandrescu的《modern c++ design》是太过聪明的人写给明眼人看的。
level 6
这个时候,对于C++语法本身,你应该是已经到了随心所欲的境界,你所要练习的大概就是大规模的C++程序的设计以及一些通用的高效库的使用,以及为什么要这样做的理由。
所以,《C++ 输入输出流及本地化》《C++ Network Programming》《大规模C++程序设计》是你需要的。
同时,C++教材中的异类:Barbara E.Moo和Andrew Koenig的《Ruminations On C++》(C++ 沉思录)是值得你一看的,他集中反映了C++的关键思想和编程技术,说明了C++是什么样的以及能够做些什么,不仅告诉你如何编程,还告诉你为什么要这样编程。本书曾出现在众多的C++专家推荐书目中。
和C一样,同样有最后一本书
ISO+IEC+14882-1998 C++规范。这可不是宝典圣经,这就是C++的法律,一切疑问以此为准到此打住。不过,有个脚注,某些具体情况取决于编译器实现。
接下来是Windows编程
至少在国内来说,Windows环境下的编程还是很有市场的。
第一本书:Charles Petzold 的 《Programming Windows》(Windows程序设计)。
如果说,在windows编程领域只能翻阅一本书的话,那就是他了。《Windows程序设计》由微软出版社在1988年首次出版,后来被认为是这方面最好的导论性读本。在1994年5月,Petzold作为仅有的七个人之一(并且是唯一的作家)被《Windows Magezine》和Microsoft公司授予Windows Pioneer奖,以表彰他对Microsoft Windows的成功做出的贡献。这本书经典到这个程度,以至对于Windows程序员来说,“从Chares 的(Window程序设计)一书中寻找答案。”几乎成了一句至理名言。
你可以在这个地方观看到他的外观,http://www.charlespetzold.com/pw5/,国内书店有售,电子版则需要仔细搜索。
第二本:Jeffrey Richter 的《》(Windows核心编程)和《Advanced Windows》(Windows 高级编程指南)
和上面这本书难分伯仲。这么说吧,你读了之后就会后悔,后悔为什么没有早点读他。建议先看高级,再看核心。
个人认为除非windows发生革命性的变化,否则看完这三本书,足以应付通常的Windows编程。
上面三本书介绍的是直接使用WindowsAPI实现应用,总的来说那是一种很基础但很繁琐的方式。Windows下有很多的编程库可以使用,VC和BCB都自备了优良的库。
在VC来说,存在版本的差异,如果是6.0版本,那么你基本只有MFC这一种选择,但对于2002以后的版本,包括新推出的2008,MFC、ATL、.net都不错。
对于MFC。
要学会怎么用,可以看一下这几本:
微软出版社授权的中文版系列书 由David J.Kruglinski,Scot Wingo,George Shepherd写的《Programming Visual C++ 6.0 技术内幕(第5版)》,经典的“Visual C++技术内幕”的第5版。
清华大学出版社出版 杨永国 的《Visual C++ 6.0实用教程(第2版) 》,这本不是那么经典,同类多得很,但好处是便宜,而且能够买到,有些书已经买不到了。
如果想知道MFC的原理,侯俊杰先生的《深入浅出MFC 》(Dessecting MFC)就值得你仔细阅读。
对于VC2002--2008中的.net,单独讲授的似乎目前还没有像《Windows程序设计》那样经典的书出现,毕竟.net出现的时间也不长。但把.net MFC ATL等综合在一起讲的,倒还是有一些。
由H.M.Deitel,P.J.Deitel,J.P.Liperi和C.H.Yaeger共同编写的《Visual C++.NET:How To Program 》(Visual C++.NET大学教程)品质算是上乘。还记得Deitel这对父子作者么,在chinapub上可以看到父子俩合着的教材有47套之多,而且个个畅销,我觉得他们俨然就是美国的谭浩强,只是水平高出不少。
George Shepherd,David Kruglinski 的 《Visual C++ .NET技术内幕(第6版)》,就是上面那本书的.net升级。
IVOR HORTON的《VISUAL C++ 2005入门经典》也可一看。
BCB在版本6以前用的是着名的VCL库,BCBX另起炉灶,用的是wxWidgets库。由于对BC,作者自己涉猎不多,所以这两套库的教材,请大家自行查找。
就像C++和C的规范文件一样,Windows编程中,也有一件类似万宝全书的神物,那就是Microsoft自己推出的MSDN。
MSDN是Microsoft Software Developer Network的简称。这是微软的针对开发者的开发计划。你可以在http://msdn.microsoft.com看到有关软件开发的资料。在VisualStudio中包括MSDN Library的光盘,其中包括VisualStudio的帮助文件和许多与开发相关的技术文献。MSDN Library每个季度更新一次,可以向微软订阅更新光盘,不过价格不便宜。
MSDN就是微软的技术大全,所有微软的软件系统的开发的已公开资料,都在上面。如果在那里也无法找到答案,那你只能想办法咨询微软的内部工程师求得隐藏秘籍。不要妄想能够完全阅读它,3G容量的文档(大部分是文本,不是图片和视频),实在太过巨大了。
E. c语言是有什么
C语言是一种通用的、面向过程式的计算机程序设计语言。1972 年,为了移植与开发 UNIX 操作系统,丹尼斯·里奇在贝尔电话实验室设计开发了 C 语言。
C 语言是一种广泛使用的计算机语言,它与 Java 编程语言一样普及,二者在现代软件程序员之间都得到广泛使用。
C语言简单例子:
(5)c语言的设计和演化扩展阅读:
结构式语言的显着特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。
C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。
F. c语言与c++的是什么
1.定义:C语言是一种计算机程序设计语言(面向过程的)。
作用:1. C是高级语言。它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。 2.C是结构式语言。结构式语言的显着特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。 3.C语言功能齐全。具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。而且计算功能、逻辑判断功能也比较强大,可以实现决策目的的游戏。 4. C语言适用范围大。适合于多种操作系统,如Windows、DOS、UNIX等等;也适用于多种机型。
2. 定义:C++语言是一种优秀的面向对象程序设计语言,它在C语言的基础上发展而来,但它比C语言更容易为人们学习和掌握。C++以其独特的语言机制在计算机科学的各个领域中得到了广泛的应用。面向对象的设计思想是在原来结构化程序设计方法基础上的一个质的飞跃,C++完美地体现了面向对象的各种特性。
作用:C++的设计目标,就是要让C++既具有适合于系统程序设计的C语言所具有的可适应性和高效性,又能在其程序组织结构方面具有像Simula那样的语言设施(Simula所支持的这种程序组织结构通常被称为面向对象程序设计风格)。在设计的时候,还做了很大的努力,使得引借自Simula的高层次的程序设计技术能够应用于系统程序设计之中。这即是说,C++所提供的抽象机制能够被应用于那些对效率和可适应性具有极高要求的程序设计任务之中。
难度:当然是C++更加难一些了,C是基础,学好C,才能更进一步的去学习C++,
G. C++语言是谁发明的
C语言是美国Dennis Ritchie在1972年设计发明的,C语言主体诞生于1973年,正式发行于1977年。是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。
C语言就是分析出解决问题所需要的步骤 ,然后利用函数一步步的实现,使用的时候一个一个依次调用就可以。
一种以事物本身为中心的编程思想,是把构成问题的事物分解成各个对象,同时建立对象的目的不是为了完成某一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为。
(7)c语言的设计和演化扩展阅读
1、C语言经历过几个修订版本,其中影响比较大的是1989年修订的C89版与1999年修订的C99版。C89版也是当代C语言通行的基础版本。
2、C语言主要用于编写操作系统内核、底层驱动程序、小型应用程序、数据库等,借助操作系统,C语言长期处于编程语言排行榜前几位的位置。
H. C++相对C的主要特点和发展
简单地说,C++和C的主要区别在于,C是面向过程的,而C++是面向对象的,C++主要比C多了继承,多态,模板等特性;在发展方向上,C++倾向于用来开发一些大型的软件,而C倾向于用来开发和硬件有关同时又要求效率的过程式软件开发,在使用人数上,目前C占绝对的优势。
下面是详细的介绍:
1.C++和C的关系:
C语言之所以要起名为“C”,是因为它是主要参考那个时候的一门叫B的语言,它的设计者认为C语言是B语言的进步,所以就起名为C语言;但是B语言并不是因为之前还有个A语言,而是B语言的作者为了纪念他的妻子,他的妻子名字的第一个字母是B; 当C语言发展到顶峰的时刻,出现了一个版本叫C with Class,那就是C++最早的版本,在C语言中增加class关键字和类,那个时候有很多版本的C都希望在C语言中增加类的概念;后来C标准委员会决定为这个版本的C起个新的名字,那个时候征集了很多种名字,最后采纳了其中一个人的意见,以C语言中的++运算符来体现它是C语言的进步,故而叫C++,成立了C++标准委员会。
2.C++的发展和特点:
• C++设计成静态类型、和C同样高效且可移植的多用途程序设计语言。
• C++设计成直接的和广泛的支援多种程序设计风格(程序化程序设计、资料抽象化、面向对 象程序设计、泛型程序设计)。
• C++设计成给程序设计者更多的选择,即使可能导致程序设计者选择错误。
• C++设计成尽可能与C兼容,籍此提供一个从C到C++的平滑过渡。
• C++避免平台限定或没有普遍用途的特性。
• C++不使用会带来额外开销的特性。
• C++设计成无需复杂的程序设计环境。
出于保证语言的简洁和运行高效等方面的考虑,C++的很多特性都是以库(如STL)或其他的形式提供的,而没有直接添加到语言本身里。关于此类话题,C++之父的《C++语言的设计和演化》 里做了详尽的陈述。
3..两者的效率差别:
C++与C的效率往往相差在正负5%之间。所以有人认为在大多数场合C++ 完全可以取代C语言(然而我们在单片机等需要谨慎利用空间、直接操作硬件的地方还是要使用C语言)。
4.C是C++的子集:
C++包括:
1、C子语言。C++支持C语言的几乎全部功能,在语法上与C语言仅有极微妙的差别(如括号表达式的左右值性,具体请参考C++标准文献)。
2、面向对象的C++(Objective C++)。C++语言原本不具备面向对象的设计功能,然而随着面向对象编程的概念的提出以及如Java等语言的发展成熟,C++语言也开发出了支持面向对象功能的版本,现在编程者常用的VC++就是一种面向对象的语言。
3、泛型编程语言。C++强大(但容易失控的)模板功能使它能在编译期完成许多工作,从而大大提高运行期效率。
4、STL(C++标准模板库,Standard Template Library)。随着STL的不断发展,它已经逐渐成为C++程序设计中不可或缺的部分,其效率可能比一般的native代码低些,但是其安全性与规范性使它大受欢迎。
此外,包含在TR1等中的C++0x将实现的新功能在开发和测试中。