zoukankan      html  css  js  c++  java
  • 我多希望我学编程时,有人教我这些事!

    这篇文章在Medium上人气非常旺,转发量和评论数都爆表。原作者回想了自己漫长的编程学习之路,从中总结了个人经历,走过的弯路和各种教训。


    图片描写叙述

    1、学编程之前,想清楚自己想写什么。

    学习编程基本就是在学习建造东西。假设你知道你究竟想造什么,你的编程学习之路将会豁然开朗。

    假设你的目标仅仅是“学习怎样编程”。却不知道自己究竟想写出什么样的程序,也不知道这些程序将怎样让你的生活变得更美好,你非常有可能会感到编程学习令你沮丧受挫。

    说起来还有点丢脸,我最早想学习编程,是由于我想证明我聪明。

    而且,我也想做一份属于聪明人的工作。我还喜欢思考数学及理论。

    因此,编程怎么看都和我非常搭。

    可是这些想法都不足以延续我的编程学习热情。直到有一天。当我最终发现怎样将科技(编程)与我的真爱---音乐和文学---联系在一起时,我才真正爱上编程。

    那么,你究竟想用编程来干嘛呢?

    站点?游戏?iPhone应用?一个让你暴富的初创公司?交互式艺术作品?

    你是想让你的老板对你刮目相看,还是想写个程序让电脑帮你完毕一个枯燥的任务,以让你能花很多其它的时间看水獭的萌照?

    也可能你仅仅是想在职场中更具竞争力,为你的简历加一个潮词(编程),或者满足你学校的毕业要求。

    这些都是有价值的目标。你须要搞清楚自己的目标,然后有针对性地学习。

    2、编程一点也不神奇,一点也不难。

    编程和其它技能没有本质差别。就像语言学习里有语法和单词;就像数学里有不同的步骤和不同的题目;就像全部的技艺和手艺。编程里也有前人总结的针对不同任务的技巧。工具,和好的习惯。

    这些东西。你都能够自由使用,改动,或者弃用。

    有个人曾这样断定,程序大牛和编程界的芸芸众生之间有一个明显的差别---后者往往缺乏足够的智慧在编程界获得真正的成功。在这个人看来,这样的智慧包括对指针 (pointers) 和递归 (recursion) 的理解。

    我在学校曾学过指针和递归。

    在学生时代。能理解指针和递归的感觉真心超级爽。这样的快感激发我踏上了计算机学习之路。

    但在课堂练习之外,我极少有须要去碰这两个概念。而且,当我在教别人怎样学习编程时,我也一次重新地发现,人们不用这两个概念也能写出非常有趣非常赞的程序。

    所以。不要害怕。也不要去想自己是否足够聪明。想这些都没意义。

    是的,编程任务越复杂,越难懂,你就须要越高超的技巧才干完毕。

    但哪个领域不是如此呢?除非你这辈子就靠编程讨生活了。否则你不太可能须要去理解编程中的递归。

    3、没人能一次搞定。

    当你第一次学习编程时,你会非常快撞上这么个问题。你认为你已配置好一切了,你查了又查,但你的代码就是有!

    问!题!你对怎样排错毫无头绪。

    错误信息(假设运气好你有的话)非常有可能对你说的是---“我了个大艹”。这个时候,你非常有可能想要放弃。你认为你永远不可能搞定。认为自己就不是编程的料。

    嘿。当我第一次尝试编写C++程序,执行。却仅仅得到 “segmentation fault” 这样的错误代码时。我也有过一样的沮丧感。

    可是这样的经历对不论什么一个水准的程序猿而言。都再正常只是了。

    有过这样的经历。并不代表你的智商,技术悟性。或你和编程的适合度有不论什么问题。

    无论你是编程新兵,还是程序大牛。你都会遇到这样的经历。而新兵和大牛的差别就在于怎样对待这样的经历。

    新兵和大牛的一大差别就是信念。什么信念呢?

    就是深信出错的原因是符合逻辑的,并能够找到的,深信问题能够被解决,深信总有办法实现自己的目标。

    从0到1之路或许并不明显。但仅仅要你有耐心。你通常都能够找到。

    4、总有人说你做的不正确。

    大括号{}应该怎么放放?该不该不用tab来缩进?该不该对代码加入凝视?

    对于这些问题。大家的做法各有不同。

    没有谁有标准答案。非常多程序猿热衷推销自己的偏好的那种处理方式,但这不意味着答案仅仅有一个。

    其实。与那些说我做的不正确的人面对面,然后再努力去搞懂他们说的究竟是不是对的,这样的来来回回,是我职业生涯的压力源之中的一个。

    假设你与一个团队的其它成员一起写码,总会有人不认同你的某些行为。

    有时他们是对的。但其实你究竟是!对。是!错!

    永远值得你亲自去推敲。

    有时他们纯粹就是无理取闹,你别理他们就好了。

    5、总有人会说你不是一个真正的程序猿。

    看看这些说法吧。

    “HTML不是真正的编程语言。”

    “假设你不用vi,你就不是真正的程序猿。”

    “真正的程序猿得懂C语言。”

    “有些人就是不适合编程。

    “有些人就是学不会。”

    “你根本就不是真正的程序猿。我才是。”

    要我说,编程对于不同的人有不同的含义。

    同一时候,编程的含义随着时间的流逝也在变化。

    有趣的是,那些能让刚開始学习的人。甚至是编程老鸟,更快上手。更省事的工具,包。框架等往往会被贴上 “真正的程序猿不该使用” 这样的标签。

    这样的贴标签行为背后是一种恐惧:假设不论什么人都能称自己为程序猿,那这个头衔就将毫无意义。只是。我认为这样的闭关自守的行为是有害的。

    去用那些让敲代码变得easy的工具吧。假设那意味着你用 Stencyl 或者 GameMaker 来写游戏,而不是从零開始写一个新的,没事,仅仅管去做。

    假设你第一次尝试编程是从HTML或者Excel宏開始,没事,仅仅管去做。

    哪个(编程方式)你能坚持下去。你就用哪个。

    随着你技术不断提升。你就会发现那些便利工具对你的限制大于对你的帮助。

    那时,你就会去寻找更强大的编程工具。

    但大多数时候,非常少有人会看你的代码,或者问你用什么编程工具。

    你的程序究竟好不好用才是真正重要的。

    6、坚持例如法更重要。

    关于 “正确编程学习法” 和 “最佳编程学习法” 的文章有非常多。的确。学习编程的方法有非常多。

    你能够看书来学,你能够做练习来学,你能够给别人的程序捉虫来学。当然了,也有非常多种编程语言你能够挑选来作为你的第一门语言。

    自学型的编程课程或者讲座系列经常有个问题:一開始你总会学得非常爽,但难度会陡然上升。

    print命令总是非常easy,但要真正搞定一个有用程序的编写,往往让人抓狂。你非常有可能认为跟着教程走却并没搞懂,然后你就開始抱怨教程有问题。

    当你撞上这个 “编程玻璃顶” 时,那些教程和线上资源对你的意义已经不大了。由于他们默认你已经是一个编程好手了。

    更让整个编程学习进阶之路变难的因素是。你根本不知道自己缺什么 (you don’t know what you don’t know) 。甚至,搞清楚自己接下来须要什么都成了难题。

    无论上什么编程课,你都会有这么一段 “撞墙期”,唯一的解决的方法就是坚持究竟。

    这意味着你要不断尝试新事物,学习新知识,不断地,一步步地,去解决这个问题,去编出你要的程序。假设你这时认真回看自己的编程初心,你就更有可能获得成功。

    坚持究竟。就会胜利。这就是我之前提到的信念的价值所在。假设你真的坚持究竟。你就真的会胜利。


    图片描写叙述

  • 相关阅读:
    UVA
    UVA
    UVA
    UVA
    NLP介绍
    新建Springboot项目
    添加ssh密钥
    git 错误合集
    Git入门操作
    Hadoop MapReduce
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/6783286.html
Copyright © 2011-2022 走看看