c语言程序设计 谭浩强学了谭浩强那一版了 要想深入学习该买啥书

经过一番考虑,决定从C开始学习编程,然后现在的问题,就是该买那一本书呢?在知乎看了一些相关的帖子,其中有提到1.《C程序设计》作 者::2.《The C Programming Language》译作《》,是由著名的计算机科学家Brian W. Kernighan和C语言之父的合著的一部计算机科学著作,是第一部介绍编程方法的书籍。3.《C Primer Plus》4.或者有其他更好的书,可以推荐?4. 或者,我还有一个想法,想先学几天PYTHON入个门,再系统的来学习C,这种方式好呢?还是不学PYTHON,直接学C比较好呢?PS:1~希望 答题者,可以逐一回答我的问题,最好可以尽可能的介绍下 我所 提到的三本书的优劣,那一本更适合完全零基础的新人入门!2~如果建议我先学几天PYTHON,再系统学习C的话,请顺便推荐1~2本PYTHON入门的经典书籍!3~最好可以发个纸质书购买链接,或者网上学习的链接!谢谢了哈!
学习C语言最经典的教材就是《The C Programming Language》,但是这本有点老了,很多例子都是经典C的规范,而且我觉得这本书对于一个对编程新手难度有些大,更适合作为学习C的第二本书,加深对C的理解。至于谭浩强的那本是国内很多高校的教材,我没有仔细看过,但是很多人反映那本书很糟糕。《C Primer Plus》这本我看过,我觉得是比较适合初学者的。现在应该是第5版吧,内容也比较新。而且语言描述的很到位,不会感到枯燥,但是相比《The C Programming Language》要厚一些。至于Python,我觉得要学习C仅仅学习几天Python可能不会有什么作用,甚至可能有副作用,Python语法与C有较大差异,PHP语法才是更接近C的,如果要学习几天玩玩,我推荐学两天PHP,如果你会点html和css那就会有趣许多。而且我现在还是觉得初学者学习的第一门语言是C系(C++,C#,Java,PHP)的要好一些。当然,Python确实很有趣,很简单也很强大,很适合作为第二门业余学习语言。如果题主非要学习一下Python那么可以看看这个:
谢邀。一、C or Python?我一直坚定地认为讨论这样的问题是没有意义的,每一种语言都有自己的特性,如果不是一辈子只学一种编程语言的话,没有必要花太多精力在比较各种语言上面。同样也没有必要像你说得那样为了学习一门语言而学几天另外一门语言。只要一门语言学扎实,再学习一些基本的算法,那么学习其他的语言只是花几天时间了解一下它的语法就基本上差不多了。首先弄清楚你为什么学习编程,只是一时的兴趣还是打算以后以此为职业?如果只是想一时玩一下,那我建议你学 Python,可能几周的学习之后就可以写出一些很有意思的小东西(比如写个爬虫把自己感兴趣的网站上面的文章爬下来,用 N 张图片合成一张图片啥的),因为 Python 语言简单明了,而且有大量的库可以调用,所以做这些事情很容易。Python 的一大特点就是高效。C 语言我觉得是这些高级语言里面最低级的,所以很多底层的东西都是用它实现的。比如 Python 就是 C 语言写成的。但是它不能很快的做出自己想做的东西出来,比如你想写个图形界面都得花很大的功夫。而且没有很多可以调用的库,那也就意味着很多东西都要自己写出来。语法上相对 Python 也比较复杂。但是没什么关系,只要肯下功夫也没什么问题(说了句正确的废话)。更加详细的比较请参考二、关于你列举的几本书:1、《C 程序设计》这本书还是放弃吧,虽然作为国内各大高校的 C 语言课本,但老感觉就是被这本书带入歧途的。2、《The C Programming Language》这本书虽号称 C 圣经,但确实不太适合初学者,可以在掌握了基本的语法之后回过头来看看。3、《C Primer Plus》这本书读过,感觉还是比较浅显易懂,推荐用它。三、推荐的书:其实读完《C Primer Plus》之后再读《The C Programming Language》就差不多了,接下来可以学习一些数据结构和算法方面的东西。学习编程的关键不是读了多少书,而是「Just do it」。学习一些算法之后你可以去「」刷题,要求虐可以去「」。如果一定还要再推荐一本书的话那就是@李洋 提到的《C Programming: A Modern Approach》了。————————————————————————————————————————关于 Python 学习资料可以参考我在这个问题下的答案:最后不管你决定是学习 C 还是 Python,推荐安装Linux 系统。(如果使用 OS X 就当我没说过)最最后如果有什么地方说的不对的话求轻虐。关于c语言学习谭浩强的书 - 好代码编程网
关于c语言学习谭浩强的书
13:22:58|&&分类:
.Net 文章一周点击
.Net 文章一月点击
HaoGongJu.Net ( 好代码 ) All Rights Reserved自学完了谭浩强的C语言程序设计后_百度知道
自学完了谭浩强的C语言程序设计后
自学完了谭浩强的C语言程序设计后,书上例题基本不在话下了,再买哪本进阶一点的书看?或者说下一步是要干什么??
提问者采纳
其实还有很多事情可以做..............当然 ,方向重要:①、计算机专业领域一共有几个大方向,十几个分支方向,而每个分支方向又有几十个小方向,每一个方向的深入学习与熟练到一定火候都不是一朝一夕,互相之间也不是完全没联系的,但是无论是初学者还是中前期学习者都应该选择一个大方向并在其中的一个小方向内深入(为什么要这么早就选择具体的分支方向?后面说)。②、这里列出计算机的几个大方向(非编程开发类的我就不说了):
基本方向:
1、单片机、嵌入式方向
2、网络编程:涉及到服务器程序、客户端开发、脚本设计等。
3、系统编程:基础API开发、桌面开发、系统程序开发、服务程序
4、图形学:3D、2D、图像识别、人脸识别
5、音频:语音识别、音频解码、音频软件
6、编译原理:编译器设计、脚本解释器、虚拟机、非自然语言翻译系统
7、应用层开发:利用高层语言去开发表层应用
8、安全:反工程、病毒、反病毒、木马、反木马、软件破解、软件加壳
附加方向:
9、人工智能:遗传算法、神经网络、灰色系统等等
10、游戏设计:各种游戏引擎设计以及业务逻辑设计等③、基本方向是学习者一定要选的,附加方向只是基于基本方向的一些锦上添花,但是不管学习者怎么选,最开始某些东西一定要深入而不是只是懂就够(当然学习者对自己要求不应该低),我把这个列出来:
数据结构:下面其他理论的基础。(必看:《算法导论》
操作系统原理:理解操作系统的架构和细节,学习者才能对以后关于多线程、文件管理、内存管理、指令优先级等有一个正确理解和运用。(必看:《操作系统:精髓与设计原理》
编译原理:能够升华学习者对计算机编程语言的理解,对以后出现的各种编译、解释、兼容、移植、优化、并发与并行算法等有一个深入理解。(必看:三本圣经和《PT》,哪三本具体百度
数据库系统原理:这个是进入公司都要会的,也是大型软件开发的基础。(这就有很多经典,但都不是必看的,具体douban
软件工程:这个是学习者能够在经验不足还能保证大项目正常完成的理论基础。(设计模式能够有助于软工的架构设计,一定要看
网络技术:这个是必须学的,因为目前几乎没有一款装几率很高的软件或者平台跟网络无关。(很多很牛的书,具体douban
数学的话,主要是:离散数学、线性代数、高等数学、计算机图形学、概率论(各自都有很牛很好的书以及习题,具体douban
以上几个基础就是学习者成为一个融汇各个主要分支牛人必须学的(当然不是指理论,而是理论+实践编码能力)
④以上都是大的基础,要一一攻破并深入学习,虽然网络时代计算机专业知识爆炸式的增长,但是以上几个基础掌握后,会发现,以后的什么新的理论和技术都是基于这些大基础,学习者就很容易理解了(或者且当你对方法论比较感兴趣,在方法论的催化下+以上浑厚基础,会有一种被打通任督二脉的感觉)。⑤我为什么开头不讲学习者要具体学什么怎么顺序学呢?因为那些技术学习者要掌握的话,根本可以自己解决(翻书+实践的反复循环),但是如果没有一个对自己现在投入的努力和【以后形成的能力和层次积淀的预测】的基本了解,那么毕业后虽然也能找到不错的工作,薪水也可能高,但是却不是一个大牛(虽然这之间确有转化关系,仅个人见解)。现在才开始讲学习顺序(一种可能的顺序,并且大部分被我验证或预测过)。
C语言是可以写很多核心和高级的东西,而不只是小东西,编码技巧有很多可以提高的空间之处。
学习者的学习顺序应该是:
C:建议有时间的话,学到这个程度-做一个超级马里奥出来,并能够读取文本脚本来更新关卡。
C++:写一个2D图形引擎,封装掉细节,实现面向对象设计和可复用设计(但是2D图形引擎注重效率,对复用的设计理念显然不需要太在乎,所以最具有复用挑战力的是外表简洁,内部设计复杂而高度灵活如WPF的GUI),并且用到《设计模式》中提到的一些设计模式,这样才能算对C++有一个很好的掌握。
MFC:MFC技术虽然据说前期一段时间冷下来了(近期又有新的热度,貌似融入了新的血液),但是学习者能熟练掌握它,才能短期内证明学习者的C++OO技术够纯熟,严格证明学习者掌握了MFC很简单,学习者只要用MFC做出一个非内核的杀毒引擎简化版就差不多了。推荐的书有《深入浅出MFC》。
《Windows程序设计》:和MFC不同的是,用的是windows核心SDK,也就是Windows API,这本书学完后,学习者才能从操作系统层面上算掌握了win32 平台下的机理(其实win64和win32大部分API机理类似)。
C#:C#里集合了当代和前沿计算机科学里最先进的一些语法(虽然执行效率一直被人质疑),但是学习者学完C#并深入后,至少能够算是对计算机语言有一个更加深刻的理解了。如何证明学习者C#学的不错了?也很简单,再次写一个随便什么游戏。如果更加证明自己呢?用它写一个P2P网络对战游戏。⑥作为进阶学习编程语言的附加要求,其它语言建议也学习下,学之前可以先看《冒号课堂》(告诉你各种范式语言之间的关系,让你对编程语言有一种截然不同的全新视野的掌握)。
(如果学习者注意的话,会发现我说的学习顺序都是沿着语言和某些技术的,为什么呢?因为这些语言和技术涉及到特定的领域技术和计算机理论思想,比如【真正】学完了C++或C#的话,就不单指学完了C++或C#,而是把多种语言范式都学习了一遍,以及现代的程序开发思维(因为里面用到了很多让学习者一劳永逸的技术))
以上5个步骤都是基础大步骤,要解决的话要没1-2年应该不够。
与此同时,要尽快选出文中学习者感兴趣的方向作为3-5年的长期方向,不要担心过早选择分支方向会有什么损失,因为计算机很多分支是相通的,只有学习者把分支方向深入进去,才能真正理解很多理论的实践意义。并且一旦学习者在某个分支领域形成了较强的优势(比如,到公司里只有学习者这方面最强),那么学习者就是稀缺人才。
关于大方向的细分步骤就暂时先说到此处,有兴趣学习者的主要就是要把我说的这几个基础步骤先解决,同时平时要注重大方向理论结合实际去编码和开发。⑦最后,再从资本论的角度去度量一下为什么要深入至少1-2门技术,而非只是泛泛的都学。1.一个公司不需要一个功能对应的所有可选技术类型,通常只要其中1-2种(就如服务器脚本语言,为了便于开发维护和人员更替,也都是集中在1-2种2.就算会N种技术,一个时间段只能从事其中一种工作3.完全不用担心自己好不容易深入的技术公司正好不用(你进公司之前,不光是公司选你,你也在选公司),另一方面,技术也是相通的,深入一个再深入另一个同类技术,是【极其】容易的(建立在时间+实践)。4.泛学的东西,你能用1个月、半个月、1星期、几天学会,别人也能(再者,学会不难,熟练成习惯并转化为开发效率,才是问题,因为这不是技巧问题,而是时间成本问题),那么这就完全没有竞争优势了,你泛学了N种技术,而公司正好需要其中之一时,别人只要投入也同样这么短的时间就能临时追上你的泛学程度的步伐,何必呢?而你要赶上别人花了几年的深入程度的东西,不可能只需要花几个月(除非你之前早已深入了类似的东西,但这就推翻了你是在泛学的前提,所以不用考虑这种情况)。5.我评估两个人之间的领域能力的差距是这么来的:一个人如果想超过另一个人的某个分支领域能力,要花多久?如果要花几天或几个月,说明差距不大,如果要花几年,就是很大的能力差距了。(时间是衡量能力的最终极标准:当然建立在正态分布和个体特殊差异之上)曾经有人问我,怎么才算深入的学习了某东西,有个专攻JAVA的人问我这个问题(&如何彻底深入理解JVM”),我不假思索就果断的回答他:要真的深入一个东西,只需要实现一个类似的东西。他还是没对上号,然后当时我进一步说:如果你能实现一个类似于JVM的东西,不就代表你深入理解了JVM吗?
提问者评价
受益匪浅,谢谢!
其他类似问题
看方向,具体什么方向学什么我就提供不了多少建议了,不过有一句话送你:先想好要做什么,然后再决定学什么
为您推荐:
c语言程序设计的相关知识
其他3条回答
转到ios开发
转其他的把
看下数据结构也不错
谭浩强的书讲的很浅显。
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 c语言程序设计 谭浩强 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信