自学编程的10个建议
1. 你为什么学编程? 我最初学编程,一是因为有空,二是想要接触一下不同领域的东西。而我当初决定学Python,也只是因为看到很多人说它是最适合新手上路的第一门语言,可我对于Python能用来干什么却一无所知。这样的结果就是,我在codecademy上上了一些免费的Python课程,看了几章Think Python之后,就丧失了学下去的兴致,因为我即使知道了什么是variables什么是functions,知道了编程很有用,我也还是不知道自己学到的这些知识能用来做什么。当然,只要坚持下去总会知道它们的用处的,但对于毫无背景的自学者来说,这个“坚持下去”才是最难的。想要顺利自学编程这种学习曲线十分陡峭的技能,只有“有空”一类的孱弱的理由,而没有一个真正的动力,想要坚持下去可以说是非常困难。我的两个理由显然属于前者,于是这个计划便开始了无限期的拖延。 后来过了将近两年,我大学毕业,读研的事情也确定下来,一下子有了近四个月的空闲时间。于是我又有了重拾编程的想法。这次,我在Treehouse上开了个付费会员,天真地想花了钱总会坚持下去吧…… 可后来我发现真正让我坚持下去的,其实是我终于知道为什么自己非学编程不可了。对我而言,编程的最大魅力便是它的创造力,一想到可以通过编程亲手创造出理想中的网站、应用、程序和游戏,就让我兴奋不已。多亏了Treehouse的Python教学视频,我知道了Python可以用来做网站,从此便一发不可收拾——因为我有一个非做不可的网站(笑)。于是,我一路学得非常起劲,辛苦但是快乐。看着自己离目标越来越近,看着自己的网站一点点变得像样起来,就想学得更快学得更多,以前那种生吞知识的厌烦感荡然无存,而正是因为一边学一边实践,知识掌握得也更牢更快。因此,我认为自学者们对于“你想通过编程创造什么”这个问题的回答,才是决定他们第一门语言该学什么的关键,而一旦有了这么一个目标,有了这么一种造物的快感,坚持下去也会更加简单。 下面提供一些有助选择的相关信息: 1. 如果你想做网站设计,或者简单的静态展示网站,那么应该先学习 HTML/CSS/Javascript,接着可以学习 Boostrap 或者 Foundation 框架; 2. 如果你想自己独立搭建一个要用上数据库的动态网站,那么除了要学习 HTML/CSS,还要加上 Python/Ruby/PHP 这三种中的一种(推荐在前两个里选)。学习 Python/Ruby 后最好还要学习它们所对应的框架 Django/Ruby on Rails。网站到了上线阶段,还要学习搭建服务器的相关知识; 3. 如果你想做应用,可以学习Swift来开发iOS应用;至于做安卓应用,可以参考这里:https://www.zhihu.com/question/20370504; 4. 如果你想做游戏,推荐先学习两大游戏引擎 Unity/Unreal 之中的一个,以及相关的编程知识。(更新:GameMaker引擎很适合新手入门。) 5. 其实学下去就会发现,要学的东西会越来越多(例如使用git和github),要做好充分的心理准备。 2. 学好英语 我以前也曾以为理科生比文科生更容易学会编程,但其实文理科的区别对于绝大部分的编程学习来说几乎可以忽略不计。真正的区别,在于英语。一个英语好的人和一个英语差的人学起编程来,无论是体验还是难度都截然不同。可以说,一个彻底的外行来学习编程所能拥有的最大武器,除了脑子,就是英语。首先,编程语言本身使用的人类语言就是英语;其次,各式各样的说明文档都是英语;再者,万一遇到什么问题,在网上搜到的解答很可能是英语;最后,和不同国家的人交流时还是得用英语。总的来说,“学编程前先学好英语”这句话非常实在。 可能有人会问,如果英语不好怎么办,学起来岂不是很艰难?那么,就换个角度想吧——通过学习编程来提高自己的英语,一举两得。 3. 学会看说明文档 上面提到的说明文档(Documentation)可能对于零基础的小伙伴们来说很陌生,其实它就是各种编程语言、框架、插件等的“说明书”,它能告诉你你所需要知道的一切(或部分)。所以,当你遇到疑难需要帮助的时候,经常可以在说明文档里找到答案。知道如何阅读说明文档和拥有阅读说明文档的意识,对于所有阶段的编程者来说都是极其重要的。一般的用法是,开始的时候只需要看前面的tutorial或quick start,后面遇到问题了或者有其它需要了再选取特定章节来阅读。 不要以为一个老手程序猿一定知道关于某种编程语言的一切,但他们与新手不一样的地方,是他们总是知道如何找到答案。而答案,往往就安静地躺在说明文档里面。(当然,在 谷歌/度娘 上搜索也是最重要的解决方式之一。) 4. 文本编辑器 文本编辑器(Text Editor),就是像“记事本”一样用来一行一行写代码的软件,浮夸点说就是你用编程魔法施展造物主力量的舞台(误)。一款好的文本编辑器,可以让你享受敲代码的过程,如果你印象中的文本编辑器还是那种黑底绿字的黑客帝国风,那你真得赶紧试试最新的Visual Studio Code或者Sublime了。老实说,自从用了VSC,效率和心情都好了不是一点点。 5. 求人与求己 在学习编程的过程中,或者说在写代码的过程中,经常会遇到这样的矛盾:是要自力更生,还是要求助于人?是要脚踏实地,还是要抄捷径? 解决这类疑问,我认为有四个要点: 1. 学会使用框架和插件:业界有这么一句话——“如果你想造一部车子,难道你还要从轮子造起吗?” 有了框架和插件提供的“轮子”,我们只需要把它们和别的零件组装起来就可以造好车子了。学会使用框架和插件,提高效率节省时间; 2. 当框架和插件不好用了:一般化的“轮子”可能不会适应你想造的独特车子,这种时候与其费力地整合,不如自己从头写起还更快更好; 3. 我想学习和探究:当你的目标不再是快速地完成任务,你当然可以选择不使用任何框架和插件,来深入理解事物背后的逻辑,这也是成为大师的必经之路; 4. 不要依赖复制粘贴:作为初学者偶尔复制粘贴可以理解,但是不自己亲手敲过总还是记不牢的;在打造自己作品的时候,如果连核心代码都是抄的,真的很没意思。 6. 何为好代码? 什么样的代码是好的代码,普遍的观点有这些: 1. 高可读性。注释明确,遵守该种编程语言的普遍规范(如命名、排版规范); 2. 简洁高效。不要写过于复杂或多余的东西,除非有特殊理由(当你发现你在不断地重复某些代码的时候,很有可能是"You are doing it wrong"); 3. 容易维护。有所改动或者进行延伸的时候很方便; 4. 可重复利用,放哪都能快速适用(pluggable)。 5. 没有或者少bugs。 7. 预见性 写代码的时候非常重要的一点,就是要有预见性。有预见性的表现之一,就是总是会考虑到极端情况:比如说当你让一个用户输入数字的时候,你就要考虑到他输入了字母或者输入了一个一亿位数字的情况,并对此进行限制,这样才能保证程序能顺利运行;有预见性的表现之二,就是在编程的时候考虑到将来如果要进行维护、改动、升级、移动等的情况,并提前地做好准备,使得日后的操作更为便捷。 8. 切忌急于求成 我之所以建议“找到自己想用编程实现的东西”,就是希望自学者们能在创造和完善自己的作品的过程中不断尝到甜头,以坚持下去。如果说保持兴趣是对自学者来说最重要的一点,那么并列第一的应该还有切忌急于求成。你要知道,编程的自学之路注定是非常坎坷的,如此大量而又不太友好的知识朝你涌来,常常会觉得自己无能为力。特别是发生了某些错误又无法解决的时候,真的是分分钟哭给你看。面对这种情况,一定要耐心地排查,耐心地搜索答案,耐心地求助网上或身边的人,又或者放自己一天假回头再看,答案往往出奇地简单。有时候,还要懂得“work around”,也就是不要那么死板地跟一种方法死磕,要想想看有没有同样效果的可以替代的妙计,有没有像做数学题时一样的“另一种解法”。 9. 潮流 编程的世界确实是日新月异的。更新无处不在,一个不学习新鲜事物的人是要被淘汰的。保持一颗积极的包容的心,多多接触新事物吧,说不定以前要花一天才能走完的路,现在一个小时就可以了。但是在潮流之下,最核心的编程思想几乎不变。打好基础,理解透彻,即使面对汹涌的更新潮流也能淡然自若。 10. 书单与进阶 在能力范围内我只能推荐一下Python和Django的书单: Python入门: Learn Python the Hard Way Think Python Python进阶: http://book.pythontips.com/en/latest/ Django: The Definitive Guide to Django, 2nd Edition(有中文版) Two Scoops of Django 除了书本,网络上的中英文学习资源也很多,比如w3cschool、runoob、自强学堂、各类博客等等。 当学完编程语言的基础内容之后,如果想要进阶,可以从这四个方面入手:MVC + Object-Oriented Programming + debugging + 开源项目。 后记: 我从今年5月26日开始正式自学编程,到8月20日我所谓的“非做不可的网站”正式上线,欢迎想学外语和喜欢语言的大家来语生玩耍~ 现在我正在一边读研,一边完善网站和自学Swift,准备着手开发语生APP。
(更新:2018年7月15日,语生的网站正式下线啦,我们有缘APP再见! m( _ _ )m) 以上是我从一个自学过来人的角度出发抛砖引玉,希望更多的人能接触并发现编程的乐趣。:)
银河系漫游指南的最新日记 · · · · · · ( 全部 )
- 独立游戏《诺亚的困境》开发日志#3:设计上的总结与回顾 (24人喜欢)
- 独立游戏《诺亚的困境》开发日志#2:编程上的总结与回顾 (32人喜欢)
- 2024,追梦如耕种 (239人喜欢)
热门话题 · · · · · · ( 去话题广场 )
-
加载中...