csapp多久能学完,csapp是什么课
谁能推荐一本讲解C++语言的书??自学用!!
1楼在跟你讲笑话
我也是刚学C++
看的是c++primer 第四版 非常经典 !!!
但是需要你有其他任何一门高级语言为基础
可以是C或者JAVA啊 什么的
如果你没任何基础那就读读 钱能的《 C++语言程序设计 第二版》
以下内容是我今天刚看到的
或许对你有帮助
第一本
如果你是一个C++程序员,那么很大的可能性你会需要用到底层知识(硬件平台架构、缓存、指令流水线、硬件优化、内存、整数浮点数运算等);这是因为两个主要原因:一,了解底层知识有助于写出高效的代码。二,C++这样的接近硬件的语言为了降低语言抽象的效率惩罚,在语言设计上作了很多折衷,比如内建的有限精度整型和浮点型,比如指针。这就意味着,用这类语言编程容易掉进Joel所谓的“抽象漏洞”,需要你在语言提供的抽象层面之下去思考并解决遇到的问题,此时的底层知识便能帮上大忙。因此,一本从程序员(而不是电子工程师)的角度去介绍底层知识的书会非常有帮助——这就是推荐《Computer Systems:A Programmers Perspective》(以下简称CSAPP)(中译本《深入理解计算机系统》)的原因。
第三本(是的,第三本)
另一方面,C++不同于C的一个关键地方就在于,C++在完全保留有C的高效的基础上,增添了抽象机制。而所谓的“现代C++风格”便是倡导正确利用C++的抽象机制和这些机制构建出来的现代C++库(以STL为代表)的,Bjarne也很早就倡导将C++当作一门不同于C的新语言来学习(就拿内存管理来说,使用现代C++的内存管理技术,几乎可以完全避免new和delete),因此,一本从这个思路来介绍C++的入门书籍是非常必要的——这就是推荐《Accelerated C++》的原因(以下简称AC++)。《Accelerated C++》的作者Andrew Koenig是C++标准化过程中的核心人物之一。
第二本
C++是在C语言大行其道的历史背景下发展起来的,在一开始以及后来的相当长一段时间内,C++是C的超集,所有C的特性在C++里面都有,因此导致了大量后来的C++入门书籍都从C讲起,实际上,这是一个误导,因为C++虽然是C的超集,然而用抽象机制扩展C语言的重大意义就在于用抽象去覆盖C当中裸露的种种语言特性,让程序员能够在一个更自然的抽象层面上编程,比如你不是用int*加一个数组大小n来表示一个数组,而是用可自动增长的vector;比如你不是用malloc/free,而是用智能指针和RAII技术来管理资源;比如你不是用一个只包含数据的结构体加上一组函数来做一个暴露的类,而是使用真正的ADT。比如你不是使用second-class的返回值来表达错误,而是利用first-class的语言级异常机制等等。然而,C毕竟是C++的源头,剥开C++的抽象外衣,底层仍然还是C;而且,更关键的是,在实际编码当中,有时候还的确要“C”一把,比如在模块级的二进制接口封装上。Bjarne也说过,OO/GP这些抽象机制只有用在合适的地方才是合适的。当人们手头有的是锤子的时候,很容易把所有的目标都当成钉子,有时候C的确能够提供简洁高效的解决方案,比如C标准库里面的printf和fopen(此例受云风的启发)的使用界面就是典型的例子。简而言之,理解C语言的精神不仅有助于更好地理解C++,更理性地使用C++,而且也有其实践意义——这就是推荐《The C Programming Language》(以下简称TCPL)的原因。此外,建议在阅读《Accelerated C++》之前先阅读《The C Programming Language》。因为,一,《The C Programming Language》非常薄。二,如果你带着比较的眼光去看问题,看完《The C Programming Language》再看《Accelerated C++》,你便会更深刻的理解C++语言引入抽象机制的意义和实际作用。
第四本
《Accelerated C++》固然写得非常漂亮,但正如所有漂亮的入门书一样,它的优点和弱点都在于它的轻薄短小。短短3百页,对现代C++的运用精神作了极好的概述。然而要熟练运用C++,我们还需要更多的讲解,这个时候一本全面但又不钻语言牛角尖,从“语言是如何支持抽象设计”的角度而不是“为了讲语言特性而讲语言特性”的角度来介绍一门语言的书便至关重要,在C++里面,我还没有见到比C++之父本人的《The C++ Programming Language》(以下简称TC++PL)做得更好的,C++之父本人既有大规模C++运用的经验又有语言设计思想的最本质把握,因此TC++PL才能做到高屋建瓴,不为细节所累;同时又能做到实践导向,不落于为介绍语言而介绍语言的巢臼。最后有一个需要提醒的地方,TC++PL其实没有它看起来那么厚,因为真正介绍语言的内容只有区区500页(第一部分:基础;第二部分:抽象机制;以及第四部分:用C++设计),剩下的是介绍标准库的,可以当作Manual(参考手册)。
建议3:CSAPP TCPL AC++TC++PL。
是的,在C++方面登堂入室并不需要阅读多得恐怖的所谓“经典”,至于为什么这些“经典”无需阅读,前面已经讲的很详细了。其实你只需要这四本书,就可以奠定一个深厚的基础,以及对C++的成熟理性的现代运用理念。其余的书都可以当成参考资料,用到的时候再去翻阅,即:
建议4:实践驱动地学习。
实践驱动当然不代表什么基础都不打,直接捋起袖管就上。不管运用哪种工具,首先都需要知道关于它的一定程度的基本知识(包括应该怎么用,和不应该怎么用)。知道应该怎么用可以帮你发挥出它的正确和最大效用,知道不应该怎么用则可以帮你避免用的过程中伤及自身的危险。这就是为什么我建议你看四本书,以及建议你要了解C++中的陷阱(大部分来自C,因此你可以阅读《C缺陷和陷阱》)的原因。
实践驱动代表着一旦一个扎实的基础具备了之后获得延伸知识的方式。出于环境和心理的原因,C++学习者们在这条路上走错的几率非常大,许多人乃至以上来就拿Effective C++More Effective C++、Inside C++ Object Model这类书去读(是的,我也是,所以我才会在这里写下这篇文章),结果读了一本又一本,出现知道虚函数实现机制的每个细节却不知道虚函数作用的情况。
实践驱动其实很简单:实践+查文档。知识便在这样一个简单的循环中积累起来。实践驱动的最大好处就是你学到的都是实践当中真正需要的,属于那“80%”最有用的。而查文档的重要性前面已经说过了,但对于C++实践者来说,哪些“文档”是非常重要的呢?
第二本
《C++ Coding Standard》。无需多作介绍,这是一本浓缩了C++社群多年来宝贵的经验结晶的书,贴近实践,处处以80%场景为主导,不钻语言旮旯,用本为主…总之,非常值得放在手边时时参阅。因为书很薄,所以也不妨先往脑袋里面装一遍。书中的101条建议的介绍都很简略,并且指出了详细介绍的延伸阅读,在延伸阅读的时候还是要注意不要陷入无关的细节和不必要的技巧中,时时抬头看一看你需要解决的问题。在C++编码标准方面,Bjarne也有一些建议。
第一本
《The Pragmatic Programmer》,用本程序员的杰作;虽然不是一本C++的书,但其介绍的实践理念却是所有程序员都需要的。
第三本
《Code Complete, 2nd Edition》,这是一本非常卓越的参考资料,涉及开发过程的全景,有大量宝贵的经验。你未必要一口气读完,但你至少应该知道它里面都写了哪些内容,以便可以回头参阅。
其它
所有优秀的技术书籍都是资料来源。一旦养成了查文档的习惯,所有的电子书、纸书、网络上的资源实际上都是你的财富。不过,查文档的前提是你要从手边的问题分析出应该到什么地方去查资料,这里,分析问题的能力很重要,因此:
建议5:思考。
这个建议就把我们带到了第四本书:
第四本:
《你的灯亮着吗?》。不作介绍,自己阅读,这本书只有一百多页,但精彩非常,妙趣横生。
C语言要学到上面程度才算基础打好了?
看到楼主这样认真的学习C语言真的很感动。
谭浩强那本书说实话有些误人子弟,里面有很多硬伤。既然楼主已经有一定编程的经验,那么先我推荐三本书:《C程序设计语言》、《C专家编程》和《深入理解计算机系统》。第一本是发明C语言的人写的,在有了一定基础之后再看可以让自己对C语言的理解提高一个层次。《C专家编程》应该是每个人第二本学习C语言的书,它讲了许多C语言的难点和误区。最后一本又名CSAPP,它使用C语言讲解了计算机体系结构,看懂之后你就会觉得C语言几乎没有什么疑惑了。
如果你将来想做一些更有挑战性的工作,而不仅仅是一个码农,建议你看望上面几本书之后去北大的ACM站点上上面做题目(参考资料)。参照讲算法的书,每天在上面做几道题,可以和书本上的知识相互应证,能够大大提高编程的水平。
以上是一种理想的学习方法。实际上很难完全看懂CSAPP,每天到北大ACM上面做题也不太现实,但是只要能大体上照着这一方案来,你的前途不可限量。
PS 只要是学习计算机的,原则上我都会推荐一本书《计算机程序的构造和解释》,这本书是麻省理工学院计算机系的第一门课,能够全方位提高计算机的素养。
学IT怎么入门,应该先学什么
1.打好基础很重要。学习的过程就像是盖高楼大厦的过程,只有地基打得越牢固,大楼才能盖得越高、越好。程序员更是如此,如果没有扎实的基础做后盾,怎么可能开发出好软件呢?我们可以多看书增强理论性,可以多上机实践,提高操作能力。不要什么都不会还不想学习,不知道自己欠缺什么,就永远不会有进步。
2.形成自己的编程风格。学习编程之初,最主要的是培养自己的逻辑思维能力何良好的编程风格,这样无论是开发过程还是之后查缺补漏的过程,都可以很快的找到错误所在,及时纠正,避免造成用户损失,这也是为自己负责。
3.多请教、多交流。软件开发是一个团队协作的过程,没有哪一个软件是一个人的成果,多多少少都会几个人共同完成的。在学习中或者在开发中,遇到难题,可以找同伴或者是老师交流,使问题得到解决,这也是一个认清自我、弥补自己不足的过程。
4.明确学习目的。我们学编程到底是为了什么?在学习之前,弄清楚自己的学习目的很重要,目标决定方向,有的人一时兴起,有些人是想以后在IT行业有好发展。但无论出于什么目的,都希望每个人都能很好的坚持下去,不要半途而废。不要随波逐流,看见大家都在学,自己也去学,这样一点儿好处都没有,我们的目标是为做一名优秀的程序员而学编程。
5.选择一门计算机语言。现在流行的编程语言有很多,比如说C语言,Java语言以及PHP等等。要选择一个有前景的、比较好学的,这样学起来容易而且将来的发展机会也多。南昌北大青鸟校区的专业老师建议,在初学计算机语言时,要把它当做是一件对自己事业有帮助的好事,不要以为它很难,要“先发制敌”,在心理上战胜对手。
应不应该参加培训?求大神
精通JAVA 掌握Linux 学完Oracle这些只是宣传,不过可以看出主要学习JAVA,Linux是辅助学习,Oracle只是送的,精通JAVA这个有点夸大,每个3-5年工作经验,专业人士都不敢称精通,掌握Linux这个比较中肯,顾名思义,带你入个门,学完Oracle,这个只负责教完Oracle的基础知识,高级东西都是一代而过。
如果你的自学能力和自律性比较强的话,完全可以自己去网上找资料或者去买书学习,但是如果你自学能力有限,自律性不强的话,最后还是去报个培训班,这样效果会好些!
最后祝你学有所成,望采纳!
您好,陌生朋友,请问零基础的新手想学习C语言,要从哪里开始?看哪本书比较适合?
1.[C和指针].(美)Kenneth.A.Reek。,C primer plus第六版 都是外国的C语言名著,但由于翻译后和原著有一定语义差距再加上中西方文化差异,其实我个人觉得不适合初学者!
2.谭浩强的《C语言程序设计》是清华大学的老教授写的一本大学教程,确实比较适合中国学生,特别是初学者的学习!(不要怕网上的一些对此书的负面的评论,毕竟这本书刚成书的中国国情决定的,但毕竟这本书成就了现在的很多C语言大咖,从书的版次和销量也说明了这本书的当时畅销程度),反正从一个C语言熟手或高手来看这本书可能会有一些问题
3.但是,谭浩强的《C语言程序设计》的有一些地方确实也存在欠妥的地方,比如变量的表示很多用a,b,c,这一点如果初学者学了后成了习惯,那以后用C++等语言编写大型程序会出大问题,还有由于是一本入门教材对一些C语言的深入探究也不够,真正实际应用的实训例子也欠缺。等等
4.建议如果学完谭浩强的《C语言程序设计》后再好好看看.[C和指针].(美)Kenneth.A.Reek。,C primer plus第六版这两本书,然后有机会好好研究C语言代码的汇编调试代码,最好对内存的分配,代码区,数据区,数据区的全局变量区,栈区,堆区(全局变量,静态变量,局部变量在上述内存中的存储结构以及作用域,最好还要了解数组,结构体,共用体,位域的内存中的存储结构也知道);以及函数调用的汇编实现过程(栈实现过程)等知识到网上深入学习一下。有机会还可以用keilC进行单片机编程或学c++。
学习IT技术要从什么方面入手?
学习IT技术要从以下几个方面入手:
1.多看书
看书不是一扫而过, 编程需要大量实践, 练习也得慢慢过, 别人看技术书快,是因为人家都是科班出身,或者从业很多年。你是从零学, 只能恶补基础,恶补基础的意思是, 你得像科班一样花费大量时间, 而不是跟看小说一样速战速决,那样没用的。人家给你推荐的CSAPP那些书, 对于科班的人当课外书看还得看个1个月, 你如果跟着学,每本书都至少半年。
2.多逛IT相关的论坛和社区
有些技术是靠经验堆积的,比如整个框架的设计,设计模式的运用。我倒觉得这个能力只要你平时留心,掌握它们只是个时间的问题。
而有些技术,是要去实打实钻研的,不看透几本英文原版书,不逛遍几个论坛,你永远不能明白。越是难的东西,越能拉开你跟别人的距离。
3.多看大V的文章
大V都是过来人,很多你没听说过的问题或者不能解决的难题,他们可能早就遇到过了。现在人人手机不离手,不过有的人是用来学习,有的人却是用来打游戏或者刷剧!
4.多上课或者多进社群:
现在网上的课有很多很多关于IT技术的,只要你想学,总是会找到相关的课程来学习的。关键就在于你是怎么想的,仅仅是为了业余爱好学习还是为了找一份工作。在社群中除了能学习一些知识以外,还可以跟一些志同道合的朋友相互交流。
以上这些经验足以让你入门,如果想系统的学习,是需要专门去学习的!