文章编号:11578时间:2024-10-01人气:
如果你想进入编程世界,但不知从何下手,那么指南就是为你准备的。我们将从头开始,逐步带领你踏上代码之道的旅程。
从零基础到编程大师所需的时间取决于个人的学习速度和投入的努力。一般来说,如果你每天抽出几个小时专注于学习,可以在 6-12 个月内掌握编程基础。不过,成为一名熟练的程序员可能需要更长的时间,具体取决于你选择的编程领域和所需的经验水平。
学习编程的第一步是选择一种编程语言。有许多不同的编程语言,每种语言都有自己的优点和缺点。对于初学者来说,建议选择一门面向对象的语言,例如 Python 或 Java。这些语言相对容易学习,并且广泛用于各种行业。
掌握编程基础至关重要。你应该深入了解以下概念:
学习编程的关键是实践。只有通过实际编写代码,你才能真正掌握这些概念。尝试创建自己的项目,解决问题并实验不同的解决方案。这将帮助你巩固所学知识并提高你的编程技能。
加入编程社区可以大大加快你的学习进度。与其他程序员交流,参加黑客松和编码挑战,可以让你接触到新的观点,学习新的技术,并获得反馈和支持。
编程是一个不断变化的领域。随着新技术和工具的出现,重要的是要不断学习和扩展你的知识。阅读博客、参加在线课程并探索新的编程语言和概念。这将使你跟上时代的步伐,并成为一名更全面、更有竞争力的程序员。
成为编程大师没有一蹴而就的方法。需要付出努力、奉献和对学习的热情。以下是一些成为编程大师的秘诀:
通过遵循这些指南,从零基础到编程大师的旅程不再是一场遥不可及的梦想。记住,学习编程需要时间和奉献,但如果你保持热情,实践你的技能并不断学习,你最终会达到你的目标。成为一名编程大师不仅是一项令人满意的成就,而且还为你开启了一扇通往无限可能的大门。
如果能时光倒流,回到过去,作为一个开发人员,你可以告诉自己在职业生涯初期应该读一本, 你会选择哪本书呢?我希望这个书单列表内容丰富,可以涵盖很多东西。 ”1、《代码大全》 史蒂夫·迈克康奈尔推荐数:1684“优秀的编程实践的百科全书,《代码大全》注重个人技术,其中所有东西加起来, 就是我们本能所说的“编写整洁的代码”。 这本书有50页在谈论代码布局。 ” —— Joel Spolsky对于新手来说,这本书中的观念有点高阶了。 到你准备阅读此书时,你应该已经知道并实践过书中99%的观念。 – esacSteve McConnell的原作《代码大全》(第1版)是公认的关于编程的最佳实践指南之一, 在过去的十多年间,本书一直在帮助开发人员编写更好的软件。 现在,作者将这本经典著作全新演绎,融入了最前沿的实践技术,加入了上百个崭新的代码示例, 充分展示了软件构建的艺术性和科学性。 McConnell汇集了来自研究机构、学术界以及业界日常实践的主要知识, 把最高效的技术和最重要的原理交织融会为这本既清晰又实用的指南。 无论您的经验水平如何,也不管您在怎样的开发环境中工作,也无论项目是大是小, 本书都将激发您的思维并帮助您构建高品质的代码。 《代码大全(第2版))》做了全面的更新,增加了很多与时俱进的内容,包括对新语言、新的开发过程与方法论的讨论等等。 2、《程序员修炼之道》推荐数:1504对于那些已经学习过编程机制的程序员来说,这是一本卓越的书。 或许他们还是在校生,但对要自己做什么,还感觉不是很安全。 就像草图和架构之间的差别。 虽然你在学校课堂上学到的是画图,你也可以画的很漂亮, 但如果你觉得你不太知道从哪儿下手,如果某人要你独自画一个P2P的音乐交换网络图,那这本书就适合你了。 —— Joel《程序员修炼之道:从小工到专家》内容简介:《程序员修炼之道》由一系列独立的部分组成, 涵盖的主题从个人责任、职业发展,知道用于使代码保持灵活、并且易于改编和复用的各种架构技术, 利用许多富有娱乐性的奇闻轶事、有思想性的例子及有趣的类比, 全面阐释了软件开发的许多不同方面的最佳实践和重大陷阱。 无论你是初学者,是有经验的程序员,还是软件项目经理,《程序员修炼之道:从小工到专家》都适合你阅读。 3、《计算机程序的构造和解释》推荐数:916就个人而言,这本书目前为止对我影响醉倒的一本编程书。 《代码大全》、《重构》和《设计模式》这些经典书会教给你高效的工作习惯和交易细节。 其他像《人件集》、《计算机编程心理学》和《人月神话》这些书会深入软件开发的心理层面。 其他书籍则处理算法。 这些书都有自己所属的位置。 然而《计算机程序的构造和解释》与这些不同。 这是一本会启发你的书,它会燃起你编写出色程序的热情; 它还将教会你认识并欣赏美; 它会让你有种敬畏,让你难以抑制地渴望学习更多的东西。 其他书或许会让你成为一位更出色的程序员,但此书将一定会让你成为一名程序员。 同时,你将会学到其他东西,函数式编程(第三章)、惰性计算、元编程、虚拟机、解释器和编译器。 一些人认为此书不适合新手。 个人认为,虽然我并不完全认同要有一些编程经验才能读此书,但我还是一定推荐给初学者。 毕竟这本书是写给著名的6.001,是麻省理工学院的入门编程课程。 此书或许需要多做努力(尤其你在做练习的时候,你也应当如此),但这个价是对得起这本书的。 4、《C程序设计语言》推荐数:774这本书简洁易读,会教给你三件事:C 编程语言;如何像程序员一样思考;底层计算模型。 (这对理解“底层”非常重要)—— Nathan《C程序设计语言》(第2版新版)讲述深入浅出,配合典型例证,通俗易懂,实用性强, 适合作为大专院校计算机专业或非计算机专业的C语言教材,也可以作为从事计算机相关软硬件开发的技术人员的参考书。 《C程序设计语言》(第2版新版)原著即为C语言的设计者之一Dennis 和著名的计算机科学家Brian 合著的 一本介绍C语言的权威经典著作。 我们现在见到的大量论述C语言程序设计的教材和专著均以此书为蓝本。 原著第1版中介绍的C语言成为后来广泛使用的C语言版本——标准C的基础。 人们熟知的“hello,world”程序就是由本书首次引入的,现在,这一程序已经成为所有程序设计语言入门的第一课。 5、《算法导论》推荐数:671《代码大全》教你如何正确编程; 《人月神话》教你如何正确管理; 《设计模式》教你如何正确设计……在我看来,代码只是一个工具,并非精髓。 开发软件的主要部分是创建新算法或重新实现现有算法。 其他部分则像重新组装乐高砖块或创建“管理”层。 我依然梦想这样的工作,我的大部分时间(>50%)是在写算法,其他“管理”细节则留给其他人…… —— Ran Biron经典的算法书,被亚马逊网,《程序员》等评选为2006年最受读者喜爱的十大IT图书之一。 算法领域的标准教材,全球多所知名大学选用 MIT名师联手铸就,被誉为“计算机算法的圣经” 编写上采用了“五个一”,即一章介绍一个算法、一种设计技术、一个应用领域和一个相关话题。 6、《重构:改善既有代码的设计》推荐数:617《重构:改善既有代码的设计》清晰地揭示了重构的过程,解释了重构的原理和最佳实践方式, 并给出了何时以及何地应该开始挖掘代码以求改善。 书中给出了70多个可行的重构,每个重构都介绍了一种经过验证的代码变换手法的动机和技术。 《重构:改善既有代码的设计》提出的重构准则将帮助你一次一小步地修改你的代码,从而减少了开发过程中的风险。 《重构:改善既有代码的设计》适合软件开发人员、项目管理人员等阅读, 也可作为高等院校计算机及相关专业师生的参考读物。 我想我不得不推荐《重构》:改进现有代码的设计。 —— Martin我必须承认,我最喜欢的编程语录是出自这本书:任何一个傻瓜都能写出计算机能理解的程序, 而优秀的程序员却能写出别人能读得懂的程序。 —— Martin Fowler7、《设计模式》推荐数:617自1995年出版以来,本书一直名列Amazon和各大书店销售榜前列。 近10年后,本书仍是Addison-Wesley公司2003年最畅销的图书之一。 中文版销售逾4万册。 就我而言,我认为四人帮编著的《设计模式》是一本极为有用的书。 虽然此书并不像其他建议一样有关“元”编程,但它强调封装诸如模式一类的优秀编程技术, 因而鼓励其他人提出新模式和反模式(antipatterns),并运用于编程对话中。 —— Chris Jester-Young8、《人月神话》推荐数:588在软件领域,很少能有像《人月神话》一样具有深远影响力并且畅销不衰的著作。 Brooks博士为人们管理复杂项目提供了最具洞察力的见解。 既有很多发人深省的观点,又有大量软件工程的实践。 本书内容来自Brooks博士在IBM公司System/360家族和OS/360中的项目管理经验。 该书英文原版一经面世,即引起业内人士的强烈反响,后又译为德、法、日、俄中等多种语言,全球销量数百万册。 确立了其在行业内的经典地位。 9、《计算机程序设计艺术》推荐数:542《计算机程序设计艺术》系列著作对计算机领域产生了深远的影响。 这一系列堪称一项浩大的工程,自1962年开始编写,计划出版7卷,目前已经出版了4卷。 《美国科学家》杂志曾将这套书与爱因斯坦的《相对论》等书并列称为20世纪最重要的12本物理学著作。 目前Knuth正将毕生精力投入到这部史诗性著作的撰写中。 这是高德纳倾注心血写的一本书。 —— Peter Coulton10、《编译原理》(龙书)推荐数:462我很奇怪,居然没人提到龙书。 (或许已有推荐,我没有看到)。 我从没忘过此书的第一版封面。 此书让我知道了编译器是多么地神奇绝妙。 - DB11、《深入浅出设计模式》推荐数:445强大的写作阵容。 《Head First设计模式》(中文版) 作者Eric Freeman; ElElisabeth Freeman是作家、讲师和技术顾问。 Eric拥有耶鲁大学的计算机科学博士学位,E1isabath拥有耶鲁大学的计算机科学硕士学位。 Kathy Sierra(javaranch.com的创始人)FHBert Bates是畅销的HeadFirst系列书籍的创立者,也是Sun公司Java开发员认证考试的开发者。 本书的产品设计应用神经生物学、认知科学,以及学习理论,这使得这本书能够将这些知识深深地印在你的脑海里, 不容易被遗忘。 本书的编写方式采用引导式教学,不直接告诉你该怎么做,而是利用故事当作引子,带领读者思考并想办法解决问题。 解决问题的过程中又会产生一些新的问题,再继续思考、继续解决问题,这样可以加深体会。 作者以大量的生活化故事当背景,例如第1章是鸭子,第2章是气象站,第3章是咖啡店, 书中搭配大量的插图(几乎每一页都有图),所以阅读起来生动有趣,不会感觉到昏昏欲睡。 作者还利用歪歪斜斜的手写字体,增加“现场感”。 精心设计许多爆笑的对白,让学习过程不会太枯燥。 还有模式告白节目,将设计模式拟人化成节目来宾,畅谈其内在的一切。 每一章都有数目不等的测验题。 每章最后有一页要点整理,这也是精华所在,我都是利用这一页做复习。 我知道四人帮的《设计模式》是一本标准书,但倒不如先看看这部大部头,此书更为简易。 一旦你了解了解了基本原则,可以去看四人帮的那本圣经了。 - Calanus12、《哥德尔、艾舍尔、巴赫书:集异璧之大成》推荐数:437如果下昂真正深入阅读,我推荐道格拉斯·侯世达(Douglas Hofstadter)的《哥德尔、艾舍尔、巴赫书》。 他极为深入研究了程序员每日都要面对的问题:递归、验证、证明和布尔代数。 这是一本很出色的读物,难度不大,偶尔有挑战,一旦你要鏖战到底,将是非常值得的。 – Jonik13、《代码整洁之道》推荐数:329细节之中自有天地,整洁成就卓越代码尽管糟糕的代码也能运行,但如果代码不整洁,会使整个开发团队泥足深陷, 写得不好的代码每年都要耗费难以计数的时间和资源。 然而这种情况并非无法避免。 著名软件专家在《代码整洁之道》中为你呈现出了革命性的视野。 Martin携同ObjectMetltor公司的同事,从他们有关整洁代码的最佳敏捷实践中提炼出软件技艺的价值观, 以飨读者,让你成为更优秀的程序员——只要你着手研读《代码整洁之道》。 阅读《代码整洁之道》需要你做些什么呢?你将阅读代码——大量代码。 《代码整洁之道》促使你思考代码中何谓正确,何谓错误。 更重要的是,《代码整洁之道》将促使你重新评估自己的专业价值观,以及对自己技艺的承诺。 从《代码整洁之道》中可以学到:好代码和糟糕的代码之间的区别; 如何编写好代码,如何将糟糕的代码转化为好代码; 如何创建好名称、好函数、好对象和好类; 如何格式化代码以实现其可读性的最大化; 如何在不妨碍代码逻辑的前提下充分实现错误处理; 如何进行单元测试和测试驱动开发。 虽然《代码整洁之道》和《代码大全》有很多共同之处,但它有更为简洁更为实际的清晰例子。 – Craig P. Motlin14、《Effective C++》和《More Effective C++》推荐数:297在我职业生涯早期,Scott Meyer的《Effective C++》和后续的《More Effective C++》都对我的编程能力有着直接影响。 正如当时的一位朋友所说,这些书缩短你培养编程技能的过程,而其他人可能要花费数年。 去年对我影响最大的一本书是《大教堂与市集》,该书教会我很有关开源开发过程如何运作,和如何处理我代码中的Bug。 – John Channing15、《编程珠玑》推荐数:282多年以来,当程序员们推选出最心爱的计算机图书时,《编程珠玑》总是位列前列。 正如自然界里珍珠出自细沙对牡蛎的磨砺,计算机科学大师Jon Bentley以其独有的洞察力和创造力, 从磨砺程序员的实际问题中凝结出一篇篇不朽的编程“珠玑”, 成为世界计算机界名刊《ACM通讯》历史上最受欢迎的专栏, 最终结集为两部不朽的计算机科学经典名著,影响和激励着一代又一代程序员和计算机科学工作者。 本书为第一卷,主要讨论计算机科学中最本质的问题:如何正确选择和高效地实现算法。 尽管我不得不羞愧地承认,书中一半的东西我都没有理解,但我真的推荐《编程珠玑》,书中有些令人惊奇的东西。 – Matt Warren16、《修改代码的艺术》by Michael Feathers本书是继《重构》和《重构与模式》之后探讨修改代码技术的又一里程碑式的著作, 而且从涵盖面和深度上都超过了前两部经典。 书中不仅讲述面向对象语言(Java、C#和C++)代码,也有专章讨论C这样的过程式语言。 作者将理解、测试和修改代码的原理、技术和最新工具(自动化重构工具、单元测试框架、仿对象、集成测试框架等), 与解依赖技术和大量开发和设计优秀代码的原则、最佳实践相结合,许多内容非常深入,而且常常发前人所未发。 书中处处体现出作者独到的洞察力,以及多年开发和指导软件项目所积累的丰富经验和深厚功力。 通过这部集大成之作,你不仅能掌握最顶尖的修改代码技术,还可以大大提高对代码和软件开发的领悟力。 我认为没有任何一本书能向这本书一样影响了我的编程观点。 它明确地告诉你如何处理其他人的代码,含蓄地教会你避免哪些(以及为什么要避免)。 - Wolfbyte同意。 很多开发人员讨论用干净的石板来编写软件。 但我想几乎所有开发人员的某些时候是在吃其他开发人员的狗食。 – Bernard Dy17、《编码:隐匿在计算机软硬件背后的语言》这是一本讲述计算机工作原理的书。 不过,你千万不要因为“工作原理”之类的字眼就武断地认为,它是晦涩而难懂的。 作者用丰富的想象和清晰的笔墨将看似繁杂的理论阐述得通俗易懂,你丝毫不会感到枯燥和生硬。 更重要的是,你会因此而获得对计算机工作原理较深刻的理解。 这种理解不是抽象层面上的,而是具有一定深度的,这种深度甚至不逊于“电气工程师”和“程序员”的理解。 不管你是计算机高手,还是对这个神奇的机器充满敬畏之心的菜鸟, 都不妨翻阅一下《编码:隐匿在计算机软硬件背后的语言》,读一读大师的经典作品,必然会有收获。 我推荐Charles Petzold的《编码》。 在这个充满工具和IDE的年代,很多复杂度已经从程序员那“抽取”走了,这本书一本开眼之作。 – hemil18、《禅与摩托车维修艺术 / Zen and the Art of Motorcycle Maintenance》对我影响最大的那本书是 Robert Pirsig 的《禅与摩托车维修艺术》。 不管你做什么事,总是要力求完美,彻底了解你手中的工具和任务,更为重要的是, 要有乐趣(因为如果你做事有乐趣,一切将自发引向更好的结果)。 – akr19、《Peopleware / 人件集:人性化的软件开发》Demarco 和 Lister 表明,软件开发中的首要问题是人,并非技术。 他们的答案并不简单,只是令人难以置信的成功。 第二版新增加了八章内容。 – Eduardo Molteni20、《Coders at Work / 编程人生》这是一本访谈笔录,记录了当今最具个人魅力的15位软件先驱的编程生涯。 包括DonaldKnuth、Jamie Zawinski、Joshua Bloch、Ken Thompson等在内的业界传奇人物,为我们讲述了 他们是怎么学习编程的,在编程过程中发现了什么以及他们对未来的看法, 并对诸如应该如何设计软件等长久以来一直困扰很多程序员的问题谈了自己的观点。 一本非常有影响力的书,可以从中学到一些业界顶级人士的经验,了解他们如何思考并工作。 – Jahanzeb Farooq21、《Surely You’re Joking, Mr. Feynman! / 别闹了,费曼先生!》虽然这本书可能有点偏题,但不管你信不信,这本书曾在计算机科学专业课程的阅读列表之上。 一个优秀的角色模型,一本有关好奇心的优秀书籍。 – mike、《Effective Java 中文版》此书第二版教你如何编写漂亮并高效的代码,虽然这是一本Java书,但其中有很多跨语言的理念。 – Marcio Aguiar23、《Patterns of EntERPrise Application Architecture / 企业应用架构模式》很奇怪,还没人推荐 Martin Fowler 的《企业应用架构模式》- levi rosol24、《The Little Schemer》和《The Seasoned Schemer》 nmiranda这两本是LISP的英文书,尚无中文版。 美国东北大学网站上也有电子版。 25、《交互设计之路》英文名:《The Inmates Are Running The Asylum: Why High Tech Products Drive Us Crazy and How to Restore the Sanity》该书作者:Alan Cooper,人称Visual Basic之父,交互设计之父。 本书是基于众多商务案例,讲述如何创建更好的、高客户忠诚度的软件产品和基于软件的高科技产品的书。 本书列举了很多真实可信的实际例子,说明目前在软件产品和基于软件的高科技产品中,普遍存在着“难用”的问题。 作者认为,“难用”问题是由这些产品中存在着的高度“认知摩擦”引起的, 而产生这个问题的根源在于现今软件开发过程中欠缺了一个为用户利益着想的前期“交互设计”阶段。 “难用”的产品不仅损害了用户的利益,最终也将导致企业的失败。 本书通过一些生动的实例,让人信服地讲述了由作者倡导的“目标导向”交互设计方法在解决“难用”问题方面的有效性, 证实了只有改变现有观念,才能有效地在开发过程中引入交互设计,将产品的设计引向成功。 本书虽然是一本面向商务人员而编写的书,但也适合于所有参与软件产品和基于软件的高科技产品开发的专业人士, 以及关心软件行业和高科技行业现状与发展的人士阅读。 他还有另一本中文版著作:《About Face 3 交互设计精髓》26、《Why’s (Poignant) Guide to Ruby 》如果你不是程序员,阅读此书可能会很有趣,但如果你已经是个程序员,可能会有点乏味。 27、《Unix编程艺术》It is useful regardless operating system you use. – J.F. Sebastian不管你使用什么操作系统,这本书都很有用。 – J.F. Sebastian28、《高效程序员的45个习惯:敏捷开发修炼之道》45个习惯,分为7个方面:工作态度、学习、软件交付、反馈、编码、调试和协作。 每一个具体的习惯里,一开始提出一个谬论,然后展开分析,之后有正队性地提出正确的做法,并设身处地地讲出了正确做法给你个人的“切身感受”,最后列出几条注意事项,帮助你修正自己的做法(“平衡的艺术”)。 29、《测试驱动开发》前面已经提到的很多书都启发了我,并影响了我,但这本书每位程序员都应该读。 它向我展示了单元测试和TDD的重要性,并让我很快上手。 – Curro我不关心你的代码有多好或优雅。 如果你没有测试,你或许就如同没有编写代码。 这本书得到的推荐数应该更高些。 人们讨论编写用户喜欢的软件,或既设计出色并健壮的高效代码,但如果你的软件有一堆bug,谈论那些东西毫无意义。 – Adam Gent30、《点石成金:访客至上的网页设计秘笈》可用性设计是Web设计中最重要也是难度最大的一项任务。 《点石成金-访客至上的网页设计秘笈(原书第二版)》作者根据多年从业的经验,剖析用户的心理, 在用户使用的模式、为扫描进行设计、导航设计、主页布局、可用性测试等方面提出了许多独特的观点, 并给出了大量简单、易行的可用性设计的建议。 本书短小精炼,语言轻松诙谐,书中穿插大量色彩丰富的屏幕截图、趣味丛生的卡通插图以及包含大量信息的图表, 使枯燥的设计原理变得平易近人。 本书适合从事Web设计和Web开发的技术人员阅读,特别适合为如何留住访问者而苦恼的网站/网页设计人员阅读。 这是一本关于Web设计原则而不是Web设计技术的书。 本书作者是Web设计专家,具有丰富的实践经验。 他用幽默的语言为你揭示Web设计中重要但却容易被忽视的问题,只需几个小时, 你便能对照书中讲授的设计原则找到网站设计的症结所在,令你的网站焕然一新。
学习任何知识,一步一步,总是最好的方法。
不幸的是,很多人知道真相,却一直想要去所谓的捷径。
如果你是刚开始中学生学习编程,或者你是一个刚进入大学计算机科学学院的本科生,或者你是一个对于初学者在计算机领域有所建树的决心,你必须渴望知道,学习计算机技术,究竟应该从哪里开始。
我的建议是:数学,英语,C语言。
数学和英语的重要性,我并不需要强调的是,我们从幼儿园开始学习他们,把他们在任何时候都在最重要的位置,无论你是否了解电脑。
为什么C语言是如此的重要呢?我们谈论的是从一开始的学习方法。
描述在书的事情,如果他们不经过我们的手,它是很难被完全消化吸收。
计算机组成原理来解释浮点格式,如果我们可以看到和分析表示的浮点数在内存或注册,它是一千倍比纸更结实;数据结构和算法似乎很难,如果可以的话刚刚涉水通过一本书,书上的例子,然后完成练习,你可以掌握算法,操作系统原理不仅是原则,只能做一些核心方面的实验,才能真正有深刻的理解;许多时髦的技术,比如,PHP,AJAX,JavaEE的。
NET等等等等,很多专家学习技术,只需要很短的时间,不用说,他们肯定是在C语言的主人。
C语言几乎是普遍的工具,所有的计算机技术,包括计算机的基本理论。
不精通在C语言决心,不涉足计算机领域。
为什么是C语言,而不是+ +而不是Java是不是其他?因为C语言是最简单的。
你需要掌握一门语言工具,但也许并不需要大量的“面向对象”的概念,“模板”,“函数重载”等。
足够低级别的C语言,非常,非常接近底层结构的计算机,不会让你迷失在浩瀚海洋的概念。
除了“指针”,C语言没有一个真正意义上的困难,“指针”,它的关键是了解计算机基本结构的精髓。
初学者不必去想应该学到什么,比如C语言的专家,你就会知道下一步该怎么做去。
如果你有兴趣在操作系统内部,你可以尝试看看在Unix的内核,除了C语言,汇编语言和保护模式,你还需要一些知识;,C语言是足够的,如果你有兴趣的算法,那么恭喜你,你使用;如果你有兴趣在Windows编程中,Windows编程看,笔者清楚地告诉你只需要基础的C语言“,如果你有兴趣在任何其他语言,去了,但建议先学习C + +的,因为你需要一些知识的“面向对象”。
学习C语言不是一朝一夕的事情,但并不需要花十年以掌握,了解如何最大限度地减少成本和精通C语言是本文的主题。
请注意,即使是“最低成本”,也不是任何快捷方式,但大部分收益在最短的时间内,也意味着你需要通过一个艰难的过程。
第一,学习阅读,或者更确切地说,没有读一本好书所有初学者面临的第一个问题是:如何选择材料。
良好的开端是成功的一半,一个优秀的教材乘数是一个关键因素,不幸的是,学校通常会帮你指定一个非常糟糕的C语言教科书,幸运的是,你也可以选择再次BR />著名教授谭浩强的“C程序设计语言”,说的发行量超过400万,据我所知,很多学校都会推荐这本书作为一个C语言的课本,我的名字与教授(叹号宇)一个字,但我坚定的黑色,他的书,这本书不是写计算机科学专业的学生,但看到谁需要测试计算机等级考试等专业的学生,这本书的主要缺点是:例如计划是非常不专业,你不能教你的程序的设计应掌握的思维方式,节目风格相当不错,您将开发一个乱写代码的恶习;太多的错误,有人指出,这本书数以百计的错误,他们中的许多关键概念上的错误,那么,这本书中,我不想说太多,有兴趣的你可以看看网络:) Kernighan和Ritchie的“C程序设计语言”(中译本“C + +程序设计语言“)被称为经典中的经典,但许多旧的过时的,和C语言的标准相距甚远,我们必须看看最新的版本,或者不愿意看到,另外,即使是最经典和最权威的一本书,是没有办法详尽,所以手站在一个“C语言参考手册,是非常必要的。
C语言参考手册“是”C参考手册“,是C语言标准的详细描述,包括大多数的C标准库函数,视为C语言的标准是最好的工具的细节。
顺便说一下,最新的”按照C89标准C语言程序设计“修订,”C语言参考手册介绍了C99标准,这两个可能会有所不同,建议按照C99标准学习。
除了作为一个C指针,写是相当不错的,英文名称为“C”的指针,强调重要性的指针可以看作是这本书的一个特点。
但是这本书是不是很适合初学者,如果你曾经学过C语言,一些C语言基础,但还不是很扎实,那么你可以尝试这本书。
我相信,只要你理解了指针,C语言已经不再是一个谜。
如果涉水通过一个C语言教材,想要走的更远,那么你就看两本书。
首先是“C陷阱与缺陷”(中译本“C陷阱与缺陷”),薄薄的小册子,内容是非常,非常有趣。
请注意,这本书是20年前写的,他所提到的C语言的许多缺陷已得到改善,但并不是一件坏事,能够了解一些历史。
然后你就可以挑战“C专家编程”(中译本“C专家编程”),这本书顾名思义,这本书相当困难的,一旦你已经仔细阅读并透彻理解,你可以放心地写简历精通C语言。
记住一个原则,不读,但不能读了这本书,它是对生命的浪费。
如果你不明白,那么你必须在缺少一些必要的基本知识。
在这一点上,你必须要仔细分析他们需要添加什么,然后去书店找这些书籍。
补充基本完成学习回来,真正做到少花钱多办事。
UNIX / linux或Windows上,这是一个大问题不同的编程环境会带来不同的程序员的思维方式。
Windows程序员大多依赖集成开发环境,如Visual Studio,Unix程序员更心爱的Makefile与控制台上。
显然,集成开发环境更容易使用,学习C语言在Windows上,只需要一些基本的Visutal C + +工具栏按钮就可以开始写你好,世界! Unix下,你需要一些控制台操作的基本知识。
有人可能会认为Unix的环境更简洁,但习惯的力量是伟大的,每个人都熟悉的Windows,Unix系统专门的设备,以学习C语言的基本操作,似乎有点不值得。
对于Windows只知道如何基本操作,甚至DOS新手不知道任何事情,做一些有趣和有意义的事情是最重要的尽快。
比学习ls命令,猫等。
此外有趣的C语言编写的一个小程序,我们必须把重点放在了C语言本身,不得不暂时忽略一些东西,比如编译链接的Makefile措辞等等等等。
所以我建议初学者应该的Visual C + + 6.0(没有的Visual C + +。
NET)或开发C + +作为主要的学习环境,并且不使用的IDE技巧过多纠缠,因为在未来,你必须打开的Unix环境。
的Visual C + + 6.0中使用调试非常方便也很直观,但默认的编译器不支持C标准而开发的C + +使用gcc编译器支持C99标准。
使用顺便说一句,很多大学的C语言课程还在使用Turbo C 2.0的实验环境,这是相当不可取的,原因之一是TC 2.0 C标准几乎没有支持,其二是TC 2.0编译器程序16了解32位程序在未来将造成很大的困难(当然,与,DJGPP和可以使TC 2.0编译32位程序,但它太复杂了)。
你完成一个C语言的教科书,你必须到Unix平台继续学习,几乎所有的C语言教程是基于Unix平台上(如“C专家编程)。
转换过程是痛苦的,你需要面对的各种复杂的命令,从Windows平台的思维方式是完全不同的,但痛苦是值得的。
Unix和C是共生的,Unix的思维方式和习惯更符合方式的C语言的思维和习惯。
在Unix下,你可以找到无数优秀的源代码,让您享受阅读,您可以轻松地查看联机手册库函数,你也可以看到最好的代码风格(当谈到代码风格,我会专门写一篇文章中详细描述)。
可以概括起来就是一句话:初学C语言,建议使用Windows系统和集成开发环境,在准备“大师”的努力,请转向Unix平台。
一切都准备好了,你是东风本书已选定,环境配置完成俗话说,一切都准备好了,只有你自己的努力。
从前言的书,仔细阅读材料在手,很多人的阅读开始,从第一章的样子,这是错误的做法。
简介整本书的大体介绍,笔者通常会告诉你需要什么基础,能够成功地读了这本书,它可以帮助您测试的基础知识已经有了。
看完序文,还可以浏览目录看这本书的整体结构的方式来安排自己的学习计划。
学习C语言,这是必须要注意每一个细节,这本书必须亲自敲一次的情况下代码,编译和运行一致,才能被视为成品学校输出的一个例子都涉及到这本书说,如果没有,要仔细找原因出在书中的一些例子,他们还创造了一些例子,如学习操作优先级,你可以写几个相同的表达式括号中的不同位置,看看有哪些不同的行为,如* P +(P)+,例如,A = B = C,(= b)== C =(B == C),依此类推。
书上的例子,自己的副本,改造后的例子,“创造”自己的例子,应该仔细地分类保存在源代码中写简短的笔记,这个例子的意图。
例如练习,我建议初学者,所有的练习都是独立做一遍,然后控制的答案代码,看看自己的代码,如果这些缺陷,然后尝试自己的代码。
很多人不重视习题,这是极大的错误,因为笔者介绍了一些重要的真理在练习,而不是简单地测试前面的知识。
>也许你认为学习是太慢了,这是不正确的。
细致的学习就不必回去,等你学到后面才发现自己前面没搞清楚,真是得不偿失。
一般情况下,读整本书后,你应该完成的几千甚至几十万行代码,无论是写上,继续学习丰富原封不动的照搬书,或你自己的突发奇想,在我自己的例子,阅读“Windows核心编程”(我只看过3/4的内容)时,除了转录代码,也写了很多例子,一共有5574行(与WC UNIX下统计工具),后失效了好几天,我已经记不清了Windows系统编程,但只要花几分钟翻出代码看,将重新了然于胸。
所谓好记性不如烂笔头,就是这个道理仔细阅读,认真抄写源代码,独立完成的练习,加上进一步的实验,并将把所有的代码,成为自己的经验和财富,绝对硬,绝对是事半功倍的。
当然,这种方法只适合学习需要精通技术,如果不学习C语言,你有特定的条件。
写道:最后,有没有提到的是非常,非常重要的一点 - 代码风格,必须从一开始就强迫自己学习模仿最好的编码风格。
因为代码风格太重要内容实在是太多了,我将使用一个特殊的文章,详细讨论了,我们所关心的“道路程序员 - 代码风格。
引用:
1、《计算机组成原理》(熟悉) 2、《数据结构》(掌握) 3、《操作系统》(了解->熟悉) 4、《C语言程序设计》(掌握) 5、《编译原理》(了解原理) 6、《汇编语言》(了解) 7、《计算机网络》(了解) 8、《软件工程》(了解) 9、《关系数据库》(熟悉) 10、《The C++Languege 》(掌握) 11、《面向对象设计》(掌握;结合C++学习)window程序设计深入浅出MFC
在你学习编程之前思考一下你的目标,当你有最终目标时道路会更加的清晰。
那么,你想要写什么?网站?游戏?iOS或者Android应用?或是你是想自动化完成一些乏味的任务让你有更多的时间看窗外的风景?也许你只是想更具有就业竞争力找个好工作。
所有的这些都是有价值的目标,这些目标都是你编程学习推动力的一部分,没有推动力的人,是无法在略显枯燥的漫长学习之旅中走远的。
不要浮躁,buteveryonecandoitandeveryonecanexperiencetheextremesatisfactionthatcomeswithit.不管是在线下还是线上的书店,满目都是《21天学通Java》这种速成书目,它们都承诺在很短一段时间内就让你能够学会相关技术。
MatthiasFelleisen在他的著作HowtoDesignPrograms,SecondEdition一书中明确指出了这种「速成」的趋势并予以了以上的讽刺。
所谓的「捷径」或者说「银弹」是不存在的,智者说过,精通某个东西需要10年或个小时,也就是汉语中的「十年磨一剑」,所以不用着急,功不唐捐。
培养兴趣Mostgoodprogrammersdoprogrammingnotbecausetheyexpecttogetpaidorgetadulationbythepublic,butbecauseitisfuntoprogram._LinusTorvalds沉醉于编程,编程更是为了兴趣。
兴趣是推动力的不竭源泉,保持这种充满兴趣的感觉,以便于你能将其投入到你的10年/小时的编程时间中。
编程很有趣,那是探索的喜悦。
那是创造的喜悦。
看到自己亲手完成的作品显示在屏幕上很有趣。
有人为你的代码而惊叹很有趣。
有人在公共场合称赞你的产品、邻居使用你的产品、以及在媒体上讨论你的产品很有趣。
编程应该十分有趣,若并非如此,就找出导致编程无趣的问题,然后解决之。
在这里对于初学者有两个大坑:如果初学者们只与预先构建好的「发动机和组件」接触(没有理解和思考它们构造的原理),这会严重限制他们在将来构建这些东西的能力,并且在诊断解决问题时无从下手。
第二个坑没有第一个那么明显:幼稚的「整体论」方法有些时候会显得很有效,这有一定的隐蔽性与误导性,但是一两年过后(也许没那么长),当你在学习路上走远时,再想回过头来「补足基础」会有巨大的心理障碍,你得抛弃之前自己狭隘的观念,耐心地缓步前进,这比你初学时学习基础知识困难得多。
但也不能矫枉过正,陷入还原论的大坑,初学时便一心试图做宏大的理论,这样不仅有一切流于理论的危险,枯燥和乏味还会让你失去推动力。
这种情况经常发生在计算机科班生身上。
为了更好理解,可以将学习编程类比为学习厨艺:你为了烧得一手好菜买了一些关于菜谱的书,如果你只是想为家人做菜,这会是一个不错的主意,你重复菜谱上的步骤也能做出不赖的菜肴,但是如果你有更大的野心,真的想在朋友面前露一手,做一些独一无二的美味佳肴,甚至成为「大厨」,你必须理解这些菜谱背后大师的想法,理解其中的理论,而不仅仅是一味地实践。
但是如果你每天唯一的工作就是阅读那些厚重的理论书籍,因为缺乏实践,你只会成为一个糟糕的厨子,甚至永远成为不了厨子,因为看了几天书后你就因为枯燥放弃了厨艺的学习。
总之,编程是连接理论与实践的纽带,是计算机科学与计算机应用技术相交融的领域。
正确的编程学习方法应该是:通过自顶而下的探索与项目实践,获得编程直觉与推动力;从自底向上的打基础过程中,获得最重要的通用方法并巩固编程思想的理解。
作为初学者,应以后者为主,前者为辅。
启蒙「学编程应该学哪门语言?」这经常是初学者问的第一个问题,但这是一个错误的问题,你最先考虑的问题应该是「哪些东西构成了编程学习的基础」?编程知识的金字塔底部有三个关键的部分:算法思想:例如怎样找出一组数中最大的那个数?首先你得有一个maxSoFar变量,之后对于每个数语法:我怎样用某种编程语言表达这些算法,让计算机能够理解。
系统基础:为什么while(1)时线程永远无法结束?为什么int*foo(){intx=0;return&x;}是不可行的?启蒙阶段的初学者若选择C语言作为第一门语言会很困难并且枯燥,这是因为他们被迫要同时学习这三个部分,在能做出东西前要花费很多时间。
因此,为了尽量最小化「语法」与「系统基础」这两部分,建议使用Python作为学习的第一门语言,虽然Python对初学者很友好,但这并不意味着它只是一个「玩具」,在大型项目中你也能见到它强大而灵活的身影。
熟悉Python后,学习C语言是便是一个不错的选择了:学习C语言会帮助你以靠近底层的视角思考问题,并且在后期帮助你理解操作系统层级的一些原理,如果你只想成为一个普通(平庸)的开发者你可以不学习它。
下面给出了一个可供参考的启蒙阶段导引,完成后你会在头脑中构建起一个整体框架,帮助你进行自顶向下的探索。
完成Codecademy的Python部分。
这只是热身部分,尽快完成它,因为你永远只是在浏览器里,你不会学到如何搭建开发环境。
在Codecademy这类的编程学习网站学到的那点儿东西,哪怕你只想做一个小的不能再小的项目,你都不知道该从哪儿开始。
完成MIT6.00.1x(中文化)(如果你英语不过关,完成麻省理工学院公开课:计算机科学及编程导论。
MOOC是学习编程的一个有效途径。
虽然该课程的教学语言为Python,但作为一门优秀的导论课,它强调学习计算机科学领域里的重要概念和范式,而不仅仅是教你特定的语言。
如果你不是科班生,这能让你在自学时开阔眼界;课程内容:计算概念,python编程语言,一些简单的数据结构与算法,测试与调试。
支线任务:完成Python核心编程完成HarvardCS50(如果你英语不过关:完成哈佛大学公开课:计算机科学cs50。
同样是导论课,但这门课与MIT的导论课互补。
教学语言涉及C,PHP,JavaScript+SQL,HTML+CSS,内容的广度与深度十分合理,还能够了解到最新的一些科技成果,可以很好激发学习计算机的兴趣。
支线任务:阅读《编码的奥秘》完成《C语言编程》[可选]如果你的目标是成为一名Hacker:阅读HackersDelightPS:如果教育对象还是一个孩子,以下的资源会很有帮助:5-8岁:TurtleAcademy8-12岁:PythonforKids12岁以上:MITScratch或KhanAcademy入门结束启蒙阶段后,初学者积累了一定的代码量,对编程也有了一定的了解。
这时你可能想去学一门具体的技术,诸如Web开发,Android开发,iOS开发什么的,你可以去尝试做一些尽可能简单的东西,给自己一些正反馈,补充自己的推动力。
但记住别深入,这些技术有无数的细节,将来会有时间去学习;同样的,这时候也别过于深入特定的框架和语言,现在是学习计算机科学通用基础知识的时候,不要试图去抄近路直接学你现在想学的东西,这是注定会失败的。
那么入门阶段具体该做些什么呢?这时候你需要做的是反思自己曾经写过的程序,去思考程序为什么(Why)要这样设计?,思考怎样(How)写出更好的程序?试图去探寻理解编程的本质:利用计算机解决问题。
设想:X=用于思考解决方案的时间,即「解决问题」部分Y=用于实现代码的时间,即「利用计算机」部分」编程能力=F(X,Y)(X>Y)要想提高编程能力,就得优化X,Y与函数F(X,Y),很少有书的内容能同时着重集中在这三点上,但有一本书做到了——StructureandInterpretationofComputerPrograms(SICP)《计算机程序的构造和解释》,它为你指明了这三个变量的方向。
在阅读SICP之前,你也许能通过调用几个函数解决一个简单问题。
但阅读完SICP之后,你会学会如何将问题抽象并且分解,从而处理更复杂更庞大的问题,这是编程能力巨大的飞跃,这会在本质上改变你思考问题以及用代码解决问题的方式。
此外,SICP的教学语言为Scheme,可以让你初步了解函数式编程。
更重要的是,他的语法十分简单,你可以很快学会它,从而把更多的时间用于学习书中的编程思想以及复杂问题的解决之道上。
PeterNorvig曾经写过一篇非常精彩的SICP书评,其中有这样一段:Touseananalogy,ifSICPwereaboutautomobiles,itwouldbeforthepersonwhowantstoknowhowcarswork,howtheyarebuilt,andhowonemightdesignfuel-efficient,safe,,justlikeeveryoneelse.如果你是文中的前者,阅读SICP将成为你衔接启蒙与入门阶段的关键点虽然SICP是一本「入门书」,但对于初学者还是有一定的难度,以下是一些十分有用的辅助资源:UdacityCS212DesignofComputerProgram):由上文提到的Google研究主管PeterNorvig主讲,教学语言为Python,内容有一定难度。
HowtoDesignPrograms,SecondEdition:HtDP的起点比SICP低,书中的内容循循善诱,对初学者很友好,如果觉得完成SICP过于困难,可以考虑先读一读HtDP。
UCBerkeleySICP授课视频以及SICP的两位作者给Hewlett-Packard公司员工培训时的录像(中文化项目)ComposingPrograms:一个继承了SICP思想但使用Python作为教学语言的编程导论(其中包含了一些小项目)SICP解题集:对于书后的习题,作为初学者应尽力并量力完成。
完成了这部分学习后,你会逐步建立起一个自己的程序设计模型,你的脑子里不再是一团乱麻,你会意识到记住库和语法并不会教你如何解决编程问题,接下来要学些什么,在你心里也会明朗了很多。
这时候才是真正开始进行项目实践,补充推动力的好时机。
关于项目实践:对于入门阶段的初学者,参与开源项目还为时过早,这时候应该开始一些简单的项目,诸如搭建一个网站并维护它,或是编写一个小游戏再不断进行扩展,如果你自己的想法不明确,MegaProjectList中选取项目。
总之,务必在这时拿下你项目实践的第一滴血。
与此同时,别忘了继续打好根基。
为了将来的厚积薄发,在下面这几个方面你还要继续做足功课(注意:下面的内容没有绝对意义上的先后顺序):计算机系统基础有了之前程序设计的基础后,想更加深入地把握计算机科学的脉络,不妨看看这本书:《深入理解计算机系统》ComputerSystemsAProgrammersPerspective。
这里点名批评这本书的中译名,其实根本谈不上什么深入啦,这本书只是CMU的「计算机系统导论」的教材而已。
CMU的计算机科学专业相对较偏软件,该书就是从一个程序员的视角观察计算机系统,以「程序在计算机中如何执行」为主线,全面阐述计算机系统内部实现的诸多细节。
如果你看书觉得有些枯燥的话,可以跟一门Coursera上的MOOC:TheHardware/SoftwareInterface,这门课的内容是CSAPP的一个子集,但是最经典的实验部分都移植过来了。
同时,可以看看TheCProgrammingLanguage,回顾一下C语言的知识。
完成这本书后,你会具备坚实的系统基础,也具有了学习操作系统,编译器,计算机网络等内容的先决条件。
当学习更高级的系统内容时,翻阅一下此书的相应章节,同时编程实现其中的例子,一定会对书本上的理论具有更加感性的认识,真正做到经手的代码,从上层设计到底层实现都了然于胸,并能在脑中回放数据在网络->内存->缓存->CPU的流向。
此外,也是时候去接触UNIX哲学了:KISS-KeepitSimple,Stupid.在实践中,这意味着你要开始熟悉命令行界面,配置文件。
并且在开发中逐渐脱离之前使用的IDE,学会使用Vim或Emacs(或者最好两者都去尝试)。
阅读《UNIX编程环境》阅读《UNIX编程艺术》折腾你的UN*X系统数据结构与算法基础如今,很多人认为编程(特别是做web开发)的主要部分就是使用别人的代码,能够用清晰简明的方式表达自己的想法比掌握硬核的数学与算法技巧重要的多,数据结构排序函数二分搜索这不都内置了吗?工作中永远用不到,学算法有啥用啊?这种扛着实用主义大旗的「码农」思想当然不可取。
没有扎实的理论背景,遭遇瓶颈是迟早的事。
数据结构和算法是配套的,入门阶段你应该掌握的主要内容应该是:这个问题用什么算法和数据结构能更快解决。
这就要求你对常见的数据结构和算法了熟于心,你不一定要敲代码,用纸手写流程是更快的方式。
对你不懂的数据结构和算法,你要去搜它主要拿来干嘛的,使用场景是什么。
供你参考的学习资源:《算法导论》:有人说别把这本书当入门书,这本书本来就不是入门书嘛,虽说书名是IntroductiontoAlgorithms,这只不过是因为作者不想把这本书与其他书搞重名罢了。
当然,也不是没办法拿此书入门,读第一遍的时候跳过习题和证明就行了嘛,如果还觉得心虚先看看这本《数据结构与算法分析》CourseraAlgorithms:DesignandAnalysis[Part1]&[Part2]:Stanford开的算法课,不限定语言,两个部分跟下来算法基础基本就有了;英语没过关的:麻省理工学院公开课:算法导论入门阶段还要注意培养使用常规算法解决小规模问题的能力,结合前文的SICP部分可以读读这几本书:《编程珠玑》,《程序设计实践》编程语言基础,,learningmanylanguagesisfareasiernow,thankstothewealthoffreelyavailablesoftwareontheInternet-ThePragmaticProgrammer此外还要知道,学习第n门编程语言的难度是第(n-1)门的一半,所以尽量去尝试不同的编程语言与编程范式,若你跟寻了前文的指引,你已经接触了:「干净」的脚本语言Python,传统的命令式语言C,以及浪漫的函数式语言Scheme/Racket三个好朋友。
但仅仅是接触远远不够,你还需要不断继续加深与他们的友谊,并尝试结交新朋友,美而雅的Ruby小姑娘,Hindley-Milner语言家族的掌中宝Haskell都是不错的选择。
但有这么一位你躲不开的,必须得认识的大伙伴—C++,你得做好与他深交的准备:入门:C++Primer[可选]进阶:高效使用:EffectiveC++深入了解:《深度探索C++对象模型》;C++Templates研究反思:TheDesignandEvolutionofC++;对于C++这个NecessaryEvil,看这本书可以让你选择是成为守夜人还是守日人。
现实是残酷的,在软件工程领域仍旧充斥着一些狂热者,他们只掌握着一种编程语言,也只想掌握一种语言,他们认为自己掌握的这门语言是最好的,其他异端都是傻X。
这种人也不是无药可救,有一种很简单的治疗方法:让他们写一个编译器。
要想真正理解编程语言,你必须亲自实现一个。
现在是入门阶段,不要求你去上一门编译器课程,但要求你能至少实现一个简单的解释器。
供你参考的学习资源:《程序设计语言-实践之路》:CMU编程语言原理的教材,程序语言入门书,现在就可以看,会极大扩展你的眼界,拉开你与普通人的差距。
Coursera编程语言MOOC:课堂上你能接触到极端FP(函数式)的SML,中性偏FP的Racket,以及极端OOP(面向对象)的Ruby,并学会问题的FP分解vsOOP分解、ML的模式匹配、Lisp宏、不变性与可变性、解释器的实现原理等,让你在将来学习新语言时更加轻松并写出更好的程序。
UdacityCS262ProgrammingLanguage:热热身,教你写一个简单的浏览器——其实就是一个javascript和html的解释器,完成后的成品还是很有趣的;接下来,试着完成一个之前在SICP部分提到过的项目:用Python写一个SchemeInterpreter其他编程入门阶段比较容易忽视的几点:学好英语:英语是你获取高质量学习资源的主要工具,但在入门阶段,所看的那些翻译书信息损耗也没那么严重,以你自己情况权衡吧。
此外英语的重要性更体现在沟通交流上,LinusTorvalds一个芬兰人,一口流利的英语一直是他招募开发者为Linux干活的的法宝,这是你的榜样。
学会提问:学习中肯定会遇到问题,首先应该学会搜索引擎的「高级搜索」,当单靠检索无法解决问题时,去StackOverflow或知乎提问,提问前读读这篇文章:Whathaveyoutried?不要做一匹独狼:尝试搭建一个像这样简单的个人网站,不要只是一个孤零零的About页面,去学习Markdown与LaTeX,试着在Blog上记录自己的想法,并订阅自己喜欢的编程类博客。
推荐几个供你参考:JoelonSoftware,PeterNorvig,CodingHorror小结以上的内容你不应该感到惧怕,编程的入门不是几个星期就能完成的小项目。
期间你还会遇到无数的困难,当你碰壁时试着尝试「费曼」技巧:将难点分而化之,切成小知识块,再逐个对付,之后通过向别人清楚地解说来检验自己是否真的理解。
当然,依旧会有你解决不了的问题,这时候不要强迫自己——很多时候当你之后回过头来再看这个问题时,一切豁然开朗。
此外不要局限与上文提到的那些材料,还有一些值得在入门阶段以及将来的提升阶段反复阅读的书籍。
ThePragmaticProgrammer就是这样一本程序员入门书,终极书。
有人称这本书为代码小全:从DRY到KISS,从做人到做程序员,这本书教给了你一切,你所需的只是遵循书上的指导。
后记如果你能设法完成以上的所有任务,恭喜你,你已经真正实现了编程入门。
这意味着你在之后更深入的学习中,不会畏惧那些学习新语言的任务,不会畏惧那些「复杂」的API,更不会畏惧学习具体的技术,甚至感觉很容易。
当然,为了掌握这些东西你依旧需要大量的练习,腰还是会疼,走路还是会费劲,一口气也上不了5楼。
但我能保证你会在思想上有巨大的转变,获得极大的自信,看老师同学和csdn的眼光会变得非常微妙,虽然只是完成了编程入门,但已经成为了程序员精神世界的高富帅。
不,我说错了,即使是高富帅也不会有强力精神力,他也会怀疑自己,觉得自己没钱就什么都不是了。
但总之,你遵循指南好好看书,那就会体验「会当凌绝顶」的感觉。
首先要想学编程,选一门合适的计算机语言就十分重要了,怎么去选择就显得尤为重要了,这要根据自己的兴趣爱好及每个语言的特性来选择,比如说PHP适合做web开发,易学习,易上手,非常流行的一门计算机语言了,我个人比较推荐php语言。
java可以做web开发,做安卓app开发也用的是java,在学习程度上上可能比php稍微难上手一点,不过也是没问题的,如果对java感兴趣可以尝试一下。
python是目前比较火的一门语言了,比较适合做人工智能领域,另外写网络爬虫类的程序,用python也是非常合适的了,看个人兴趣来选择了。
c,c++,c#这些语言就不推荐给了,特别是c#,已经是比较过时的一门语言了,即使学习好了,也不太适合去找工作,c与c++并不是十分适合初学者来学习,因此也是没必要进行考虑了,还有一些更小众的语言,更是没有必要去考虑,因此关于语言的学习就从上面3种语言去选择一门自己所感兴趣的吧!研发搭建环境如果选择好计算机语言,那么接下来就是研发环境的搭建了,因为只有研发环境搭建好了,才可以进行后续的编程工作,比如说PHP,那么就从网络上搜一下如何安装PHP环境,能搜出一些简单的教程,初学者按照教程一步一步来,顶多半天时间就可以把研发环境装好了,如果是java,就需要先安装jdk,进行环境变量的配置等,网上也有相关的教程,也是十分容易的,相信大家只要按照教程来做,都可以很轻易的把研发环境搭建起来的选好视频和书籍,辅助学习。
既然是零基础学习,就需要进行系统的学习,而不是到处网络零基础的知识点进行学习。
代码练习跟随教程一个一个章节的进行学习,需要注意的一点就是不能只是去看,那样不行,要对每一个章节的知识点要亲自用代码敲一遍,运行一下试试效果才行,这样才能提高自己的动手能力,才开始会觉得有一点生疏,慢慢的就会熟练起来,逐渐会增加编程的兴趣。
这个过程就是需要反复的进行练习,大量的代码练习才行。
这个过程是5步中最关键的阶段了,重在代码亲自练习,对编程中有的章节不明白的地方,千万不要放过去,可以在网上找一些相关的编程交流群,参加进去,在线上咨询一些过来人,也许就可以轻松帮你解决疑问了,对你的学习十分帮助,并且整个过程也都是免费的。
项目实战如果说基础教程都按部就班的都实践过一遍了,那么你就有一定的编程的基本功了,那么自己就可以尝试着做一些小项目,把学到的知识给串起来,进入项目实战阶段,比如说自己设计一个学生管理系统,并把它完成,如果不了解怎么设计,可以去网上搜索。
慢慢就有思路了。
我也在学习这方面,视频书籍看过不少,最推荐的还是北京尚学堂的学习资料,Java.300集,Python400集,都是很经典的入门基础教程,而且是结合项目学习的,很有意思,干货满满,还都是免费的,推荐你可以去看看,相信可以带你走进变成的世界。
从零开始学编程,第一关就是要选择你所要学习的编程语言。
面对着琳琅满目的编程语言,初学者常常一筹莫展,拿不定主意,不知该选哪
对于初学者来说,看书只是学习的一部分,还有很重要的一部分就是实践,一定要多敲代码,多敲代码,多敲代码。
下面给大家推荐几本个人觉得还不错的书。
书是永远都读不完的,但是知识可以是自己的,只有选择适合你自己的书单,才是最佳的解决方案。
有些书籍是因为当时有项目需要用到这方面技术才需要看的,比如云计算和大数据相关的书籍,单纯的Java学习者可以忽略这方面的书籍,特此提醒。
The Pragmatic Programmer:From Journeyman to Master
作者:[美]Andrew Hunt,David Thomas
内容简介:
《程序员修炼之道》之所以在全球范围内广泛传播,被一代代开发者奉为圭臬,是因为它可以创造出真正的价值:或编写出更好的软件,或探究出编程的本质,而所有收获均不依赖于特定语言、框架和方法。
“要把低级的知识放在代码中,它属于那里;把注释保留给其他的高级说明。”
—— 引自 第2章 务实的方法
Clean Code:A Handbook of Agile Software Craftsmanship
作者:[美]Robert C. Martin
内容简介:
干净的代码,既在质量上较为可靠,也为后期维护和升级奠定了良好基础。
作为编程领域的佼佼者,本书作者给出了一系列行之有效的整洁代码操作实践,并辅以来自实际项目的正、反两面的范例。
只要遵循这些规则,就能编写出干净的代码,从而有效提升代码质量。
“我们都曾经瞟一眼自己亲手造成的混乱,决定弃之不顾,走向新一天。
我们都曾经看到自己的烂代码居然能运行,然后断言能运行的烂程序总比没有强。
我们都曾经说过有朝一日再回头清理。
当然,那些日子里,我们都没听过勒布朗( LeBlanc )法则:稍后等于永不( Later equals never.) 。
”
——引自 第1章 1.2 糟糕的代码
Code Complete
作者:[美]Steve McConnell
内容简介:
本书被广泛认为是编程的最佳使用指南,其十多年来一直帮助开发人员编写更好的软件。
这也是一本完整的软件构建手册,涵盖了软件构建过程中的所有细节。
它从软件质量和编程思想等方面论述了软件构建的各个问题,并详细论述了紧跟潮流的新技术、高屋建瓴的观点、通用的概念,还含有丰富而典型的程序示例。
“有效地管理(需求)变更是实现高质量的一个关键。”
——引自 第20章 软件质量概述
Refactoring: Improving the Design of Existing Code
作者:[美]Martin Fowler
内容简介:
书中清晰揭示了重构的过程,解释了重构的原理和实践方式,并给出了何时以及何地应该开始挖掘代码以求改善。
书中给出了60多个可行的重构,每个重构都介绍了一种经过验证的代码变换手法的动机和技术。
本书提出的重构准则将帮助开发人员一次一小步地修改代码,从而减少开发过程中的风险。
“过去20年,《重构》一直是我案头必备的图书。
每次重读,仍有感悟。
对我而言,《重构》的意义不只在于指导代码重构,更在于让人从一开始就知道什么是好的代码,并且尽量写出没有坏味道的代码。
Martin Fowler这次对本书进行的重构,体现了近年来编程领域的一些思潮变化。
看来,既有设计,永远有改进空间。
”
——韩磊,《代码整洁之道》译者
Head First Design Patterns
作者:[美]Eric Freeman,Bert Bates,Kathy Sierra,Elisabeth Freeman
内容简介:
本书向您展示了功能强大、优雅、可重用、灵活的设计模式,并利用认知科学和学习理论的最新研究来创造多感官的学习体验,采用视觉丰富的形式,专门为大脑的工作方式而设计,而不是使您沉入睡眠的繁琐的文本输入法形式。
“针对接口编程,而不是针对实现编程。”
——引自 影印版 第11页
The Mythical Man-Month:Essays on Software Engineering
作者:[美]Frederick P. Brooks Jr
内容简介:
本书内容源于作者Brooks在IBM公司任System/360计算机系列以及其庞大的软件系统OS/360项目经理时的实践经验。
在本书中,Brooks为人们管理复杂项目提供了最具洞察力的见解,既有很多发人深省的观点,又有大量软件工程的实践,为每个复杂项目的管理者给出了自己的真知灼见。
“简洁和直白来自概念的完整性。
每个部分必须反映相同的原理、原则和一致的折中机制。
在语法上,每个部分应使用相同的技巧;在语义上,应具有同样的相似性。
因此,易用性实际上需要设计的一致性和概念的完整性。
”
——引自 章节 团队的性质
The Clean Coder:A Code of Conduct for Professional Programmers
作者:[美]Robert C. Martin
内容简介:
本书是编程大师 Bob 大叔 40 余年编程生涯的心得体会, 讲解成为真正专业的程序员需要什么样的态度、原则,需要采取什么样的行动。
作者以自己以及身边的同事走过的弯路、犯过的错误为例,意在为后来人引路,助其职业生涯迈上更高台阶。
“软件行业的飞速改变,意味着软件开发人员必须坚持广泛学习才不至于落伍。”
——引自 第1章 专业主义
Working Effectively with Legacy Code
作者:[美]Michael Feathers
内容简介:
世界级计算机专家Michael C. Feathers的经典之作,软件开发大师Robert C. Martin作序倾情推荐,修改遗留代码的权威指南。
深入剖析修改遗留代码的各种方法和策略,从理解遗留代码、为其编码测试、重构及增加特性等方面给出大量实用建议,是所有程序开发人员必读之作。
“封装是好事情,但可别对测试人员这么说,他们可不这样想。
过分庞大的类往往隐藏了过多的东西。
”
——引自 第20章 处理大类
Design Patterns
作者:[美]Erich Gamma,Richard Helm,Ralph Johnson,John Vlissides
内容简介:
四位顶尖的设计师在面向对象软件的设计方面积累了丰富的经验,针对常见的设计问题提出了一系列简洁、明了的解决方案。
这23种设计模式可让设计人员创建更加灵活,美观,可重用的设计,而无需自己再寻找解决方案。
“将系统分解成对象集合要考虑许多因素:封装、粒度、依赖关系、灵活性、性能、演化、复用等等,它们都影响着系统的分解,并且这些因素通常还是互相冲突的。”
——引自 第1章 1.5 组织编目
Cracking the Coding Interview
作者:[美]Gayle Laakmann McDowell
内容简介:
本书层层紧扣程序员面试的每一个环节,全面而详尽地介绍了程序员应当如何应对面试,才能在面试中脱颖而出。
内容主要涉及面试流程解析,面试官的幕后决策及可能提出的问题,面试前的准备工作,对面试结果的处理,以及出自微软、苹果、谷歌等多家知名公司的189道编程面试题及详细解决方案。
第6版修订了上一版中一些题目的解法,为各章新增了介绍性内容,加入了更多的算法策略,并增添了对所有题目的提示信息。
“我不是招聘人员,我是软件工程师。
因此,我知道要当场提出出色的算法,然后在白板上编写无瑕的代码是什么感觉。
作为候选人和面试官,我都经历过这个过程。
”
——引自 序
以上呢,是为大家推荐的几本不错的编程书籍资料,大家可以搜索一下读一读,即使无法掌握全部,但充实一下自己的知识量总归没有错!
在此,我自我推荐一下我们家的Java基础教程,不敢保证有多好,但我们尽全力去辅导:
希望这个回答对你有帮助!
我想成为C++编程高手,该学什么课程
初学者怎样学编程?
Java书籍推荐有哪些
1. 《程序员修炼之道》(推荐67%)
2.《代码整洁之道》(推荐66%)
3.《代码大全》(推荐42%)
4. 《重构》(推荐35%)
5.《深入浅出设计模式》(推荐29.4%)
6.《人月神话》(推荐27.9%)
7. 《代码整洁之道:程序员的职业素养》(推荐27.9%)
8.《修改代码的艺术》(推荐26.4%)
9. 《设计模式》(推荐25%)
10. 《程序员面试金典(第6版)》(推荐22%)
当然了,除了书籍资料之外,视频教程也是必不可少的,毕竟书本是死的,视频是灵活的,看书的同时不要忘记跟着视频敲代码练项目哦!毕竟以后找工作不是看你能记住多少知识点,而是看你的实战经验,是否能自己开发项目!
Java300集零基础适合初学者视频教程_Java初学入门视频基础巩固教程
相关标签:
代码之道的实用指南、 从零基础到编程要多久、 从零基础到编程大师、
内容声明:
1、本站收录的内容来源于大数据收集,版权归原网站所有!
2、本站收录的内容若侵害到您的利益,请联系我们进行删除处理!
3、本站不接受违法信息,如您发现违法内容,请联系我们进行举报处理!
4、本文地址:http://www.jujiwang.com/article/1a8169170db402244276.html,复制请保留版权链接!
在当今快节奏、数据驱动的世界中,设备的性能和效率至关重要,对于资源受限的设备,找到兼具轻量级和强大功能的操作系统至关重要,Linux系统在这方面脱颖而出,提供了为这些设备提供无与伦比体验的独特组合,Linux的优势轻量级,Linux系统以其小巧的内存占用和低系统要求而闻名,使其成为资源受限设备的理想选择,高效,Linux以其效率著称,...。
互联网资讯 2024-09-28 05:31:51
JavaJDK1.6,也称为Java6,是Java编程语言的一个主要版本,于2006年发布,它引入了一些重要的功能和增强,大大提升了Java应用程序的性能、稳定性和便利性,本文将深入探讨JavaJDK1.6的强大功能,并为您提供如何利用这些功能来增强Java应用程序的实用指南,Java6中的新增功能Java6中引入了以下主要功能,1....。
本站公告 2024-09-27 09:57:24
引言斯波克这个标志性的角色首次出现在20世纪60年代的,星际迷航,原初系列,中,其冷静、理智和具有逻辑性的性格赢得了世界各地的观众,多年来,斯波克一直是流行文化中的一个重要人物,出现在众多电影、电视节目和舞台剧中,本文将探讨斯波克在流行文化中的演变,从他的早期荧幕亮相到他在舞台上的最新回归,从荧幕到舞台莱纳德·尼莫伊,LeonardN...。
本站公告 2024-09-26 11:05:55
Joomla是一个流行的开源内容管理系统,CMS,它被广泛用于创建和管理网站,为了确保您的Joomla网站安全可靠,采取适当的安装安全措施至关重要,安全安装Joomla的步骤下载官方版本,始终从Joomla的官方网站下载Joomla,这确保了您获得最新的安全更新,创建强密码,为您的Joomla数据库和后台设置强密码,避免使用常见单词...。
技术教程 2024-09-25 14:09:13
磁盘配额是一种管理文件服务器上文件存储空间的有效方法,通过实施磁盘配额,管理员可以限制每个用户或组可以使用的存储空间量,从而防止文件服务器过载并避免数据丢失,最佳实践以下是一些实施磁盘配额的最佳实践,1.确立明确的目标在实施磁盘配额之前,确定您的目标非常重要,您是要防止文件服务器过载,还是防止数据丢失,还是两者兼而有之,明确的目标将指...。
互联网资讯 2024-09-25 12:02:23
简介长整型,long,在编程中是一种常见的整数类型,它比整数,int,类型更大,允许表示更大的范围的值,使用长整型也存在一些陷阱,如果不加以小心,可能会导致错误和代码质量较差,常见的陷阱1.类型转换错误将其他类型的数据,例如int、float,转换为长整型时,可能会出现类型转换错误,如果转换后的值超出长整型的范围,则会导致溢出错误,为...。
本站公告 2024-09-23 12:35:12
简介在Android设备上,可以使用appinit,dlls自定义应用程序启动行为,这是一种在应用程序启动时执行自定义代码的机制,可以用来修改界面布局、添加功能或进行其他自定义,要使用appinit,dlls,需要将一个共享库,.so文件,放置在应用程序的lib目录中,这个库必须包含两个函数,android,main,intargc,...。
互联网资讯 2024-09-14 21:31:24
函数式编程,FP,是一种编程范式,它强调函数的应用,而不是状态的变化,它提供了一组强大的工具,使程序员能够创建简洁、可读和可扩展的代码,Kotlin函数Kotlin函数是一等公民,这意味着它们可以像其他任何对象一样被传递、赋值和作为返回类型使用,这使得函数式编程技术在Kotlin中变得容易实现,Kotlin函数的语法类似于Java,但...。
最新资讯 2024-09-14 19:34:09
03e<,%@PageLanguage=C%>,保存此文件为Hello.aspx,然后在浏览器中打开,您将看到一条消息,HelloASP.NET,结论通过掌握ASP.NET的核心概念,您可以构建强大的且可扩展的动态Web应用和网站,本指南只是ASP.NET的一个简介,还有更多高级概念可供探索,...。
本站公告 2024-09-14 14:22:13
简介Java是一种跨平台编程语言,这意味着可以在不同的操作系统,如Windows、Mac和Linux,上运行,要成功运行Java程序,必须正确设置Java环境变量,步骤以下步骤适用于在Windows、Mac和Linux上设置Java环境变量,Windows1.下载并安装JDK,JavaDevelopmentKit,从Oracle官方...。
互联网资讯 2024-09-11 22:29:50
自动发卡平台是一个强大的工具,它可以简化和自动化您的支付流程,通过使用自动发卡平台,您可以节省时间和金钱,同时提高安全性,自动发卡的优势节省时间,自动发卡平台可以自动处理发卡和支付流程,从而节省您的时间和精力,节省金钱,自动发卡平台可以帮助您降低处理费,并通过提供批量折扣和自动续费来节省成本,提高安全性,自动发卡平台可以帮助您保护您的...。
最新资讯 2024-09-11 12:14:00
导语,1982年发生的安阳灵异事件,至今仍是一个谜团,科学无法解释的超自然现象,令人毛骨悚然,背景介绍安阳,地处中国河南省北部,是中国八大古都之一,1982年,一场轰动全国的灵异事件在安阳发生,震惊了整个社会,事件经过1982年夏天,安阳市郊一处居民楼内,一名叫王大明的男子突然精神失常,行为诡异,据王大明描述,他被一个女鬼附身,女鬼要...。
互联网资讯 2024-09-03 05:40:44