初学者学习编程的方法有哪些
很多编程初学者都会问:该学习什么程序语言,怎么学习?由于小编知道如何掌握“所有”的程序语言,总是感觉这种该学“一种”什么语言的问题比较低级。以下是学习啦小编分享给大家的学习编程的方法的资料,希望可以帮到你!
学习编程的方法
将其与类似的语言进行比较
当你首次观看有关该语言的第一个教程或阅读代码时,请尝试猜测该语言的每个部分将会做什么,并检查你的判断是否正确。 如果记笔记可以帮助你整合信息,请拿起一张纸并记下三个列表:
看起来很熟悉的东西,并且做了预期中的事
看起来很熟悉的东西,但做了意料之外的事
看起来完全是新的东西
例如,如果我用来自 Python 和 C 背景的 Rust 代码进行此练习,那么在第一个列表中,我会放上用于表示范围的花括号,(看起来像是布尔类型的 非,但实际上是 Rust 中的宏定义)则放在第二个列表,类型签名语法(type signature syntax)放在第三个列表。
如果你保留着初始列表的副本,一旦你更熟练,可使用它通过语言反思你的进展,并提醒自己在尝试向其他人讲授该语言时,有哪些看起来不熟悉的概念。
阅读语言的官方文档
如果希望在使用之前吸收大量信息,从阅读语言的参考资料中可能会受益。
不用担心它们会对你催眠,参考文献通常是用于查找使用,而不是用来记忆。
使用互联网搜索
搜索网络是一个很好的方式,可提供有关特定错误和一般最佳做法的信息。当收到错误信息时,应搜索信息中看起来是错误的独一无二的部分,但不是代码唯一的部分。
例如,如果错误提示 "Error on line 53: Invalid argument exception(错误在第 53 行:无效的参数异常)",以语言名称和字符串 “Invalid argument exception” 这样的组合搜索,以找到最佳的结果。
记住要将错误信息中的所有引用内容都包含在内。
还可以在网络中搜索有关解决语言中特定问题的最佳做法的博文。
评估搜索结果中显示的博客帖子的质量和决定认真采用他们的建议时,请查看作者的公共代码组合以及发布日期。
与社区接触
虽然博客和新闻文章具有大量有用的信息,但是你尝试编写的特定代码片段总会有些微妙之处。不要害怕在邮件列表中发帖,或加入 IRC 和 Slack 频道以寻求帮助。
要提出有帮助的回复的问题,请确保在正确的地方提问。许多语言都有 “初学者” 邮件列表或聊天频道,专门针对可能会频繁询问的问题而建立。
当提出问题时,请务必先总结准备做什么、已做过的东西以及发生的情况。尽量为专家提供足够的上下文来了解问题,但不需要无关紧要的细节。
提出问题后,请务必坚持一段时间来听取建议或会回答你的疑问可能产生的后续问题。
编写“生产就绪” 的代码
使用该语言编写 “生产就绪(Production-Ready)” 的代码
玩具程序是一个很好的第一步,但在更逼真的的环境中使用一门语言可帮助探索其现实使用中的优势和挑战。
考虑将一个熟悉的、相对较小的、经过良好测试的程序移植到新的语言,以探索其在现实使用的应用。
阅读一本关于这门语言的书籍
如果有好几本有用的书,比较它们的评论,并考虑哪位作者的背景和自己的最相似。现在有很多电子书可以免费在线阅读。
在购买有关该语言的书籍之前,请先查看书籍出版的日期以及其示例所涵盖的语言版本。
如果使用的是较旧的书籍,请务必使用其所使用的语言版本的示例。还要在网上调查一下,以了解自出版以来语言发生了怎样的变化。
观看讲座和课程
如果你学习的语言在在线课堂中有讲授,那么视频应该是公开的。除了学术讲座之外,还可以考虑寻找录制讲座、会议谈话和有关该语言的博客。
当在看电视时,谈谈你的新语言是一个将学习融入日常生活很好的方式。
阅读示例代码
大多数关于编程语言的书籍都会包含代码片段。你也可以在博客和 Rosetta Code 上找到示例代码。运行示例代码、修改它们,并尝试预测修改后会发生那些情况。
阅读生产代码
查找有关该语言所有类型和大小的项目的一种方法是在 GitHub 上搜索它。按最受欢迎或最具影响力进行排序,你的热门搜索将包括最受欢迎的开源工具。
如果想要了解开源项目的设计,可通过邮件列表或 IRC 来与社区进行互动。你甚至可能会发现一些 bug。
寻找好的工具
当使用新的语言时,可向其更有经验的用户请教,询问他们的开发环境。你可能会发现,一个特定的文本编辑器或 IDE 对于新语言的支持比你习惯通常使用的要好。
调查在新语言生态系统中管理依赖关系、格式化、模糊化和单元测试代码的选项。
保持你的热情
入门新的语言很容易,但变得真正精通它通常是一个需要多年的旅程。庆祝一路上你的成功,并与追随你脚步的学习者分享你所学到的知识,保持着学习编程的兴趣。
新手学习编程的最佳方式
聚焦习惯而不是目标
聚焦习惯而不是目标听起来似乎不合常理,但是请听我把话说完 - 这是一个有关平衡的问题。凡是和我共过事的人都知道,我有时就像傻子一样,在一天内,引用《蝙蝠侠:侠影之谜》中 Ra's Al Ghul 的话多达 3-4 次。
Bloc 公司的投资者们对于我在董事会上频繁地引用《蝙蝠侠:侠影之谜》中的片段作为开始,早已经烦透了。
R'As 告诉 Bruce:
“(当你的胳膊快要冻僵的时候,)按摩你的胸口,你的胳膊自然会暖和起来。”
如果你将精力放在在每星期编程 20-30 个小时的习惯培养上,成为一名 Web 开发者的目标很快就可以实现。如果你将目标设定为在数月内成为一名 Web 开发者,在什么时候能可以达成目标以及距离目标还有多远等不确定性的压力之下,你反而可能会一无所获。聚焦于习惯而不是目标。按摩你的胸口,你的胳膊自然会暖和起来。
因此,你现在应该做的是:在你的日程安排上,每天花15分钟时间用于编程。不要多于15分钟,每天只要15分钟就够了。如果你能在一星期之内坚持做下来而不找任何借口,请试着把时间延长到一天20分钟。不要试图通过每天一小时的编程来过度扩展自己的能力,编程就是一场 10,000 小时的马拉松,因此我们应该将精力集中在培养习惯上。与其在一天内花费大量时间学习编程,不如每天花费少量时间,但是能够天天坚持,因为这样更有效。
独自学习非常痛苦
当我在学习 Web 开发时,在我的学习过程中,拥有一位导师和加入一个社区是两个最大的组成要素。
●拥有一位导师
大学期间,我曾在一家名叫 merge.fm 的小型创业公司工作。暑假期间,我与该公司的一位联合创始人一起工作,我在此期间学到的东西比我之前一年在大学学到的还要多。跟随一名经验丰富的专业人士一起工作,可以真正地加速你学习的速度,你会了解到他们如何思考问题的,同时,也会发现自己的不足之处。这就是为什么师徒制通常成为学习一门新技艺的默认标准的一个原因吧,因为它非常有效。
●加入一个社区
我加入了的两个社区,一个是 Illini Entrepreneurship Network(我们学校的一个学生组织),另一个是 Hacker News(一个面向黑客和创业者的大型在线社区)。
我没有从 Hacker News 学到任何有关对象和类的知识,但是我学到了一些别的东西。我知道了没人喜欢 JavaScript。我知道了 Ruby 程序员是编程领域的潮人。我还知道了 Bret Taylor, Rich Hickey, and John Carmack 都是编程世界的领袖人物,还有就是,那些真正关心员工的软件公司,它们公司的厨房看上去就像兴奋剂实验室。
总之,我学会了如何说行话。当你和其他程序员一同工作的时候,这一点非常重要,也正因如此,才使你觉得自己就是一名程序员。
项目实践
在学习 Web 开发的第一年,我动手实现了以下项目:
●一个 Digg 的克隆版(来自 Sitepoint书上的 Rails 例子,我想现在它已经过时了)
●一个在线购物应用程序(来自 Agile Web Development with Rails 4)
●一个 GeekSquad-esque 应用程序(个人项目)
●一个实时在线课堂应用程序(个人项目)
●一个外语学习应用程序(课程项目)
我认为构建真实项目之所以非常重要的原因有很多,就我而言,最重要的一个原因是它充满了乐趣。这恰恰是在传统教育中严重缺失的,也正因如此,它才成为了诸多原因中最重要的一项。寻找如何开展项目实践的参考资源,是一个不错的选择。
要具有“小强”精神
对于那些能坚持读到此处的读者们,我偷偷地增加了第四项内容。 Paul Graham 曾经对 Airbnb 的创始人说过:
“你们这些家伙是不会失败的,因为你们就像打不死的’小强’一样”
一段时期,你可能会有放弃学习编程的想法。就像任何具有同样价值的事情一样,学习编程真的很难,有时你会觉得自己真的很笨。这就是为什么第一项策略如此重要的原因 - 不要过度担心是否已经取得进步,或者需要花费多长时间达成目标。你要做的就是每周坚持10-30个小时的编程。就像执着的’小强’一样,你就不会失败。
多年以前我说过一句话 - “成功贵在坚持(注解:亦可译为‘生活中80%的成功源于坚持’)”,这句话经常被其他人引用。人们常常向我提及,他们想编写一个剧本,他们想制作一部电影,他们想撰写一本小说。那些最终成功实现目标的人,80%的做法是先行动起来。那些最终失败的人,他们连这一点都做不到。这正是他们不能做成一件事情的原因,他们没有去做。一旦你去做了,如果你真地去编写电影剧本,或者撰写小说,实际上,你的成功之路已走过大半。这就是我可以告诉你的我人生最大的成功经验。其它的都是失败的教训。
掌握所有编程语言的关键学习方法
1、重视语言特性,而不是语言
很多人在乎自己或者别人是否“会”某种语言,对“发明”了某种语言的人倍加崇拜,为各种语言的孰优孰劣争得面红耳赤。这些问题对于我来说都是不存在的。虽然我写文章批评过不少语言的缺陷,在实际工作中我却很少跟人争论这些。如果有其它人在我身边争论,我甚至会戴上耳机,都懒得听他们说什么 ;) 为什么呢?我发现归根结底的原因,是因为我重视的是“语言特性”,而不是整个的“语言”。我能用任何语言写出不错的代码,就算再糟糕的语言也差不了多少。
任何一种“语言”,都是各种“语言特性”的组合。打个比方吧,一个程序语言就像一台电脑。它的牌子可能叫“联想”,或者“IBM”,或者“Dell”,或者“苹果”。那么,你可以说苹果一定比 IBM 好吗?你不能。你得看看它里面装的是什么型号的处理器,有多少个核,主频多少,有多少 L1 cache,L2 cache……,有多少内存和硬盘,显示器分辨率有多大,显卡是什么 GPU,网卡速度,等等各种“配置”。有时候你还得看各个组件之间的兼容性。
2、合理的入门语言
所以初学者要想事半功倍,就应该从一种“合理”的,没有明显严重问题的语言出发,掌握最关键的语言特性,然后由此把这些概念应用到其它语言。
3、掌握关键语言特性,忽略次要特性
为了达到我之前提到的融会贯通,一通百通的效果,初学者应该专注于语言里面最关键的特性,而不是被次要的特性分心。
举个夸张点的例子。我发现很多编程培训班和野鸡大学的编程入门课,往往一来就教学生如何使用 printf 打印“Hello World!”,进而要他们记忆 printf 的各种“格式字符”的意义,要他们实现各种复杂格式的打印输出,甚至要求打印到文本文件里,然后再读出来……
猜你喜欢: