怎么才能快速有效的学习编程
对于“如何快速学习编程”这个问题,其实因人而异。为了帮助大家更好的学习编程,以下是学习啦小编分享给大家的学习编程的方法,希望可以帮到你!
学习编程的方法
“快速”
对于“如何快速学习编程”这个问题,其实我真的不知道何谓“快速”。我觉得,通过遵循以下建议,你将很快地学习编程(至少你的成长/进步会快)。但你真的不应该眼中只有“快速”。只追求速度反而会拖你的后腿,让你自食其果。“快速”学习的唯一可持续方法或许是采用浸泡式教学法。找到一种方法让自己沉浸在编程中很长一段时间(几个月?)。为了让它奏效,你需要不断推动自己去学习新的东西,并迅速抽身离开。这是编码训练营的一个优点。当你出来时,尽管你还不是专家,但你会学得更快。这也可以通过专门的导师教导或与专门的初学者一起学习来实现。
读>写代码>读>写代码(日复一日)
关于如何高效学习编程我要给出的第一条建议是在阅读代码和编写代码之间循环往复。阅读代码(书籍,博客文章,开源代码)将帮助你查看解决方案,了解最佳做法,并大致了解语言或系统。但是在你这样做之后,你需要自己实际去写代码。可以是任何东西。可以是小的编码练习或业余项目,但确保你能将之付诸于实践,并用某种方式使用你学到的东西。如果你不这样做,那么你会发现自己面对编辑器会无所适从无从下手。
这方面的诀窍是让自己感到不舒服。这是相当痛苦的,但就应该这样。编码遵循80/20规则。花80%的时间在20%的代码或20%你所学的东西上。习惯于这种不舒服的感觉并克服它是关键。
这个迭代周期不应该以周为周期或以月为周期发生,而是应该以日为周期。知识等待使用的时间越久,知识这把斧头就越钝。等待学习新知识的时间越长,你就越难以将其融入到代码中。
我推荐阅读关于通用编程主题的网站是lobste.rs。上面有许多关于许多编程主题的文章。另一个好的网站是Hacker News,但网站时常偏离话题。
不要陷入僵局。请求帮忙
我最大的错误是在学习编程陷入僵局的时候用了太长时间。在被卡住时,我会花很多时间在一些愚蠢的东西或一些我根本上不明白的东西上。有时候我需要花费好几天时间才能完成这些工作,而原本我可以用这些时间做更多的事情和学习更多的东西,如果我能找到更好的解决方法的话。卡在一个东西上面超过一个小时基本上就是在浪费时间了。
我推荐三件事情以避免僵局。第一是试着总是阅读更多关于你使用的技术,并总体掌握正在发生什么。通常,当你陷入困境时,意味着你对需要澄清的事情做出了不正确的假设。第二是咨询互联网。这一点很显然,但依然值得一提。在网上查找并询问有过这个问题的人是一个非常重要的技能。Stackoverflow可以说是互联网上最好的网站。不要害怕在那里问自己的问题。通常,只要尽力正确地阐述你的问题就OK了。我真的希望以前我能多问些问题,但总是因为害怕会显得愚蠢而止步。我的第三个建议是向你认识的人请求帮助。通常,你或许已经理解了技术,而且有了问题,但是你可能需要更高层次的上下文才能真正解开谜团。不要胆怯,大着胆子上前去问吧。
例如,当学习Docker时,我花费了大量的时间从头开始重新构建图像。我从根本上不明白docker缓存,并用20分钟时间来等待单个更改到Dockerfile通过。我可能花了8个小时就用在等待构建上。如果我读过更多关于Docker或问一个知道的人,那么可能我早就搞明白了,还可以在更短的时间内学到更多。
为项目而工作
在我的经验中,没有什么可以与工作于自己的项目以学习编程更有用的了。除了一些例外,我所知道的所有真正优秀的程序员都有一个习惯就是工作于业余项目(这也可能发生在工作中!)。有了一个点子并试图实现这个点子是非常具有挑战性的。它需要很强的自律心。但是,通过尝试实际做一件事情,你可以学到如何分解问题并应用技术。你面对的各种问题,以及你如何解决它们才真正是所谓的编程。知道编程语言的每一个古怪细节的确是有帮助的,但它只会让你越来越落伍。此外,想要完成项目的驱动力是继续学习的动力。从业余项目获得的满足感远远超过你在抽象中学习东西的满足感。
我对于选择业余项目的建议是,选择你感兴趣同时你也有想法如何实现的东西。能够在开始之前表达实现总是有助于保持我的动力。在此旅途之中你一定会学到很多!
认识到深入钻研和搬运工之间的区别。相应地选择。
有两种类型的程序员:完美主义者和搬运工。有些人希望一切都是正确的,他们希望完美,他们希望遵循所有的最佳实践,并写出漂亮的优雅代码。他们想要理解每一行代码。有别于那些不管三七二十一,只要自己的代码能工作即可,即使对代码库有损害的人。平衡这两种技能是非常重要的。有时你应该深入钻研一个问题或项目,看看发生了什么。有时你应该让它工作即可,即使你不知道发生了什么。
每当你花费太多时间在某个东西上时,那就问问自己:我应该采取哪种方法?在大多数情况下,你会想取中间值。你想提供一个好的、坚实的解决方案,同时你可以自信地理解和修改,但没有耗费荒谬的时间。随着你作为开发人员的成长,你会更好地明白什么时候就此离开就可以,以及什么时候需要以某些方式完成。
就个人而言,我喜欢我的项目80%完美。如果你的项目是绝对100%完美,没有一行代码让你觉得尴尬,那么很有可能你已经花了太多的时间。
与其他程序员交谈
学习编程的一个很好的方法就是和其他的程序员交谈。不必谈论任何特定的内容。可以是你正在学习的东西,可以是你认为很酷的东西,可以是你正在工作的东西,皆可。你会发现很多程序员并不喜欢只是聊编程。这样做可能会让你学到很多关于库,服务,编程语言和模式方面的知识。但是,最重要的是,你将了解到其他人是如何看待编程的。你会发现,你认为理所当然或从来没有考虑的事情在人与人之间是非常不同的。
如果你没有什么可谈的,那就回到编辑器战争或tab vs space的话题。
尝试一切。如果搞不懂的话,那就等6个月。
最后,我要说的是,一直以来在我身上发生着这样的事,我尝试过很多东西,但我就是不理解。在用30分钟尝试新的东西后,我会停下来。我想这在起步时是很正常的。但是,我记得很多次,在6个月后(或3个月或9个月),我会回到同样的问题或技术上,弄清楚如何使用它。这是因为我又掌握了一些我以前不具备的知识,或者因为它只是另一种方式的框架。等待一段时间,然后回去,总是一种最有用的方法。
这方面的一个例子是学习如何使用终端。我记得很长一段时间我都害怕碰到终端,因为我不知道如何使用。我花了一段时间并按照步骤定期地使用它和理解它。当然,如果我认识可以向我解答的人,或者找到一个好的资源来学习,这样的事情就不会发生!
学习编程的建议
选择一门语言
确定你感兴趣的领域
你可以开始学习任何编程语言(尽管其中一些被描述地比其他的更加“易学”),你得去问自己自己想用通过学习这门语言完成什么样的工作。这将会帮助你确定你应该追求的编程方式并且提供一个良好的开始。
如果你想进入Web开发行业,那你将会有一堆语言需要去学习,这和开发计算机程序相反。移动App的开发需要比PC等的开发更多的技巧。所有的这些决定将会影响着你的发展方向。
考虑从一个“易学”的语言开始
无论你做了什么样的决定,你可能只会希望从一门高水准又易学的语言开始。这些语言对于初学者非常有用,因为它们教授基本的概念和适用于几乎任何语言的思维过程。
在这种语言中最流行的两种是Python和Ruby。它们都是使用着易读的句法的面向对象的Web应用开发语言。
“面向对象”因为着这个语言是围绕着“对象”、数据收集和操作的概念来打造的。这一概念被用在许多先进的编程语言上,比如C++、Java、Objective-C和PHP。
通读大量语言的基本教程
如果你还不确定你应该开始学习哪一门语言,那么就去阅读一些不同语言的基本教程吧。如果一门语言比别的更有意思,那就多去看看是不是真的那样。在网上对于所有的编程语言有无数个基本教程。
Python——一个非常适合初学者的语言 ,而且当你掌握它的时候它会变得更加强大。被用来开发了许多Web应用、甚至一些游戏。
Java——被无数个项目所使用,从游戏到Web应用再到ATM软件。
HTML——对于任何Web开发者必不可少的起航点。在从事其他一系列Web开发之前掌握好HTML非常重要。
C——最古老的语言之一,它已经是非常强大的工具,也是一些更现代的语言的祖先,比如C++,C#和Objective-C。
从简单的开始学起
学习语言的核心概念
虽然这一步中适合的部分将取决于你所选择的语言,但所有编程语言都有对建立有用的程序至关重要的基本概念。尽快的学习和掌握这些概念,将会使你更容易地解决问题和创建强大而有效的代码。下面只是一些在不同语言中的核心概念:
变量——一个变量就是一个去存储和应用以改变代码片的方式。变量可以被操作,并且经常被定义成“整数”、“字符”,还有其他的确定可以存储的数据类型。进行编码时,变量通常具有让它们对于我们有种某种含义的名称。这样一来我们就容易理解该变量如何与其余的代码进行交互了。
条件语句——条件语句是基于条件是否为真的一种行为。对于一个条件语句最常见的形式是“如果-那么”。如果这个条件为真,那么就有一件事发生,如果条件为假,那么就会发生另一件事情。
函数或子例程——这个概念的实际名称可能取决于不同的语言。它也可能被叫做“过程”、“方法”或是“可返回单元”。它本质上是一个大程序中的一个小程序。一个函数可以被别的程序“调用”多次,运行程序员去有效的创建复杂的程序。
数据输入——这是在几乎所有语言中都使用的一个宽泛的概念。它涉及到处理用户的输入以及存储这些数据。这些数据怎样收集则取决于程序的类型以及对于用户的可用的输入方式。它和关于显示在屏幕上还是打印在文件上的输出有着精密联系。
安装一些有必要的软件
许多的编程语言都要求有被程序员设计来讲代码转换成机器能理解的语言的编译器。其他一些语言,比如Python,使用可以立即转换成程序而不需要编译。
一些语言有自己的往往包含着代码编辑器、调试器和/或者翻译以及调试的IDEs(集成开发环境)。这些程序员在同一个地方去执行任何必要的功能。IDEs可能还包含着包含对象层次结构和目录的可视化界面。
在网上有许多的代码编辑器可以用。这些程序都提供不同方式的语法高亮和提供其他开发人员友好的工具。
学习编程语言的网站
1. 学习编程丨Codecademy
用互动的方式教你如何编写网页、游戏和程序。
使用简介:该网站需要先注册后才能使用,推荐使用163/126邮箱注册,完成注册后,进入网站主界面,即可看到开始学习按钮,点击开始按钮后,便可根据网站的指引,先进行9个基础小节的学习,以互动的方式进行教学,通俗易懂,简单、快捷、高效,心动就赶快行动起来吧!
2.酷壳 – COOLSHELL
业内知名的技术性BLOG,主要是陈皓先生所写,关于如何学习编程语言的相关教程、相关网站、以及对程序员的一些建议、对国内一些公司的相关评论等。
3.Github
目前最受欢迎的代码托管网站,需要先注册后,才能使用,推荐使用163/123邮箱注册。
4.最代码
代码分享网站,主要内容有:服务器软硬件、开源组件类库、脚本工具、游戏开发、客户端开发、数据库开发、Web开发、编程语言基础等等,还可按照最新分享、最热搜索等方式检索内容。
5.W3School 在线教程
所有的网站建设教程。从基础的HTML到XHTML,到进阶的XML,SQL、数据库、多媒体和WAP。在 w3school,你可以找到你所需要的所有的网站建设教程。从基础的 HTML 到 CSS,乃至进阶的XML、SQL、JS、PHP 和 ASP.NET。从左侧的菜单选择你需要的教程!
猜你喜欢:
2.软件开发学习心得