hey guys ,我是 cxuan,这一篇文章我就要和你聊聊编程如何学习,这一篇文章涉及的内容简直太多了,我将从入门开始,一步一步到如何提高,然后到一些学习的相关问题,还有一些计算机相关的术语等,干货也非常多,准备好了吗?那么我们开始吧。
编程入门
我们首先需要解决的就是如何入门的问题了,这也是很多新手/小白的困惑,到底如何入手呢?我该从哪里开始呢?
如果你有兴趣学习编程,那么树立一个正确的编程观念是很有帮助的。这个短片是很好的一个入门 https://www.youtube.com/watch?v=mvK0UzFNw1Q ,这个短片解释了你应该以一种合适的观点来开始编程。
在你树立了正确的编程观念后,你需要意识到一个问题,那就是没有通用的学习编程的方法,所以市面上大多数培训机构所提倡的方法并不适用于所有人,这只是他们大多数人所认可的学习方法,但是并不适用于你,你必须找到适合自己的编程方式。
这里需要说两个现象:
很多小伙伴们咨询我关于编程方式的问题,这个没有定数,有的人喜欢早上编程,因为早上比较清醒,思路比较清晰;有的人适合网上编程,晚上没人打扰,而且晚上有一种魔力:空杯心态,你能更清晰的认识自己,到达一种心流的状态。但是晚上有一点特别忌讳
,那就是熬夜
。所以你更需要平衡编程和生活,生活不全部是编程,编程不能完全替代生活。
所以你需要找到适合自己的编程方式,我这里强烈建议一下你按照下面这几种方式来进行:
- 首先找到一些你所感兴趣的问题或者项目,你可以尝试构建工具来解决生活中的小问题,也可以尝试实施从头开始发现有趣的程序。这个项目将有助于激发你继续学习编码的经验,并为你提供练习应用所学内容的机会。
- 做一些研究以确定哪种编程语言最适合你的项目。(下面我会进行介绍)
- 找到一些高质量的面对初学者的学习编程的资源。(同样,下面我会进行介绍)
- 通过 google 搜索来提问或者补充学习资源,如果没有 tz 的话,可以使用必应和搜狗(面向微信公众号平台),微信公众号很多文章比较专业的。
- 最终使用该语言完成了几个有意义的项目
其实,上面这几点归根结底就是这样
刚开始强烈建议规避
这些不良的编程习惯!!!!!!
- 不要只是简单的、被动的使用你正在使用的资源,要及时进行练习和家庭作业,实践是学习编码绝对必要的部分。
- 避免在编程语言之间来回切换;选择一门语言并坚持下去。这是因为编程最终与解决问题有关,而不是与编程语言有关。学会解决问题是具有挑战性的,并且是只有通过练习才能磨练的技能。每次切换语言时,你都在浪费时间,可以花时间练习运用所学的知识来提高解决问题的能力。
- 完成教程后,不要停止学习。编程是一项永远需要新知识的领域
最后,请你记住,学习编码注定是一项长期而又困难的过程,如果你觉得编码很困难,那完全不要气馁,这是很正常的,因为许多人会花很多年的时间学习和练习,才认为自己有能力找到寻找工作或者为重大开源项目做贡献。但是幸运的是,编程入门并不难。
如何选择编程语言
所以现在需要为上面的编程入门提到的几点做一个解释了。
首先,找到合适的、你所感兴趣的编程项目,这个因人而异的,所以就是编程语言的选择问题了。
我经常会被问到这个问题,我该选择哪种语言作为入门?
提出这种问题的人有两个误区
:第一个是你潜意识中认为一定有一门最完美的编程语言来进行学习;第二个是第一门学习的编程语言好像会伴随你的一生。。。。。。
事实上,没有最好的编程语言(PHP 是最好的编程语言纯碎是调侃,这篇文章要解惑下,大家不要相信,有的时候玩笑开着开着就成真的了)。而且你的第一门编程语言对你的职业生涯没有决定性的作用,说起到决定性作用的人,你扪心自问,自己是不是思想懒惰不愿意接触新的编程语言了?
我要告诉你一件事情,刚开始学习一门语言是最难的,因为有很多复杂的概念你搞不懂,但是其实上大多数基本概念是各个语言通用的。随着时间流逝和你对编程工作的深入,要学习一门新的语言会变得越来越容易。可能你刚开始可能要几个月才学会一门编程语言,而一个有经验的程序员可以在几天内熟悉一门新的编程语言。
理想情况下,所有程序员都应具有多种语言的经验。一旦你对一种语言感到满意,就可以继续使用另一种在某些基本方式上有所不同的语言。随着学习更多语言,你将变得更有能力为手头的任务选择合适的工具,这是优秀程序员的标志。由于编程概念至关重要,因此我建议初学者从下表中选择一种主流语言。所有这些语言使初学者可以开始编写简单的应用程序并练习编程,而不必使用任何更复杂的语言功能。
如果你已经有了项目和目标,并且将自己的技能应用到要解决的问题上,你将会学的更快。下面是一些常用编程语言的说明,能够让你有更多的选择。
如果看了这些你仍然觉得迷茫的话,那就不妨使用一门简单易上手的编程语言 Python,Python 是一种良好的,适合初学者的语言,拥有一个庞大的社区和许多库,可以执行几乎任何你想做的事情,从制作游戏到在家中或工作场所中使事情自动化,从进行数据分析到制作网站等等等等。在进入更复杂的应用之前,你需要找到一些好的学习资源
那么我在哪里能找到这些资源呢
下面我为你列出了一些资源获取途径
- 图书,学习任何一项技能前,看书都是一种最有效的途径,也是我最推荐给你的途径,因为我本身就喜欢看书,囤书也是我的一种乐趣。
- 免费的编程书籍,这个 github 上列出来的几乎包括所有编程书籍了,我看完之后大呼过瘾!!!https://github.com/EbookFoundation/free-programming-books/blob/master/books/free-programming-books-zh.md#java ,英文版的如下 https://github.com/EbookFoundation/free-programming-books/blob/master/books/free-programming-books.md
- 一些适合于初学者的书籍
- C#:Rob Miles 撰写的
小黄书
http://www.csharpcourse.com/ - 面向初学者的 C# 编程。 - Python: Al Sweigart's 编写的 《Python 自动化》系列 http://automatetheboringstuff.com/,也有中文译本,即 《Python 编程从入门到实践》
- 同样是 Al Sweigart's 编写的 《Python 发明》系列 http://inventwithpython.com/,该书通过使用Python和Pygame创建计算机游戏来教授编程。
- Abelson and Sussman 编写的《计算机程序的构造和解释》,下面是编程网站 https://mitpress.mit.edu/sites/default/files/sicp/index.html
- Python 编程游戏 http://programarcadegames.com/
- C 语言:c primer plus ,这是一本入门 C 语言非常经典的好书
- C 语言程序设计,同样是一本经典好书,虽然书籍不厚,但是浓缩的就是精华啊!!!
- Java :Head First Java,这是入门 Java 最最最简单的一本书了,没有比这个再简单的了。事实上 Head First 系列都可以作为入门书籍
- Java 核心技术卷一(卷二作为提高),可以看完 Head First 在看这个系列。入门 Java 就这几本书就够了。
- C++:那必须还是 C++ Primer Plus 了,学习 C++ 一些常见的问题可以参考这里 https://www.reddit.com/r/learnprogramming/wiki/faq_cpp
- 除此之外,一些权威 C++ 书籍和指南都在下面这个链接中了 。https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list
- 一些权威 C 语言书籍和指南都在下面这个链接中了。https://stackoverflow.com/questions/562303/the-definitive-c-book-guide-and-list
- 这是一些推荐给开发者们的读物 https://blog.codinghorror.com/recommended-reading-for-developers/
- 每个程序员都应该读的最有影响力的书籍是什么 https://web.archive.org/web/20150518004457/http://stackoverflow.com/questions/1711/what-is-the-single-most-influential-book-every-programmer-should-read
- 算法书籍推荐:市面上有很多关于算法的书籍,最近非常火的《labuladong 的算法小抄》,通俗易懂的《小灰的算法之旅》等等,不过我这里只说两本最经典的算法书:《算法导论》和《算法第四版》
- 在线资源:我下面会推荐一些优质的编程资源,这些编程资源都是非常好的教程,走起!
- 编程社区:在线编程练习社区 https://hackr.io/
- C#
- C# 在线编程练习社区 ,还有什么会比微软更权威的呢?https://dotnet.microsoft.com/learn/dotnet/in-browser-tutorial/1
- C# 体系化的优质教程,当然离不开 Tutoriaispoint 了。https://www.tutorialspoint.com/csharp/index.htm
- C# 优质编程练习网站 https://www.learncs.org/
- Ruby:学习 Ruby 这里给你推荐三个网站:https://rubymonk.com/ 、https://www.pluralsight.com/search?q=ruby、http://hackety.com/
- JavaScript:学习 JavaScript 这里给你推荐两个网站资源:https://www.codecademy.com/、https://eloquentjavascript.net/
- Java
- 还有什么能够比官网更权威的呢?https://docs.oracle.com/javase/tutorial/
- Java 最大的特点就是面向对象的设计思想,这里你可以参考赫尔辛基大学(没听过?就 Linux 他爹的那个学校)https://www.mooc.fi/en
- John Purcell 的 Java 初学者免费版 https://courses.caveofprogramming.com/p/java-for-complete-beginners、https://www.udemy.com/course/java-tutorial/、https://www.youtube.com/playlist?list=PL9DF6E4B45C36D411
- 这个作者有一些多语言的教程 https://www.youtube.com/channel/UCwRXb5dUK4cvsHbx-rGzSgw/playlists
- Java 设计模式和体系结构,参考 John Purcell https://www.udemy.com/course/java-design-patterns-tutorial/、https://courses.caveofprogramming.com/p/java-design-patterns-and-architecture
- Python:你可以翻阅 https://www.reddit.com/r/learnpython/wiki/index 找到更详细,更全面的资源列表,尤其是 https://www.reddit.com/r/learnpython/wiki/index#wiki_new_to_programming.3F 对新手更友好的部分。
- Web 学习
- Web 学习包括一些前端内容,这个网站很不错 https://www.snoopcode.com/
- CSS 3 https://css3please.com/
- 我爱 PHP ,哈哈哈哈 https://ilovephp.jondh.me.uk/en/tutorial/make-your-own-blog
- Web 发展的介绍 https://www.thesoftwareguild.com/coding-bootcamps/introduction-web-development/
- 精选编程资源,这个 github https://github.com/Michael0x2a/curated-programming-resources/blob/master/resources.md 非常不错,精选了很多非常优质的编程语言资源
- 没有上过好大学,是不是就意味着自己没有
竞争力
了?当然不是!这个网站 http://www.infocobuild.com/education/audio-video-courses/ 汇总了很多优质的大学课程
- CS 是一门艺术,而这门艺术你完全可以达到
无师自通
,据我所知 99.9% 的大学对于 CS 的讲授都是一塌糊涂,其中不乏清华北大等高等学府,我 B 站也听过一些视频,讲的真实一言难尽,所以,最靠谱的还是自学,这里有个 github https://github.com/ossu/computer-science,这其实也是一门课程,只不过这个课程就叫做计算机自学课程。